基于ESP32和ESP8266的物联网开发过程(二)

在做这个项目前,也做了一些调研。项目的初衷是想要用于智能家居。我比较了小米IoT、阿里云、ESPHOME、巴沙云、点灯科技和ONENET等几个平台。最终选择了Onenet,部分原因是之前用过它的多协议版本,但现在这个版本已经下线了。

小米IoT的公测名额去年就已经满了,但最近网上有消息称第二轮公测已经开启。尽管名额增加了,但我不清楚现在是否还有剩余名额。

最初考虑的是一个基于Wifi MESH的方案,但它功耗较大且无法通过外部控制。虽然现在用ONENET也无法实现外部控制,但其免费版仅支持数据接收。

以前我用的是其多协议版本,但现在改用了ONENET的物联网版本,这也是最新的协议版本。为了搞懂这个新协议,我花了不少时间。

现在用ONENET也没法通过外部来控制,ONENET的UI页面上的发送功能在前年我做这个项目时还是免费的,但后来就改为收费了。阿里云也是一样的情况,他们的可视化Web服务也开始收费了。

我试用了巴沙云和点灯科技,他们可以与米家进行联动,但只支持少数设备。虽然配置起来简单,但简单就意味着他们已经将协议和玩法框死了,用户只需点点点就可以使用。这也让我放弃了他们。

最后我选择了Onenet,因为它凑合着能用。它不支持数据的下发,但如果你想要下发数据,也有方法,就是通过它的调试页面,不过在手机上操作会非常麻烦。

Onenet的可视化页面只支持数据接收,不支持数据下发。而且,这个页面上的一些配置还挺复杂的,有点坑,不太人性化。但它最大的优点是支持场景联动,而且是免费的,设备也不少,协议也很多,包括MQTT和HTTP都支持。

我的场景联动初衷是,比如湿度过低了就打开加湿器,到了晚上亮度过低时自动打开灯光,或者检测到人员后自动打开灯光。这个联动功能还是挺好用的,还没有细弄,但试了一下是可以行的。我用一个ESP866作为检测端,把ESP32作为一个控制端。当ESP866检测到数据后发给Onenet,通过场景联动自动控制ESP32这个终端。

关于如何接入米家和其他设备的联动问题,目前还没搞清楚。Onenet他家的版本还是比较多的,分新版旧版mqtt,然后有物联网平台IoT Studio,他们的文档也有几个版本。传输协议中像onejson和自定义透传数据流三个协议不太兼容,彼此之间也不能混合使用。看了几个文档后发现区别还是挺大的。

硬件方面不用担心,大家可以直接买一块开发板来用。接下来说一下onenet平台怎么让设备连接到上面。创建好设备后,将看到设备的密钥、产品ID和设备名字。主要就是这三项。填到配置信息里就可以自动进行连接了。现在演示一下如何连接到ESP866的热点进行信息的配置。输入密码后进行Wifi的连接,然后产品ID、设备ID和设备名字会自动进行接入。不用选离线模式,直接保存。保存后它会尝试进行Wifi连接。

后台显示在线状态后就可以控制那个灯了。如果想通过Onenet控制灯的话,在设备调试的应用模拟器里进行属性设置就可以了。至于物模型的设置,可以自己看一下官方文档。

最后,感谢大家的观看。如果有兴趣,可以查看我之前的一些项目。有的没有开源,但大家可以去了解一下。后续还有一些项目也会更新到这个仓库里。再次感谢!

|

开源链接:https://gitee.com/yangfei_addoil/home-connection

视频链接:https://www.bilibili.com/video/BV14K421Y7C3/

上一篇:Jenkins docker 自动化部署python3后端 centos8.5 运维系列四


下一篇:Java对象比较器