netatmoとは?
室温とか湿度とかを計測するIoTの機械です。
この機械の中央管理のServerがあり、APIが生えており、こちらのAPIを利用します。
本記事ではAPIをpythonで叩くところまでを実施します。
どのようなデータが取れるのか?
まずは管理画面のスクリーンショットを添付します。
上の画像はnetatmoの管理画面のスクリーンショットです。
左枠にある、気温、湿度、気圧、CO2濃度、騒音を取得できます。
またこれら追加してAPIの場合には、緯度経度のデータも取得できます。
データ取得の方法
認証はOAuth2が使われているため、Netatmo ウェザーステーションのAPIを使ってみる - Part1: Node.jsのサンプルを参考にしてプログラムを組みます。
netatomの管理画面からアクセスし、My appsからアプリ環境構築を作成し、ここで設定値を入力することで、アクセスキーとシークレットキーを取得することができます。
今回はアクセスキーとシークレットキーを取得し、この設定値を使ってAPIを叩きます。
redirectURIとwebhookURIの設定もできますが、今回は利用しません。
python3のサンプル:認証の取得
プログラムの仕様はこちらの公式HPを参考にプログラムを組みます。
今回必要な権限は配置しているステーションの情報読み取りのため、scopeにread_stationのみ許可します。
import requests
headers = {'Content-Type': 'application/x-www-form-urlencoded', 'charset': 'UTF-8'}
url = 'https://api.netatmo.com/oauth2/token'
data = {
'grant_type': 'password',
'client_id': 'クライアントID',
'client_secret': 'シークレットID',
'username': 'トップページログインEmail',
'password': 'トップページログインパスワード',
'scope': 'read_station'
}
resp = requests.post(url=url, headers=headers, data=data)
print(resp.text)
レスポンスは以下のjsonとなりますが、このうちaccess_tokenを利用します。
{
"access_token":"アクセストークン",
"refresh_token":"リフレッシュトークン",
"scope":["read_station"],
"expires_in":10800,
"expire_in":10800
}
python3のサンプル:ステーションデータの取得
プログラムの仕様はこちらの公式HPを参考に従って、getstationsdataのAPIを叩きます。
import requests
headers = {'Content-Type': 'application/x-www-form-urlencoded', 'charset': 'UTF-8'}
url = 'https://api.netatmo.com/api/getstationsdata'
data = {
"access_token": "アクセストークン"
}
resp = requests.post(url=url, headers=headers, data=data)
print(resp.text)
レスポンスの一部必要な部分のみを抽出して下に記載します。
以上よりnetatomのデータを取得することができていることがわかります。
{
"body": {
"devices": [
----------
{
"dashboard_data": {
"time_utc": 1629083539,
"Temperature": 22.8,
"CO2": 551,
"Humidity": 75,
"Noise": 52,
"Pressure": 1013.5,
"AbsolutePressure": 1012.6,
"min_temp": 22.3,
"max_temp": 23.2,
"date_max_temp": 1629080519,
"date_min_temp": 1629075987,
"temp_trend": "down",
"pressure_trend": "stable"
},
}
],
----------
}
今後
今後はこのデータを使ってAWS Elasticsearch Serverへデータを流すことを実施します。
それはまた別の記事を使って記載いたします。
参考
netatomの管理画面
Netatmo ウェザーステーションのAPIを使ってみる - Part1: Node.jsのサンプル
AMAZON / NETATMO(ネタトモ) ウェザーステーション USB付属・ACアダプター無し スマホ対応 温度・湿度・気圧・二酸化炭素・騒音を測定 [並行輸入品]