Índice:

Vácuo XiaoMi + Botão Amazon = Limpeza do painel: 5 etapas (com imagens)
Vácuo XiaoMi + Botão Amazon = Limpeza do painel: 5 etapas (com imagens)

Vídeo: Vácuo XiaoMi + Botão Amazon = Limpeza do painel: 5 etapas (com imagens)

Vídeo: Vácuo XiaoMi + Botão Amazon = Limpeza do painel: 5 etapas (com imagens)
Vídeo: Nem eu ,Dentista, Jamais tinha Visto ISSO em Toda minha vida !! #shorts 2024, Novembro
Anonim
Vácuo XiaoMi + Botão Amazon = Limpeza do painel
Vácuo XiaoMi + Botão Amazon = Limpeza do painel

Esta instrução explicará como usar seus botões de painel sobressalentes da Amazon para controlar o vácuo XiaoMi.

Eu tenho um monte de botões da Amazon por aí desde a época em que custavam $ 1 e eu não precisava deles. Mas ao receber um novo Robot Vacuum decidi que seria muito conveniente usar esses botões como um controle para o vácuo.

Pressione o botão Ziploc e ele aspirará o Quarto.

Pressione o botão Glad e ele vai aspirar a sala de estar.

Pressione Fiji.. bem, você teve a ideia.

Neste projeto são incorporados muitos hacks da internet. Eu realmente aprecio o trabalho que tantas pessoas fizeram e acho que tenho que compartilhar minha pequena engenhoca com base em suas pesquisas.

Aviso Legal: Todos os passos abaixo você faz por sua própria conta e risco! Se você seguir as etapas cuidadosamente, há muito pouca chance de danificar algo. Mas merda acontece! E não assumo nenhuma responsabilidade por isso. BTW, todas as etapas podem ser revertidas, portanto, potencialmente, não há violação da garantia. Mas é claro - YMMV

O princípio básico é que pressionamos o botão do painel no roteador e enviamos o webhook para a Vacuum, em vez de comprar coisas da Amazon.

O que você vai precisar:

  • Roteador com firmware personalizado que pode controlar DHCP, executar scripts e atender a consultas get | post. Mikrotik, DD-WRT, OpenWRT, Tomato etc.
  • XiaoMi Vacuum. v1 ou v2
  • Amazon Dash Buttons

Especificamente o que usei:

  • Mikrotik
  • XiaoMi v2 Vacuum Roborock S50
  • Um monte de botões Amazon Dash

Aqui está o procedimento

  1. Nós enraizamos o vácuo
  2. Instale e configure os pacotes necessários sob root no vácuo
  3. Botão de configuração do Amazon Dash
  4. Configure o roteador para capturar a solicitação do botão e controlar o vácuo

NB: Na verdade, você não precisa enraizar seu vácuo para controlá-lo. Se você tiver qualquer outro servidor em sua lan (ou qualquer outro lugar) que possa executar python ou php, você pode direcionar webhooks para eles. Mas eu não quero. E eu queria mantê-lo organizado e compacto no próprio aspirador. Portanto, se você não gostar da minha abordagem, presumo que você possa descobrir como configurar seu próprio servidor intermediário a partir desta leitura. Vá direto para o ponto 2.

OK, vamos lá…

Etapa 1: Obtenha o Token e o Root Vacuum

Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum
Obtenha o Token e o Root Vacuum

Todo software, fimware e instruções para fazer o root foram obtidos em: https://4pda.ru/forum/index.php? Showtopic = 881982

Se você tem um sistema operacional diferente do Windows e um telefone diferente do Android (você pode usar o virtual com o nox), siga o link acima (use o Google Translate) e leia as instruções, caso contrário, siga com o manual aqui.

Para fazer o root, precisamos obter o endereço IP e o token do seu vácuo.

Descompacte root.7z.

