wtorek, 26 czerwca 2018

Google Home Mini i sterowanie urządzeniami w Domoticz

Ostatnim moim zakupem był zakup asystenta głosowego Google Home Mini.

Koszt zakupu obecnie nie jest zbyt wielki, za Google Home Mini zapłaciłem razem z przesyłką 190 zł.

Jest cena porównywalna, do tego gdybyśmy mieli sami budować Google Assitant na Raspberry Pi 3, trochę taniej wyszłaby cena na Pi Zero.

Urządzenie jest dosyć małych rozmiarów i dosyć porządnie wykonane.



Instalacja jest dosyć prosta, po zainstalowaniu aplikacji Google Home na telefonie lub tablecie, prowadzi nas krok po kroku po polsku.

Ciekawostką jest, to że po instalacji w urządzeniach widnieje mój wcześniej wykonany Google Assistant na Raspberry Pi 3.



Wykrywany jest jako Voice Kit i to co dodamy na Google Home jest tak samo dodawane na Voice Kit i obsługuje urządzenia dodane w Google Home.

Aby dodawać urządzenia z Domoticz do sterowania komendami z asystenta głosowego musimy posiadać stałe IP lub skonfigurować i dodać serwer DDNS.

Jednym z najpopularniejszych i darmowych serwerów DDNS jest no-ip.org -> Link

Zakładamy tam konto i logujemy się, w zakładce Dynamic DNS klikamy Create Host Name, wpisujemy nazwę i wybieramy Create Host Name.


Teraz instalujemy NOIP na Raspberry Pi, w terminalu wpisujemy:

wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz

Rozpakowujemy pakiet poleceniem:

tar vzxf noip-duc-linux.tar.gz && rm noip-duc-linux.tar.gz



Jak widać pliki wypakowało do folderu: noip-2.1.9-1

Folder ten może różnić zależnie od wersji programu.

Wchodzimy do folderu noip-2.1.9-1

cd noip-2.1.9-1

Teraz wpisujemy:

sudo make

następnie:

sudo make install

Wpisujemy login i hasło do serwisu NOIP , wpisujemy czas w sekundach, co ile ma się aktualizować adres ip, ja wpisałem 300 czyli 5 minut.

Uruchamiamy noip

sudo /usr/local/bin/noip2

Tworzymy plik konfiguracyjny noip:

sudo nano /etc/init.d/noip

Wklejamy tam zawartość:

#! /bin/sh
# /etc/init.d/noip

### BEGIN INIT INFO
# Provides: noip
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Simple script to start a program at boot
### END INIT INFO

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting noip"
# run application you want to start
/usr/local/bin/noip2
;;
stop)
echo "Stopping noip"
# kill application you want to stop
killall noip2
;;
*)
echo "Usage: /etc/init.d/noip {start|stop}"
exit 1
;;
esac

exit 0

Wciskamy Ctrl+x i T aby zapisać plik.

Nadajemy uprawnienia:

sudo chmod 755 /etc/init.d/noip

i na końcu:

sudo update-rc.d noip defaults

Teraz Raspberry Pi będzie aktualizować nasz adres i będzie on dostępny pod adresem jaki założyliśmy w serwisie noip.

Teraz w routerze otwieramy porty 443 i 80, jest zależne od rodzaju routera.

W Domoticz musimy odczytać numer idx urządzenia które chcemy włączać i wyłączać komenda głosową.

Mój numer idx to 225 i jest to gniazdko sterowane poprzez RFLink.

Gniazdkami będziemy sterować komendami json np.:

włączenie:

https://Login:hasło@adresnoip:443/json.htm?type=command¶m=switchlight&idx=idx&switchcmd=On

wyłączenie:

https://Login:hasło@adresnoip:443/json.htm?type=command¶m=switchlight&idx=idx&switchcmd=Off

W adresie tym w miejsce Login - wpisujemy nasz login do Domoticz, hasło - hasło do Domoticz, a w miejsce idx wpisujemy numer idx urządzenia.

Czyli np.:

https://Edek:edkahaslo12@adresnoip:443/json.htm?type=command¶m=switchlight&idx=225&switchcmd=On

Po wpisaniu tych komend w przeglądarkę internetową urządzenie powinno się włączać i wyłączać.

Ważne, aby w domowym routerze był otwarty i przekierowany port 443 na lokalny adres Raspberry Pi.

Teraz zakładamy konto na IFTTT -> Link

Wchodzimy w My Applets i klikamy New Applet

Klikamy w +this



Wpisujemy google i wybieramy Google Assistant



Teraz klikamy


Teraz w pierwszym i przedostatnim okienku wpisujemy po angielsku, co będziemy mówić, a co odpowie asystent Google.



Klikamy Create Trigger.

Teraz klikamy +that.



Wpisujemy web i wybieramy Webhooks


Teraz


