Índice:
- Etapa 1: Obtenha o Token e o Root Vacuum
- Etapa 2: instalar e configurar os pacotes necessários sob a raiz do vácuo
- Etapa 3: Configurar os botões do Amazon Dash
- Etapa 4: configurar o roteador para pegar o botão de solicitação e controlar o MiVacuum
- Etapa 5: como traçar seu mapa
Vídeo: Vácuo XiaoMi + Botão Amazon = Limpeza do painel: 5 etapas (com imagens)
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
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
- Nós enraizamos o vácuo
- Instale e configure os pacotes necessários sob root no vácuo
- Botão de configuração do Amazon Dash
- 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
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
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
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:
Aperte o botão); // Um jogo Arduino LCD: 5 etapas (com imagens)
Aperte o botão); // Um jogo Arduino LCD: Recentemente, no Scouts, trabalhei no emblema de mérito do Game Design. Para um dos requisitos, eu construí este jogo usando o Arduino que é baseado no LED Rocker Game. O objetivo do jogo é marcar a maior quantidade de pontos possível. No início de t
Botão de mudo físico de reuniões de zoom: 7 etapas (com imagens)
Botão de mudo físico de reuniões de zoom: se você usa reuniões de zoom para trabalho ou escola, este botão é para você! Pressione o botão para alternar seu mudo, ou mantenha o botão pressionado para sair da reunião (ou encerre-a se você for o anfitrião). grande coisa sobre isso é que funciona mesmo se o seu Zoom janela
Botão mágico 4k: o controle remoto sem fio 20USD BMPCC 4k (ou 6k): 4 etapas (com imagens)
Botão mágico 4k: o controle remoto sem fio 20USD BMPCC 4k (ou 6k): Muitas pessoas me pediram para compartilhar alguns detalhes sobre meu controlador sem fio para o BMPCC4k. A maioria das perguntas era sobre o controle do bluetooth, então mencionarei alguns detalhes sobre isso. Presumo que você esteja familiarizado com o ambiente ESP32 Arduino
Botão inteligente Wi-Fi alimentado por bateria para controlar as luzes HUE: 5 etapas (com imagens)
Botão inteligente Wi-Fi alimentado por bateria para controlar as luzes HUE: Este projeto demonstra como construir um botão Wi-Fi IoT alimentado por bateria em menos de 10 min. O botão controla as luzes HUE sobre o IFTTT. Hoje você pode construir dispositivos eletrônicos e conectá-los a outros dispositivos domésticos inteligentes literalmente em minutos. O que é
Microcontrolador AVR. Alterne os LEDs usando um botão de pressão. Botão Debouncing: 4 etapas
Microcontrolador AVR. Alterne os LEDs usando uma chave de botão. Push Button Debouncing: Nesta seção, aprenderemos como fazer o código do programa C para ATMega328PU para alternar o status dos três LEDs de acordo com a entrada de uma chave de botão. Além disso, exploramos uma solução para o problema de ‘Switch Bounce’. Como de costume, nós teremos