第一次发帖子啊,哪里写的不好请大家多多指出了啊,小弟我在此谢过了。小弟的QQ是384998430,有事可以发邮箱或者加好友啊(美女优先)。 其实我一直很想搞物联网这个好玩的东西的,不是自吹,在我听到“物联网”这个名词之前我就有搞智能家居的想法了,还记得那是在高中的时候第一次玩单片机,发现单片机相当有意思,可以控制LED灯亮和不亮,诶呀我滴个乖乖,啥玩意这是,这么神奇吗?后来我就想能不能控制家里的电灯呢,所以我那时候做了一个极其简单的小玩具,用光敏电阻做了一个感光的LED,想用来控制家里的电灯的。。。不过高中弄单片机也就到此为止了,还是要高考的啊,诶说到这我就伤心了,高考的时候语文是我的软肋,考了89分,要知道总分150分,我差一分及格,嘿呀。。。最后我去了中国矿业大学,天朝挖煤大学,有没有校友?在大学的话就好好学习单片机和嵌入式了,一直学到现在,今年刚毕业,成绩不好差几名没保到研,又是伤心事,不说了,进入正题吧。
这几天下班回家的时候闲着无聊就想做一下智能家居,开始的时候在网上找到不少免费的平台可以使用,像是乐为物联网、传感云啥啥的,见下图,可是看了下都是好几年前的了,没什么人用,好久不更新,手机app也不全,还有好多bug,我就伤心了,每(yi)个(ge)好(neng)一(da)点(de)的(dou)平(mei)台(you)么(me)?
传感云平台的传感器界面
算了,就当是学习,那我就从头搞起吧,我知道现在开源的、现成的东西很多,但是本着学习的精神还是要多摸索摸索,是不是,哥?
然后,一场说干就干的DIY开始了。
本来打算用TCP端口的打洞来实现网络终端期间的直连的,后来想想还是算了吧,这样的话还是要用一个服务器作为打洞用的榔头(其实是我不会打洞,非网络专业,不想费时间,扯到了蛋就不好了),那不如直接用一个服务器作为中继,提供透传服务。我的设想是这样的,接下来就是实现了。
第一步,首先的话服务器端我本来打算买个阿里云服务器的,可惜我真的太穷了(上学时候的国家贷款还没还,工资又低,房租又高,嘿呀,有没有高富帅、白富美扶持一下啊,呲呲),那就找吧,网上什么服务器便宜买什么......然后我就买了一个叫XXXX的服务器,不能打广告啊,名字就不说了,怕警察叔叔怼我,很便宜这个服务器,1块钱1天。
第二步,在服务器上部署一下服务器程序和运行环境,想了想,C++做服务器麻烦(我不会!就是这么不要脸,就是不会!),C#做服务器还要安装.NET,想想就慢,后来就用了Python,解释器加开发环境也就几十兆,嗯,就选你了,但是,Python我不会啊!
第三步,学习Python。说起来Python入门还是比较容易的,学一个下午吧,可以写点程序了(学得不深入,Python大神不要吐槽我),然后就按照我的想法写了一个服务器的原型,缝缝补补之后改成下面这图了,不知道怎么发源程序,这个图是部分程序,写的真的很烂,没有发挥Python的简洁的特点,有不少C语言的编程习惯在里面,勿喷勿喷,请大家指导知道我,Python真的是才学。这个服务器的话就是侦听TCP的8433端口,如果有连接的话会创建一个客户端线程,在线程里面进行用户验证,我没有用数据库,不是不会,我会用数据库!嫌麻烦而已,用文件的方式模拟一个小的登录系统,文件里面记录了用户名和密码信息,这样客户端登录的时候需要将用户名和密码按照“[name,passwd]”的形式发送给服务器,正确的话就在服务器上注册了一个连接,这时候如果还有一个终端以相同的用户名和密码连接到服务器,程序就会将这两个相同用户名的终端进行“交配”,这样就实现了两个终端的数据透明传输,服务器可以支持100个连接,也就是最多50对连接。
服务器的Python程序
文件记录用户信息
第四步,测试。我写了一个安卓端的测试程序和一个电脑端的TCP/IP小工具,两个连上服务器之后可以无障碍的进行互传,说明一下,手机用的流量,电脑用的有线网,不在同一个网段里面。这样看来实验基本成功了。安卓端的代码如下。
安卓端的程序
第五步移植到嵌入式板上。课程设计的时候写了一个简单的TCP/IP协议栈,用的是ENC28J60网卡,程序写的很挫,就不公开了啊,但是这个模块被我弄不见了,用不了了,正好手上还有一个esp8266,网上很多人在esp8266上开发,我就没那功夫了,直接用模块的AT指令集控制得了,这个我就不详细介绍了,esp8266连上wifi之后与服务器进行连接即可,然后手机再和服务器连接,ok,可以通信,然后搞个简单的LED灯,控制亮灭,一气呵成,还是不错的啊。
最后,如果有跟我一样兴趣的,也想弄智能家居的,也想试试我的服务器的客官们可以免费使用,服务器的IP地址是60.172.226.34,TCP连接的端口号是10443我知道我的服务器很烂......但是有改进的空间嘛,我现在正在把我的台灯电风扇之类的电器连入网,然后写一个手机端的APP,远程控制家里的电器。但是我上面发的那个txt文本里面的账号密码太少了,要是有同道中人想要使用的话可以跟我说一下(邮件即可),我给客官您添加一个账号和密码然后告诉你啊。