Uma integração personalizada do Home Assistant para manuseio local de dispositivos baseados em Tuya.
Essa integração personalizada atualiza o status do dispositivo por meio de atualizações push em vez de polling, de modo que as atualizações de status são rápidas (mesmo quando operadas manualmente). A integração também suporta as APIs Tuya IoT Cloud, para recuperação de informações e das local_keys dos dispositivos.
NOTA: A configuração da conta Cloud API não é obrigatória (LocalTuya também pode funcionar sem ela), mas é fortemente sugerida para fácil recuperação (e atualização automática após emparelhar novamente um dispositivo) de local_keys. As chamadas da Cloud API são realizadas apenas na inicialização e quando uma atualização local_key é necessária.
Os seguintes tipos de dispositivos Tuya são atualmente suportados:
O monitoramento de energia (tensão, corrente, watts, etc.) é compatível com dispositivos compatíveis.
Atualmente, os protocolos Tuya de 3.1 a 3.4 são suportados.
O desenvolvimento deste repositório começou como código de @NameLessJedi, @mileperhour e @TradeFace. Seu código foi então profundamente refatorado para fornecer integração adequada com o ambiente Home Assistant, adicionando fluxo de configuração e outros recursos. Consulte a seção "Agradecimentos a" abaixo.
A maneira mais fácil, se você estiver usando HACS, é instalar o LocalTuya através do HACS.
Para instalação manual, copie a pasta localtuya e todo o seu conteúdo para a pasta custom_components do Home Assistant. Esta pasta geralmente está dentro da sua pasta /config
. Se você estiver executando o Hass.io, use o SAMBA para copiar a pasta. Se você estiver executando o Home Assistant Supervised, a pasta custom_components pode estar localizada em /usr/share/hassio/homeassistant
. Pode ser necessário criar a pasta custom_components
e, em seguida, copiar a pasta localtuya e todo o seu conteúdo para ela.
NOTA: Você deve ter a chave e o ID do seu dispositivo Tuya para usar o LocalTuya. A maneira mais fácil é configurar a conta Cloud API na integração. Se você optar por não fazer isso, existem várias maneiras de obter local_keys dependendo do seu ambiente e dos dispositivos que você possui. Um bom lugar para começar a obter informações é https://github.com/codetheweb/tuyapi/blob/master/docs/SETUP.md ou https://pypi.org/project/tinytuya/.
NOTA 2: Se você planeja integrar esses dispositivos em uma rede que tenha internet e bloquear seu acesso à internet, você também deverá bloquear as solicitações de DNS (para o servidor DNS local, por exemplo, 192.168.1.1). Se você bloquear apenas a saída da Internet, o dispositivo ficará em estado de zumbi; ele recusará/não responderá a nenhuma conexão com a chave local. Portanto, você deve primeiro conectar os dispositivos com uma conexão ativa à Internet, pegar a chave local de cada dispositivo e implementar o bloqueio.
NOTA: a partir da versão 4.0.0, a configuração usando arquivos YAML não é mais suportada. A integração só pode ser configurada usando o fluxo de configuração.
Para começar a configurar a integração, basta pressionar o botão "+ ADICIONAR INTEGRAÇÃO" na página Configurações - Integrações e selecionar LocalTuya no menu suspenso. A página de configuração da API Cloud aparecerá, solicitando a inserção das credenciais da sua conta da plataforma Tuya IoT:
Para configurar uma conta da plataforma Tuya IoT e configurar um projeto nela, consulte as instruções para a integração oficial do Tuya: https://www.home-assistant.io/integrations/tuya/ O local para encontrar o ID do cliente e o segredo é descrito neste link (no parágrafo "Obter chave de autorização"), enquanto o ID do usuário pode ser encontrado na subguia "Vincular conta do aplicativo Tuya" no projeto Cloud:
Nota: conforme indicado no link acima, se você já possui uma conta e um projeto IoT, certifique-se de que ele foi criado após 25 de maio de 2021 (devido a alterações introduzidas na nuvem para Tuya 2.0). Caso contrário, você precisará criar um novo projeto. Veja a captura de tela a seguir para saber onde verificar a data de criação do seu projeto:
Após pressionar o botão Enviar, a primeira configuração será concluída e a Integração será adicionada.
Nota: não é obrigatório inserir as credenciais da API Cloud: você pode optar por marcar o botão "Não configurar uma conta API Cloud" e a Integração será adicionada de qualquer maneira.
Após a configuração da Integração, os dispositivos podem ser adicionados e configurados pressionando o botão Configurar na página Integrações:
O menu de configuração é o seguinte:
Neste menu, você pode selecionar "Reconfigurar conta Cloud API" para editar suas credenciais e configurações do Tuya Cloud, caso tenham sido alteradas ou se a integração tiver sido migrada das versões v.3.xx.
Você pode então prosseguir adicionando ou editando seus dispositivos Tuya.
Se você selecionar "Adicionar ou editar um dispositivo", um menu suspenso aparecerá contendo a lista de dispositivos detectados (usando a descoberta automática se a adição foi selecionada, ou a lista de dispositivos já configurados se a edição foi selecionada): você pode selecione um deles ou insira manualmente todos os parâmetros selecionando a opção "...".
Observação: o aplicativo tuya em seu dispositivo deve ser fechado para que as etapas a seguir funcionem de maneira confiável.
Se você selecionou uma entrada, você só precisa inserir o nome amigável e a chave local do dispositivo. Esses valores serão recuperados automaticamente se você tiver configurado sua conta Cloud API, caso contrário, será necessário inseri-los manualmente.
Definir o intervalo de varredura é opcional, só é necessário se os valores de energia/potência não forem atualizados com frequência suficiente por padrão. Valores inferiores a 10 segundos podem causar problemas de estabilidade.
Definir o 'DPS manual para adicionar' é opcional, só é necessário se o dispositivo não anunciar o DPS corretamente até que a entidade tenha sido devidamente inicializada. Muitas vezes, essa configuração pode ser evitada conectando/inicializando primeiro o dispositivo com o aplicativo Tuya, depois fechando o aplicativo e adicionando o dispositivo na integração. Nota: Qualquer DPS adicionado usando esta opção terá um valor -1 durante a configuração.
Definir os 'DPIDs para enviar no comando RESET' é opcional. É usado quando um dispositivo não responde a nenhum comando Tuya após um ciclo de energia, mas pode ser conectado a (estado zumbi). Este cenário ocorre principalmente quando o dispositivo está impedido de acessar a Internet. Os DPids variam entre os dispositivos, mas normalmente é usado "18,19,20". Se as entradas erradas forem adicionadas aqui, o dispositivo poderá não sair do estado zumbi. Normalmente, apenas DPIDs de sensores são inseridos aqui.
Depois de clicar em “Enviar”, a conexão é testada para verificar se tudo funciona.
Depois é hora de adicionar as entidades: esta etapa ocorrerá diversas vezes. Primeiro, selecione o tipo de entidade no menu suspenso para configurá-la. Depois de definir todas as entidades necessárias, deixe marcada a caixa de seleção "Não adicionar mais entidades": isso concluirá o procedimento.
Para cada entidade deve ser selecionado o PD associado. Todas as opções que exigem a seleção de um DP fornecerão um menu suspenso mostrando todos os DPs disponíveis encontrados no dispositivo (com seu status atual!!) para fácil identificação.
Nota: Se o seu dispositivo necessita que um LocalTuya envie um valor de inicialização à entidade para que funcione, isso pode ser configurado (em entidades suportadas) através da opção 'Entidade passiva'. Opcionalmente você pode especificar o valor de inicialização a ser enviado
Cada tipo de entidade possui diferentes opções para serem configuradas. Aqui está um exemplo para a entidade "switch":
Depois de configurar as entidades, o procedimento estará concluído. Agora você pode associar o dispositivo a uma área no Home Assistant
Se você atualizar o LocalTuya da v3.xx ou anterior, a entrada de configuração será automaticamente migrada para a nova configuração. Tudo deve funcionar como antes da atualização, exceto que na aba Integração você verá apenas uma integração LocalTuya (mostrando a quantidade de dispositivos e entidades configuradas) em vez de várias Integrações agrupadas dentro do LocalTuya Box. Isso acontecerá tanto se a configuração antiga foi feita usando arquivos YAML quanto com o fluxo de configuração. Depois de migrar, você pode simplesmente inserir as credenciais da sua conta Tuya IoT para ativar o suporte para a API Cloud (e se beneficiar da recuperação e atualização automática de local_key): consulte o menu Configuração.
Se você configurou o LocalTuya usando arquivos YAML, você pode excluir todas as suas referências de dentro dos arquivos YAML porque elas não serão mais consideradas e podem trazer confusão (apenas a parte de configuração do logger precisa ser mantida, é claro, veja Depuração).
Você pode obter monitoramento de energia (tensão, corrente) de duas maneiras diferentes:
sensor :
- platform : template
sensors :
tuya-sw01_voltage :
value_template : >-
{{ states.switch.sw01.attributes.voltage }}
unit_of_measurement : ' V '
tuya-sw01_current :
value_template : >-
{{ states.switch.sw01.attributes.current }}
unit_of_measurement : ' mA '
tuya-sw01_current_consumption :
value_template : >-
{{ states.switch.sw01.attributes.current_consumption }}
unit_of_measurement : ' W '
Há uma infinidade de climas baseados em Tuya, tanto aquecedores, termostatos e ACs. Tudo parece estar integrado de diferentes maneiras e é difícil encontrar um mapeamento comum de DP. Abaixo está uma tabela de mapeamento de DP para produtos que atualmente está funcionando. Use-o como um guia para o seu próprio mapeamento e contribua para a lista se tiver possibilidade.
PD | Moes BHT 002 | Qlima WMS S + SC52 (AB;AF) | Avato |
---|---|---|---|
1 | ID: Ligado/Desligado {verdadeiro, falso} | ID: Ligado/Desligado {verdadeiro, falso} | ID: Ligado/Desligado {verdadeiro, falso} |
2 | Temperatura alvo Inteiro, escala: 0,5 | Temperatura alvo Inteiro, escala 1 | Temperatura alvo Inteiro, escala 1 |
3 | Temperatura atual Inteiro, escala: 0,5 | Temperatura atual Inteiro, escala: 1 | Temperatura atual Inteiro, escala: 1 |
4 | Modo {0, 1} | Modo {"quente", "vento", "molhado", "frio", "automático"} | ? |
5 | Modo ecológico ? | Modo ventilador {"forte", "alto", "médio", "baixo", "automático"} | ? |
15 | Não compatível | Suportado, desconhecido {verdadeiro, falso} | ? |
19 | Não compatível | Unidade de temperatura {"c", "f"} | ? |
23 | Não compatível | Suportado, desconhecido Inteiro, por exemplo. 68 | ? |
24 | Não compatível | Suportado, desconhecido Inteiro, por exemplo. 64 | ? |
101 | Não compatível | Temperatura externa Inteiro. Escala: 1 | ? |
102 | Temperatura do sensor externo Inteiro, escala: 0,5 | Suportado, desconhecido Inteiro, por exemplo. 34 | ? |
104 | Suportado, desconhecido {verdadeiro, falso (?)} | Não compatível | ? |
Termostato Moes BHT 002 Avatto
Sempre que você escreve um relatório de bug, será de grande ajuda incluir logs de depuração diretamente (caso contrário, iremos apenas solicitá-los e isso levará mais tempo). Portanto, habilite logs de depuração como este e inclua-os no seu problema:
logger :
default : warning
logs :
custom_components.localtuya : debug
custom_components.localtuya.pytuya : debug
Em seguida, edite o dispositivo que está apresentando problemas e marque o botão “Ativar depuração para este dispositivo”.
Crie um sensor (contador) (bom e preciso) de Energia (kWh) -não apenas Potência, mas com base nela-. Ideias: Use: https://www.home-assistant.io/integrations/integration/ e https://www.home-assistant.io/integrations/utility_meter/
Tudo listado no nº 15
NameLessJedi https://github.com/NameLessJedi/localtuya-homeassistant e mileperhour https://github.com/mileperhour/localtuya-homeassistant são as principais fontes de inspiração e cujo código para switches permanece substancialmente inalterado.
TradeFace, por ser o único a fornecer o código correto para comunicação com a capa (em particular, o comando 0x0d para o status em vez do 0x0a, e necessidades relacionadas como resposta dupla a ser recebida): https://github. com/TradeFace/tuya/
sean6541, para o manipulador Python funcional (padrão) para dispositivos Tuya.
jasonacox, para o projeto TinyTuya de onde pude importar o código para comunicação com dispositivos utilizando o protocolo 3.4.
postlund, pelas ideias, por codificar 95% da refatoração e aumentar a qualidade deste repo para níveis difíceis de imaginar (por mim, pelo menos) e me ensinar MUITO como as coisas funcionam no Home Assistant.