Teraz wpisujemy w URL naszą komendę json, w Conetent Type wybieramy text/plain i klikamy Create action.



Na końcu klikamy Finish.

Ja mam podłączone gniazdko do przelewowego expresu z kawą i po nalaniu wody i wsypaniu kawy włączam expres.

Zdefiniowałem sobie komendę "Make me coffee" o wtedy gniazdko się włącza.

Po wypowiedzeniu komendy "Stop make coffee", gniazdko się wyłącza

Tak możemy dodawać włączanie i wyłączanie dowolnych urządzeń w Domoticz.

Działanie widać na poniższym filmie.







44 komentarze:

  1. Mam to uruchomione i działa poprawnie ( już wcześniej udało się )
    teraz walczę z powiadomieniami na google mini, udało mi się
    zmusić google mini to "gadania" tego co ja chcę jako (notification) nawet po polsku.... ( NODE RED zainstalowane obok domoticza)

    Interesuje mnie jak teraz wysłać dane z domoticza do nodered.
    masz może pomysł?

    OdpowiedzUsuń
    Odpowiedzi
    1. Krzysztof, jak zmusiłeś GH do gadania po polsku?

      Usuń
    2. w node red jest opcja wyboru języka dla głośnika

      Usuń
    3. Hej Kamil, jakich Nodes używasz w Node-red ? Możesz podesłac Twój Flow?

      Ja na chwile obecną używam Nora, steruje światłami i gniazdkami RPI, Sonoff'ami i ESp8266.

      Mój email viobama@gmail.com

      Usuń
    4. Witam,
      hey, oświećcie mnie,gdzie zmienić język dla głośnika na polski w nodered ??
      dziękuje

      Usuń
  2. Witam,

    Wszystko szło dobrze niestety na etapie: "Po wpisaniu tych komend w przeglądarkę internetową urządzenie powinno się włączać i wyłączać" - komendy nie działają. Po konfiguracji IFTTT również nic nie działa. Może jakieś wskazówki?

    OdpowiedzUsuń
    Odpowiedzi
    1. Mój blog przekręca chyba znaki, jest to opisane tu https://www.domoticz.com/wiki/Domoticz_API/JSON_URL%27s

      Usuń
    2. Troszkę przekręca - ale idziemy ku rozwiązaniu mojego problemu - czuję że jesteśmy blisko. Dziękuję za linka - faktycznie troszkę inaczej jest w linku a inaczej u Ciebie - ale to nic nie szkodzi - już wiem jak ma być ta druga część czyli od części /json.htm?type=command&param=switchlight&idx=99&switchcmd=Off . Z tą pierwszą częścią jeszcze mam coś nie tak - coś muszę źle podawać - pytania do Ciebie zadałem poniżej.

      Usuń
  3. Mała aktualizacja - może to pomoże szybciej sytuację wyjaśnić. Metodą prób i błędów doszedłem do tego iż jak wpisuje w oknie przeglądarki http://adres IP Raspberry:8080/json.htm?type=command&param=switchlight&idx=1&switchcmd=On lub Off to przekaźnik działa niestety przez aplet Google Assistant nadal nie działa...

    OdpowiedzUsuń
    Odpowiedzi
    1. Działa w sieci lokalnej, a nie działa na zewnątrz, sprawdź czy masz dobrze otwarte porty na routerze.

      Usuń
    2. Trzeba przekierować i otworzyć port 443 w routerze.

      Usuń
    3. Trochę namieszałem - jeszcze raz - https://użytkownikDomoticz:hasłoDomoticz@adresnoip:443/json.htm?type=command&param=switchlight&idx=1&switchcmd=On - użytkownik i hasło Domoticza to to z rejestracji na my.domoticz.com czy z Menu > Setup > Settings > Website Protection ?

      Usuń
    4. w miejsce adresnoip za znakiem @ wpisuje ten adres z konta na noip.com (IP Dynamic DNS) tak?

      Usuń
    5. Login i hasło z Domoticz i adres z noip

      Usuń
  4. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  5. Jak wpiszesz w przeglądarke adresnoip:443 to zalogujesz sie do Domoticz z zewnatrz i wtedy prosi i login i haslo do Domoticz

    OdpowiedzUsuń
    Odpowiedzi
    1. Wiesz co Roman tak sobie myślę że może źle serwer DDNS założyłem na no-ip.org. Przy zakładaniu Hostname co muszę wpisać w pole IPv4 Address? Dowolny adres?

      Usuń
    2. Musisz sobie wymyślić nazwę hostname przez jaką będziesz się łączył.

      Usuń
    3. Na ile bezpieczne jest wystawianie domoticza na zewnątrz?

      Usuń
  6. Roman dziękuję za wskazówki. Wydaje mi się że problem leży u mnie po stronie internetu - mam LTE cyfrowy Polsat - oni blokują porty i dlatego nie działa. Wykupiłem u nich usługę stałego IP - jutro mają włączyć - myślę że po tym zabiegu będzie już wszystko ok. Dzięki !!!

    OdpowiedzUsuń
    Odpowiedzi
    1. Problem był w LTE - dopiero po wykupie usługi stałego IP zaczęło wszystko działać. Dzięki Roman !

      Usuń
  7. Jak wpisuję komendę w przeglądarce światło załącza się.
    Jak powinien być skonfigurowany domoticz - powinien być wystawiony na zewnątrz czy w jakiś inny sposób ustawiony?
    Dodam że asystenta mam na telefonie razem z aplikacja ifttt.
    Oraz porty 443 i 80 powinny być ustawine dla google home czy od domoticza ?

    OdpowiedzUsuń
  8. Powinien być dostęp z zewnątrz po https port 443 jest dla domoticz.

    OdpowiedzUsuń
  9. Jednak coś złe robię komenda do ifttt jednak nie działa kopiowałem komendę z sterowania lokalnego.

    Pytanie to co masz adresnoip to jest adres ip skopiowany z noip.com
    czy Hostname >? i login i hasło z strony mojego domoticza.

    OdpowiedzUsuń
  10. Caly adres np. roman.hop.to.org i login i haslo z domoticz, po wpisaniu tego w przegladarke ma np. Wylaczyc cos a ma byc https

    OdpowiedzUsuń
  11. A macie jakiś pomysł żeby sterować domoticzem po polsku? W ifttt mam dodana komende " turn od lighting in room" i google działa na włącz oświetlenie w pokoju ale już " turn on lighting in bathroom" nie działa po polsku

    OdpowiedzUsuń
    Odpowiedzi
    1. wpisujesz komendy po angielsku odpowiedzi po polsku a do asystenta google zwracasz się po polsku

      Usuń
  12. Hej morduje to juz 2 dzien po wpisaniu w przegladarke wszystko dziala a przez ifttt nic nie chce ruszyć?

    OdpowiedzUsuń
  13. Wpisuję taki link i przez przegladarke przekaznik startuje. https://użytkownikDomoticz:hasłoDomoticz@adresnoip:443/json.htm?type=command&param=switchlight&idx=1&switchcmd=On. Wpisuje domene noip, otwiera domoticz a przez asystenta 0 reakcji

    OdpowiedzUsuń
    Odpowiedzi
    1. Ma włączać coś, lub jak na końcu wpiszesz Off, to ma wyłączać, a nie otwierać się Domoticz.

      Usuń
    2. Tak, jak wpisze w przegladarke to wszystko działa mogę wlaczyc i wylaczyc tylko przez google brak reakcji. Jest odpowiedz z google ze wlaczy ale swiatlo sie nie zapali

      Usuń
    3. Sprawdź, czy dobrze wszystko wpisałeś w IFFTT.

      Usuń
  14. Teraz sprawdziłem że jak połączę się z innym internetem niż domowym to linki już nie działają. Działa tylko jak jestem połączony z internetem z routera domowego

    OdpowiedzUsuń
    Odpowiedzi
    1. No routerze trzeba przekierować i otworzyć port 443.

      Usuń
    2. Dla mnie te porty nie do ogarnięcia.adres ip lan to ip domoticza?,port lan ? port wan?

      Usuń
    3. Moze być ze w t-mobile blokują porty i nic z tym nie zrobię

      Usuń
  15. I nic z tego w t-mobile tylko klientom biznesowym mogą włączyć zewnętrzne ip i odblokować porty. Zostało tylko poczekać z projektem ok 2 lat 😀😀.

    OdpowiedzUsuń
  16. Your website is very beautiful or Articles. I love it thank you for sharing for everyone. Google home cena

    OdpowiedzUsuń
  17. Dzięki, bardzo mi pomógł Twój opis. Zastanawia mnie tylko na ile bezpieczne jest otwieranie portu domoticza na świat? Na razie otworzyłem port 443 dla wszystkich ale myślę żeby odfiltrować adresy i dopuścić tylko te IP z których ifttt przysyła. Czy ma to sens i czy masz jakiś pomysł jak to sprawdzić jakie adresy ma ifttt? CZy można filtrować po domenie w ddwrt?

    OdpowiedzUsuń
  18. Cześć, czy ktoś próbował ogarnąć odczyt temperatur z czujników przez asystenta Google?

    OdpowiedzUsuń
    Odpowiedzi
    1. Też bardzo chciałbym to wiedzieć. Udało się komuś? Chciałbym zapytać jaka jest temp.? I uzyskać w odpowiedzi np. Aktualnie jest 21 st.C

      A co do gadania po polsku, to u mnie śmiga to automatycznie. Definiuję wszystko po angielsku, wydaję komendę pierwszy raz po angielsku a kolejną już po polsku i google assistant najwidoczniej sam sobie to tłumaczy na angielski! :)

      Usuń