littleBits(cloudBits)のAPIをPythonから叩く

cloudBitsを使いました.

最初はIFTTTからいろんなトリガからcloudBitsを動作させましたが,ダメダメでした.理由は,色々なサービスを使えるのですがトリガの挙動が限られていたり,更にcloudBitsにその挙動をするまでとても時間がかかるのが問題でした.littleBitsはcloudAPIを提供しているのでIFTTTではなく直接そちらを叩くこともできます.

http://developers.littlebitscloud.cc/#output-voltage-on-device

詳細がは上のリンクにあるので分かる人はこれでどうぞ.

説明を読めば コマンドラインからcurlAPIを利用する方法はわかります.

ここからこいつをpythonで叩く方法を書いていきます.まずhttp通信でpostするためにrequestsモジュールとjsonモジュールをインポートします.

import requests
import json

インストールしていなければ$pip install requests jsonで準備しておきましょう.

DEVICE_ID = "xxxxxxxx"
CLOUDBITS_ACCESS_TOKEN = "xxxxxxxx"

DEVICE_IDとCLOUDBITS_ACCESS_TOKENはそれぞれlittleBits Cloud Controlのコンソールからsetting>Device IDとAccessTokenからコピペして置き換えてください.

次にアクセスするURLとヘッダーを用意します.

url = "https://api-http.littlebitscloud.cc/v2/devices/" + DEVICE_ID + "/output"
headers = {"Authorization": "Bearer "+CLOUDBITS_ACCESS_TOKEN, "Content-type": "application/json"}
payload = { "percent": 100, "duration_ms": 3000 }

payloadに入れるpercentはcloudBitsからのアナログ出力値,duration_msは何秒間オンにするか[ms]で指定できます.

そしたら

r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r)

rにpostが実行され返答されたコードが入っているので,printで出力してデバッグしてあげます.

<Response [200]>

が帰ってきていれば成功です.

404などのときはcloudBitsがネットに接続されていなかったり,Device IDやAccessTokenなどが間違っている可能性があります.

 

最後ににpythontwitterアカウントのツイートへのイイネを検出してcloudbBitsの出力をONにするサンプルを置いておきます.access tokenなどは各自apps.twitter.comでつくってください.

(※twitter userstreams apiは2018年夏に廃止されます.これがそのまま動くとはおもわないでください.幾つか追加で入れてるモジュールについても同様です.)

gistc477f67f92ca5c8ed950bce7372c8203