Obsah:

Vakuum XiaoMi + tlačítko Amazon = Čištění pomlčky: 5 kroků (s obrázky)
Vakuum XiaoMi + tlačítko Amazon = Čištění pomlčky: 5 kroků (s obrázky)

Video: Vakuum XiaoMi + tlačítko Amazon = Čištění pomlčky: 5 kroků (s obrázky)

Video: Vakuum XiaoMi + tlačítko Amazon = Čištění pomlčky: 5 kroků (s obrázky)
Video: CS50 2014 - Week 1, continued 2024, Listopad
Anonim
XiaoMi vakuum + tlačítko Amazon = čištění pomlčky
XiaoMi vakuum + tlačítko Amazon = čištění pomlčky

Tato instrukce vysvětlí, jak používat náhradní tlačítka Amazon Dash k ovládání vakua XiaoMi.

Dostal jsem spoustu Amazonských knoflíků od doby, kdy byly 1 dolar, a já jsem je nepoužíval. Ale po obdržení nového robotického vakua jsem se rozhodl, že by bylo velmi vhodné použít tato tlačítka jako ovládání vakua.

Stiskněte tlačítko Ziploc a vysaje ložnici.

Stiskněte tlačítko Jsem rád, že to vysaje obývací pokoj.

Stiskněte Fidži.. máte nápad.

Do tohoto projektu je zahrnuto mnoho hacků z internetu. Opravdu si vážím práce, kterou odvedlo tolik lidí, a myslím si, že se musím podělit o svou malou vychytávku na základě jejich výzkumu.

Prohlášení: Všechny níže uvedené kroky provádíte na vlastní riziko! Pokud budete pečlivě postupovat podle těchto kroků, je velmi malá šance, že můžete něco poškodit. Ale to se nestane! A já za to neberu žádnou odpovědnost. BTW všechny kroky lze obrátit, takže potenciálně nedochází k porušení záruky. Ale samozřejmě - YMMV

Základním principem je, že místo zakoupení věcí od Amazonu chytíme na routeru tlačítko pomlčky a odešleme webhook do Vacuum.

Co budete potřebovat:

  • Směrovač s vlastním firmwarem, který může řídit DHCP, spouštět skripty a plnit dotazy get | post. Mikrotik, DD-WRT, OpenWRT, Tomato atd.
  • XiaoMi vakuum. v1 nebo v2
  • Tlačítka Amazon Dash

Konkrétně to, co jsem použil:

  • Mikrotik
  • XiaoMi v2 Vacuum Roborock S50
  • Banda tlačítek Amazon Dash

Zde je postup

  1. Zakořeníme vakuum
  2. Nainstalujte a nakonfigurujte potřebné balíčky pod rootem ve vakuu
  3. Tlačítko nastavení Amazon Dash
  4. Nastavte router, aby zachytil požadavek na tlačítko a ovládal vakuum

Pozn.: Ve skutečnosti nemusíte své vakuum rootovat, abyste jej mohli ovládat. Pokud máte na síti (nebo kdekoli) jiný server, který může provozovat python nebo php, můžete na ně nasměrovat webhooky. Ale já ne. A chtěl jsem, aby byl pořádek a kompaktnost na samotném vakuu. Pokud se vám můj přístup nelíbí, předpokládám, že z tohoto čtení můžete zjistit, jak nastavit svůj vlastní server pro střední muže. Přejděte rovnou k bodu 2.

Ok, jdeme…

Krok 1: Získejte token a kořenové vakuum

Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum
Získejte token a kořenové vakuum

Veškerý software, fimware a pokyny pro rootování byly získány z: https://4pda.ru/forum/index.php? Showtopic = 881982

Pokud máte jiný operační systém než Windows a telefon jiný než Android (můžete používat virtuální s nox), použijte odkaz výše (použijte Google Translate) a přečtěte si pokyny, jinak postupujte podle manuálu zde.

Abychom mohli rootovat, musíme z vašeho vakua získat IP adresu a token.

Rozbalte root.7z.

