全系列模组购买请戳:安信可官方淘宝店
ESP8266 OneNET SDK使用的是EDP协议,可以实现ESP8266与OneNET平台。
下面用ESP8266 OneNET SDK开发一个球泡灯的实例。
* 点击创建产品
* 填写产品参数
我们选择wifi,公开协议,EDP协议,命名为智能球泡灯。
* 创建完成。
上面一栏产品ID和APIKey是两个重要的参数,需要把这两个参数填进sdk。
该图片是我自己账号下的平台参数,不要填写我的参数,不然你无法登陆平台来控制设备。
1. 解压出onenet_light.zip
2. 阅读源码
* app/onenet目录就是対接OneNET的源代码,主要包括HTTP协议和EDP协议。加密部分暂未测试通过,编译的时候要关闭_ENCRYPT宏定义。
* fcmd是用于串口调试的,如果有不清楚的api,可以直接在串口调试助手中输入函数名,直接测试。在fcmd_cfg.h中加入自己想要测试的函数。
* fsm目录。为了保证源码的阅读性和可修改性,在esp8266 sdk基础上写了一个简易的消息循环状态机框架。分成了两个任务,driver_task和network_task。状态机入口函数分别是driver_actor和network_actor。Network任务维护了网络状态的跳转和onenet服务的启动停止。fsm提供了定时器,消息派发,状态跳转功能。
* main目录。该目录下的onenet_app.c就是onenet服务的几个接收数据回调函数,在回调函数中接收处理数据点并控制球泡灯的RGBWS状态。
* upgrade目录。固件升级接口,现在url地址是安信可服务器的地址,用户可以修改指向自己的服务器。在串口发送函数os_post_message(1,9,0)就可以升级了,前提是联网设备已经连上网络。
* 修改onenet项目参数。在network_task.c中可以修改项目参数,该参数是保存在flash的。
onenet项目参数的api。
onenet app参数相关的api。
把USER_MASTER_APIKEY和USER_PRODUCT_ID改成自己项目下的参数即可。
onenet的项目参数保存在0x79扇区。
onenet的app参数保存在0x7c扇区。
* 打开cygwin,cd到项目的根目录,执行./rebuild.sh 1命令即可编译。
* 打开esp8266 download tool,按照以下地址下载固件。我们可以用nodemcu来测试下载这个固件。
第一次下载固件时需要将onenet项目参数区和onenet的app参数区全部擦除掉,可以使用CombineBin的方式合并固件,这样其他扇区都会被0xFF填充。
打开串口调试助手,注意看打印日志。
其中start_continue表示连续重启次数,启动后3s会清0.
* 重启3次配网
* 连接过程中,会依次看到注册、登录、心跳的过程,这就是设备与onenet通信的过程,设备此时就已经连接上onenet了。日志打印中会看到device_id打印出来。