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

 找回密码
 立即注册
查看: 4296|回复: 20

[技术探讨] ha反向控制小度设备

[复制链接]

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
发表于 2022-10-25 09:06:04 | 显示全部楼层 |阅读模式
主要参考:小度设备反向接入HomeAssistant,一个全网设备接入新思路 (bilibili.com)

家里很多设备是围绕天猫精灵买的,通过巴法云可以使用天猫、小度、小爱音箱控制ha里面的大部分设备和场景,但是ha不能反向控制天猫里面的设备。因为家里的空调和新风是通过天猫精灵控制,也可以通过小度音箱控制。看了B站的那个视频后发现小度音箱有一个网页控制的界面,那么通过nodered网页访问的方式是不是就可以实现小度的设备模拟成ha里面的一个实体,通过开关实体来开关小度里面的设备。

nodered中安装node-red-contrib-home-assistant-websocket 0.45版本后,在ha里面也安装nodered的集成。(不要安装0.46版本,那个版本nodered需要3.0以上的版本才支持,我的nodered版本是2.1的。)
https://github.com/zachowj/hass-node-red。
这个版本的集成里面可以生成开关。在nodered里面创建一个switch,对应ha里面也会创建一个设备。创建设备后,需要重启ha,这样那个开关才会起作用。
微信图片_20221025085312.png 微信图片_20221025085607.png
msg.payload={
    "header": {
        "namespace": "DuerOS.ConnectedHome.Control",
        "name": operate,
        "payloadVersion": 3
    },
    "payload": {
        "appliance": {
            "applianceId": [
                strapplianceId
            ]
        },
        "parameters": {
            "proxyConnectStatus": false
        }
    }
}
小度设备的列表通过以下链接获取。applianceId和操作的代码
https://xiaodu.baidu.com/saiya/smarthome/devicelist?from=h5_control
网页的头的设定的话,需要自己登录小度的平台。然后抓取,设定到msg.header中。
https://dueros.baidu.com/didp/do ... kdown#TurnOnRequest
微信图片_20221025085938.png



回复

使用道具 举报

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
 楼主| 发表于 2022-10-27 08:57:02 | 显示全部楼层
自己顶一下吧,论坛里面没有这种需求的人吗?还是小度音箱用的人太少了?
回复

使用道具 举报

5

主题

78

帖子

950

积分

高级会员

Rank: 4

积分
950
金钱
872
HASS币
0
发表于 2022-10-27 09:43:38 | 显示全部楼层
我顶,我用的小度。。。
回复

使用道具 举报

59

主题

675

帖子

4303

积分

论坛元老

Rank: 8Rank: 8

积分
4303
金钱
3623
HASS币
20
发表于 2022-10-27 11:04:00 | 显示全部楼层
老哥 node-red的流分享一下吧  方便抄作业
回复

使用道具 举报

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
 楼主| 发表于 2022-10-27 11:08:07 | 显示全部楼层
本帖最后由 hcfong2020 于 2022-10-27 11:15 编辑
gmshiwoge 发表于 2022-10-27 11:04
老哥 node-red的流分享一下吧  方便抄作业

这个主要是网页抓取啊,没有其他的设置。

flows (1).zip

2.1 KB, 下载次数: 37

回复

使用道具 举报

59

主题

675

帖子

4303

积分

论坛元老

Rank: 8Rank: 8

积分
4303
金钱
3623
HASS币
20
发表于 2022-10-27 11:20:13 | 显示全部楼层
hcfong2020 发表于 2022-10-27 11:08
这个主要是网页抓取啊,没有其他的设置。

老哥  用这个方法  设备被其他东西控制(比如小度)   ha这边有反馈吗
回复

使用道具 举报

59

主题

675

帖子

4303

积分

论坛元老

Rank: 8Rank: 8

积分
4303
金钱
3623
HASS币
20
发表于 2022-10-27 11:58:30 | 显示全部楼层
本帖最后由 gmshiwoge 于 2022-10-27 14:39 编辑
hcfong2020 发表于 2022-10-27 11:08
这个主要是网页抓取啊,没有其他的设置。

是替换这3个地方可以测试了吗  我替换上去测试没反应   返回statusCode: 200
var strapplianceId = "fffffffffffff-fffffffffff";
var operate = "TurnOnRequest";
"cookie": "XXXXXXX",
回复

使用道具 举报

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
 楼主| 发表于 2022-10-27 13:17:43 | 显示全部楼层
gmshiwoge 发表于 2022-10-27 11:58
是替换这3个地方可以测试了吗  我替换上去测试没反应   返回statusCode: 200
var strapplianceId = "0122 ...

替换的是设备id还有你登录百度的cookie
回复

使用道具 举报

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
 楼主| 发表于 2022-10-27 13:19:20 | 显示全部楼层
gmshiwoge 发表于 2022-10-27 11:20
老哥  用这个方法  设备被其他东西控制(比如小度)   ha这边有反馈吗

没有反馈,因为是网页控制,控制的时候是有反馈,要想有反馈,需要不断的访问网页,才能获取经过小度控制的设备状态,不过我觉得没有必要。
回复

使用道具 举报

34

主题

312

帖子

1452

积分

金牌会员

Rank: 6Rank: 6

积分
1452
金钱
1140
HASS币
0
 楼主| 发表于 2022-10-27 13:21:01 | 显示全部楼层
gmshiwoge 发表于 2022-10-27 11:58
是替换这3个地方可以测试了吗  我替换上去测试没反应   返回statusCode: 200
var strapplianceId = "0122 ...

你自己抓取的cookie最好不要乱贴,不然别人可以用这个来访问你的设备。
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-11-28 20:46 , Processed in 0.094444 second(s), 34 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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