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

 找回密码
 立即注册
查看: 8130|回复: 9

[经验分享] docker的home-assistant無法控制小米網關error":"Invalid key的修正...

[复制链接]

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

发表于 2017-12-1 10:27:25 | 显示全部楼层 |阅读模式
本帖最后由 windgo 于 2017-12-3 16:28 编辑

這是一個加入小米網關到ha的一個排錯心得

一開始我就使用群暉的docker安裝home-assistant使用但是ha納入小米網關後,卻一直都沒辦法正常控制燈的開關
開關時查看home-assistant.log都是看到下面的錯誤訊息
[PyXiaomiGateway] Got error element in data {"error":"Invalid key"}

我確認米家app已經打開區域網通信協議,並且抄下key寫到configuration.yaml

當時無法控制小米網關的設定如下,怪的是如果不加上小米網關的ip就無法正常初始化他 <--異常情況
xiaomi_aqara:
  discovery_retry: 5
  gateways:
    - mac: 34CE008AD128
      key: 1khjm1uwwwsl09pp
      host: 192.168.31.172

群暉第一次啟動docker ha的執行參數如下,請注意要有net=host,ha才能連到小米網關
homeassistant/home-assistant:0.58.1代表你要執行的docker影像檔版本

docker run -d --name="home-assistant" -v /volume2/NAS2/home-assistant:/config -v /etc/localtime:/etc/localtime:ro --net=host homeassistant/home-assistant:0.58.1

確認完上面的設定後
我翻了所有能查到的資料跟文件,都是說無法控制是因為從米家app拿到的key不對
或是不能使用IOS app拿key,必須使用android手機拿到的key才能正常使用
但我換了好幾個android裝置拿到的key也還是無法控制,跳出一樣的錯誤訊息

因此我決定先來抓看看ha到小米網關的封包到底有沒有送到
先到群暉的docker-->詳細資訊-->終端機-->新增-->點選bash
進入ha的終端畫面後,執行下面步驟安裝ngrep

apt-get update
apt-get install ngrep

接下來執行
ngrep port 9898
並重啟ha與控制小米網關燈來觀察ha主機是否有和小米網關做封包溝通

在有問題的當下是看不到溝通封包的
查了文件寫 ha與小米網關是透過224.0.0.50 udp port 9898在做溝通的
因此我又在無線路由器上(安裝asus-merlin)開啟multicast功能

Wireless:到2.4GHz的進階設定 --> 打開IGMP snooping
LAN:到IPTV -->套用的ISP設定為None,IPTV port選擇你的群暉主機接的port,打開IGMP proxy與IGMP snooping
WAN:關閉VPN和DHCP功能

做完上面設定後,在ha終端機使用ngrep port 9898就可以看到小米網關有送224.0.0.50:9898的封包到ha
但是ha還是沒有丟任何相關的封包出來
因此繼續查文件,發覺可能docker ha需要在configuration.yaml的xiaomi_aqara增加一行interface的設定
我的群暉主機ip是192.168.31.184因此必須設為interface: 192.168.31.184
設定完成後,就可以正常控制小米網關了
這是我查小米網關的經驗,希望對使用docker跑ha的同學有所幫助

最後可以控制小米網關的設定如下
xiaomi_aqara:
  discovery_retry: 5
  interface: 192.168.31.184
  gateways:
    - mac: 34CE008AD128
      key: 1khjm1uwwwsl09pp


從dokcer ha終端機可看到ha重啟時,ha與小米網關正常溝通的封包
ngrep port 9898
Image_20171201_004.png

從dokcer ha終端機可看到ha控制網關開燈時,ha與小米網關正常溝通的封包
ngrep port 9898

Image_20171201_003.png


從群暉終端機可看到ha控制網關開燈時,ha與小米網關正常溝通的封包
tcpdump port 9898
Image_20171201_002.png

评分

参与人数 1金钱 +18 收起 理由
+ 18 这个非常有用,感谢楼主分享!.

查看全部评分

回复

使用道具 举报

30

主题

997

帖子

4153

积分

论坛元老

Rank: 8Rank: 8

