Реализация API Pharo Netatmo для продуктов Legrand Netatmo.
Поддерживаемые продукты:
Вы не можете получить доступ к данным непосредственно с устройств: Netatmo на данный момент не предоставляет этого. Единственный способ получить доступ к данным и устройствам — через серверы Netatmo. Вам необходимо подключение к Интернету, чтобы получать данные с ваших устройств.
Для доступа требуется аутентификация OAuth2 для получения токена доступа. Этот токен должен обновляться вовремя с другим запросом аутентификации. Для получения более подробной информации о безопасности см. ссылку на официальную документацию Netatmo внизу этой страницы.
Аутентификация OAuth2 работает в этом проекте с использованием Zinc и может использоваться для настольных или веб-приложений.
Когда ваш токен будет восстановлен, используйте с ним API в течение срока действия токена.
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.
Создайте доступ к приложению с помощью своей учетной записи Netatmo Connect, чтобы получить данные client_id и client_secret. См. нижний раздел, чтобы использовать аутентификацию OAuth2 в этом проекте.
Более подробную информацию смотрите в официальных рекомендациях.
В этом разделе описывается, как пройти аутентификацию и получить токен доступа. Этот шаг не является обязательным, если вы получаете токен вручную, например, напрямую с веб-сайта учетной записи Netamo или другой предоставляющей библиотеки. Когда вы получите токен, вы сможете использовать API. Примеры см. в следующем разделе.
Сначала создайте экземпляр нового NetatmoAPIAuthentificator
с вашими данными client_id и client_secret. Вам необходимо указать объем ваших данных, например: температуру термостата, влажность и т. д. Если вы не уверены или вам нужны все данные, используйте NetatmoScopeEnum allReadScopes
чтобы получить все доступные для чтения данные.
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes).
Теперь создайте новый сеанс для запроса аутентификации. Этот метод возвращает сеанс ZnOAuth2Session
, который обеспечивает процесс подключения OAuth2.
session := authenticator createOAuth2Session.
Если это первая попытка получить токен, сеанс не активен. Вызовите метод requestUserAuthentication
, чтобы открыть веб-браузер и подтвердить аутентификацию с помощью онлайн-формы Netatmo.
session isLive ifFalse: [
authenticator requestUserAuthentication.
].
На этом этапе в веб-браузере по умолчанию откройте онлайн-форму аутентификации 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-адресу (идентификатору), верните список устройств NetatmoStation
.
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' .
Получить все устройства, вернуть список устройств NetatmoHealthyHomeCoach
.
| devices |
devices := api getHealthyHomeCoachDevices.
Получите конкретное устройство по MAC-адресу (идентификатору), верните список устройств NetatmoHealthyHomeCoach
.
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' .
Используйте API для получения показателей с устройства и возврата списка показателей NetatmoMeasure
. Каждый NetatmoMeasure
содержит данные (например, 56
), тип (например 'humidity'
), единицу измерения (например, '%'
), единицу данных (например, Number
) и DateTime
меры. При запросе меры из 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
.
Список доступных устройств (с дополнительными устройствами):
Список измерений Healthy Home Coach за последние 7 дней:
Панель управления метеостанцией:
Метеостанция за последние 7 дней, влажность внутри и снаружи:
И т. д.
Используя API Netatmo Connect, вы получите доступ к очень конфиденциальной информации. Это особенно актуально, если ваше приложение имеет доступ к нашим камерам (прямая трансляция или видео). Убедитесь, что вы уважаете конфиденциальность пользователей и придерживаетесь строгой политики конфиденциальности.
Условия использования API Netatmo Connect
Эти ресурсы являются моей ссылкой для реализации этого API. Существует две группы продуктов API: Погода/Безопасность/Энергетика и HomeCoach/Aircare.
Общая документация Netatmo
Более конкретные продукты API:
Документация по API Netatmo Aircare
Этот проект — личная работа, я не связан с Legrand.
Этот проект лицензируется по лицензии MIT — подробности см. в файле LICENSE.