适用于 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 帐户网站或其他提供库),则此步骤不是必需的。获得令牌后,您可以使用 API,请参阅下一节以获取一些示例。
首先,使用您的 client_id 和 client_secret 数据实例化一个新的NetatmoAPIAuthentificator
。您需要指定数据的范围,例如:恒温器温度、湿度等。如果您不确定或者您需要全部使用NetatmoScopeEnum allReadScopes
来获取所有可以读取的数据。
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes).
现在创建一个新会话来请求身份验证。该方法返回一个ZnOAuth2Session
,它提供 OAuth2 连接过程。
session := authenticator createOAuth2Session.
如果这是第一次尝试获取令牌,则会话不是实时的。调用requestUserAuthentication
方法打开 Web 浏览器并使用 Netatmo 在线表单验证身份验证。
session isLive ifFalse: [
authenticator requestUserAuthentication.
].
在此步骤中,您的默认 Web 浏览器将打开在线 Netatmo 身份验证表单:
如果您同意,请检查并接受。将显示基本结果页面以确认身份验证良好,出现时关闭此页面:
获取您的令牌:
token := session liveAccessToken.
Instanciante 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
列表来选择数据类型。
从设备获取一种类型的数据。
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.
从设备获取多种类型的数据。
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).
可以请求测量的日期时间间隔以及样本的比例。示例:获取上周每天当前时间的体温。
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now.
NetatmoAPI-Examples
包包含一些 API 使用示例以及使用Spec
和Roassal
基本用户界面。
可用设备列表(带有子设备):
过去 7 天健康家庭教练措施清单:
气象站仪表板:
气象站最近 7 天的室内和室外湿度:
ETC。
使用 Netatmo Connect API,您将可以访问非常敏感的信息。如果您的应用程序访问我们的相机(直播或视频),则尤其如此。确保您尊重用户的隐私并制定强有力的隐私政策。
Netatmo Connect API 使用条款
此资源是我实现此 API 的参考。有两个 API 产品组:天气/安全/能源和 HomeCoach/Aircare。
一般 Netatmo 文档
更具体的产品API:
Netatmo Aircare API 文档
这个项目是个人作品,我与罗格朗没有任何关系。
该项目根据 MIT 许可证获得许可 - 有关详细信息,请参阅许可证文件。