积分
4153
金钱
3151
HASS币
0

活跃会员

发表于 2017-12-1 10:38:31 | 显示全部楼层
一般来说提示Invalid key多数原因是配置文件里的格式不对, 尤其是直接从网页里直接copy的命令,直接黏贴过去就容易出现此问题
回复

使用道具 举报

0

主题

37

帖子

327

积分

中级会员

Rank: 3Rank: 3

积分
327
金钱
290
HASS币
0
发表于 2017-12-1 15:00:44 | 显示全部楼层
组播的这个东西,按理说路由不需要设置呀,难道你不设置就不允许了?
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

 楼主| 发表于 2017-12-1 18:31:19 | 显示全部楼层
yqowen 发表于 2017-12-1 15:00
组播的这个东西,按理说路由不需要设置呀,难道你不设置就不允许了?

我不設置的話是抓不到封包的
設定後就可以抓到了
或許有跟我一樣用Asus-merlin的人可以驗證一下
回复

使用道具 举报

1

主题

281

帖子

1224

积分

金牌会员

Rank: 6Rank: 6

积分
1224
金钱
942
HASS币
0
发表于 2017-12-10 22:01:29 | 显示全部楼层
大神,奇怪了,我没设interface,小米网关能连上的啊
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

 楼主| 发表于 2017-12-10 23:27:20 | 显示全部楼层
nakoururu 发表于 2017-12-10 22:01
大神,奇怪了,我没设interface,小米网关能连上的啊

其實我在網路上也只看到一篇說可以設interface
其他人的問題通常都是要使用android手機拿key
以及新版本的網關名稱要改為xiaomi_aqara
但我從網關到手1個多月一直沒辦法正確接入
小米網關其實沒正確接入還是能讀傳感器資料的
只差在不能控制閘道燈跟控制時會跳錯誤訊息
沒有需要的人其實不接入也沒關係的
回复

使用道具 举报

1

主题

35

帖子

328

积分

中级会员

Rank: 3Rank: 3

积分
328
金钱
293
HASS币
0
发表于 2018-7-24 09:30:22 | 显示全部楼层
windgo 发表于 2017-12-1 18:31
我不設置的話是抓不到封包的
設定後就可以抓到了
或許有跟我一樣用Asus-merlin的人可以驗證一下 ...

我也是梅林路由器欸,遇到了和你一样的问题,然后现在设置成这样的还是不能用 TIM截图20180724092920.png
interface设置的是docker主机的地址
回复

使用道具 举报

27

主题

387

帖子

3269

积分

元老级技术达人

积分
3269
金钱
2862
HASS币
40

教程狂人

 楼主| 发表于 2018-7-25 13:01:20 | 显示全部楼层
ChristianSwift 发表于 2018-7-24 09:30
我也是梅林路由器欸,遇到了和你一样的问题,然后现在设置成这样的还是不能用
interface设置的是docker主 ...

你有做了什麼測試
看到什麼訊息呢?
回复

使用道具 举报

0

主题

13

帖子

157

积分

注册会员

Rank: 2

积分
157
金钱
144
HASS币
0
发表于 2020-3-27 10:22:11 | 显示全部楼层
推一下
雖然設置interface有些爭議
但看來某些情況下還是有幫助的

我用 pi 4裝 raspbian + hassio docker ,網關可以正常運作
昨天家了pppoe外撥取得外網ip後, HA 就抓不到網關了
增加了 interface指定走內網,就可以抓到
回复

使用道具 举报

0

主题

21

帖子

132

积分

注册会员

Rank: 2

积分
132
金钱
111
HASS币
0
发表于 2022-7-6 22:49:53 | 显示全部楼层
我来再补充下,在docker运行命令如下, 可以抓包。
apk update
apk add ngrep

但实际只能看到网关有在联系ha,但没有回包。看看有没有其他人碰到类似的问题,如何解决的?
192.168.50.54:4321 -> 224.0.0.50:9898 #1                                            
  {"cmd":"heartbeat","model":"acpartner.v3".....
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-12-23 18:04 , Processed in 0.058536 second(s), 36 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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