请选择 进入手机版 | 继续访问电脑版

『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
查看: 6937|回复: 36

[教程系列] 天猫精灵通过Node-red调用homeassistant的场景

[复制链接]

30

主题

282

帖子

1301

积分

金牌会员

Rank: 6Rank: 6

积分
1301
金钱
1019
HASS币
0
发表于 2022-5-2 19:32:55 | 显示全部楼层 |阅读模式
本帖最后由 hcfong2020 于 2022-5-2 22:28 编辑

家里有天猫精灵,但是天猫的场景功能非常薄弱,很多设备无法控制。所以在家里的黑群晖上添加安装了homeassistant,随着homeassistant的不断深入了解,发现功能非常强大,可以实现很多天猫精灵不能实现的功能。所以想着用天猫精灵的简单语音指令来控制homeassistant的场景或者实体的。
家庭现有环境是一台黑群晖,有天猫精灵,书房里面有一个升降幕布(433遥控器控制),有一个投影仪(红外遥控),有音响(遥控),一台博联的rm pro4(红外和射频发射器),书房的灯(使用的博联插座控制)
目的实现以下功能:
使用天猫精灵语音指令“打开娱乐模式”,实现 幕布下降,投影仪打开,音响打开,将音响音量增加8,关闭书房的灯。
使用天猫精灵语音指令“关闭娱乐模式”实现幕布上升,投影仪关闭,音响关闭,打开书房灯。
方法一、使用天猫精灵自带的模式控制1、使用博联的app创建,音响的遥控,幕布遥控,投影遥控。
2、博联app添加灯的插座
3、在天猫精灵app的技能广场中添加博联的账号绑定
4、按照天猫精灵场景中的一个个添加设备开关顺序
这个方法基本能够实现傻瓜模式的场景,为什么说是傻瓜模式的场景呢,幕布,音响,投影仪都是通过遥控器实现的,天猫精灵是无法判断设备的开关机状态的,这种方法当你单独打开一个设备的时候,天猫精灵的场景模式就会失效了。因为当你通过天猫场景打开音响的时候,因为之前开过音响,而音响又是通过红外遥控控制开关的,因为开和关是同个按键,导致想开的时候,可以就直接关闭音响了。导致场景模式出现混乱。另外天猫精灵对一些自定义的按键的控制是不支持的,比如说无法在场景中设置调大音量。
方法二、通过阿里云的飞燕平台创建一个虚拟设备,通过控制虚拟设备的开关homgassistant中的场景。
1、安装homeassistant:黑群晖docker中安装homeassistant,这个就不过多介绍了。
2、安装node-red:黑群晖docker中安装node-red,参考:Node-red 添加 home-assistant-websocket 节点,获取和控制homeassitant
3、添加红外和射频设备:在homeassistant中添加博联的设备,因为有些是红外或者射频的设备所以需要用到博联的遥控学习功能。参考:broadlink(博联)射频码学习,参考:博联RMpro接入homeassistant(红外射频均适用)
4、在homeassistant中添加娱乐模式和休息模式:
(注:homeassitant中的模式是将设备调整到模式的设定状态,执行的时候会判断设备的当前状态,跟天猫精灵的场景模式是不一样的)
我把音响中的开关,调大音量、调小音量,幕布的上升,下降,投影仪的开关,都单独设置成了脚本,这样单独可以调用。投影仪的开关因为关闭的时候需要同个按钮按两次,所以设置了两个同样的脚本,不同的名字。开关都直接调用一次。因为开的时候按两次也不会影响投影仪的正常运行。
通过设置后,我的homeassistant中有了,yinxiang,mubu,touyin,touyin1,这4个实例。这4个实例都有自己的开关状态。
娱乐模式就是:yixiang:状态开,mubu:状态开(=下降),touyin:状态开,touyin1:状态开
休息模式就是:yixiang:状态关,mubu:状态关(=上升),touyin:状态关,touyin1:状态关
5、创建阿里云账号:(可以用淘宝账号直接登陆)在阿里云飞燕平台使用天猫精灵绑定的淘宝账号登陆。6、创建虚拟设备:在飞燕创建产品,在产品里面创建设备。参考node-red接入阿里飞燕平台同时接入天猫精灵语控。这个帖子只要学习里面的创建产品创建设备。
(创建产品和设备的要点:产品的联网方式选择2G3G4G,选择交互的客户端的时候选择使用公版的app,就是云智能
7、获取虚拟设备用于app添加设备的二维码:因为飞燕的节点不能使用,所以原本教程中的二维码是不会生成的。我们只需要在生成产品的最后一步的时候点
配网+App下载二维码,会出现一个模糊的二维码,在二维码下方的输入框内,输入你定义的设备ID,就可了。然后下载云智能app,用你绑定天猫精灵的淘宝账号登陆云智能app,然后用云智能app扫码就可以添加这个虚拟设备了。(当时这个二维码我找了很久,因为我用的笔记本屏幕很小,这个输入框没有,找了半天原来才原来下拉一下就有输入框了。)
8、node-red中添加homeassistant节点:参考:
Node-red 添加 home-assistant-websocket 节点,获取和控制homeassitant
9、云智能app添加虚拟设备:手机下载云智能app,用app扫描刚才创建的虚拟设备的二维码,就可以直接添加了,添加后你的天猫精灵app中就可以看到这个设备了。
10、控制原理介绍:参考:天猫精灵接入nodered控制homeassistant任何品牌的设备
11、在node-red中创建flows控制homeassistant场景:创建一个mqttin,配置联通新创建的虚拟设备(这一步不会的多看看第10点的视频),当天猫精灵下达打开虚拟设备的时候,mqttin会收到一个json反馈,里面会包含powerstate:0或者powerstate:1,通过node-red中的switch功能分别连接homeassistant节点下的call servies功能,call servies功能非常强大,可以调用homeassistant的实体,因为场景模式也是一种实体,所以也能直接调用。通过调用homeassistant的实体功能和直接在homeassistant的一样的,实体的状态也会同步变话,所以就不会不出现天猫精灵场景控制的尴尬情况。视频中用到的topic:/sys/{$ProductKey}/${deviceName}/thing/service/property/set,{$ProductKey}是产品的key,${deviceName}是自己设置的设备名,也就是二维码中设置中用到的。实现的流程:
云智能中将添加的虚拟设备直接改名成“娱乐模式",天猫精灵app中对应的设备也会直接变成”娱乐模式“,对着天猫精灵直接喊 打开娱乐模式,阿里云平台就会接收到打开你创建的那个虚拟设备,通过nodered中订阅的topic:/sys/{$ProductKey}/${deviceName}/thing/service/property/set,接收到powerstate:1,直接会启动homeassistant中的娱乐模式。同样天猫精灵喊 关闭娱乐模式,阿里云平台就会接收到关闭你的那个虚拟设备,同样nodered中的topic接收到powerstate:0,就会启动homeassistant中的休息模式。
(注意点:阿里云平台和飞燕平台是有区别的,飞燕平台主要是对产品的设计,登陆阿里云飞燕平台,阿里云平台可以看到设备的mqtt。登陆:阿里物联网平台
以上功能实现后,就能通过天猫精灵直接控制homeassistant的场景了。以下部分属于进阶。
12、虚拟产品增加自定义属性:飞燕平台中在功能定义中可以自定义产品的属性,因为目前云智能app,不能添加投影仪音响等虚拟设备,可以添加灯这类的虚拟设备,所以你可以把你需要控制的功能自定义在灯这个设备里面。
13、mqttout功能使用:在创建虚拟产品的时候,每个产品是可以自定义参数的,这些参数也是可以通过mqttout功能传到阿里云的服务器的。json的格式参考:alink协议。里面有具体参数的说明。你只要把自定义的属性通过固定的json格式,通过mqttout功能回传阿里云服务器。回传的数据也会体现到你的云智能app上面。
使用mqttout功能用到的topic:/sys/{$ProductKey}/${deviceName}/thing/service/property/post
{
  "id": "123",
  "version": "1.0",
  "sys":{
      "ack":0
  },
  "params": {
    "Power": {
      "value": "on",
      "time": 1524448722000
    },
    "WF": {
      "value": 23.6,
      "time": 1524448722000
    }
  },
  "method": "thing.event.property.post"
}

参考资料:

1、Node-red 添加 home-assistant-websocket 节点,获取和控制homeassitant
2、node-red接入阿里飞燕平台同时接入天猫精灵语控
3、天猫精灵接入nodered控制homeassistant任何品牌的设备
4、阿里云飞燕平台
5、如何安装node-red
6、broadlink(博联)射频码学习7、小爱同学小度音箱天猫精灵多平台语音对接教程–nodered版本(缺点部分免费,智能控制固定的几个类型,不支持场景的控制)7、博联RMpro接入homeassistant(红外射频均适用)

帖子大部分是写给自己看的,以便后面能够重复操作的时候顺利上手,所以就不用图片了。看不懂的可以发私信或者回帖,我会回复的。
屏幕截图 2022-05-02 210948.png

天猫精灵设备

天猫精灵设备

云智能设备

云智能设备

设备界面

设备界面

下面的图片显示的是回传设备状态的flows图。

阿里云

阿里云

阿里云显示的设备状态

回传flows

回传flows

带设备消息回传的flows图

回复

使用道具 举报

54

主题

883

帖子

3790

积分

论坛元老

Rank: 8Rank: 8

积分
3790
金钱
2907
HASS币
0
发表于 2022-5-3 07:34:26 | 显示全部楼层
这个被你完全搞通了,厉害。现在阿里飞燕平台普通开发者只能新建10个产品了。我以前建了21个产品,删了就一个不能再新增加了。不过产品下面可以新建许多设备,家用足够了。空调接入数据双向反馈比开关还是麻烦一点。
回复

使用道具 举报

30

主题

282

帖子

1301

积分

金牌会员

Rank: 6Rank: 6

积分
1301
金钱
1019
HASS币
0
 楼主| 发表于 2022-5-3 11:48:53 | 显示全部楼层
bainiu 发表于 2022-5-3 07:34
这个被你完全搞通了,厉害。现在阿里飞燕平台普通开发者只能新建10个产品了。我以前建了21个产品,删了就一 ...

论坛支持的类别有限,自己设置的可以提高自己的认识,有些事情能搞的更明白。
回复

使用道具 举报

7

主题

59

帖子

352

积分

中级会员

Rank: 3Rank: 3

积分
352
金钱
293
HASS币
0
发表于 2022-5-4 10:25:28 | 显示全部楼层
很硬核啊  要一段时间慢慢消化,谢谢大佬分享  跪谢!
回复

使用道具 举报

0

主题

18

帖子

163

积分

注册会员

Rank: 2

积分
163
金钱
145
HASS币
0
发表于 2022-5-16 20:21:40 | 显示全部楼层
请教大神,我通过   7、获取虚拟设备用于app添加设备的二维码:因为飞燕的节点不能使用,所以原本教程中的二维码是不会生成的。我们只需要在生成产品的最后一步的时候点
配网+App下载二维码,会出现一个模糊的二维码,在二维码下方的输入框内,输入你定义的设备ID,就可了。然后下载云智能app,用你绑定天猫精灵的淘宝账号登陆云智能app,然后用云智能app扫码就可以添加这个虚拟设备了。(当时这个二维码我找了很久,因为我用的笔记本屏幕很小,这个输入框没有,找了半天原来才原来下拉一下就有输入框了。)  扫描二维码无法安装设备,提示设备未激活,后面不知怎么弄激活了还是添加失败。
回复

使用道具 举报

30

主题

282

帖子

1301

积分

金牌会员

Rank: 6Rank: 6

积分
1301
金钱
1019
HASS币
0
 楼主| 发表于 2022-5-17 20:03:52 | 显示全部楼层
xlwjh 发表于 2022-5-16 20:21
请教大神,我通过   7、获取虚拟设备用于app添加设备的二维码:因为飞燕的节点不能使用,所以原本教程中的 ...

未激活应该是mqtt设置的问题,设备没有上线,需要正确配置mqtt
回复

使用道具 举报

30

主题

282

帖子

1301

积分

金牌会员

Rank: 6Rank: 6

积分
1301
金钱
1019
HASS币
0
 楼主| 发表于 2022-5-17 23:39:33 来自手机 | 显示全部楼层
xlwjh 发表于 2022-5-16 20:21
请教大神,我通过   7、获取虚拟设备用于app添加设备的二维码:因为飞燕的节点不能使用,所以原本教程中的 ...

需要到nodered里面设置一个mqttin相当于订阅一下阿里的mqtt服务,这个mqtt就相当于一个虚拟设备,一旦订阅成功后,在阿里云的平台里面就可以看到设备被激活了。
回复

使用道具 举报

1

主题

26

帖子

356

积分

中级会员

Rank: 3Rank: 3

积分
356
金钱
330
HASS币
0
发表于 2022-6-16 11:15:19 | 显示全部楼层
很不错的教程
回复

使用道具 举报

0

主题

7

帖子

42

积分

新手上路

Rank: 1

积分
42
金钱
35
HASS币
0
发表于 2022-6-24 11:07:05 | 显示全部楼层
大神,想问一下阿里云飞燕平台上面通知物模型只保留20天,是不是20天之后就得重新建一个虚拟设备?
回复

使用道具 举报

30

主题

282

帖子

1301

积分

金牌会员

Rank: 6Rank: 6

积分
1301
金钱
1019
HASS币
0
 楼主| 发表于 2022-6-26 08:40:26 | 显示全部楼层
txfleo 发表于 2022-6-24 11:07
大神,想问一下阿里云飞燕平台上面通知物模型只保留20天,是不是20天之后就得重新建一个虚拟设备? ...

我没有用飞燕平台,是直接使用的阿里云里面虚拟设备的mqtt。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-17 06:08 , Processed in 0.060944 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表