挖坑:小爱同学->blinker-Node-RED接入homeassistant方法探讨

背景:
小爱同学的红外接入,用过esp8266烧录OpenMqttGageWay的红外方式,暂时放弃
绿板小爱要外挂单片机,放弃
黑板小爱买不到,放弃

曲线救国:
小爱同学支持blinker的自定义设备

写了个node-red的自定义插件,已经不需要烧录esp8266模块就能让blinker的app里显示设备在线,并监听到手机app点击按钮时mqtt服务器发来的消息了
主要参考了这里:
https://www.cnblogs.com/kekeoutlook/p/9375351.html
和blinker的官方js-sdk:
https://github.com/blinker-iot/blinker-js/blob/master/lib/BlinkerMQTT.js

大概梳理了下,设备的secureKey请求blinker服务器,得到登录阿里云(暂时只写了这个)mqtt的用户名、密码、clientID等信息;
重新组装下参数,拿开源的mqtt.js去模拟登录阿里云的mqtt服务器,并订阅主题
这部分参考了墨澜姐姐的教程
https://yq.aliyun.com/articles/673939?spm=a2c4e.11155435.0.0.311621b7RdZh8r

目前实现的是:
心跳包,根据blinker的机制,服务器发送get:state的时候,客户端必须要发送心跳包,否则服务器收不到心跳包则认为设备不在线根据Arduino论坛里,官方帖子里写的:

[code]心跳包与初始化UI
在blinker app上,点击设备图标进入设备控制页面时,app会向设备发送一个状态查询指令(心跳查询)
此后,WiFi设备,每59秒会返回一次心跳包;Ble设备,每29秒返回一次心跳包
状态查询指令,如下:

{“get”:“state”}
默认状态下,WiFi接入设备会返回:

{“state”:“online”}
BLE接入设备会返回:

{“state”:“connected”}[/code]
[attachimg]21170[/attachimg]
附图如下:
[attachimg]21165[/attachimg]
[attachimg]21166[/attachimg]

目前遇到的难题:
[color=#ff0000]1,node-red里,在工作区挪动下节点,重新部署,会导致自定义节点不停的rest,不知道是什么原因[/color]
[color=#ff0000]2,小爱同学已经能控制虚拟设备,但是手机上反馈:“嗯,尝试了一下,先看看设备状态吧”[/color]
[color=#ff0000]看了blinker的文档,[/color]

[quote]小爱数据管理
智能音箱接口, 反馈数据到小爱同学
==任何控制务必即时反馈==
==超时2s以上再反馈,小爱同学就默认设备不在线,小爱同学会反馈“智能家居控制出了点问题”==[/quote]
[color=#ff0000]现在还不知道怎样把数据通过mqtt反馈给给小爱同学,而实际上指令已经发出了,Node-Red的虚拟设备能收到[/color][color=#ff0000]
[/color]
[color=#ff0000]个人猜测应该是把ToDevice写成"MIOT",fromDevice写自己,然后发mqtt包,还没时间验证。
[/color][attachimg]21162[/attachimg]

3.个人对blinker的APP还不是很了解,他们家APP最多能模拟米家的4孔插排,如果要控制论坛定制的hassmart改装模块,我猜也就一个设备控制4盏灯

有没有相同爱好的同学,欢迎跟帖交流,也希望论坛大佬能指点迷津。

这个是复制过来的吗? 我看很多帖子格式是不支持的