小度接入Node-red通过MQTT控制DC1

前提条件,和小度接入HASS一样,你的node-red能通过https外网访问

如果不满足这一步,后面也就没戏了

整个流的预览图:


截图连线外的节点是我的设备信息存储在数据库中的,方便其他地方复用,忽略即可,只需将设备列表写在“小度控制的设备列表”节点中即可

正式开始啦:

  1. 先导入流,附件下载地址:https://bbs.hassbian.com/forum.php?mod=attachment&aid=MjExNzJ8Y2ViOTc3NjN8MTU4MjI5MzM3Mnw1ODA3fDkyODk%3D ,解压然后导入流,然后部署

  2. 在杜蕾斯开放平台 https://dueros.baidu.com/open ,使用你小度绑定的账号登录,技能平台–控制台–创建技能–智能家居技能,新建技能,名字随意

  3. 配置技能,如图:配置的域名改成你的node-red的https访问的域名,后面的URL路径不变


    授权地址:https://你的域名/oauth

    token地址:https://你的域名/token

    设备云信息地址:https://你的域名/xiaodu

    其余任意

    此授权只是为了让小度开放平台觉得是通过oauth2认证的,实际并没有,只是模拟了一遍授权,我也不清楚存在什么风险,概不负责哟~

  4. 点击授权,不出意外应该能直接授权成功,成功后关闭页面即可,如有问题请注意看NR的调试信息

  5. 修改node-red中的“小度控制的设备列表”节点中的设备列表,改成你自己的,topic代表MQTT的主题,friendly_name代表小度自定义的设备名,此节点很重要!!!,请测试该主题能正确控制后再执行发现设备命令


    为什么呢?小度存在bug,每个设备有一个唯一的ID作为标识,而此流程是将MQTT的控制主题topic作为唯一标识发送给小度记录的,而小度又允许不同的标识使用相同的friendly_name来进行自定义命名,就会导致到时候会出现小度提示一个设备控制成功一个设备控制失败的情况。

    第二个坑:请不要轻易的删除技能然后重建技能,不然也会出现上一个相同的问题,如果出现了,目前唯一的解决办法就是小度恢复出厂设置然后更换绑定手机号进行绑定小度,就会清除之前所有的智能家居。

  6. 执行命令,发现设备,不出意外应该就成功了,如有问题请注意看调试信息

  7. 支持命令:开关,定时开关

  8. 什么?还想支持更多的东西,那就照葫芦画瓢吧,我只是个领路人,更多强大的功能请移步:https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-smart-home/protocol/discovery-message_markdown

点赞. 感谢分享.

非常感谢大神的分享,成功率非常高,基本上可以一次成功 :+1:。这个插件是以MQTT方式和设备进行交互的,如果想更多的灵活控制,需要一点动手能力。
另外,大神能不能把数据库节点分享出来。我想另起一个流程,专门管理接入的设备,并把设备信息可以共享给其他流程使用,但对于数据库使用几乎一窍不通。我越发感觉node-red还是需要一些数据库支撑的。

大佬,图挂了,看不好了