Nainstalujte si Mihome z Vevs na svůj Android. Můžete použít jeden z archivu, nebo pokud je tato instrukce datována, nejnovější verzi lze získat z jeho webových stránek (https://www.kapiba.ru/2017/11/mi-home.html) nebo z jeho Disku Google (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Přihlaste se do svého MiHome. Na svém účtu musíte nastavit China Mainland a přidat k němu vakuum).

Klepněte na ikonu vakua Nastavení (tři tečky vpravo nahoře) Obecná nastavení Informace o síti

Vyplňte IP adresu a token ve win-mirobo/win-mirobo.ini

Zakázat bránu firewall v systému Windows. Spusťte win-mirobo.bat a flashujte firmware.

!!!!!!!!! V1 je pro v1 Vacuum a V2 je pro v2 Vacuum (Roborock S50) !!!!!!! Pokud jste blikli špatně FW - přejděte na odkaz 4pda (první v tomto kroku) a přečtěte si, jak obnovit.

Arter Vacuum se restartuje - úspěšně jste rootovali své vakuum a nyní k němu máte přístup pomocí ssh!

SSH k tomu (s tmelem) s čističem/čističem. Změňte své heslo pomocí hesla

Krok 2: Nainstalujte a nakonfigurujte potřebné balíčky pod rootem ve vakuu

Předpoklad

Místo webhooků používá MiVacuum protokol miio, stejně jako všechna zařízení XiaoMi IoT. Abychom porozuměli webhookům, musíme se to naučit. Potřebujeme prostředníka, který dokáže chytit webhook a přeložit ho do protokolu miio do zařízení. Existuje knihovna pythonu (https://github.com/rytilahti/python-miio), ale nemůžeme ji použít ve vakuu, protože pro vakuum není dostatek místa pro Python 3.5+.

Ale naštěstí existuje knihovna php-miio (https://github.com/skysilver-lab/php-miio), která je poměrně velmi lehká a právě to budeme používat (btw, používá se také ve win-mirobo výše). Ten, kdo chytí webhook, je webhook daemon (https://github.com/adnanh/webhook), který spouští skript pro php na příchozím webhooku.

SSH do vašeho vakua (s tmelem):

#Udělejte pod rootem. Ano, vím, že to není bezpečné.. whatevs.sudo su #Zde nainstalujeme všechny potřebné položky apt-get install -y wget php5-cli nano #Všechno ostatní bude /opt cd /opt

#Stáhněte si php-miio

#Zkontrolujte nejnovější na github. Opravte řádky níže podle nejnovějšího wgetu 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

#Stáhněte si démona webhooks

#Zkontrolujte nejnovější na github. Správný řádek níže podle nejnovějšího wgetu 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

#Vytvořte nastavení pro webhook

nano /opt/webhook/hooks.json #Input hooks.json content here. Klikněte pravým tlačítkem na tmel. #Ctr+X Uložit Y.

#Vytvořte skript pro volání php-miio

nano /opt/webhook/mirobo.sh #Zadejte obsah mirobo.sh zde. Klikněte pravým tlačítkem na tmel. # Ctr +X Uložit Y. # Vytvořit spustitelný soubor chmod +x /opt/webhook/mirobo.sh

#Vytvořte skript pro automatické spuštění a obnovte konfigurace

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 výchozí nastavení webhook.sh

#Restartujte systém

restartovat

Po restartu vyzkoušejte svá nastavení v prohlížeči:

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

metoda - příkaz

params - parametry

Všechny metody (příkazy) a parametry najdete zde:

github.com/marcelrv/XiaomiRobotVacuumProtocol

Obsah hooks.json

Zde změňte svůj token na token z vakua.

Opravte IP-whitelist pro vaši místní síť nebo úplně odeberte, pokud spustíte háčky odjinud (nebezpečné).

[{"id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Provádění skript mirobo "," 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": "method"}, {"source": "url", "name ":" params "}]," trigger-rule ": {" match ": {" type ":" ip-whitelist "," ip-range ":" 192.168.1.0/24 "}}}]

obsah souboru mirobo.sh. Stačí zkopírovat a vložit. Existují pouze dva řádky (ne 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 ']}'

Krok 3: Nastavení tlačítek Amazon Dash

Otevřete aplikaci Amazon. Přejděte na Dash Devices. Přidejte nové tlačítko pomlčky jako obvykle. Na výzvu k výběru produktu NEDĚLEJTE. Zavřete aplikaci. Jsi hotov.

Krok 4: Nastavení směrovače k zachycení požadavku na tlačítko a ovládání MiVacuum

Nastavte router tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum
Nastavte router tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum
Nastavte směrovač tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum
Nastavte směrovač tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum
Nastavte router tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum
Nastavte router tak, aby zachytil požadavek na tlačítko a ovládal MiVacuum

Funguje to následovně.

Když je stisknuto tlačítko, přidruží se k vaší síti a požádá server dhcp o přiřazení jeho adresy. Musíme tento požadavek zachytit a provést webhook do vakua. Jako další bezpečnostní opatření zablokujeme připojení k Amazonu, aby Amazon nevěděl, že jsme dokonce stiskli tlačítko a neměli možnost tlačit aktualizaci firmwaru nebo něco jiného.

Většinou používám WinBox, ale někdy je terminál jednodušší.

#Create firewall drop rule with address list to block

/ip firewall filter add chain = forward src-address-list = blockdash action = zrušit komentář = "Drop Amazon Dash"

Pak musíme pro každé tlačítko vytvořit pravidlo zapůjčení dhcp. Velmi snadné ve winboxu.

Server DHCP - pronájem

Jednoho stiskneme tlačítko, objeví se nový pronájem. Klikneme na to jako statické a nastavíme seznam adres na 'blockdash', nastavíme dobu zapůjčení na 5 sekund (aby pronájem vypršel před dalším stisknutím) a zkopírujeme adresu mac na později.

#Tento příkaz je pouze pro referenci, pokud jste přidali pronájem ve winboxu, jednoduše jej přeskočte.

/ip dhcp-server leasing add address-list = blockdash mac-address = XXXXXXXXXX adresa = 192.168.x.x doba zapůjčení = 5 s

Nyní musíme ukázat na pronájem skriptu.

Otevřete kartu DHCP a přidejte 'myLeaseScript' jako skript pro zapůjčení na váš server dhcp.

Nyní otevřete System - Scripts a přidejte 'myLeaseScript' s oprávněním ke čtení a testování.

Obsah myLeaseScript:

#Script se zavolá dvakrát při zapůjčení (1) a při vydání (0): if ($ leaseBound = 1) do = { /log info („Running myLeaseScript. SomePressPress Dash Button?“)

#Array všech vašich tlačítek a URL pro volání

: místní tlačítka {"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"; };

#Zkontrolujte zaškrtnuté tlačítko a URL adresy

: foreach mac, url in = $ buttons do = {: if ($ mac = $ leaseActMAC) do = { /log info ("Pressed". $ mac. "button") /tool fetch keep-result = no mode = https http-metoda = url příspěvku = $ url}}}

Nyní jste úklid zautomatizovali stisknutím tlačítka Amazon Dash. Bavte se

Věnujte pozornost: Odesílání webhooků nezašifrováno je velmi nebezpečné. Webhook může používat šifrování, ale jakkoli jsem se snažil, aby fungoval, nikdy se to nestalo. Vzhledem k tomu, že jej používám pouze ve své místní síti, nejsem příliš znepokojen. Pokud jej však chcete použít přes internet k připojení k IFTTT s integrací Google Assistant, věnujte pozornost této skutečnosti! Nejsem si jistý, co bylo důvodem selhání kryptoměny v mém případě. Certifikáty s vlastním podpisem, které jsem porazil, vydané letsencrypt. Překomplikovanou síť se spoustou NATů jsem porazil s ipv6. Ale zdá se mi, že webhooky fungují velmi špatně s certifikáty a ve skutečnosti velmi špatně zdokumentované. A vypadá to, že IFTTT nefunguje s ipv6. Zkoušel jsem všechno možné, ale neuspěl jsem. Možná budete mít větší štěstí. Nezapomeňte napsat příspěvek.

upd: Mám nápad, jak to zajistit bezpečněji bez šifrování. Pro každou akci, kterou chcete provést, vytvoříte několik skriptů. Upravíte mirobo.sh tak, aby skript zavolal pro daný parametr odeslaný do webhooku, např. čistý_pokoj. A je to. Nejvíce lidí, kteří využijí háček, bude znovu a znovu čistit vaši ložnici …)) Jakmile to udělám, aktualizuji pokyny

Krok 5: Jak vykreslit mapu

Jak vykreslit mapu
Jak vykreslit mapu

Jakmile budete mít v aplikaci MiHome připravenou celou mapu, odešlete vakuum na konkrétní místo pomocí příkazu „app_goto“.

Vytvořte snímek obrazovky plné mapy s odeslanou pozicí a základnou. Základním bodem po restartu vakua je poloha [25500, 25500] TOTO NENÍ POLOHA NABÍJECÍHO ZÁKLADU, ale pokud restartujete vakuum na nabíjecí základně, pak bude poloha nabíjecí základny 25500, 25500. Takže ze známé polohy odesláno a základní pozici můžete vykreslit svou mapu na libovolném programu CAD pomocí pořízeného snímku obrazovky. Použil jsem bezplatný QCAD.

Po přizpůsobení obrázku do mřížky použiji čáru přes místnost k měření počátečního a koncového bodu zóny.

Doporučuje: