Spisu treści:

XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 kroków (ze zdjęciami)
XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 kroków (ze zdjęciami)

Wideo: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 kroków (ze zdjęciami)

Wideo: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 kroków (ze zdjęciami)
Wideo: Pełne wykończenie wnętrza samochodu Transformacja zdemolowanego samochodu paskudnego dziecka! 2024, Listopad
Anonim
Odkurzacz XiaoMi + przycisk Amazon = czyszczenie deski rozdzielczej
Odkurzacz XiaoMi + przycisk Amazon = czyszczenie deski rozdzielczej

Ta instrukcja wyjaśni, jak używać zapasowych przycisków Amazon Dash do sterowania odkurzaczem XiaoMi.

Kupiłem kilka Amazon Buttons z czasów, gdy kosztowały 1 dolara i nie miałem z nich żadnego pożytku. Ale po otrzymaniu nowego robota próżniowego zdecydowałem, że bardzo wygodnie byłoby użyć tych przycisków jako kontroli próżni.

Naciśnij przycisk Ziploc, a odkurzy sypialnię.

Naciśnij przycisk Glad, a odkurzy salon.

Naciśnij Fidżi… dobrze masz pomysł.

Do tego projektu włączono wiele hacków z internetu. Naprawdę doceniam pracę wykonaną przez tak wielu ludzi i myślę, że muszę podzielić się moim małym wynalazkiem w oparciu o ich badania.

Zastrzeżenie: Wszystkie poniższe kroki wykonujesz na własne ryzyko! Jeśli będziesz uważnie postępować zgodnie z instrukcjami, istnieje bardzo mała szansa, że możesz coś uszkodzić. Ale nic się nie dzieje! I nie biorę za to odpowiedzialności. BTW wszystkie kroki można cofnąć, więc potencjalnie nie ma naruszenia gwarancji. Ale oczywiście - YMMV

Podstawową zasadą jest to, że zamiast kupować rzeczy od Amazona, łapiemy przycisk kreski na routerze i wysyłamy webhooka do Vacuum.

Czego będziesz potrzebować:

  • Router z niestandardowym oprogramowaniem sprzętowym, które może kontrolować DHCP, uruchamiać skrypty i realizować zapytania get|post. Mikrotik, DD-WRT, OpenWRT, Tomato itp.
  • Odkurzacz Xiaomi. v1 lub v2
  • Przyciski Amazon Dash

Konkretnie to, czego użyłem:

  • Mikrotika
  • Odkurzacz XiaoMi v2 Roborock S50
  • Kilka przycisków Amazon Dash

Oto procedura

  1. Odkurzamy korzenie
  2. Zainstaluj i skonfiguruj niezbędne pakiety pod rootem w próżni
  3. Skonfiguruj przycisk Amazon Dash
  4. Skonfiguruj router, aby złapać żądanie przycisku i kontrolować próżnię

NB: W rzeczywistości nie musisz zrootować swojej próżni, aby ją kontrolować. Jeśli masz inny serwer w swojej sieci LAN (lub gdziekolwiek), który może uruchamiać pythona lub php, możesz skierować do nich webhooki. Ale ja nie. I chciałem, aby był schludny i zwarty na samym odkurzaczu. Więc jeśli nie podoba ci się moje podejście, zakładam, że możesz dowiedzieć się, jak skonfigurować swój własny serwer pośrednika z tego odczytu. Po prostu przejdź od razu do punktu 2.

Ok, zaczynamy…

Krok 1: Uzyskaj token i rootową próżnię

Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię
Uzyskaj token i rootową próżnię

Całe oprogramowanie, oprogramowanie i instrukcje dotyczące rootowania uzyskano ze strony:

Jeśli masz system operacyjny inny niż Windows i telefon inny niż Android (możesz użyć wirtualnego z nox), skorzystaj z powyższego linku (użyj Tłumacza Google) i przeczytaj instrukcje, w przeciwnym razie postępuj zgodnie z instrukcją tutaj.

Aby zrootować, musimy uzyskać adres IP i token z twojej próżni.

Rozpakuj root.7z.

Zainstaluj Mihome z Vevs na swoim Androidzie. Możesz użyć jednego z Archiwum lub jeśli ta instrukcja jest datowana, najnowszą wersję można pobrać z jego strony internetowej (https://www.kapiba.ru/2017/11/mi-home.html) lub z jego Dysku Google (https://drive.google.com/drive/folders/1IyjvIWiGaeD7iLWWtBlb6jSEHTLg9XGj)

Zaloguj się do swojego MiHome. Musisz ustawić na swoim koncie China Mainland i dodać do niego Vacuum).

Stuknij ikonę Odkurzacz Ustawienia (trzy kropki w prawym górnym rogu) Ustawienia ogólne Informacje o sieci

Wpisz adres ip i token w win-mirobo/win-mirobo.ini

Wyłącz zaporę w systemie Windows. Uruchom win-mirobo.bat i sflashuj oprogramowanie.

