最近買了新的人體傳感器2s,結果發現xiaomi_gateway3沒辦法正常讀取,只有ble正常。於是我只能使用雲端版的xiaomi,然後感應燈自動化就不夠及時了。
小米IoT有一套很成熟的平臺,而且陸版往往比台版早推出許久,因此我認為參數運作等等早就已經在陸版推出不久就已經被串好,只是台版沒有順利用陸版運作邏輯去撈資料。
陸版跟台版最大差異是無線與伺服器。
因此台版人體傳感器2s,其實與陸版人體傳感器2s是不同model,這也導致xiaomi_gateway3沒辦法將台版人體傳感器2s用陸版人體傳感器2s的參數去撈資料。
https://iot.mi.com/v2/new/doc/introduction/knowledge/spec
https://home.miot-spec.com/s/xiaomi.motion.pir1
以上是小米各種產品的iot運作參數,在兩三年前,小米各種產品都各自有一套siid與piid,這部份看以上連結就能查閱。
台版人體傳感器2s與陸版人體傳感器2s的參數都一樣,只是一個型號是
xiaomi.motion.pir1g、xiaomi.motion.pir1,這是市場型號,對於xiaomi_gateway3來說,型號是19552、13617。
怎麽得知台版人體傳感器2s的model?透過xiaomi_gateway3的裝置資訊!

這邊可以看到model為19552。
米家生態系產品眾多,不可能每一種都為其創立函式。一定是透過字典mapping,而字典mapping就需要model在字典中。
這份字典在哪裡?在xiaomi_gateway3/core/devices.py中。


在xiaomi_gateway3/core/devices.py中,siid與piid都能對上,如2.p.1005是光照度lux。
而2.e.1008,則對應MIot的Event,如果有觸發就會上報事件,即時更新狀態。

要如何讓台版人體傳感器2s在hacs中的xiaomi_gateway3中能正常被讀取?
- 參考https://home.miot-spec.com/s/xiaomi.motion.pir1,瞭解eiid、siid。
- 透過xiaomi_gateway3的裝置資訊取得model。
- 在xiaomi_gateway3/core/devices.py中,添加model,並對照eiid與siid。