Zigbeeを使った安価な温度湿度センサを入手しました。AliExpressで送料込みで648円でした。Zigbee2MQTTで問題なく認識され、HomeKitから使用することができました。以前、安価な磁気接触センサを紹介しました。
これと同じシリーズの製品です。同じく単4電池を2本使用しますので、ボタン電池製品と比べて少し大きいです。でも電池の持ちは期待できます。販売ページはこちらです。
開封して分解
箱から出すとこんな感じです。磁気開閉センサと同じ形・大きさですが、温度計・湿度計のマークがプリントされています。写真に見える点のような穴は、ペアリング状態を示すLEDの部分です。ここには写っていないヘリの部分に、リセットボタンの穴があり、そちらにはRESETと書いてあります。
本体裏蓋をスライドさせると電池ボックスが現れます。
中央にネジが見えます。これを外して、軽い噛み合わせを外すと、中が見えます。
磁気接触センサの内部 (下の写真) と比較すると、間違い探しレベルでそっくりです。
左にあるのがワンチップコンピュータで、ZTUという文字が見えます。TuyaのZigbeeチップです。写真を見比べると、中央ネジ穴の上にあった磁気スイッチ(磁気抵抗センサ)が無くなってます。
温度湿度センサ
磁気スイッチが無くなった代わりに、右端下部に6ピンの部品が増えています。これが温度湿度センサのようです。Zigbeeチップからできるだけ離して発熱(全く発熱しませんが)の影響を避けようと配慮されていると思われます。
この拡大写真を下に示します。
8305 BBCT3Aと刻印されています。番号で検索したところSensylinkという会社のI2C接続の温度湿度センサのようです。刻印されている四角にSのマークが会社のロゴで、型番が8305です。
温度誤差は+/-0.5度、湿度は+/- 3.0%だそうで、ちゃんとしてます。前回使用したDHT20と同等の性能です。6個のピンは、電源、グラウンド、I2C信号、校正、警告のピンのようです。
Zigbee2MQTTに接続してHomeKitで使う
次にZigbee2MQTTにペアリングしてHomeKitで使えるようにします。このためには、Zigbee2MQTTサーバが稼働していて、MQTTブローカー (Mosquitto) が動き、Homebridgeが動いていて、さらにHomebridgeにZigbee2MQTTを使用するプラグインが入っている必要があります。これらをRaspbetty Piで動かしてます。
これらの設定に関しては、以下をご覧ください。
まずは、Zigbee2MQTTのwebインタフェースからペアリングします。ペアリングモードがoffに設定してある場合は、webインタフェース右上のPermit join (All)のメニューをクリックしてペアリングを許可します。すると5分間、ペアリングが可能になります。
この状態で接触センサーの横にあるリセットボタンを5秒程度長押しします。するとLEDが点滅してペアリングモードに入ります。ペアリングが終了すると、以下のようにセンサを確認できました。TS0201というセンサとして認識されているようです。写真は液晶表示付きの高そうなセンサですが、これもおそらくは同じZTUチップを使用したセンサだと思われます。
mosquitto_subコマンドでモニターします。
% mosquitto_sub -h 192.168.xxx.xxx -t "zigbee2mqtt/#" -v
しばらくすると
zigbee2mqtt/0x9999999999999999 {"battery":100,"humidity":66.05,"linkquality":163,"temperature":23.82,"voltage":3000}
のように温度、湿度のメッセージが現れました。以下のようにsubscribeするIDを限定すれば、
% mosquitto_sub -h 192.168.xxx.xxx -t "zigbee2mqtt/0x9999999999999999/#" -v
このセンサからのみの情報が得られます。
HomebridgeにZigbee2MQTT用のプラグインが設定してあれば、あとは自動的に温度・湿度センサとして認識されて、iPhoneやMacのホーム.appに表示されます。温度、湿度の一覧に加えられているので、クリックすると、
このように現在温度・湿度の測定結果を見ることができます。センサ名の初期値はIDでしたが、HomeKitで変更しました。
まとめ
Tuyaの安価な温度・湿度センサをHomeKitで使いました。送料込み675円は、HomeKitで使える温度・湿度センサとして最安と思います。ESP32でDIYしても、部品代だけでこの価格を上回ります。しかも安価な単4電池駆動です。ボタン電池の製品よりサイズが大きくなりますが、温度センサなら気にならないと思います。もう少し買い足しても良いかなと思いました。
コメント
任意の時間もしくは定期的にセンサーの値(例えば”temperature”)を取得することは出来ますか?Zigbee2mqttのDashborad常にReportingってそれらしき設定があるんですが、うまくいかず。別途、Node-redで温度と湿度の推移グラフを作りたいのですが、MQTTに流れてくるデータのインターバルが長くて困ってます。
こちら
https://www.zigbee2mqtt.io/devices/TS0201.html
にはreadできないと書いてありますのでおそらく任意のタイミングで温度を得ることはできないのではないかと思います。
ただパブリッシュ間隔がいつも同じというわけでもないので、もしかしたら変化があると頻繁にパブリッシュするのかもしれないです。
ありがとうございます。確かにread出来ないとありますね。見逃していました。
また、いつも投稿ありがとうございます。Zigbee2MQTT関連のセンサ参考にさせて頂きました。