Spisu treści:
- Krok 1: Uzyskaj token i rootową próżnię
- Krok 2: Zainstaluj i skonfiguruj niezbędne pakiety pod rootem w próżni
- Krok 3: Skonfiguruj przyciski Amazon Dash
- Krok 4: Skonfiguruj router, aby przechwycić żądanie przycisku i kontrolować MiVacuum
- Krok 5: Jak wykreślić mapę
Wideo: XiaoMi Vacuum + Amazon Button = Dash Cleaning: 5 kroków (ze zdjęciami)
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:29
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
- Odkurzamy korzenie
- Zainstaluj i skonfiguruj niezbędne pakiety pod rootem w próżni
- Skonfiguruj przycisk Amazon Dash
- 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ę
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
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ę
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:
Bezprzewodowy dzwonek do drzwi - (Raspberry PI i Amazon Dash): 4 kroki (ze zdjęciami)
Bezprzewodowy dzwonek do drzwi - (Raspberry PI i Amazon Dash): do czego służy? (zobacz wideo)Po naciśnięciu przycisku Raspberry wykrywa nowe urządzenie logujące się do sieci bezprzewodowej. W ten sposób – rozpoznaje wciśnięty przycisk i przekazuje informację o tym fakcie na Twój telefon komórkowy (lub urządzenie
Cichy dzwonek do drzwi Amazon Dash: 10 kroków (ze zdjęciami)
Amazon Dash Button Cichy dzwonek do drzwi: Ciągle wyglądasz przez okno, aby przechwycić gości, zanim zadzwonią do drzwi? Masz dość psów i dziecka, które szaleją za każdym razem, gdy dzwoni? Nie chcę wydawać fortuny na „smart”; rozwiązanie? Zrobienie cichego dzwonka do drzwi jest tak
Jak kontrolować oświetlenie / oświetlenie domowe za pomocą Arduino i Amazon Alexa: 16 kroków (ze zdjęciami)
Jak kontrolować światło / oświetlenie domowe za pomocą Arduino i Amazon Alexa: Wyjaśniłem, jak sterować światłem podłączonym do UNO i kontrolowanym przez Alexę
Własna wersja Amazon Echo: 8 kroków (ze zdjęciami)
Własna wersja Amazon Echo: Cześć chłopaki, myślę, że wszyscy wiedzą o najnowszym produkcie Amazon Echo, który jest urządzeniem sterowanym głosem, tj. Możemy sterować urządzeniem za pomocą naszego głosu, a nawet może z nami rozmawiać. Zainspirowany tym pomysłem stworzyłem własną wersję, która może
Pilot na podczerwień sterowany Amazon Echo: 11 kroków (ze zdjęciami)
Amazon Echo Controlled IR Remote: System Amazon Echo może kontrolować wiele aspektów inteligentnego domu, ale inteligentne gniazdko może tylko wyłączać się i włączać. Wiele urządzeń nie włącza się natychmiast po podłączeniu i wymaga dodatkowych czynności, takich jak naciśnięcie przycisków na pilocie lub