- blogs:
- cles::blog
2018/07/05

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



さっそく 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 を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . Thunderbird のメッセージをスレッド化しないようにする(7075)
2 . Word で数式がグレーアウトされていて挿入できないときは(6754)
3 . Windows 10 で勝手にログアウトされないようにする(5159)
4 . Firefox でパスワードが保存されるページとされないページの違い(3909)
5 . awk で指定した n カラム目以降を出力する(3484)
2 . Word で数式がグレーアウトされていて挿入できないときは(6754)
3 . Windows 10 で勝手にログアウトされないようにする(5159)
4 . Firefox でパスワードが保存されるページとされないページの違い(3909)
5 . awk で指定した n カラム目以降を出力する(3484)
cles::blogについて
Referrers