Python3で家の家電をコントロールする

HomeBridgeで家をスマホからコントロールできるようにしているのだが、iPhoneを取りに行くのすら面倒くさくなった。せっかくHomeBridge用にconfig.jsonに自宅の家電をコントロールするための赤外線情報があるので、それをparseしてターミナルから操作することにした。Pythonで書いたのは勉強がてら。Groovyとで悩んだけど今日はIDE開きたくなかったから。。

使い方

そのまま叩くとアクセサリ一覧

$ python3 home.py
IRKit0002.local リビングの電気
IRKit0002.local リビングの冷房
IRKit0001.local 寝室の冷房
IRKit0001.local 寝室の電気
IRKit0002.local テレビ
IRKit0001.local ルンバ

こんな感じで使います

$ python3 home.py リビングの電気 on_form
$ python3 home.py リビングの電気 off_form

コード

家の中で使うのでかなり適当です。今日は早く寝ようと思ったけど簡単じゃなかった眠い。。Python慣れてないのでひとまずこれで。。

#!/usr/local/bin/python3
# coding: utf-8
import urllib.request, sys, json
f = open("/path/to/config.json")
config = json.load(f)
f.close()
accessories = {}
for it in config['accessories']:
accessories[it['name']] = it
if len(sys.argv) == 3:
name = sys.argv[1]
action = sys.argv[2]
accessory = accessories[name]
infrared_code = json.JSONEncoder().encode(accessory[action]).encode('utf-8')
target_url = 'http://' + accessory['irkit_host'] + '/messages'
method = "POST"
headers = {
"Content-Type": "application/json",
"X-Requested-With": "curl"
}
request = urllib.request.Request(
target_url,
data=infrared_code,
method=method,
headers=headers
)
with urllib.request.urlopen(request) as response:
sys.exit()
sys.exit()
for k, v in accessories.items():
print(v['irkit_host'], k)

まとめ

素直にiPhone取りに行けばよかった眠い。。が、代償にPythonを好きになった。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA