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.