!!!!!!!!! V1 jest dla próżni v1 a V2 dla próżni v2 (Roborock S50)!!!!!!!Jeżeli sflashowałeś złe FW - przejdź do linku 4pda (pierwszy w tym kroku) i przeczytaj jak odzyskać.

Arter Vacuum restartuje się - pomyślnie zrootowałeś swoją próżnię i teraz masz do niej dostęp przez ssh!

SSH do niego (z Putty) za pomocą środka czyszczącego. Zmień hasło za pomocą passwd

Krok 2: Zainstaluj i skonfiguruj niezbędne pakiety pod rootem w próżni

Przesłanka

Zamiast webhooków MiVacuum używa protokołu miio, podobnie jak każde urządzenie XiaoMi IoT. Więc musimy się tego nauczyć, aby zrozumieć webhooki. Potrzebujemy pośrednika, który potrafi złapać webhooka i przetłumaczyć go na protokół miio na urządzenie. Istnieje biblioteka Pythona (https://github.com/rytilahti/python-miio), ale nie możemy jej używać w próżni, ponieważ nie ma wystarczająco dużo miejsca dla Pythona 3.5+ w Vacuum.

Ale na szczęście istnieje biblioteka php-miio (https://github.com/skysilver-lab/php-miio), która jest stosunkowo bardzo lekka i właśnie tego będziemy używać (przy okazji jest ona również używana w win-mirobo powyżej). Tym, który przechwytuje webhooka, jest demon webhooka (https://github.com/adnanh/webhook), który uruchamia skrypt dla php na przychodzącym webhooku.

SSH do próżni (z Putty):

#Czy pod rootem. Tak, wiem, że to nie jest bezpieczne..whatevs.sudo su #Tutaj instalujemy wszystkie potrzeby apt-get install -y wget php5-cli nano #Wszystko inne idzie do /opt cd /opt

#Pobierz php-miio

#Sprawdź najnowsze na github. Popraw wiersze poniżej zgodnie z najnowszym 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

#Pobierz demona webhooków

#Sprawdź najnowsze na githubie. Prawidłowa linia poniżej zgodnie z najnowszym 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

#Utwórz ustawienia dla webhooka

nano /opt/webhook/hooks.json #Wprowadź zawartość hooks.json tutaj. Kliknij prawym przyciskiem w kit. #Ctr+X Zapisz Y.

#Utwórz skrypt do wywoływania php-miio

nano /opt/webhook/mirobo.sh #Wprowadź tutaj zawartość mirobo.sh. Kliknij prawym przyciskiem w kit. #Ctr+X Zapisz Y. # Stwórz plik wykonywalny chmod +x /opt/webhook/mirobo.sh

#Utwórz skrypt autostartu i odnów konfiguracje

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 Domyślne ustawienia webhook.sh

#Uruchom ponownie system

restart

Po ponownym uruchomieniu przetestuj swoje ustawienia w przeglądarce:

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

metoda - polecenie

parametry - parametry

Wszystkie metody (polecenia) i parametry znajdziesz tutaj:

github.com/marcelrv/XiaomiRobotProtokół próżniowy

Zawartość hooks.json

Zmień swój token tutaj na swój token z próżni.

Popraw białą listę adresów IP dla swojej sieci lokalnej lub usuń całkowicie, jeśli uruchamiasz swoje hooki z innego miejsca (niebezpieczne).

[{ "id": "mirobo", "execute-command": "/opt/webhook/mirobo.sh", "command-working-directory": "/opt/webhook", "response-message": "Wykonywanie skrypt mirobo", "include-command-output-in-response":false, "pass-environment-to-command": [{ "source": "string", "envname": "token", "name": "twój-token-tutaj" }], "pass-arguments-to-command": [{ "source": "url", "name": "metoda" }, { "source": "url", "name ": "params" }], "trigger-rule": { "match": { "type": "ip-whitelist", "ip-range": "192.168.1.0/24" } } }]

zawartość pliku mirobo.sh. Po prostu skopiuj i wklej. Są tylko dwie linie (nie 3).

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

Krok 3: Skonfiguruj przyciski Amazon Dash

Otwórz swoją aplikację Amazon. Przejdź do urządzeń Dash. Dodaj nowy przycisk kreski jak zwykle. Na komunikacie wybrać produkt NIE. Zamknij aplikację. Skończyłeś.

Krok 4: Skonfiguruj router, aby przechwycić żądanie przycisku i kontrolować MiVacuum

Skonfiguruj router do przechwycenia żądania przycisku i sterowania MiVacuum
Skonfiguruj router do przechwycenia żądania przycisku i sterowania MiVacuum
Skonfiguruj router do przechwycenia żądania przycisku i sterowania MiVacuum
Skonfiguruj router do przechwycenia żądania przycisku i sterowania MiVacuum
Skonfiguruj router do przechwytywania żądania przycisku i sterowania MiVacuum
Skonfiguruj router do przechwytywania żądania przycisku i sterowania MiVacuum

Działa to w następujący sposób.

Po naciśnięciu przycisku kojarzy się z twoją siecią i prosi serwer dhcp o przypisanie adresu it. Musimy złapać to żądanie i wykonać webhook do próżni. Jako dodatkowy środek bezpieczeństwa zablokujemy połączenie z Amazonem, aby Amazon nie wiedział, że nawet nacisnęliśmy przycisk i nie miał możliwości wysłania aktualizacji oprogramowania lub czegoś innego.

Przeważnie używam WinBox, ale czasami terminal jest po prostu łatwiejszy.

#Utwórz regułę upuszczania zapory z listą adresów do zablokowania

/ip firewall filtr add chain=forward src-address-list=blockdash action=drop comment="Upuść Amazon Dash"

Następnie musimy stworzyć regułę dzierżawy DHCP dla każdego przycisku. Bardzo łatwe do zrobienia w winboxie.

Serwer DHCP - dzierżawy

Po naciśnięciu przycisku pojawia się nowa dzierżawa. Klikamy jako statyczny i ustawiamy listę adresów na „blockdash”, ustawiamy czas dzierżawy na 5 sekund (aby dzierżawa wygasała przed kolejnym naciśnięciem) i kopiujemy adres mac na później.

#To polecenie jest tylko w celach informacyjnych, jeśli dodałeś dzierżawę w winbox, po prostu ją pomiń.

/ip dzierżawa serwera dhcp dodaj adres-lista=blockdash adres-mac=XXXXXXXXXX adres=192.168.x.x czas dzierżawy=5s

Teraz musimy wskazać skrypt dzierżawy.

Otwórz zakładkę DHCP i dodaj 'myLeaseScript' jako skrypt dzierżawy na serwerze dhcp.

Teraz otwórz System - Skrypty i dodaj 'myLeaseScript' z uprawnieniami do odczytu, testuj.

Zawartość myLeaseScript:

#Script jest wywoływany dwukrotnie w przypadku dzierżawy (1) i wydania (0):if ($leaseBound=1) do={ /log info ("Uruchamiam myLeaseScript. Ktoś nacisnął przycisk Dash?")

#Tablica wszystkich przycisków i adres URL do połączenia

:local buttons { "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"; };

#Sprawdź wciśnięty przycisk i wpisz adres URL

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

Teraz zautomatyzowałeś czyszczenie za pomocą przycisku Amazon Dash. Baw się dobrze

Proszę zwrócić uwagę: wysyłanie niezaszyfrowanych webhooków jest bardzo niebezpieczne. Webhook może używać szyfrowania, ale starałem się, aby to działało, po prostu nigdy się nie zdarzyło. Ponieważ używam go tylko w mojej sieci lokalnej, nie jestem zbytnio zaniepokojony. Ale jeśli chcesz używać go przez Internet, aby podłączyć się do IFTTT z integracją Google Assistant, zwróć uwagę na ten fakt! Nie jestem pewien, co było przyczyną awarii krypto w moim przypadku. Pokonałem certyfikaty z podpisem własnym wydane przez Letencrypt. Przesadnie skomplikowana sieć z mnóstwem NAT-ów, które pokonałem za pomocą ipv6. Ale wydaje mi się, że webhooki działają bardzo źle z certyfikatami iw rzeczywistości są bardzo źle udokumentowane. I wygląda na to, że IFTTT nie działa z IPv6. Próbowałem wszystkiego, co mogłem, ale zawiodłem. Możesz mieć więcej szczęścia. Nie zapomnij napisać posta.

upd: Mam pomysł, jak uczynić go bezpieczniejszym bez szyfrowania. Tworzysz kilka skryptów dla każdej akcji, którą chcesz wykonać. Modyfikujesz plik mirobo.sh tak, aby wywoływał skrypt z podanym parametrem przesłanym w webhook np. czysta_sypialnia. Otóż to. Najwięcej osób, które wykorzystają hak, zrobi, aby raz za razem posprzątać sypialnię…)) Kiedy to zrobię, zaktualizuję instrukcje

Krok 5: Jak wykreślić mapę

Jak wykreślić mapę
Jak wykreślić mapę

Po przygotowaniu pełnej mapy w aplikacji MiHome wyślij odkurzacz do określonej lokalizacji za pomocą polecenia „app_goto”.

Zrób zrzut ekranu pełnej mapy z przesłaną pozycją i bazą. Punktem bazowym po restarcie próżni jest pozycja [25500, 25500]TO NIE JEST POZYCJA BAZY ŁADUJĄCEJ, ale jeśli zrestartujesz próżnię w bazie ładującej, pozycja bazy ładującej będzie wynosić 25500, 25500. Czyli ze znanej pozycji wysłanej i pozycję bazową możesz wykreślić swoją mapę w dowolnym programie CAD z wykonanym zrzutem ekranu. Korzystałem z darmowego QCAD.

Po dopasowaniu obrazu do siatki używam linii w poprzek pokoju, aby zmierzyć punkt początkowy i końcowy strefy.

Zalecana: