LoginSignup
1
2

More than 3 years have passed since last update.

Siri +Raspberry PI+でIoT コーヒーメーカーの電源を入れる

Last updated at Posted at 2019-06-18

image.png

Siri+Raspberry PI+でIoT コーヒーメーカーの電源を入れる

配線

image.png

茶色と黒にコーヒーメーカに接続、青と赤をAC 100Vコンセントに接続する。

最初の一歩

raspberry pi からon off させてみよう。
broadlink sc1

image.png

ネット環境を調べよう。

netstat.py
import broadlink
ssid,passwd='ssid','password'
broadlink.setup(ssid,passwd, 3)
dev = broadlink.discover(timeout=20)
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)
[{'type': 'SP2', 'ip': '192.168.1.151', 'port': 80, 'mac': '78-0f-77-17-5d-70', 'timeout': 10}]

Broadlink sc1は、sp2として認識される。

on_off.py
import broadlink,netaddr,time,binascii,json,sys
net1={'type': 'SP2', 'ip': '192.168.1.151', 'port': 80, 'mac': '78-0f-77-17-5d-70', 'timeout': 10}
sp2 = broadlink.sp2((net1["ip"], net1["port"]),netaddr.EUI(net1["mac"]),net1["timeout"])
sp2.auth()
sp2.set_power(False if sp2.check_power() else True)

実行するとon off を繰り返す。

本番プログラム

simplesw.py
'''
simple switch 
'''
import broadlink,netaddr,time,binascii,json,sys
import logging,signal
net1={'type': 'SP2', 'ip': '192.168.1.151', 'port': 80, 'mac': '78-0f-77-17-5d-70', 'timeout': 10}
from pyhap.accessory import Accessory, Bridge
from pyhap.accessory_driver import AccessoryDriver
from pyhap.const import (CATEGORY_SWITCH)
logging.basicConfig(level=logging.INFO, format="[%(module)s] %(message)s")
class SW(Accessory):
     category = CATEGORY_SWITCH
     def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        serv_tv = self.add_preload_service('Switch')
        self.char_on = serv_tv.configure_char('On', setter_callback=self.sw)
     def sw(self,value):
        logging.info("スウィッチ: %s", value)
        sp2 = broadlink.sp2((net1["ip"], net1["port"]),netaddr.EUI(net1["mac"]),net1["timeout"])
        sp2.auth()
        sp2.set_power(value)
def get_bridge(driver):
    bridge = Bridge(driver, 'Bridge')
    bridge.add_accessory(SW(driver, 'コーヒーメーカ'))
    return bridge
driver = AccessoryDriver(port=51826, persist_file='simple.state')
driver.add_accessory(accessory=get_bridge(driver))
signal.signal(signal.SIGTERM, driver.signal_handler)
driver.start()

実行

pi@raspberrypi:~/hk_project/HAP-python$ python simple.py

image.png

IPhome HomeでQRコードを読み込み
image.png

ソースコードは、ここ

1
2
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
1
2