
Реализация 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.