Transplante do Módulo Wi-Fi Tuya do Robô Aspirador KaBuM! Smart 500 para Módulo Tasmota

Transplante do Módulo Wi-Fi Tuya do Robô Aspirador KaBuM! Smart 500 para Módulo Tasmota

Em desenvolvimento ativo.

There is no cloud, it’s just someone else’s computer.

Nesse repositório você encontra tudo o que precisa saber para retirar o módulo Wi-Fi original do seu robô aspirador Tuya e introduzir um módulo Wi-Fi baseado em ESP para ser utilizado com Tasmota e controlá-lo no Home Assistant via MQTT fora da núvem.

Parto do princípio que você já esteja familiarizado com módulos ESP, Tasmota, MQTT, Home Assistant, YAML. Caso não os conheça, recomendo que continue utilizando o aplicativo Tuya.

Os passos aqui descritos funcionam para os seguintes aspiradores:

  • KaBuM! Smart 500 (KBSF000)
  • Liectroux C30B

Passo a passo do Transplante do Módulo Wi-Fi

Itens necessários

  1. Módulo ESP, preferencialmente o Wemos D1 Mini, ou um NodeMCU (com Tasmota já instalado e configurado).
  2. Cabinhos Dupont (jumpers).
  3. Fita dupla face ou cola quente.

Desmontando o Robô

  1. Vire-o de cabeça para baixo.

Alt
Alt

  1. Retire o compartimento de poeira e as escovas. Retire os parafusos marcados de verde na foto. Retire também as abas frontais.

Alt

  1. Agora vamos abrir o robô. Vá com calma pois ainda existe um cabo ligando as duas partes.

Alt

  1. Retirando esse conector, você pode abrir o robô totalmente.

Alt

  1. Com o robô aberto, você pode ver que ele possui duas placas. A maior, marcado de azul, é a placa principal, onde o robô faz todo o processamento e controla todos os motores. Não tocaremos nela. A placa menor, marcada de vermelha, é o módulo Wi-Fi Tuya que vamos retirar. Ela controla apenas a comunicação do robô com a internet, por isso não há perigo de estragar o seu robô, ele funciona até mesmo sem essa placa, mas apenas no controle remoto.

Alt

  1. Você pode desconectar e retirar o módulo Tuya.

Alt

  1. O módulo Tuya WR3 mais de perto. Infelizmente esse modelo não é compatível com os firmwares opensource, como Tasmota e ESPHome, por isso a necessidade da troca. Recomendo que o guarde, pois no futuro, se desejar, você pode desfazer todos os passos e ter o robô funcionando no aplicativo Tuya novamente.

Alt

Instalando o novo módulo Wi-Fi

  1. O módulo Tuya WR3 e um D1 mini com um ESP8266 lado a lado. Percebe a similaridade? Se você possuir uma estação de solda, dá pra fazer o transplante do chip para a placa original do Tuya, provavelmente esse seria o modo de instalação mais “clean”.

Alt

  1. O módulo Wi-Fi já deve estar com o Tasmota instalado e configurado com suas informações de Wi-Fi antes de realizar a troca. Usaremos cabinhos jumpers com uma ponta macho e a outra fêmea. Na foto o jumper preto está ligado no (3V3), o jumper vermelho no ground (G), o jumper branco no (RX) e o jumper marrom no (TX).

Alt

  1. As pontas macho devem ser conectadas dessa forma, no conector onde antes ficava instalado o módulo Wi-Fi Tuya.

Alt

  1. Ligação completa.

Alt

  1. Coloque o módulo Wi-Fi novo no mesmo lugar. Recomendo utilizar uma fita dupla-face ou cola quente para fixar bem o módulo.

Alt

  1. Organize os cabos de modo que eles não sejam esmagados na hora de fechar o robô. Como o cabinho ficou mais longo, optei por usar outra rota, passando por debaixo do motor. Certifique-se que o conector do módulo Wi-Fi na placa principal está bem conectado, tive alguns problemas de mau-contato e preferi usar cola quente para fixá-lo melhor.

Alt

  1. Agora você pode fechar o robô. "Se você conseguiu abrir, você também consegue fechar", como dizia a minha mãe quando eu abria alguma coisa que não devia.

Tasmota

Acesse a interface web Tasmota do robô pelo endereço IP do mesmo.

  1. Template

Main Menu → Configuration → Configure Other → Other parameters → Template:

Utilize o seguinte template:

{"NAME":"KaBuM! Smart 500","GPIO":[1,1,1,1,1,1,0,0,1,1,1,1,1,0],"FLAG":0,"BASE":54}

Clique em Activate e depois em Save.

  1. Console

Main Menu → Console:

Utilize o seguinte comando:

Backlog SetOption66 1; Topic kabum500; Rule1 1; Rule1 on TuyaReceived#Cmnd=43 do SerialSend5 55aa002b0001042f endon
  • SetOption66 1: Ativa o envio das mensagens via MQTT.
  • Topic kabum500: Nomeia o MQTT Topic para kabum500 (necessário para a integração com o Home Assistant mais adiante).
  • Rule1...: O TuyaMCU (chip Tuya que ainda se encontra na placa principal) exige informações do status do Wi-Fi a cada 90s (TuyaReceived#Cmnd=43). Se não respondermos com um “OK” (SerialSend5 55aa002b0001042f) o TuyaMCU reseta o nosso módulo Wi-Fi.

Adicionando ao Home Assistant

  • Copie os arquivos kabum500.yaml ao diretório config/ da sua instalação do Home Assistant, e a imagem do aspirador ao diretório config/www/.

  • Adicionar ao configuration.yaml

homeassistant:
  packages:
    kabum500: !include kabum500.yaml
  • Card

Instale o Lovelace Vacuum Card no Home Assistant via HACS ou manualmente.

Utilize a configuração contida no arquivo lovelace_vacuum_card.yaml para deixar seu card como no exemplo abaixo (ainda estou trabalhando nele):

Alt


IMPORTANTE: Não me responsabilizo por eventuais danos ao seu robô aspirador caso venha a seguir esse tutorial.

Cada um com seus problemas. - Legião da Má Vontade (Hermes e Renato)


To Do List

  • [x] Funções básicas.
  • [ ] Implementar erros.
  • [ ] Botões para movimento manual.
  • [ ] Mapa.

Inspiração

Este projeto foi inspirado por:

7 Likes

Muito bom! Obrigado por compartilhar.

Apenas para informação, o modelo Kabum Smart 700 / Liectroux XR500 tem a placa de comunicação integrada à placa principal, logo não é viável sua substituição.

2 Likes

Uma dúvida, essa modificação adiciona/suprime alguma função? Digo, dessa forma seria possível pegar um aspirador mais básico e torná-lo mais “smart” ?

1 Like

Não, o robô permanece exatamente igual. A modificação é feita apenas na parte da comunicação entre o robô e o aplicativo Tuya.

1 Like

Olá @chiconws, segui todos os passos e consegui integrar o Robo via MQTT/Tasmota no HA, inclusive, configurando os demais passos, como o MQTT no robô (passo não explorado no seu tutorial) porém, os switches não executam nenhum função e o status 'ica fixo “unknown”, nem o TOOGLE direto no IP tasmota funciona.

Saberia me dizer o que está faltando ou está errado?

00:00:00.002 HDW: ESP8266EX
00:00:00.051 CFG: Loaded from flash at F9, Count 35
00:00:00.056 QPC: Count 1
00:00:00.070 Project tasmota - Tasmota Version 12.3.1(tasmota)-2_7_4_9(2022-12-16T10:28:17)
00:00:00.560 WIF: Connecting to AP1 T10A263 Channel 10 BSSId 74:DA:88:3A:19:9A in mode 11n as kabum500-2647...
00:00:04.760 WIF: Connected
00:00:05.013 HTP: Web server active on kabum500-2647 with IP address 192.168.68.142
17:32:35.033 MQT: Attempting connection...
17:32:35.071 MQT: Connected
17:32:35.074 MQT: tele/kabum500/LWT = Online (retained)
17:32:35.076 MQT: cmnd/kabum500/POWER = 
17:32:35.082 MQT: tele/kabum500/INFO1 = {"Info1":{"Module":"Sonoff Basic","Version":"12.3.1(tasmota)","FallbackTopic":"cmnd/DVES_5BAA57_fb/","GroupTopic":"cmnd/tasmotas/"}}
17:32:35.094 MQT: tele/kabum500/INFO2 = {"Info2":{"WebServerMode":"Admin","Hostname":"kabum500-2647","IPAddress":"192.168.68.142"}}
17:32:35.104 MQT: tele/kabum500/INFO3 = {"Info3":{"RestartReason":"External System","BootCount":22}}
17:32:35.113 MQT: stat/kabum500/RESULT = {"POWER":"OFF"}
17:32:35.115 MQT: stat/kabum500/POWER = OFF
17:32:35.405 QPC: Reset
17:32:36.208 MQT: stat/kabum500/STATUS = {"Status":{"Module":1,"DeviceName":"Tasmota","FriendlyName":["Tasmota"],"Topic":"kabum500","ButtonTopic":"0","Power":0,"PowerOnState":3,"LedState":1,"LedMask":"FFFF","SaveData":1,"SaveState":1,"SwitchTopic":"0","SwitchMode":[0,0,0,0,0,0,0,0],"ButtonRetain":0,"SwitchRetain":0,"SensorRetain":0,"PowerRetain":0,"InfoRetain":0,"StateRetain":0,"StatusRetain":0}}
17:32:36.259 MQT: stat/kabum500/STATUS11 = {"StatusSTS":{"Time":"2022-12-19T17:32:36","Uptime":"0T00:00:08","UptimeSec":8,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":23,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"T10A263","BSSId":"74:DA:88:3A:19:9A","Channel":10,"Mode":"11n","RSSI":100,"Signal":-29,"LinkCount":1,"Downtime":"0T00:00:06"}}}
17:32:36.309 MQT: stat/kabum500/RESULT = {"Time":"2022-12-19T17:32:36","Uptime":"0T00:00:08","UptimeSec":8,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":25,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"T10A263","BSSId":"74:DA:88:3A:19:9A","Channel":10,"Mode":"11n","RSSI":100,"Signal":-30,"LinkCount":1,"Downtime":"0T00:00:06"}}
17:32:36.359 MQT: stat/kabum500/STATUS1 = {"StatusPRM":{"Baudrate":115200,"SerialConfig":"8N1","GroupTopic":"tasmotas","OtaUrl":"http://ota.tasmota.com/tasmota/release/tasmota.bin.gz","RestartReason":"External System","Uptime":"0T00:00:08","StartupUTC":"2022-12-19T16:32:28","Sleep":50,"CfgHolder":4617,"BootCount":21,"BCResetTime":"2022-12-19T17:18:08","SaveCount":35,"SaveAddress":"F9000"}}
17:32:36.408 MQT: stat/kabum500/STATUS2 = {"StatusFWR":{"Version":"12.3.1(tasmota)","BuildDateTime":"2022-12-16T10:28:17","Boot":31,"Core":"2_7_4_9","SDK":"2.2.2-dev(38a443e)","CpuFrequency":80,"Hardware":"ESP8266EX","CR":"354/699"}}
17:32:37.161 MQT: stat/kabum500/RESULT = {"POWER":"ON"}
17:32:37.164 MQT: stat/kabum500/POWER = ON
17:32:39.377 MQT: tele/kabum500/STATE = {"Time":"2022-12-19T17:32:39","Uptime":"0T00:00:11","UptimeSec":11,"Heap":26,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"ON","Wifi":{"AP":1,"SSId":"T10A263","BSSId":"74:DA:88:3A:19:9A","Channel":10,"Mode":"11n","RSSI":100,"Signal":-28,"LinkCount":1,"Downtime":"0T00:00:06"}}
17:32:40.860 MQT: stat/kabum500/RESULT = {"POWER":"OFF"}
17:32:40.863 MQT: stat/kabum500/POWER = OFF

## Tasmota

|Program Version|12.3.1(tasmota)|
| --- | --- |
|Build Date & Time|2022-12-16T10:28:17|
|Core/SDK Version|2_7_4_9/2.2.2-dev(38a443e)|
|Uptime|0T00:00:25|
|Flash Write Count|44 at 0xF8000|
|Boot Count|25|
|Restart Reason|External System|
|Friendly Name 1|Tasmota|
|||
|AP1 SSId (RSSI)|T10A263 (100%, -23 dBm) 11n|
|Hostname|kabum500-2647|
|MAC Address|C8:C9:A3:5B:AA:57|
|IP Address (wifi)|192.168.68.142|
|Gateway|192.168.68.1|
|Subnet Mask|255.255.255.0|
|DNS Server1|181.213.132.2|
|DNS Server2|181.213.132.3|
|||
|HTTP API|Enabled|
|||
|MQTT Host|192.168.68.152|
|MQTT Port|1883|
|MQTT User|mqttuser|
|MQTT Client|DVES_5BAA57|
|MQTT Topic|kabum500|
|MQTT Group Topic 1|cmnd/tasmotas/|
|MQTT Full Topic|cmnd/kabum500/|
|MQTT Fallback Topic|cmnd/DVES_5BAA57_fb/|
|MQTT No Retain|Disabled|
|||
|Emulation|None|
|||
|ESP Chip Id|6007383 (ESP8266EX)|
|Flash Chip Id|0x1640D8 (DOUT)|
|Flash Size|4096 KB|
|Program Flash Size|4096 KB|
|Program Size|629 KB|
|Free Program Space|372 KB|
|Free Memory|25.0 KB|




Olá!
Primeiramente desculpe pela demora na resposta, esse final de ano tá muito corrido pra mim, estou sem tempo para o projeto.

Antes de tudo, tenta trocar os cabos nos pinos RX e TX. Não consigo lembrar quantas vezes quebrei a cabeça com algum projeto, só pra no final descobrir que o RX/TX estavam invertidos.

Caso isso não resolva, vá no console do Tasmota e digite status0 e cole aqui o resultado desse comando pra eu poder analisar melhor a sua configuração.

Também tive esse problema. Resolvi alterando o Baud Rate via console:

SetOption97 1

Após isso funcionou normalmente.

Vocês podem me ajudar por favor?

Estou com um robo smart 500, fora da garantia.

Msg do robô ao ligar: Escova principal emperrada.

Já limpei tudo e não tem nada emperrado, já resetei ele também e continua com o problema.

Já desmontou o mecanismo aonde coloca a escova? Já tirei pelo de cachorro preso…

Desculpem o ressuscitar o tópico, mas o meu XR500 e ele infelizmente ele caiu e uns componentes se soltaram. Consegui fazer a recolocação de todos, com exceção de dois fios que não consegui identificar onde cada um fica, só sei o componente (mas não os polos de solda). Vocês poderiam me ajudar?