
Implementación de la API Pharo Netatmo para productos Legrand Netatmo.
Productos compatibles:
No se puede acceder a los datos directamente desde los dispositivos: Netatmo no proporciona eso por el momento. La única forma de acceder a los datos y a los dispositivos es a través de los servidores de Netatmo. Necesita estar conectado a Internet para obtener datos de sus dispositivos.
El acceso requiere una autenticación OAuth2 para obtener un token de acceso. Este token debe actualizarse a tiempo con otra solicitud de autenticación. Para obtener más detalles sobre la seguridad, consulte el enlace a la documentación oficial de Netatmo al final de esta página.
La autenticación OAuth2 funciona en este proyecto utilizando Zinc y se puede utilizar para aplicaciones web o de escritorio.
Cuando se recupere su token, use la API con él durante el tiempo de validez del token.
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.Cree un acceso a la aplicación con su cuenta de Netatmo Connect para obtener sus datos client_id y client_secret. Consulte la sección inferior para utilizar la autenticación OAuth2 en este proyecto.
Para obtener más detalles, consulte las pautas oficiales.
Esta sección describe cómo autenticarse y obtener un token de acceso. Este paso no es obligatorio si obtiene un token manualmente, por ejemplo, directamente a través del sitio web de una cuenta de Netamo u otra biblioteca proveedora. Cuando obtienes un token, puedes usar la API; consulta la siguiente sección para ver algunos ejemplos.
Primero, instancia un nuevo NetatmoAPIAuthentificator con tus datos client_id y client_secret. Debe especificar el alcance de sus datos, por ejemplo: temperatura del termostato, humedad, etc. Si no está seguro o si necesita todos, use NetatmoScopeEnum allReadScopes para obtener todos los datos que se pueden leer.
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes). Ahora cree una nueva sesión para solicitar la autenticación. Este método devuelve una ZnOAuth2Session que proporciona el proceso de conexión OAuth2.
session := authenticator createOAuth2Session. Si este es el primer intento de obtener un token, la sesión no está activa. Llame al método requestUserAuthentication para abrir su navegador web y validar la autenticación mediante el formulario en línea de Netatmo.
session isLive ifFalse: [
authenticator requestUserAuthentication.
].En este paso, su navegador web predeterminado abre el formulario de autenticación en línea de Netatmo:

Marque y acepte si está de acuerdo. Se muestra una página de resultados básica para confirmar la buena autenticación; cierre esta página cuando aparezca:

Obteniendo tu token:
token := session liveAccessToken. Instanciante NetatmoAPI para tener que solicitar datos de la API. Utilice un token para configurar la conexión.
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere 'Utilice métodos de categoría "api" para solicitar datos.
Obtenga todos los dispositivos y devuelva una lista de NetatmoDevice . La lista puede cambiar según la autorización de la sesión.
| devices |
devices := api getDevices. Obtenga todos los dispositivos y devuelva una lista de dispositivos NetatmoStation .
| devices |
devices := api getStationDevices. Obtenga un dispositivo específico de la dirección mac (id) y devuelva una lista de dispositivos NetatmoStation .
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' . Obtenga todos los dispositivos y devuelva una lista de dispositivos NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevices. Obtenga un dispositivo específico de la dirección mac (id) y devuelva una lista de dispositivos NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' . Utilice la API para obtener medidas desde un dispositivo y devolver una lista de medidas de NetatmoMeasure . Cada NetatmoMeasure contiene datos (por ejemplo 56 ), tipo (por ejemplo 'humidity' ), unidad (por ejemplo '%' ), unidad de datos (por ejemplo Number ) y una DateTime de la medida. Cuando se solicita una medida de los types: para elegir el tipo de datos pasando una lista de NetatmoMeasureType .
Obtenga un tipo de datos de un dispositivo.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.Obtenga múltiples tipos de datos desde un dispositivo.
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).Es posible solicitar un intervalo de fecha y hora de medida, con una escala para la muestra. Ejemplo: obtener la temperatura todos los días a la hora actual de la última semana.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now. El paquete NetatmoAPI-Examples contiene algunos ejemplos de uso de API con interfaces de usuario básicas que utilizan Spec y Roassal .
Una lista de dispositivos disponibles (con subdispositivos):

Una lista de las medidas de Healthy Home Coach de los últimos 7 días:

Un panel de la estación meteorológica:

Una Estación Meteorológica dura 7 días humedad interior y exterior:

Etc.
Usando las API de Netatmo Connect tendrás acceso a información muy sensible. Esto es particularmente cierto si su aplicación accede a nuestras Cámaras (transmisión en vivo o videos). Asegúrese de respetar la privacidad del usuario y de tener una política de privacidad sólida.
Términos de uso de las API de Netatmo Connect
Estos recursos son mi referencia para implementar esta API. Hay dos grupos de productos API: Clima/Seguridad/Energía y HomeCoach/Aircare.
Documentación general de Netatmo
API de productos más específicos:
Documentación de la API de Netatmo Aircare
Este proyecto es un trabajo personal, no estoy afiliado a Legrand.
Este proyecto tiene la licencia MIT; consulte el archivo de LICENCIA para obtener más detalles.