Home

Awesome

https://github.com/Yonsm/ZhiBot

Uniform Bot Platform for HomeAssistant

通用交互式机器人平台,目前支持天猫精灵、小爱同学、钉钉群机器人。

安装:把 zhibot 放入 custom_components;也支持在 HACS 中添加自定义库的方式安装。

提示:如果只用了单个平台,可以把未使用的平台文件删除,如只用了天猫精灵,可以删除掉 ding.pymiai.py

配置:参见下文。也可以参考 我的 Home Assistant 配置configuration.yaml

零、天猫精灵个人技能机器人(强烈推荐) genie2bot

1. Home Assistant 配置

zhibot:
  - platform: genie2
    token: XXXXXXXX
    file: !secret zhibot_file(天猫精灵-个人技能-后端服务-编辑-下载认证文件,文件名,不包含.txt)
    text: !secret zhibot_text(认证文件文件内容)

配置后,可以进行对话测试:https://xxx.xxx.xxx:8123/genie2bot?q=打开客厅灯&token=XXXXXXXX;也可以在浏览器通过以下链接获取相应的预料库和词汇表:

语料库和实体词汇表,在后续的配置后批量导入。

2. 天猫精灵技能应用平台配置

登录 天猫精灵技能应用平台创建新技能个人技能(私域分享) ,然后按照下面的示意图配置。

HASS-GENIE1 HASS-GENIE2 HASS-GENIE3 HASS-GENIE4 HASS-GENIE5 HASS-GENIE6 HASS-GENIE7 HASS-GENIE8

一、天猫精灵机器人 geniebot

一次性接入 Home Assistant 的大部分设备到天猫精灵,通过天猫精灵语音控制开关设备、查询传感器。无需第三方服务器,直接使用 Home Assistant 作为服务器和 OAuth,链路高效。

1. Home Assistant 配置

zhibot:
  - platform: genie

无需配置 token,会修正 HA 的 OAuth 认证方式延长认证有效期(借鉴来的套路,参见 oauthbot,我也没搞明白)。建议配置 token,这样不用重写 HA 的 OAuth 认证有效期,此时下文中的 网关 URL 将变成 https://xxx.xxx.xxx:8123//geniebot?token=******

2. 天猫精灵开放平台设置

1). 添加技能

登录 天猫精灵开放平台,进入 设备开发与接入生活物联网平台云云接入技能开发添加新技能

2). 服务设置

3). 授权调试

内容设置技能发布发布前验证授权调试账户配置→ 输入 HA 账户密码 → 可看到你的设备列表。

4). 设备解绑

天猫精灵开放平台已升级为 2.0,但新版竟然没有 设备解绑 的功能。虽然旧版已无法新增 智能家居 技能,但可以解绑设备:控制台技能应用平台内容&IOT 技能服务设置测试验证测试已开启设备解绑

另外,这里有 旧版本配置图示,仅供参考。

3. 使用方式

直接通过天猫精灵语音控制 HA 设备,如“天猫精灵,打开客厅灯”,也可以查询传感器,如“天猫精灵,阳台传感器 PM2.5”。

4. 名称规范

天猫精灵查询 HA 时,重要的三个参数需符合规范,否则天猫精灵理解不了:

门口,客厅,卧室,客房,主卧,次卧,书房,餐厅,厨房,洗手间,浴室,阳台,宠物房,老人房,儿童房,婴儿房,保姆房,玄关,一楼,二楼,三楼,四楼,楼梯,走廊,过道,楼上,楼下,影音室,娱乐室,工作间,杂物间,衣帽间,吧台,花园,温室,车库,休息室,办公室,起居室
灯,房灯,吸顶灯,床头灯,床灯,电灯,吊灯,台灯,落地灯,壁灯,挂灯,射灯,筒灯,灯带,灯条,暗藏灯,背景灯,阅读灯,柜灯,衣柜灯,天花灯,路灯,彩灯;空调,空气调节器,挂式空调;风扇,电风扇,落地扇,电扇,台扇,壁扇,顶扇,驱蚊风扇,暖风扇,净化暖风扇,冷风扇,塔扇;空气净化器,空净,空气清洁器;扫地机器人,扫地机,打扫机,自动打扫机;窗帘,窗纱,布帘,纱帘,百叶帘,卷帘;加湿器,空气加湿器,加湿机,空气加湿机;插座,插头,排插单孔单控;暖奶器,热奶器,牛奶,调奶器,温奶器,冲奶机;电热水壶,养生水壶,水壶,养生壶,热水壶,电水壶;豆浆机;烤箱,嵌入式烤箱;电视;净水器,净水器箱型;冰箱,双开门冰箱,冰柜;开关;机顶盒;传感器;热水器,电热水器,燃气热水器;饮水机;摄像头,摄像,摄像机;路由器,路由,智能路由器;电饭煲,电饭锅,饭煲,饭锅;水族箱控制器,智能鱼缸,鱼缸;蒸脸器;取暖器,加热器;料理机;洗衣机,顶开式洗衣机,滚筒洗衣机;微波炉;空气检测仪;除湿机,除湿器;智能床;万能遥控器;香薰机;窗;抽油烟机,抽烟机,烟机;指纹锁;洗碗机,洗碗器;车;浴霸;晾衣机;新风机;壁挂炉;干衣机,干衣器;驱蚊器;跑步机;智能门控,智能门锁,门锁,电子锁;破壁机,超跑;网关;秤;智能手环;电压力锅,压力锅,高压锅;晾衣架,衣架,晒衣架;电热毯;按摩仪;按摩椅;无线按钮;电视盒子,盒子,小米盒子,荣耀盒子,乐视盒子,智能盒子;投影仪,投影机,投影,背投;风扇灯;门磁传感器;人体传感器;灯带;智能猫眼;燃气热水器;面包机;消毒柜;磁炉,电磁炉;补水仪;电动牙刷;灭蚊器;双键开关;三键开关;单火开关;单火双键开关;单火三键开关;榨汁机;调奶器;酒柜;吸奶器;消毒锅;擦窗机;动感单车;走步机;多功能料理锅;吸尘器;电脑;温湿度传感器;四键开关;垃圾处理器;血糖仪;血压仪;智能垃圾桶;取暖桌;划船机;点读笔;猫砂盆;制冰机;电炸锅;按摩贴;烟雾传感器;燃气传感器;水浸传感器;光线传感器;暖菜板;艾灸仪;辅食机;足浴盆;暖宫带

