LoginSignup
7
4

More than 5 years have passed since last update.

IoT python wifi relay control 1000円の中華制御リレーを評価する。

Posted at

broadlinksc1.png
wishなどの中華サイトで1000円程度で45日程度で入手できる。

Broadlink sc1は、家庭内のwifi経由で簡単に100VACの制御ができる。Android/iPhoneのAppから命令を出し、電灯や扇風機などの家電製品を制御できる。

PCなどから制御するためには、何らかのプログラムを必要とする。

  • 本体には、wifiのssidやパスワード,セキュリティモードの設定は、すべてwifi経由で行います。
  • 赤と青の線に100Vコンセントを接続します。
  • 茶色と黒の線に100Vの出力を接続します。 sc1-1.png

100円均一の延長コードを買い、真ん中で切断すると丁度良いものが作成できます。

ライブラリを導入します。

pip install broadlink

https://github.com/mjg59/python-broadlink

上記にwifi設定する方法が述べられています。
discover.py
import broadlink
broadlink.setup('myssid', 'mynetworkpass', 3)
dev = broadlink.discover(timeout=5)
net=[]
for d in dev:
    d.auth()
    n=dict(type=d.get_type(),ip=d.host[0],port =d.host[1],
             mac = "-".join([format(x,"02x") for x in [x for x in reversed(d.mac)]]),
             timeout = d.timeout)
    net.append(n)
print(net)

mac=...の行は、byte列のエンディアン変換を行い、かつ、文字列に変換を一行で行いました。「Pythonの立場でコーディンク」

myssidとmynetworkpassに無線ルータのidとpasswordをセットし実行すると下記のように出力される。
出力結果 サンプル
out.js
[{'type': 'SP2', 'ip': '192.168.1.102', 'port': 80, 'mac': '78-**-**-**-**-70', 'timeout': 10}]

スイッチをONします。

on.py
net1=net[0]
sp2 = broadlink.sp2((net1["ip"], net1["port"]),netaddr.EUI(net1["mac"]),net1["timeout"])
sp2.auth()
sp2.set_power(True)

スイッチをOFFします。

off.py
net1=net[0]
sp2 = broadlink.sp2((net1["ip"], net1["port"]),netaddr.EUI(net1["mac"]),net1["timeout"])
sp2.auth()
sp2.set_power(False)

スイッチの状態を調べる

status.py
net1=net[0]
sp2 = broadlink.sp2((net1["ip"], net1["port"]),netaddr.EUI(net1["mac"]),net1["timeout"])
sp2.auth()
print(sp2.check_power())
7
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
4