LoginSignup
0
0

More than 1 year has passed since last update.

pythonを使ってnetatmoのapiを叩く

Last updated at Posted at 2021-08-16

netatmoとは?

室温とか湿度とかを計測するIoTの機械です。
この機械の中央管理のServerがあり、APIが生えており、こちらのAPIを利用します。
本記事ではAPIをpythonで叩くところまでを実施します。

どのようなデータが取れるのか?

まずは管理画面のスクリーンショットを添付します。

スクリーンショット 2021-08-13 18.05.02.png

上の画像はnetatmoの管理画面のスクリーンショットです。
左枠にある、気温、湿度、気圧、CO2濃度、騒音を取得できます。
またこれら追加してAPIの場合には、緯度経度のデータも取得できます。

データ取得の方法

認証はOAuth2が使われているため、Netatmo ウェザーステーションのAPIを使ってみる - Part1: Node.jsのサンプルを参考にしてプログラムを組みます。
netatomの管理画面からアクセスし、My appsからアプリ環境構築を作成し、ここで設定値を入力することで、アクセスキーとシークレットキーを取得することができます。

スクリーンショット 2021-08-17 9.11.06.png

今回はアクセスキーとシークレットキーを取得し、この設定値を使ってAPIを叩きます。
redirectURIとwebhookURIの設定もできますが、今回は利用しません。

スクリーンショット 2021-08-16 12.06.26.png

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アダプター無し スマホ対応 温度・湿度・気圧・二酸化炭素・騒音を測定 [並行輸入品]

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0