
Implementação da API Pharo Netatmo para produtos Legrand Netatmo.
Produtos suportados:
Você não pode acessar dados diretamente dos dispositivos: a Netatmo não fornece isso no momento. A única forma de acessar os dados e os dispositivos é através dos servidores Netatmo. Você precisa estar conectado à Internet para obter dados de seus dispositivos.
O acesso requer uma autenticação OAuth2 para obter um token de acesso. Este token deve ser atualizado junto com outra solicitação de autenticação. Para obter mais detalhes sobre segurança, consulte o link para a documentação oficial do Netatmo no final desta página.
A autenticação OAuth2 está funcionando neste projeto usando Zinc e pode ser usada para aplicativos desktop ou web.
Quando seu token for recuperado, use a API com ele durante o período de validade do token.
Metacello new
baseline: ' NetatmoAPI ' ;
repository: ' github://labordep/ PharoNetatmoAPI :main ' ;
onConflictUseIncoming;
ignoreImage;
load.Crie um acesso ao aplicativo com sua conta Netatmo Connect para obter seus dados client_id e client_secret. Consulte a seção inferior para usar a autenticação OAuth2 neste projeto.
Para mais detalhes consulte as diretrizes oficiais.
Esta seção descreve como autenticar e obter um token de acesso. Esta etapa não é obrigatória se você obtiver um token manualmente, por exemplo, diretamente pelo site de uma conta Netamo ou outra biblioteca fornecedora. Ao obter um token você pode usar a API, veja a próxima seção para ver alguns exemplos.
Primeiro, instancie um novo NetatmoAPIAuthentificator com seus dados client_id e client_secret. Você precisa especificar o escopo de seus dados, por exemplo: temperatura do termostato, umidade, etc. Se não tiver certeza ou se precisar de todos, use NetatmoScopeEnum allReadScopes para obter todos os dados que podem ser lidos.
authenticator := NetatmoAPIAuthentificator
clientId: ' myClientId '
clientSecret: ' myClientSecret '
scopes: ( NetatmoScopeEnum allReadScopes). Agora crie uma nova sessão para solicitar a autenticação. Este método retorna um ZnOAuth2Session que fornece processo de conexão OAuth2.
session := authenticator createOAuth2Session. Se esta for a primeira tentativa de obter um token, a sessão não será ativa. Chame o método requestUserAuthentication para abrir seu navegador e validar a autenticação usando o formulário online Netatmo.
session isLive ifFalse: [
authenticator requestUserAuthentication.
].Nesta etapa, seu navegador padrão abre o formulário de autenticação Netatmo online:

Verifique e aceite se você concorda. Uma página de resultados básicos é exibida para confirmar a boa autenticação, feche esta página quando ela aparecer:

Obtendo seu token:
token := session liveAccessToken. Instanciante NetatmoAPI terá que solicitar dados da API. Use um token para configurar a conexão.
| api |
api := NetatmoAPI new .
api token: ' yourAccess|tokenHere 'Use métodos de categoria "api" para solicitar dados.
Obtenha todos os dispositivos, retorne uma lista de NetatmoDevice . A lista pode mudar dependendo da autorização da sessão.
| devices |
devices := api getDevices. Obtenha todos os dispositivos e retorne uma lista de dispositivos NetatmoStation .
| devices |
devices := api getStationDevices. Obtenha um dispositivo específico do endereço MAC (id), retorne uma lista de dispositivos NetatmoStation .
| devices |
devices := api getStationDevice:: ' 01:23:45:67:89:ab ' . Obtenha todos os dispositivos e retorne uma lista de dispositivos NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevices. Obtenha um dispositivo específico do endereço MAC (id), retorne uma lista de dispositivos NetatmoHealthyHomeCoach .
| devices |
devices := api getHealthyHomeCoachDevice: ' 01:23:45:67:89:ab ' . Use a API para obter medidas de um dispositivo e retornar uma lista de medidas NetatmoMeasure . Cada NetatmoMeasure contém dados (por exemplo 56 ), tipo (por exemplo 'humidity' ), unidade (por exemplo '%' ), unidade de dados (por exemplo Number ) e um DateTime da medida. Quando solicitada uma medida da API use types: para escolher o tipo de dados passando uma lista de NetatmoMeasureType .
Obtenha um tipo de dados de um dispositivo.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType humidity.Obtenha vários tipos de dados de um dispositivo.
| measures |
measures := api getMeasures: (device id)
types: ( OrderedCollection
with: NetatmoMeasureType temperature
with: NetatmoMeasureType humidity).É possível solicitar intervalo de data e hora da medida, com escala para a amostra. Exemplo: obtenha a temperatura todos os dias no horário atual da última semana.
| measures |
measures := api getMeasures: (device id)
types: NetatmoMeasureType temperature
scale: 1 day
dateTimeBegin: ( DateAndTime now - 7 day)
dateTimeEnd: DateAndTime now. O pacote NetatmoAPI-Examples contém alguns exemplos de uso de API com interfaces de usuário básicas usando Spec e Roassal .
Uma lista de dispositivos disponíveis (com subdispositivos):

Uma lista das medidas do Healthy Home Coach dos últimos 7 dias:

Um painel da estação meteorológica:

Uma estação meteorológica dura 7 dias de umidade interna e externa:

Etc.
Usando APIs Netatmo Connect você terá acesso a informações muito confidenciais. Isto é particularmente verdadeiro se o seu aplicativo acessa nossas câmeras (transmissão ao vivo ou vídeos). Certifique-se de respeitar a privacidade do usuário e de ter uma política de privacidade forte.
Termos de uso das APIs Netatmo Connect
Esses recursos são minha referência para implementar esta API. Existem dois grupos de produtos API: Clima/Segurança/Energia e HomeCoach/Aircare.
Documentação geral do Netatmo
API de produtos mais específicos:
Documentação da API Netatmo Aircare
Este projeto é um trabalho pessoal, não sou afiliado à Legrand.
Este projeto está licenciado sob a licença MIT - consulte o arquivo LICENSE para obter detalhes.