arduino +esp8266 01+天猫精灵实现多口输出

作者:future king | 更新时间:2019-09-22

关于这个话题,开始我在biglot找了半天,只有少部分,没有arduino开源的,今天来讲我是怎么实现的。其实很简单,先添加一个智能设备,将智能设备类型改成万能遥控器,然后再子设备添加两个子设备(我默认添加两个,你可以添加更多),且父级一定是刚刚添加智能设备。可以得到两个子ID。添加成功了,天猫精灵app会有显示。(这是biglot上面设置)

我的程序是参照的https://github.com/bigiot/bigiotArduino,你可以自己先去下载。然后修改程序(这边基础不讲,新手请参照其他文章)void processMessage(aJsonObject *msg)函数下添加 aJsonObject* zi_id = aJson.getObjectItem(msg, "S");String S =  zi_id->valuestring;就行了,然后再判断上添加if(C==“play”and S==“DXX”)(S添加子设备ID)if(C==“stop”and S==“DXX”)。(第二个判断和第一个一样,除了子ID不一样)我们这里判断是子设备的ID不同。还有天猫精灵默认的指令是play是开启,stop是关闭,其他自己写的天猫精灵不支持,不能识别。

再说一下这边缺点吧,不可以用微信小程序控制了。如果你能解决,请留言。还有如果在if(C==“play”and S==“DXX”or C==“play1”)是不行的,因为没有s的值,aJsonObject* zi_id = aJson.getObjectItem(msg, "S");这个一直在读,然后微信不能控制。我的解决方法是重新做了一个app,发送和天猫精灵一样的命令就行了。如果还有不懂请留言!!


评论:共5条

贝壳物联 评论于:2019-09-23 15:20:24
微信小程序暂时无法发出子设备标识(即S项),可以先判断接收到的字符串是否有
"S":
,再aJson.getObjectItem(msg, "S");
future king 评论于:2019-09-23 18:30:51
试了,没有成功
贝壳物联 回复于:2019-09-24 08:53:50
回复 @future king:在这个基础上试
if(C==“play”and S==“DXX”or C==“play1”)
先判断有没有S项,有了再aJson.getObjectItem(msg, "S"),就不会在没有S的情况下一只获取。
future king 回复于:2019-09-24 16:32:14
回复 @贝壳物联:我是先判断C是否等于play,等于执行aJson.getObjectItem(msg, "S"),else zi_id==“00”;
林哈哈 评论于:2019-10-22 18:16:33
为什么我加了aJsonObject* zi_id = aJson.getObjectItem(msg, "S");String S = zi_id->valuestring;ESP8266一直重启?
评论支持使用[code][/code]标签添加代码
返回顶部