Pokażę tutaj jak wykonać i podłączyć własny moduł zdalnego sterowania do odkurzaczy iRobot Roomba z serii 500-800. Sterowanie odbywać się będzie przez Wi-Fi i oferować będzie gotową integrację z Home Assistant poprzez MQTT. Tak zmodyfikowany odkurzacz będzie mógł pracować zgodnie z harmonogramem, wykonywać wysyłane polecenia oraz działać będzie w pełni bez chmury. Rozwiązanie to jest szczególnie przydatne w starszych modelach Roomby, które nie posiadają fabrycznej łączności sieciowej.
W poprzedniej części...
Zacznijmy od przypomnienia poprzedniego tematu z serii. Tam omówiony został protokół komunikacji oraz zaprezentowany był wczesny prototyp:
Własne zdalne sterowanie do odkurzacza Roomba - interfejs UART - kontrola przez WiFi [PL]
Własne zdalne sterowanie do odkurzacza Roomba - interfejs UART - kontrola przez WiFi [EN]
Teraz poszliśmy o krok dalej, więc pora zobaczyć co się zmieniło.
Wymagany hardware
Projekt zrealizowaliśmy w naszym środowisku na 33+ platform, więc potrzebny będzie jakiś wspierany moduł Wi-Fi. Stan wsparcia można sprawdzić na repozytorium, ale w dużym skrócie, pewnie starczy jakiś Beken lub ESP32. Do tego potrzebne są przetwornice od zasilania (bo na złączu od Roomby mamy napięcie z baterii) i konwerter poziomów UART, jak na schemacie:
Konwerter poziomów logicznych jest potrzebny, ponieważ interfejs UART w Roombie pracuje z napięciami innymi niż większość popularnych modułów Wi-Fi. Bez niego bezpośrednie połączenie mogłoby doprowadzić do uszkodzenia mikrokontrolera lub niestabilnej komunikacji. Moduł udało się nam złożyć na kanapkę.
Wymagany firmware
Na moduł Wi-Fi trzeba wgrać nasz wsad, oczywiście skompilowany ze wsparciem Roomba. W obk_config.h dla naszej platformy musi być włączone ENABLE_DRIVER_ROOMBA. Można skompilować online:
System online builds OpenBeken - kompilacja firmware dla wszystkich platform na Github [EN]
System online builds OpenBeken - kompilacja firmware dla wszystkich platform na Github [PL]
Wgrać można naszym flasherem:
https://github.com/openshwprojects/BK7231GUIFlashTool
Powinniśmy otrzymać kontrolki na stronie WWW urządzenia:
Z poziomu interfejsu WWW można również sprawdzić stan połączenia UART oraz zweryfikować czy odkurzacz odpowiada na komendy wysyłane przez firmware.
Integracja Home Assistant
Wystarczy wykonać klasyczne HASS Discovery, tak jak na innych urządzeniach z OBK:
W ten sposób dostajemy pełne odczyty w Home Assistant, razem z poprawną integracją odkurzacza.
Dzięki temu mamy dedykowany kontrolki, stan dokowania, itd:
Po poprawnym wykryciu urządzenia w Home Assistant pojawi się ono jako encja typu "vacuum". Dzięki temu dostępne są standardowe usługi HA, takie jak start, stop, powrót do bazy czy tryb sprzątania.
Podsumowanie
Podsumowując, taka integracja daje nam pełną kontrolę nad odkurzaczem z poziomu Home Assistant. Możemy w niej odczytywać dane, takie jak stan baterii, czujników i ładowania, oraz kontrolować odkurzaczem - rozpocząć i przerwać sesję sprzątania. Siłą rzeczy staje się też to kompatybilne z automatyzacjami i harmonogramami HA, więc można dostosować pracę urządzenia do naszych indywidualnych potrzeb.
Czy macie odkurzacz sparowany z Home Assistant, a jeśli tak, to przez jaką integrację?
Ważne linki:
Repozytorium projektu:
https://github.com/openshwprojects/OpenBK7231T_App
Flasher do wgrania firmware:
https://github.com/openshwprojects/BK7231GUIFlashTool
Wspierane urządzenia:
Użyte materiały:
https://www.home-assistant.io/integrations/vacuum/
https://github.com/denysdovhan/vacuum-card
Fajne? Ranking DIY Pomogłem? Kup mi kawę.