Inhoudsopgave:

XiaoMi-stofzuiger + Amazon-knop = Dash-reiniging: 5 stappen (met afbeeldingen)
XiaoMi-stofzuiger + Amazon-knop = Dash-reiniging: 5 stappen (met afbeeldingen)

Video: XiaoMi-stofzuiger + Amazon-knop = Dash-reiniging: 5 stappen (met afbeeldingen)

Video: XiaoMi-stofzuiger + Amazon-knop = Dash-reiniging: 5 stappen (met afbeeldingen)
Video: Xiaomi Vacuum TEST!!! How good is it really? #SHORTS 2024, November
Anonim
XiaoMi-stofzuiger + Amazon-knop = dashboardreiniging
XiaoMi-stofzuiger + Amazon-knop = dashboardreiniging

In deze instructie wordt uitgelegd hoe u uw reserve Amazon Dash-knoppen kunt gebruiken om de XiaoMi-stofzuiger te bedienen.

Ik heb een aantal Amazon-knoppen rondslingeren uit de tijd dat ze $ 1 waren en ik had er geen gebruik van. Maar toen ik een nieuwe robotstofzuiger ontving, besloot ik dat het erg handig zou zijn om deze knoppen te gebruiken als bediening voor de stofzuiger.

Druk op de Ziploc-knop en het zal de slaapkamer stofzuigen.

Druk op de Glad-knop en het zal de woonkamer stofzuigen.

Druk op Fiji.. nou je hebt het idee.

In dit project zijn veel hacks van internet verwerkt. Ik waardeer echt het werk dat zoveel mensen hebben gedaan en denk dat ik mijn kleine apparaatje moet delen op basis van hun onderzoek.

Disclaimer: Alle onderstaande stappen doe je op eigen risico! Als u de stappen zorgvuldig volgt, is de kans zeer klein dat u iets beschadigt. Maar sh#t gebeurt! En ik neem er geen verantwoordelijkheid voor. BTW alle stappen kunnen worden teruggedraaid, dus mogelijk is er geen schending van de garantie. Maar natuurlijk - YMMV

Het basisprincipe is dat we de dash-knop op de router vangen en de webhook naar Vacuum sturen in plaats van dingen van Amazon te kopen.

Wat je nodig zult hebben:

  • Router met aangepaste firmware die DHCP kan besturen, scripts kan uitvoeren en get|post-query's kan uitvoeren. Mikrotik, DD-WRT, OpenWRT, Tomaat enz..
  • XiaoMi-vacuüm. v1 of v2
  • Amazon Dash-knoppen

Specifiek wat ik heb gebruikt:

  • Mikrotik
  • XiaoMi v2 Vacuüm Roborock S50
  • Stelletje Amazon Dash-knoppen

Hier is de procedure

  1. We wortelen vacuüm
  2. Installeer en configureer de benodigde pakketten onder root op vacuüm
  3. Amazon Dash-knop instellen
  4. Router instellen om knopverzoek op te vangen en vacuüm te regelen

NB: In feite hoef je je stofzuiger niet te rooten om hem te bedienen. Als je een andere server op je lan (of waar dan ook) hebt die python of php kan draaien, kun je webhooks ernaartoe leiden. Maar ik niet. En ik wilde het netjes en compact houden op het vacuüm zelf. Dus als je mijn aanpak niet leuk vindt, neem ik aan dat je erachter kunt komen hoe je je eigen middle man-server kunt instellen uit deze read. Ga direct naar punt 2.

OK daar gaan we…

Stap 1: Verkrijg het token- en wortelvacuüm

Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm
Verkrijg het token- en wortelvacuüm

Alle software, fimware en instructies voor het rooten zijn verkregen van:

Als je een ander besturingssysteem hebt dan Windows en een andere telefoon dan Android (je kunt virtueel gebruiken met nox), volg dan de bovenstaande link (gebruik Google Translate) en lees de instructies, anders volg je de handleiding hier.

Om te kunnen rooten, moeten we het ip-adres en het token van uw vacuüm verkrijgen.

Pak root.7z uit.