Instale Mihome de Vevs em seu Android. Você pode usar um do Arquivo ou se esta instrução for datada, a versão mais recente pode ser obtida em seu site (https://www.kapiba.ru/2017/11/mi-home.html) ou em seu Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Faça login em seu MiHome. Você deve definir China Continental em sua conta e adicionar Vácuo a ela).

Toque no ícone de vácuo Configurações (três pontos no canto superior direito) Configurações gerais Informações de rede

Preencha o endereço IP e o token em win-mirobo / win-mirobo.ini

Desative o firewall no Windows. Inicie win-mirobo.bat e atualize o firmware.

!!!!!!!!! V1 é para Vácuo v1 e V2 é para Vácuo v2 (Roborock S50) !!!!!!! Se você atualizou FW errado - vá para o link 4pda (primeiro nesta etapa) e leia como recuperar.

O Arter Vacuum é reinicializado - você fez o root no aspirador com sucesso e agora tem acesso a ele via ssh!

SSH para ele (com Putty) com o limpador / limpador. Mude sua senha com passwd

Etapa 2: instalar e configurar os pacotes necessários sob a raiz do vácuo

Premissa

Em vez de webhooks, o MiVacuum usa o protocolo miio, assim como todos os dispositivos IoT XiaoMi. Portanto, temos que aprender para entender os webhooks. Precisamos de um intermediário que possa capturar o webhook e traduzi-lo do protocolo miio para o dispositivo. Há uma biblioteca python (https://github.com/rytilahti/python-miio), mas não podemos usá-la no vácuo, pois não há espaço suficiente para Python 3.5+ no vácuo.

Mas felizmente há uma biblioteca php-miio (https://github.com/skysilver-lab/php-miio) que é comparativamente muito leve e é isso que iremos usar (aliás, também é usado no win-mirobo acima) Quem captura o webhook é o daemon do webhook (https://github.com/adnanh/webhook), que executa o script para php no webhook de entrada.

SSH para o seu vácuo (com Putty):

# Faça sob raiz. Sim, eu sei que não é seguro.. whatevs.sudo su #Aqui instalamos todas as necessidades apt-get install -y wget php5-cli nano #Todo o resto vai para / opt cd / opt

#Download php-miio

#Verifique as últimas novidades no github. Corrija as linhas abaixo de acordo com o wget mais recente https://github.com/skysilver-lab/php-miio/archive/v.0.2.6.tar.gz tar -xzvf v.0.2.6.tar.gz mv php- miio-v.0.2.6 php-miio rm -f v.0.2.6.tar.gz

#Download webhooks daemon

#Verifique as últimas novidades no github. Linha correta abaixo de acordo com o wget mais recente https://github.com/adnanh/webhook/releases/download/2.6.8/webhook-linux-arm.tar.gz tar -xzvf webhook-linux-arm.tar.gz mv webhook-linux-arm webhook rm -f webhook-linux-arm.tar.gz

#Criar configurações para webhook

nano /opt/webhook/hooks.json #Input hooks.json content here. Clique com o botão direito na massa. # Ctr + X Salvar Y.

#Create script para chamar php-miio

nano /opt/webhook/mirobo.sh #Input mirobo.sh content here. Clique com o botão direito na massa. # Ctr + X Salvar Y. # Tornar executável chmod + x /opt/webhook/mirobo.sh

#Criar script de inicialização automática e renovar configurações

echo "/ opt / webhook / webhook -hooks /opt/webhook/hooks.json" >> /etc/init.d/webhook.sh chmod ugo + x /etc/init.d/webhook.sh update-rc.d padrões do webhook.sh

# Reinicie o sistema

reinício

Após reiniciar, teste suas configurações no navegador:

192.168.your.ip: 9000 / hooks / mirobo? method = find_me

método - comando

params - parâmetros

Todos os métodos (comandos) e parâmetros que você pode encontrar aqui:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Conteúdo do hooks.json

Mude seu-token-aqui para o seu token do vácuo.

Corrija a lista de permissões de ip para sua rede local ou remova-a completamente se você executar seus ganchos de outro lugar (inseguro).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/ opt / webhook", "response-message": "Executando script mirobo "," include-command-output-in-response ": false," pass-environment-to-command ": [{" source ":" string "," envname ":" token "," nome ": "seu-token-aqui"}], "passar-argumentos-para-comando": [{"fonte": "url", "nome": "método"}, {"fonte": "url", "nome ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

conteúdo do arquivo mirobo.sh. Basta copiar e colar. Existem apenas duas linhas (não 3).

#! / bin / bashphp /opt/php-miio/miio-cli.php --ip '127.0.0.1' --bindip '127.0.0.1' --token $ token --sendcmd '{"id":' $ RANDOM ', "método": "' $ 1 '", "params": [' $ 2 ']}'

Etapa 3: Configurar os botões do Amazon Dash

Abra seu aplicativo Amazon. Vá para Dispositivos Dash. Adicione um novo botão de traço como de costume. No prompt para escolher um produto NÃO. Feche o aplicativo. Você terminou.

Etapa 4: configurar o roteador para pegar o botão de solicitação e controlar o MiVacuum

Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum
Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum
Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum
Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum
Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum
Configure o roteador para capturar a solicitação do botão e controlar o MiVacuum

Isso funciona da seguinte maneira.

Quando o botão é pressionado, ele está se associando à sua rede e pede ao servidor dhcp para atribuir um endereço. Temos que capturar essa solicitação e executar um webhook para o vácuo. Como medida de segurança adicional, bloquearemos a conexão com a Amazon para que a Amazon não saiba que sequer pressionamos o botão e não tenha a capacidade de enviar atualização de firmware ou qualquer outra coisa.

Geralmente eu uso WinBox, mas algumas vezes o terminal é apenas mais fácil.

#Criar regra de queda de firewall com lista de endereços para bloquear

/ ip firewall filter add chain = forward src-address-list = blockdash action = drop comment = "Drop Amazon Dash"

Então, temos que criar uma regra de aluguel dhcp para cada botão. Muito fácil de fazer no winbox.

Servidor DHCP - Concessões

Quando pressionamos o botão, o novo contrato aparece. Clicamos como estático e definimos a lista de endereços como 'blockdash', definimos o tempo de concessão para 5 segundos (de modo que a concessão expire antes da próxima vez) e copiamos o endereço mac para mais tarde.

# Este comando é apenas para referência, se você adicionou lease no winbox, basta ignorá-lo.

/ ip dhcp-server lease add address-list = blockdash mac-address = XXXXXXXXXX address = 192.168.x.x lease-time = 5s

Agora temos que apontar para o script de aluguel.

Abra a guia DHCP e adicione 'myLeaseScript' como um script de aluguel em seu servidor dhcp.

Agora abra System - Scripts e adicione 'myLeaseScript' com permissões de leitura e teste.

Conteúdo de myLeaseScript:

#Script é chamado duas vezes no lease (1) e no release (0): if ($ leaseBound = 1) do = {/ log info ("Executando myLeaseScript. Alguém pressionou o botão Dash?")

#Array de todos os seus botões e url para chamar

: botões locais {"XX: XX: XX: XX: XX: XX" = "https://192.168.your.ip: 9000 / hooks / mirobo? method = app_zoned_clean¶ms = [19300, 21000, 21200, 23800, 1] "; "YY: YY: YY: YY: YY: YY" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [24000, 21500, 26100, 22900, 1]"; "ZZ: ZZ: ZZ: ZZ: ZZ: ZZ" = "https://192.168.your.ip: 9000 / hooks / mirobo? Method = app_zoned_clean¶ms = [21400, 24200, 22700, 26200, 1], [24000, 21500, 26100, 22900, 1] "; "AA: AA: AA: AA: AA: AA" = "https://whateveryouwant.com:9000/other?argument=and_values"; };

#Verifique o botão pressionado e acll url

: foreach mac, url in = $ buttons do = {: if ($ mac = $ leaseActMAC) do = {/ log info ("Pressed". $ mac. "button") / tool fetch keep-result = no mode = https http-method = post url = $ url}}}

Agora você automatizou sua limpeza ao pressionar o botão Amazon Dash. Divirta-se

Por favor, preste atenção: é muito perigoso enviar webhooks não criptografados. Webhook pode usar criptografia, mas eu tentei fazer funcionar, mas nunca aconteceu. Como eu uso apenas na minha rede local, não estou muito preocupado. Mas se você deseja usá-lo pela Internet para conectar-se ao IFTTT com a integração do Google Assistant, preste atenção a este fato! Não tenho certeza de qual foi o motivo da falha de criptografia no meu caso. Certificados autoassinados que venci emitidos por letsencrypt. Rede supercomplicada com um monte de NATs que derrotei com ipv6. Mas me parece que os webhooks funcionam muito mal com certificados e, na verdade, estão muito mal documentados. E parece que o IFTTT não funciona com ipv6. Eu tentei tudo que pude, mas falhei. Você pode ter uma sorte melhor. Não se esqueça de postar.

upd: Tenho uma ideia de como torná-lo mais seguro sem criptografia. Você cria alguns scripts para cada ação que deseja executar. Você modifica o mirobo.sh para chamar o script para um determinado parâmetro enviado no webhook, por exemplo. clean_bedroom. É isso. A maioria das pessoas que explorar o gancho fará é limpar seu quarto novamente e novamente…)) Assim que eu fizer isso, atualizarei o instrutível

Etapa 5: como traçar seu mapa

Como traçar seu mapa
Como traçar seu mapa

Depois de ter seu mapa completo pronto em seu aplicativo MiHome, envie seu aspirador para um local específico por meio do comando 'app_goto'.

Faça uma captura de tela do mapa completo com a posição enviada e a base. O ponto de base após a reinicialização do vácuo é a posição [25500, 25500] ESTA NÃO É A POSIÇÃO DA BASE DE CARREGAMENTO, mas se você reiniciar o vácuo na base de carga, a posição da base de carga será 25500, 25500. Então, de uma posição conhecida enviada e a posição da base, você pode plotar seu mapa em qualquer programa CAD com a captura de tela que você tirou. Usei o QCAD grátis.

Depois de ajustar a imagem à grade, uso uma linha cruzando a sala para medir o ponto inicial e final da zona.

Recomendado: