前边也说过,这个脚本要实现的步骤可以分三步,第一步是联网,第二步是使用http get到数据,然后控制要控制的设备。我们的lua脚本分为两个,一个是init.lua,另外一个是httpclick.lua,这个默认上电执行的是init.lua,我们在init.lua中连接网路,在httpclick.lua中获取我们在服务器上保存的信息,然后控制响应的设备。Nodemcu所有固件的API可以从官方wiki得到https://nodemcu.readthedocs.io/en/master/en/modules/sjson/。
1、init.lua标号1是配置wifi,填上你自己的wifi名和密码就行,2是连接到ssid所示的wifi,3是一个1s的定时,4是判断有没有获得IP如果获得了ip就走5打印ip地址,然后调用httpclick.lua的程序,否则就打印IP还没有分配,等待连接。
2、httpclick.lua标号1为一个1秒定时,每隔1s从retrundata.php中获取一次数据,同时把上次灯的状态发送到这个retrundata.php中存起来,等待查询。3是从str所指的url中get数据,4为把得到的sjson数据解码,5所实现的功能就是判断当前的id是否正确,如果正确就根据接收到的灯的动作设置灯,如打开关闭,设置灯的亮度等,然后保存当前灯的状态。
二、服务器端接收保存和读取文件其实上边的已经完成了硬件篇所有的功能,这里还要说一下这个,是因为这部分也很重要,我们常用的http协议是不保存数据的,也就是说一次通信只是用来传输数据,无论是post还是get都会传送一次数据得到一次数据,我们为了让天猫精灵能正确的查询状态,正确控制设备,我们需要把协议解析出来的状态和设备返回的状态保存到服务器。主要通过下面这些文件来完成
1、getcontrol.php这个文件是天猫精灵把解析到的数据,ID,action和value写入到Lamp.txt文件中,供硬件设备读取。
2、returndata.php
这个文件主要是与硬件设备进行沟通,实现两个功能,第一个功能接收硬件设备发送上来的设备消息然后写入到Lampstatue.txt中,供天猫平台的读取,另外一个就是读取Lamp.txt中的信息,用来控制自身的设备,如灯等。
3、returnstatue.php
这个是天猫精灵用于读取硬件状态的接口文件,主要是用来读取Lampstatue.txt的数据来返回当前设备的状态
所以的文件都已经解释完了,这种读写的方式在真正的应用中并不可行,是需要数据库的支持的,所以小狂在这只是为了测试功能,做的并没有那么规范。只是验证了一个流程,抛个砖,希望引出来更多的玉。