Installeer Mihome van Vevs op je Android. U kunt er een uit het Archief gebruiken of als deze instructie gedateerd is, kan de nieuwste versie worden verkregen van zijn website (https://www.kapiba.ru/2017/11/mi-home.html) of zijn Google Drive (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Log in op uw MiHome. U moet China Mainland op uw account instellen en er Vacuüm aan toevoegen).

Tik op Vacuümpictogram Instellingen (drie stippen rechtsboven) Algemene instellingen Netwerkinfo

Vul ip-adres en token in win-mirobo/win-mirobo.ini

Schakel firewall in Windows uit. Start win-mirobo.bat en flash de firmware.

!!!!!!! V1 is voor v1 Vacuum en V2 is voor v2 Vacuum (Roborock S50)!!!!!!!Als je verkeerd FW hebt geflitst - ga naar de 4pda-link (eerst in deze stap) en lees hoe je kunt herstellen.

Arter Vacuum herstart - je hebt je vacuum succesvol geroot en nu heb je er toegang toe via ssh!

SSH ernaartoe (met Putty) met de cleaner/cleaner. Wijzig uw wachtwoord met passwd

Stap 2: Installeer en configureer de benodigde pakketten onder root op vacuüm

Stelling

In plaats van webhooks gebruikt MiVacuum het miio-protocol, net als elk XiaoMi IoT-apparaat. Dus we moeten het leren om webhooks te begrijpen. We hebben een tussenpersoon nodig die de webhook kan opvangen en deze kan vertalen naar het miio-protocol naar het apparaat. Er is een python-bibliotheek (https://github.com/rytilahti/python-miio) maar we kunnen deze niet op het vacuüm gebruiken omdat er niet genoeg ruimte is voor Python 3.5+ op het vacuüm.

Maar gelukkig is er een php-miio-bibliotheek (https://github.com/skysilver-lab/php-miio) die relatief erg licht is en dit is wat we zullen gebruiken (het wordt trouwens ook gebruikt in win-mirobo hierboven). Degene die de webhook vangt is webhook-daemon (https://github.com/adnanh/webhook) die het script voor php op inkomende webhook uitvoert.

SSH naar je stofzuiger (met Putty):

#Doe onder root. Ja, ik weet dat het niet veilig is..whatevs.sudo su #Hier installeren we alle benodigdheden apt-get install -y wget php5-cli nano #Al het andere gaat naar /opt cd /opt

#Download php-miio

#Controleer het laatste nieuws op github. Corrigeer onderstaande regels volgens de laatste wget 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

#Webhooks-daemon downloaden

#Controleer het laatste nieuws op github. Corrigeer onderstaande regel volgens de laatste wget 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

#Maak instellingen voor webhook

nano /opt/webhook/hooks.json #Voer hier hooks.json-inhoud in. Klik met de rechtermuisknop in stopverf. #Ctr+X Bewaar Y.

#Maak script voor het aanroepen van php-miio

nano /opt/webhook/mirobo.sh #Voer hier mirobo.sh-inhoud in. Klik met de rechtermuisknop in stopverf. #Ctr+X Bewaar Y. # Maak uitvoerbaar chmod +x /opt/webhook/mirobo.sh

#Maak een autostart-script en vernieuw de configuraties

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 webhook.sh standaardinstellingen

#Herstart het systeem

opnieuw opstarten

Test na het opnieuw opstarten uw instellingen in de browser:

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

methode - commando

parameters - parameters

Alle methodes (commando's) en parameters vind je hier:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Inhoud van de hooks.json

Verander je token-hier in je token van vacuum.

Corrigeer ip-whitelist voor uw lokale netwerk of verwijder volledig als u uw hooks van elders uitvoert (onveilig).

[{ "id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Uitvoeren mirobo script", "include-command-output-in-response":false, "pass-environment-to-command": [{ "source": "string", "envname": "token", "name": "your-token-here" }], "pass-arguments-to-command": [{ "source": "url", "name": "methode" }, { "source": "url", "name ": "params" }], "trigger-rule": { "match": { "type": "ip-whitelist", "ip-range": "192.168.1.0/24" } } }]

mirobo.sh-bestandsinhoud. Gewoon kopiëren en plakken. Er zijn slechts twee regels (niet 3).

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

Stap 3: Amazon Dash-knoppen instellen

Open uw Amazon-app. Ga naar Dash-apparaten. Voeg zoals gewoonlijk een nieuwe streepjesknop toe. Op de prompt om een product te kiezen NIET DOEN. Sluit de app. Je bent klaar.

Stap 4: Router instellen om knopverzoek te vangen en MiVacuum te bedienen

Router instellen om knopverzoek op te vangen en MiVacuum te bedienen
Router instellen om knopverzoek op te vangen en MiVacuum te bedienen
Router instellen om knopverzoek op te vangen en MiVacuum te bedienen
Router instellen om knopverzoek op te vangen en MiVacuum te bedienen
Router instellen om knopverzoek op te vangen en MiVacuum te bedienen
Router instellen om knopverzoek op te vangen en MiVacuum te bedienen

Dit werkt als volgt.

Wanneer op de knop wordt gedrukt, wordt er verbinding gemaakt met uw netwerk en wordt de dhcp-server gevraagd om een it-adres toe te wijzen. We moeten dat verzoek opvangen en een webhook uitvoeren op een vacuüm. Als extra beveiligingsmaatregel zullen we de verbinding met Amazon blokkeren, zodat Amazon niet weet dat we op de knop hebben gedrukt en geen mogelijkheid heeft om firmware-updates of iets anders te pushen.

Meestal gebruik ik WinBox, maar soms is terminal gewoon eenvoudiger.

#Creëer een firewall-dropregel met adreslijst om te blokkeren

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

Dan moeten we voor elke knop een dhcp-leaseregel maken. Heel gemakkelijk te doen in winbox.

DHCP-server - Lease

Als we op de knop drukken, verschijnt de nieuwe huurovereenkomst. We klikken erop als statisch en stellen de adreslijst in op 'blockdash', stellen de leasetijd in op 5 seconden (zodat de lease verloopt voor de volgende druk) en kopiëren het mac-adres voor later.

#Dit commando is alleen ter referentie als je lease in winbox hebt toegevoegd, sla het gewoon over.

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

Nu moeten we wijzen naar het leasescript.

Open het tabblad DHCP en voeg 'myLeaseScript' toe als leasescript op uw dhcp-server.

Open nu Systeem - Scripts en voeg 'myLeaseScript' toe met lees-, testrechten.

Inhoud van myLeaseScript:

#Script wordt twee keer aangeroepen bij lease (1) en bij release (0):if ($leaseBound=1) do={ /log info ("MijnLeaseScript wordt uitgevoerd. Iemand heeft op de Dash-knop gedrukt?")

#Array van al je knoppen en url om te bellen

:lokale knoppen { "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"; };

#Controleer ingedrukte knop en acll url

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

Nu heb je je reiniging geautomatiseerd met een druk op de Amazon Dash Button. Veel plezier

Let op: het is erg onveilig om webhooks onversleuteld te versturen. Webhook kan codering gebruiken, maar hoe ik het ook probeerde te laten werken, het is gewoon nooit gebeurd. Aangezien ik het alleen in mijn lokale netwerk gebruik, maak ik me niet al te veel zorgen. Maar als u het via internet wilt gebruiken om verbinding te maken met IFTTT met Google Assistent-integratie, let dan op dit feit! Ik weet niet zeker wat de reden was voor een crypto-storing in mijn geval. Zelfondertekende certificaten die ik heb verslagen, uitgegeven door letsencrypt. Overgecompliceerd netwerk met een heleboel NAT's die ik versloeg met ipv6. Maar het lijkt mij dat webhooks erg slecht werkt met certificaten en in feite erg slecht gedocumenteerd is. En het lijkt erop dat IFTTT niet werkt met ipv6. Ik heb alles geprobeerd wat ik kon, maar faalde. Misschien heb je meer geluk. Vergeet niet een bericht te plaatsen.

upd: Ik heb een idee hoe ik het veiliger kan maken zonder codering. Je maakt een paar scripts voor elke actie die je wilt uitvoeren. U wijzigt de mirobo.sh om het script aan te roepen met een bepaalde parameter die in de webhook is verzonden, bijvoorbeeld. schone_slaapkamer. Dat is het. De meeste persoon die de haak zal gebruiken, is om je slaapkamer keer op keer schoon te maken …)) Zodra ik dat doe, zal ik de instructable bijwerken

Stap 5: Hoe u uw kaart plot

Hoe u uw kaart kunt plotten
Hoe u uw kaart kunt plotten

Zodra je je volledige kaart bij de hand hebt in je MiHome-app, stuur je je stofzuiger naar een specifieke locatie via het 'app_goto'-commando.

Maak een screenshot van de volledige kaart met verzonden positie en basis. Het basispunt na het opnieuw opstarten van de stofzuiger is de positie [25500, 25500] DIT IS NIET DE POSITIE VAN HET LAADBASIS, maar als u de stofzuiger opnieuw opstart bij het oplaadstation, is de positie van het oplaadstation 25500, 25500. Dus vanuit bekende positie verzonden en basispositie kunt u uw kaart in elk CAD-programma plotten met de screenshot die u hebt gemaakt. Ik gebruikte gratis QCAD.

Nadat ik de afbeelding aan het raster heb aangepast, gebruik ik een lijn door de kamer om het begin- en eindpunt van de zone te meten.

Aanbevolen: