Skip to content

API Daikin Split EcoSwing Smart R-32 e Split EcoSwing Smart Gold R-32

Notifications You must be signed in to change notification settings

crossworth/daikin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Daikin Split EcoSwing Smart R-32 e Split EcoSwing Smart Gold R-32

Daikin

Controle e veja o status do ar-condicionado Daikin Split EcoSwing Smart R-32 e Daikin Split EcoSwing Smart Gold R-32.

Para poder comunicar com o ar-condicionado é preciso de uma secret key e saber o endereço de IP do ar-condicionado.

Essa secret key é gerada pelo aplicativo Daikin Smart AC - Brasil durante a configuração do ar-condicionado, ela também é salva no servidor que o aplicativo utiliza, dessa forma é possível instalar o aplicativo em diferentes dispositivos e controlar o mesmo aparelho.

Status

  • Suporte a extrair o secret key utilizando login e senha.
  • Suporte a configurar o ar-condicionado sem necessidade de aplicativo.
  • Consultar status do ar-condicionado (servidor http).
  • Enviar comandos para o ar-condicionado (servidor http).
  • Receber atualizações do ar-condicionado (mqtt).
  • Enviar comandos para o ar-condicionado (mqtt).

Compatibilidade

Deve ser compatível com todos os aparelhos que utilizam o aplicativo Daikin Smart AC - Brasil.

Daikin Split EcoSwing Smart R-32:

Unidade interna Status
FTKP09Q5VL Deve funcionar
FTKP12Q5VL Deve funcionar
FTKP18Q5VL Deve funcionar
FTKP24Q5VL Deve funcionar
FTHP09Q5VL Deve funcionar
FTHP12Q5VL Deve funcionar
FTHP18Q5VL Deve funcionar
FTHP24Q5VL Deve funcionar

Daikin Split EcoSwing Smart Gold R-32:

Unidade interna Status
FTKP09S5VL Deve funcionar
FTKP12S5VL Deve funcionar
FTKP18S5VL Deve funcionar
FTKP24S5VL Deve funcionar
FTHP09S5VL Deve funcionar
FTHP12S5VL Funcionando
FTHP18S5VL Deve funcionar
FTHP24S5VL Deve funcionar

Conseguindo uma secret key

Atualmente a única forma de conseguir uma secret key é inspecionando as requests que o aplicativo oficial faz.

Engenharia reversa

Todo o processo de descoberta e implementação foi baseado na engenharia reversa do aplicativo para Android e da leitura da biblioteca nativa que o aplicativo utiliza.

Aplicativo para Android

O aplicativo é extremamente lento considerando que faz algo tão simples, o motivo disso é que ele não guarda nenhum dado local, toda vez que o aplicativo é aberto ou restaurado (onResume) ele faz requests para o Amazon Cognito para validar o cadastro do usuário e além de fazer requests para verificar a versão do aplicativo.

Os servidores AWS utilizados ficam nos Estados Unidos e na Europa, tornando as requests ainda mais lentas.

Depois das requests de autenticação de usuário é feito uma request para uma api hospedado também na AWS de gerenciamento de IOT, enviando o token e recebendo os dados dos aparelhos cadastrados na conta. É feito tracking de versões do Android, timezone, linguagem, localização (latitude, longitude), modelo dos aparelhos de ar-condicionado e também alguns dados da rede wireless (como nome).

Também é feito algumas requests para o firebase relacionadas a logging.

O aplicativo parece ser feito por uma empresa da India (o que não faz muito sentido para um produto feito para o mercado brasileiro). É possível ver que o aplicativo não é uma solução whitelabel, já que em diversas partes é hardcoded o domínio daikin.com.br.

O aplicativo tem uma usabilidade terrível, com controles lentos e capacidades básicas.

Ao controlar um ar-condicionado, o aplicativo tenta inicialmente falar na rede local e depois passa a utilizar mqtt para enviar comandos para o ar-condicionado, permitindo receber atualizações e enviar comandos fora da rede do ar.

Ar-condicionado

O ar-condicionado possui um servidor http não conformante aos specs, tornando complicada comunicação (golang http e curl não aceitam a resposta inválida), além disso, a forma de comunicação é no minima peculiar, as requests são compostas por um conjunto de bytes base64 encodados, onde o conteúdo dos bytes é o seguinte:

  • Initialization vector: 16 bytes
  • Payload: N bytes começando da posição 17
  • CRC16: checksum de 2 bytes.

O conteúdo é criptografado utilizando AES no modo CFB, sendo o CRC ignorado no processo de descriptografia.

About

API Daikin Split EcoSwing Smart R-32 e Split EcoSwing Smart Gold R-32

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages