BLOGTIMES
2018/07/05

Switch Bot をラズパイから制御してみた

  raspberrypi  python  smartdevice 
このエントリーをはてなブックマークに追加

さっそく Switch Bot を Raspberry Pi 経由で動作させてみます。
今回は MQTT を使って連携をさせるので、Beebotteを使ってみました。

準備

実行に必要となる以下のライブラリをインストールしておきます。

apt-get install python3-pip libglib2.0-dev pip3 install bluepy paho-mqtt

サンプルコード

書いたコードはこんな感じ。
起動するとメッセージを待ち続けるようになっていて、メッセージが飛んでくると Switch Bot を動作させます。

import paho.mqtt.client as mqtt import json import binascii from bluepy.btle import Peripheral TOKEN = "###ここにBeebotteのトークンを書く###" HOSTNAME = "mqtt.beebotte.com" PORT = 8883 TOPIC = "###channel名###/###resource名###" CACERT = "mqtt.beebotte.com.pem SWBOT_ID = "###Switch Bot の ID###" def on_connect(client, userdata, flags, respons_code): print('status {0}'.format(respons_code)) client.subscribe(TOPIC) def on_message(client, userdata, msg): print(msg.topic + " " + str(msg.payload)) data = json.loads(msg.payload.decode("utf-8"))["data"][0] p = Peripheral(SWBOT_ID, "random") hand_service = p.getServiceByUUID("cba20d00-224d-11e6-9fb8-0002a5d5c51b") hand = hand_service.getCharacteristics("cba20002-224d-11e6-9fb8-0002a5d5c51b")[0] hand.write(binascii.a2b_hex("570100")) p.disconnect() client = mqtt.Client() client.username_pw_set("token:%s"%TOKEN) client.on_connect = on_connect client.on_message = on_message client.tls_set(CACERT) client.connect(HOSTNAME, port=PORT, keepalive=60) client.loop_forever()

参考

ほぼほぼ以下の2つで紹介されているコードを単純に合体させただけのコードです。


    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/10281
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン