インドアな日常

IT系のネタを記載していくブログです。アウトドアも好きなのでそのブログも書いてます。→ http://tamin-ta.hatenadiary.jp

nature remo + raspberry piで温度/湿度を表示させたよ日記 ①

nature remoから取得した温度/湿度をラズパイにつなげた7segd-displayに表示させてみたので、その流れを記載。

 

こういうの作った。

表示してるのは湿度。

f:id:tamin-ta:20200705073814j:image

 

概要

f:id:tamin-ta:20200616235408j:plain

絵が汚くて謝謝。

 

流れ

ラズパイからAPI使ってNature remoを叩きに行く。

叩かれたNature remoは温度/湿度をラズパイに返す。

受け取った温度/湿度をラズパイのGPIOにつながった7segdisplayに出力する。

 

開発環境は以下の通り。

・開発PC macbook pro 16 + vscode

・使用言語 python

・ソース管理 Github

macでソースを作ってgithubにpush。ラズパイからソースをpullしてきて

プログラムを実行する流れ。

github使ってるのはただ単に使ってみたかっただけなので、深い意味はないよ。

 

まずはNature remoからセンサデータを取得してみる。

nature remo

 スマート赤外線リモコンの製品名。

 こいつを使うとリモコン操作の家電をスマホで操作することができるよ。

 人感センサ、温湿度計等も内蔵していて、それらの値をトリガーにして家電を

 操作することもできる。

 *温度〜以上だったらエアコンつけるとか。

 

 ちなみにAIスピーカにも、IFTTTにも対応しているので色々と遊ぶことができる。

 今の家ではエアコンと中華製ロボット掃除機をAlexaから操作して運用してます。

 

 こんな製品なんだけども、こいつはWebAPIも持っているのでjsonでセンサの値を

 取得することができたりする。

 

アクセストークンを取得する。

以下ページにアクセスして Generate Access Token を押すとトークンが発行される。

 https://home.nature.global/ 

 

センサデータを取得して見る。

curlとか使ってnature remoにHTTP GETを投げつけるとセンサデータが格納されたjsonが返ってくるよ。

 

入力コマンド

curl -X GET "https://api.nature.global/1/devices" -H "accept: application/json" -k --header "Authorization: Bearer トークンの文字列"

 

ターミナル上でjsonが表示されるのでかなり見ずらいけども、以下みたいな結果が返ってきます。

※一部省略。名前とか記載されてるので。

"newest_events":{"hu":{"val":66,"created_at":"2020-06-23T06:40:35Z"},"il":{"val":58,"created_at":"2020-06-23T09:03:09Z"},"mo":{"val":1,"created_at":"2020-06-23T09:08:00Z"},"te":{"val":26.6,"created_at":"2020-06-23T07:32:07Z"}

 

 

huがhumidity、ilがilluness、moが人感センサの値、teがtemperature。

それぞれの値はvalに記載されてる。時刻はGMTなので日本時間と異なるので注意。

このvalの値を7segdisplayに表示させればOK。

 

ただ、これはあくまで動作確認用。

ターミナル上のコマンドで取得してきているので、7segdisplayに表示させるなんかしらのプログラムで動作させないといかん。

今回はpython使って作ることにした。

 

とりあえず湿度を表示させるプログラムは以下。これをラズパイ上で実行する。

import json
import requests

apikey = "トークンの文字列"

headers = {
'accept': 'application/json',
'Authorization': 'Bearer ' + apikey ,
}

response = requests.get('https://api.nature.global/1/devices', headers=headers, verify=False)
data= response.json()
print(data[0]["newest_events"]["hu"]["val"])

 

dataの["hu"]の部分をteとかにすれば温度も表示できる。

かんたんね。

 

あとはこのプログラムで取ってきた湿度とか、温度を7segdisplayに表示させることができれば完成。

この辺の話は次回。