野次馬エンジニア道

野次馬な気持ちでプログラミングをあれこれと綴ります

IKEA TRÅDFRI を RaspberryPi + Zigbee (Things Gateway) で操作

GWのIKEAのニュースを見て前から気になっていた

www.ikea.com

IKEA TRÅDFRIを購入。帰宅後、早速Google Homeでの接続を調べていると、なんとGateway(日本未発売)が必要なことが判明。。。 色々調べていると、Hueのブリッジとの接続例ばかり。Hueはちょっと高めなのでなんとかIKEAで揃えたい。

公式のページ*1によるとZigbeeLight Linkというプロファイルに準拠しているようなので、自分でZigbeeで操作できるのではと思いまずやってみる*2

Mozilla IoT - Things Gateway

ZigbeeといえばXBeeだが、シリアル経由でXBeeを接続し設定することが必要。最終的にはRaspberryPiに刺したいのでお手軽なUSBドングルタイプのXStick ZB*3にしてみる。

XStick ZB

XStick ZB

すると同じ構成のMozilla IoTというプロジェクトを発見。対応しているRaspberry Pi W Zeroも手元にあったのでそちらを今回は利用。

f:id:notta55:20180505011357j:plain:w400

Zigbee対応はAdd-onという扱いで中身をさらっと見てみるとシンプルなコード。ちょうど使いたかったモジュールでxbee-apiも使っているのでリファレンスとしても良さげ。

github.com

ZHA vs ZLL

Zigbee Light Link (ZLL)は実際には、Mozilla IoTでも非対応*4。実際他の接続例を調べた限りではHome Automation(ZHA)のプロファイルで接続している例が多かった。Coordinatorを使った通常のメッシュのネットワークの接続のフローがそのまま使える。

ZLLのメリットは全てRouterでCoordinater無しでネットワークを構築するためのTouchLinkプロトコルなのだろうが最初のフローでマスターキーが必要だったりして個人で作れるかどうかは不明。

XBeeのセットアップ と Bulbのリセット

早速セットアップ。XBeeの設定は専用のソフトウェア - XCTUで行う。ここを参考にわからない用語だらけだがわかったフリで進める。

  • Zigbee Coordinator firmwareを焼く (Coordinator/Router/End Device用がある)
  • 以下の設定になっていることを確認する。これがZigbee ZDO (ZigBee device objects) /ZCL (ZigBee cluster library) のデバイスに接続するのに必要*5
    • ZS = 2
    • EE = 1
    • EO = 1
    • AO = 1
    • AP = 1

APIモードとは、0x7E+MSB,LSB(データ長)+コマンド、データ+チェックサム(フレーム) で送信する形式。普通のシリアルのような通信は透過モード。

Mozilla IoTの設定画面でZigbeeのAdapterが見えればXBeeの設定は成功。見えない場合は何か設定が間違っている可能性が高い*6

f:id:notta55:20180505013614p:plain

  • デフォルトだとライトが同梱のコントローラーにペアリングされているので主電源を6回トグル *7

実際XSitckをPCに際してX−CTUでScanしてみるとライトがネットワーク上で見える。 f:id:notta55:20180505011409p:plain:w400

バイスの追加と操作

この状態でRaspberryPiの電源を入れて一通り設定。スキャンするとライトが一覧に現れるので追加。

f:id:notta55:20180505084758p:plain:w400

内部的にはメッシュのネットワークが構築されて、うまくいくとモバイルからでもライトが操作可能になる。

f:id:notta55:20180505011425j:plain:w350

輝度調整とオンオフ以外は現在のGatewayでは未対応のようだ。もう一度X-CTUで確認してみるときちんとネットワークが構築されていることがわかる。

f:id:notta55:20180505090117p:plain:w400

次回はHAのプロファイルを使ってGoogleHomeと連携させてみようと思う。XBeeにも慣れたので次は普通のモジュールを買って繋げてみようかな。

XBeeで作るワイヤレスセンサーネットワーク (Make: PROJECTS)

XBeeで作るワイヤレスセンサーネットワーク (Make: PROJECTS)