中華スマート電球(MagicHome/Magichue)を買った
スマート電球が欲しい。スマート電球っていうのはスマホとかでオン・オフしたり調光したりできる電球です。どうでもいいですがスマート家電のスマートって何がスマートなんでしょうね?
早速色々ググってみるとスマート電球といえばPhilips Hueが圧倒的に有名らしい。ふむふむ。。。
Philips Hue(ヒュー)スターターセットv3 スマートLEDライト 【Amazon Alexa、Google Home、Apple HomeKit、LINE対応】
- 出版社/メーカー: フィリップスライティング(Philips Lighting)
- 発売日: 2017/10/13
- メディア: ホーム&キッチン
- この商品を含むブログを見る
その後適当にアマゾンを探索してるとこんなのを発見。Magic Hueというらしい。
調光・調色で3000円!やすい!即購入!即購入は嘘です。結構悩みました。
開封
どん 見るからに中華な箱。電球は割と普通の見た目。
専用のアプリをインストールして適当にWifiの設定を済ます。ここらへんは他のブログにも書いてあるので省略。Wifiは2.4GHzしか対応してないので注意。
で、とりあえずアプリから色々いじってみる。反応は十分速いですねー。60W相当って書いてあったんだけど明らかにそれよりも暗い、80W相当のやつにしとけばよかった。 色変えられると楽しいかなーって思ったけど多分使わないっすねこれは。。。
PythonでMagic Hueの非公開APIを叩く
そもそも俺がなぜスマート電球を買ったかというと、自作のスマートロックと連動させて電気を付けたり消したりしたいわけですよ。だから専用アプリからしか操作できません(笑)とかだったら困るんですね。PhilipsHueならユーザーも多いし公式のAPIも使える(多分)んだけどこの怪しい中華電球で同じことができるかというと謎。 とりあえず公式アプリの通信を見てみた。 MacユーザーでかつiPhoneユーザーならUSBでマックと繋いだ後
$ rvictl -s <UDID>
でiPhoneがMacに仮想インターフェイスとして割り当てられるのでWiresharkで通信をキャプチャできるぜ。UDIDはiTunes見れば分かるよ。 Androidユーザは知らね。 この状態でWiresharkを起動してアプリから操作すると、 お、これか?
とりあえず出てきたパケットをPythonで送信。
import socket import struct dst_ip = '192.168.0.23' dst_port = 5577 s = struct.Struct('!BBBB') on_data = s.pack(*[0x71, 0x23, 0x0f, 0xa3]) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.connect((dst_ip, dst_port)) sock.send(on_data) response = sock.recv(4) print(response)
すると、
やったぜ。
この調子で一つ一つ見ていけば調光・調色もイジれそうですね〜