Legrand Netatmo 製品用の Pharo Netatmo API 実装。
サポートされている製品:
デバイスからデータに直接アクセスすることはできません。Netatmo は現時点では提供していません。データとデバイスにアクセスする唯一の方法は、Netatmo サーバーを経由することです。デバイスからデータを取得するには、インターネットに接続する必要があります。
アクセスには、アクセス トークンを取得するための OAuth2 認証が必要です。このトークンは、別の認証リクエストに合わせて更新する必要があります。セキュリティの詳細については、このページの下部にある Netatmo の公式ドキュメントへのリンクを参照してください。
OAuth2 認証は、Zinc を使用してこのプロジェクトで機能しており、デスクトップまたは Web アプリケーションに使用できます。
トークンが回復したら、トークンの有効期間内に API を使用してください。
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.
Netatmo 接続アカウントを使用してアプリケーション アクセスを作成し、client_id および client_secret データを取得します。このプロジェクトで OAuth2 認証を使用する場合は、下のセクションを参照してください。
詳細については、公式ガイドラインを参照してください。
このセクションでは、認証とアクセス トークンの取得方法について説明します。たとえば、Netamo アカウント Web サイトや別の提供ライブラリから直接トークンを手動で取得する場合、この手順は必須ではありません。トークンを取得すると、API を使用できるようになります。いくつかの例については、次のセクションを参照してください。
まず、client_id と client_secret データを使用して新しいNetatmoAPIAuthentificator
インスタンス化します。データの範囲を指定する必要があります (例: サーモスタットの温度、湿度など)。不明な場合、またはすべてが必要な場合は、 NetatmoScopeEnum allReadScopes
使用して、読み取り可能なすべてのデータを取得します。
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes).
次に、新しいセッションを作成して認証を要求します。このメソッドは、OAuth2 接続プロセスを提供するZnOAuth2Session
を返します。
session := authenticator createOAuth2Session.
これがトークンの取得を初めて試行する場合、セッションはライブではありません。 requestUserAuthentication
メソッドを呼び出して Web ブラウザを開き、Netatmo オンライン フォームを使用して認証を検証します。
session isLive ifFalse: [
authenticator requestUserAuthentication.
].
このステップでは、デフォルトの Web ブラウザでオンライン Netatmo 認証フォームを開きます。
同意する場合はチェックを入れて同意します。認証が適切であることを確認するための基本的な結果ページが表示されます。表示されたらこのページを閉じます。
トークンの取得:
token := session liveAccessToken.
NetatmoAPI
をインスタンス化するには、API からデータをリクエストする必要があります。トークンを使用して接続をセットアップします。
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere '
データをリクエストするには、「api」カテゴリのメソッドを使用します。
すべてのデバイスを取得し、 NetatmoDevice
のリストを返します。リストはセッション認証に応じて変更される可能性があります。
| devices |
devices := api getDevices.
すべてのデバイスを取得し、 NetatmoStation
デバイスのリストを返します。
| devices |
devices := api getStationDevices.
MAC アドレス (ID) から特定のデバイスを取得し、 NetatmoStation
デバイスのリストを返します。
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' .
すべてのデバイスを取得し、 NetatmoHealthyHomeCoach
デバイスのリストを返します。
| devices |
devices := api getHealthyHomeCoachDevices.
MAC アドレス (ID) から特定のデバイスを取得し、 NetatmoHealthyHomeCoach
デバイスのリストを返します。
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' .
API を使用してデバイスから測定値を取得し、 NetatmoMeasure
測定値のリストを返します。各NetatmoMeasure
には、データ (例: 56
)、タイプ (例: 'humidity'
)、単位 (例: '%'
)、データ単位 (例: Number
)、およびメジャーのDateTime
が含まれます。 API からメジャーを要求した場合はtypes:
NetatmoMeasureType
のリストを渡すことによってデータ タイプを選択します。
デバイスから 1 種類のデータを取得します。
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.
デバイスから複数の種類のデータを取得します。
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).
サンプルのスケールを使用して、測定の日付と時間の間隔をリクエストすることができます。例 : 過去 1 週間の現在時刻の気温を毎日取得します。
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now.
NetatmoAPI-Examples
パッケージには、 Spec
とRoassal
使用した基本的なユーザー インターフェイスを備えたいくつかの API 使用例が含まれています。
利用可能なデバイスのリスト (サブデバイスも含む):
過去 7 日間の Healthy Home Coach の対策のリスト:
気象観測所のダッシュボード:
気象観測所の 7 日間の屋内および屋外の湿度:
等。
Netatmo Connect API を使用すると、非常に機密性の高い情報にアクセスできるようになります。これは、アプリがカメラ (ライブ ストリームまたはビデオ) にアクセスする場合に特に当てはまります。ユーザーのプライバシーを尊重し、強力なプライバシー ポリシーを策定するようにしてください。
Netatmo Connect API の利用規約
このリソースは、この API を実装するための参考資料です。 API 製品グループには、Weather/Security/Energy と HomeCoach/Aircare の 2 つがあります。
Netatmo の一般的なドキュメント
より具体的な製品 API:
Netatmo Aircare API ドキュメント
このプロジェクトは個人的な作品であり、私はルグランとは関係ありません。
このプロジェクトは MIT ライセンスに基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。