会尝试从 HA 配置信息中,根据规则尝试自动转换成天猫精灵匹配的名称和类型。但有些可能匹配不成功,此时可以在 customize.yaml 中,定制天猫精灵能识别的区域、名称和类型,如:

genie_zone: 客厅
genie_name: 吸顶灯
genie_type: outlet

其中 genie_zone 可以配置给单个设备,也可以配置给分组(将应用到分组下的所有设备)。

建议:把设备按上述区域名称分组(如“客厅”),或以上述区域前导设备名称(如“客厅灯”);设备名符合上述名称规范。这样会自动推测搞定,不用手动配置。

二、小爱同学机器人 miaibot

类似天猫精灵,但小爱同学的智能设备使用控制方式需要唤醒词语,实际体验远远没有天猫精灵好。且需进入测试模式,有效时间短,要频繁重新进入测试模式,不建议使用。

三、钉钉群机器人 dingbotHome Assistant钉钉群机器人 双向互动

钉钉群设置:在钉钉群里添加自定义机器人,勾选“是否开启 Outgoing 机制”。据称此功能在内测,部分用户可能没有没有此选项,佛系或自行解决。

1. Home Assistant 配置

zhimsg:
  - platform: ding
    name: 钉钉信使
    token: !secret dingbot_token
    secret: !secret dingbot_secret

zhibot:
  - platform: ding
    token: !secret zhibot_token

依赖:需依赖 ZhiMsg,请一并安装好。 注意zhibot- platform: ding 没有配置 name

2. 钉钉群机器人设置

HASS-DING

3. 使用方式

Home Assistant 可以给钉钉群机器人发送消息。也可以在钉钉群里面 @机器人 控制 Home Assistant,输入 ? 查询使用样例,如下:

打开/关闭(设备或群组名);查询(设备或群组名,可省略“查询”);触发(自动化,可省略“触发”)

四、钉钉群机器人 dingbot钉钉群机器人Home Assistant小爱音箱 单向控制

钉钉群设置:在钉钉群里添加自定义机器人,勾选“是否开启 Outgoing 机制”。据称此功能在内测,部分用户可能没有没有此选项,佛系或自行解决。

1. Home Assistant 配置

zhimi:
  username: !secret zhimi_username
  password: !secret zhimi_password

zhimsg:
  - platform: miai
    name: 客厅音箱
    did: 380205692
    model: x08c
  - platform: miai
    name: 过道音箱
    did: 89463074
    model: lx01

zhibot:
  - platform: ding
    name: 客厅音箱
    token: !secret zhibot_token
  - platform: ding
    name: 过道音箱
    token: !secret zhibot_token

依赖:需依赖 ZhiMiZhiMsg,请一并安装好。 注意:必须配置 name,并和 ZhiMsg 的小爱音箱同名。

2. 钉钉群机器人设置

HASS-MIAI

3. 使用方式

在钉钉群里面 @小爱音箱 来播报或执行文本。输入 ? 查询使用样例,如下:

您好,我是小爱同学
查询天气
执行关灯
静默关灯
音量40
音量70%大声说您好

还可以 ?? 查询更多 MIoT 命令,如下:

Get Props: ?<siid[-piid]>[,...]
           ?1,1-2,1-3,1-4,2-1,2-2,3
Set Props: ?<siid[-piid]=[#]value>[,...]
           ?2=#60,2-2=#false,3=test
Do Action: ?<siid[-piid]> <arg1> [...]
           ?5 Hello
           ?5-4 Hello #1

Call MIoT: ?<cmd=prop/get|/prop/set|action> <params>
           ?action {"did":"380205692","siid":5,"aiid":1,"in":["Hello"]}

Call MiIO: ?/<uri> <data>
           ?/home/device_list {"getVirtualModel":false,"getHuamiDevices":1}

Devs List: ?list [name=full|name_keyword] [getVirtualModel=false|true] [getHuamiDevices=0|1]
           ?list Light true 0

MiIO Spec: ?spec [model_keyword|type_urn]
           ?spec
           ?spec speaker
           ?spec xiaomi.wifispeaker.lx04
           ?spec urn:miot-spec-v2:device:speaker:0000A015:xiaomi-lx04:1

五、参考