おんどとりWeb StorageからPythonで現在値データを取得する

[おんどとりWeb Storage](https://ondotori.webstorage.jp/member/login.php)はAPIが公開されているので、任意のプログラムから登録してある機器のデータを取得する事ができます。 Pythonで最新の温度データを取得するには以下のようにします。 ## 事前準備 - [API Key](https://ondotori.webstorage.jp/account/create-apikey.php)の取得 - 読み取り専用アカウントを作成する - APIのアクセス情報を/var/tmp/webstorage.jsonに記載する アクセス情報はjson形式の外部ファイルから読み込む仕様にしました。 | Key | 説明 | |-----------|----------------------------------| | api_key | API Key | | user_id | WebStorageのアカウントID | | user_pass | WebStorageのアカウントパスワード | アカウントIDとパスワードは読み取り専用アカウントを作成することをオススメします。 コードで使っているモジュールはpipでインストールしておきます。 ```bash `gutter:false; $ pip3 install requests $ pip3 install json ``` ## サンプルコード ```python `gutter:true; # coding utf-8 import requests import pprint import json # API KEYなどのアクセス情報を記載したファイルのパス ACCESS_INFO_FILE_PATH = "/var/tmp/webstorage.json" """ ファイルは以下の形式を想定 { "api_key":"xxxxxxxxxxxxxxxxxxxxxxxxx", "user_id" : "rbacXXXX", "user_pass" : "*******" "_comment" : "OndotoriWebStorage API Key and view only account info" } """ # アクセスするAPIのURI API_URI_GET_CURRENT = "https://api.webstorage.jp/v1/devices/current" def load_access_info(): """ WebStorageにアクセスするための情報をファイルから読み込む """ info_path = ACCESS_INFO_FILE_PATH f = open(info_path, 'r') load_info = json.load(f) api_info = {} api_info["api-key"] = load_info["api_key"] api_info["login-id"] = load_info["user_id"] api_info["login-pass"] = load_info["user_pass"] return api_info access_param_info = load_access_info() response = requests.post(API_URI_GET_CURRENT, json.dumps(access_param_info), headers={'Content-Type': 'application/json', 'X-HTTP-Method-Override': 'GET'}) # debug pprint.pprint(response.json()) receive_data = json.loads(response.text) # あとはお好きなように... ``` receive_dataに取得した現在値データが入っているので、煮るなりやくなりできます。 詳細は[APIリファレンス](https://ondotori.webstorage.jp/docs/api/)をご確認ください。 これを応用して、死活監視ができます。 ## 応用 死活監視の方法 わたしは「エネループ」で動作させているので、通信が途絶えたらできるだけ早く電池交換したいので3時間通信がなかったらSlackに投稿するようにしました。 APIでは、最後に通信してきた時刻は取得できないので、現在値データにある最後のデータ時刻からどれぐらい通信ができていないのか調べます。 このコードをRaspberryPiでcronを使って1時間に1回実行するようにして、死活監視をおこないます。 サンプルコードは以下からどうぞ。 - [watchdog](https://github.com/k28/get_current_tmp_ondotori/blob/master/watchdog.py) ## 参考情報 - [Githubのリポジトリ](https://github.com/k28/get_current_tmp_ondotori)

0 件のコメント :

コメントを投稿