crossworth / daikin

API Daikin Split EcoSwing Smart R-32 e Split EcoSwing Smart Gold R-32
3 stars 0 forks source link

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

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:

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