Ok, udało mi się zrobić dwukierunkową integrację Loxone z asystentem Google.
Rozwiązanie które znalazłem jest bardzo sensowne bo:
- jest względnie łatwe do wdrożenia (zwłaszcza w instalacji, w której jest już LoxBerry)
- jest łatwe do konfiguracji (bo opiera się na blokach funkcyjnych Node-Red, podobnie do Loxone - zero pisania kodu)
- jest bezpłatne (przynajmniej na razie)
- jest bezpieczne (bo nie wymaga wystawiania portów Miniservera poza sieć domową)
Wrzucam je tutaj, bo na grupie facebookowej całe szczegółowo i tak się nie zmieści.
Tak więc po kolei zrobiłem takie rzeczy:
1. Na LoxBerry zainstalowałem plugin Docker. W pluginie tym jest narzędzie do łatwego zarządzania kontenerami z poziomu przeglądarki (Portainer)
2. W Portainerze pobrałem i uruchomiłem kontener Node-Red. Tak naprawdę trzeba tylko zmapować port 1880. Tak to wygląda uruchomione:
3. Następnie uruchomiłem Node-Red w przeglądarce - adres
http://loxberry:18804. W Node-Red trzeba doinstalować jeden najistotniejszy plugin - NORA.
To jest właśnie serce integracji, czyli interfejs który z jednej strony jest zintegrowany z Google (jest na liście urządzeń w Google Home)
a z drugiej strony wstawia w Node-Red odpowiednie bloki logiczne.
Więcej info tu
https://flows.nodered.org/node/node-red-contrib-noraAby doinstalować Norę wystaczy z hamgurbera w prawym górnym rogu wybrać Manage Pallete i wpisać w wyszukiwarce "nora":
5. Po instalacji pluginu Nory trzeba się tam w niej zalogować kontem Google albo GitHub aby uzyskać Token (coś w stylu API key).
Ten Token wpisuje się w konfiguracji Nory. Trwa to 15 sekund i gotowe.
6. I teraz już tylko stworzenie logiki w Node-Red.
Pierwsza integrację zrobiłem z na Wall Plugu Fibaro, który mam zintegrowany w Loxone.
Chciałem go móc włączyć i wyłączyć głosowo. Gotowy schemat jest bardzo prosty i wygląda tak:
Do wyboru jak widać po lewej jest kilka bloków funkcjonalnych, ja wybrałem switcha.
Nazwałem go "Google Switch" i w konfiguracji podałem w jakim jest pokoju.
Jego wyjście wrzuciłem na switch logiczny który w zależności od stanu wyjścia Google Switcha
uruchomi jedno lub drugie wywołanie HTTP na API Miniservera Loxone (włączające lub wyłączające wtyczkę).
7. Następnie trzeba w aplikacji Google Home np. na Androidzie dodać urządzenie NORA.
Wtedy pojawia się w systemie Google Home nowy przełącznik:
I to od razu działa. Można powiedzieć "Hey Google, turn switch on" i Loxone włączy Wall Pluga
8. Na koniec warto jeszcze sprawić, aby Google Home wiedział czy Wall Plug jest aktualnie włączony czy nie.
W tym celu wykorzystałem jego status z brokera MQTT na LoxBerry i stąd na moim schemacie jeszcze ten dodatkowy
blok funkcjonalny na początku, przed Google Switchem (Node-Red ma defaultowo wbudowany input z MQTT brokera).
On powiadamia Google Home o zmianie stanu WallPluga, śledząc u mnie temat MQTT "fhem/Fibaro_Wall_Plug_2/state"
Google Switch w konfiguracji ma ustawione aby nie przekazywał inputa na output bo nie ma tu takiej potrzeby.
Działa to wszystko dobrze. Bez znaczenia, czy włączę Wall Pluga z appki Loxone, czy z fizycznie z przycisku na WallPlugu,
czy głosowo przez Hey Google, czy palcem w appce Google Home - wszystkie systemy widzą ten sam status urządzenia.