wemos d1通过中移物联edp协议上传与控制

wemos d1是一款很便宜的wifi板,淘宝购买13元左右。集成了esp8266模块,样子和arduino差不多,只是引脚编号有些不一样。

wemos d1开发板

项目目标:wifi小车通过中移动物联平台(onenet,有APP端)实现数据监测与命令下发。之前通过http协议已经成功实现效果,但物联网平台的http协议不能下发命令,而且要将wifi模块作为web服务器,感觉不太完美,于是了解了常见的物联网协议,对比如下(移动官方文档里的):

EDP就是移动修改过的MQTT协议,所以被列到一个格子里。在移动开放平台,EDP协议参考最多,故选择之。

首先,我们可用在平台上下载一个调试工具,这个工具非常有用,可用快速找到问题。

填入自己的设备ID和key,点生成编码,发送到云设备即可看到设备上线。如果要发数据,再选择savedata发送即可。ping就是心跳包了。如果要模拟服务器下发命令,还可用使用模拟服务器功能,这个对于内网调试很有用。翻译器就是把16进制编码翻译成平台定义的消息类型。

这里选择使用wificlient这个类来直接收发数据,而不是使用AT命令。但是这个类网上只有发送http协议的案例,而http协议格式发给移动服务器,会直接提示命令错误。还好在github上(搜wificlient即可找到)查到了使用write方法即可发送字节流。但是EDP协议的字节流如何生成呢,要自己构造太麻烦,这里移动已经准备好了SDK包,只需引入调用生成的方法即可。当然,在发送数据前必须发送建立连接的命令,这时平台上设备会显示在线。五分钟之内没有数据传输又会离线,所以有时要发送心跳包保持在线。离线状态是不能直接发数据包的。

代码已调试通过:数据发送至onnet和平台下发命令。截取部分代码(下载 完整代码 注:自己的NAS服务器,请勿乱搞):

部分代码

代码都写好后,准备通过read来读取收到的数据了,在平台中建立应用,画个按钮,在EDP命令处填自己定义的命令,比如forward:,定义为前进。{V}是变量表示开关状态0和1。定义好后点一下开收到的就是forward:1,如果有多个开关就可用通过自己定义的命令来区分了。

说了这么多,功能是实现了,但是问题来了:

1.移动这个应用(APP名称叫“设备云”),控件太少,不能自定义,界面太丑。app里还不能全屏自定义设计,总之,还非常需要完善。

2.这个命令刷新最少要3秒,这点致使用EDP来控制小车方案失败。小车控制方向哪能有延迟呢。

总结:用的人多的不一定符合自己的需求,示例应用里大多数还是大棚温度湿度监控之类的应用。控制小车还是自己写页面用http吧。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: