czwartek, 2 listopada 2017

Serwis Alexa - integracja z Domoticz

Ha! Dzisiaj samo sedno - połączenie serwisu Alexa z Domoticz. Wersja trudniejsza, przez HABridge. Jest skill w postaci Controlicz, ale nie mam wystawionego Domoticz w prosty sposób na 'świat', dlatego zrobiłem połączenie w inny sposób. Wydaje mi się, że lepszy...

Instalacja HABridge (system emulujący oświetlenie Philips Hue) jest banalnie prosta.

Najpierw musimy się upewnić, że odpowiednia wersja Java jest zainstalowana. Powinna być, ale w razie czego:

sudo apt-get update && sudo apt-get install oracle-java8-jdk

Jaka jest najnowsza wersja HABridge możemy dowiedzieć się tutaj:

https://github.com/bwssytems/ha-bridge/releases

Później kilka komend:

cd /home/pi/
mkdir habridge
cd habridge

wget https://github.com/bwssytems/ha-bridge/releases/download/<your version1>/ha-bridge-<your version2>.jar

Czyli w przypadku dla aktualnej wersji na 01.11.2017 wygląda to tak:

wget https://github.com/bwssytems/ha-bridge/releases/download/v4.5.6/ha-bridge-4.5.6.jar

Edit: lepiej będzie na przyszłość (w przypadku aktualizacji) zrobić jak poniżej.

mv ha-bridge-{VERSION}.jar ha-bridge.jar

Przed startem musimy stworzyć plik konfiguracyjny:

sudo nano starthabridge.sh

cd /home/pi/habridge
rm /home/pi/habridge/habridge-log.txt
nohup sudo java -jar /home/pi/habridge/ha-bridge.jar > /home/pi/habridge/habridge-log.txt 2>&1 &
chmod 777 /home/pi/habridge/habridge-log.txt

WAŻNE. Z tego co wyczytałem, HABridge powinien się uruchomić na porcie 8080, ale z jakiegoś powodu zrobił to na 80, a tam mam Domoticz. Musiałem podać port ręcznie, używając parametru:
-Dserver.port=8080

Czyli u mnie zawartość pliku wygląda tak:

cd /home/pi/habridge
rm /home/pi/habridge/habridge-log.txt
nohup sudo java -jar -Dserver.port=8080 /home/pi/habridge/ha-bridge.jar > /home/pi/habridge/habridge-log.txt 2>&1 &
chmod 777 /home/pi/habridge/habridge-log.txt

Ustawienie praw do uruchomienia:

sudo chmod u+x starthabridge.sh

Serwis uruchamiamy komendą

sudo ./starthabridge.sh

Sprawdzić czy działa możemy poleceniem

tail -f habridge-log.txt

Dobrze by było również, aby uruchamiał się przy starcie, to możemy zrobić edytując:

cd /etc/systemd/system

sudo nano habridge.service


I tam wstawić:
[Unit]
Description=HA Bridge
Wants=network.target
After=network.target

[Service]

Type=simple
WorkingDirectory=/home/pi/habridge
ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/habridge/data/habridge.config /home/pi/habridge/ha-bridge.jar

[Install]

WantedBy=multi-user.target

Później po kolei:
sudo systemctl daemon-reload

sudo systemctl start habridge.service


sudo systemctl enable habridge.service

Po wystartowaniu musimy przejść do przeglądarki i teraz zaczyna się prawdziwa zabawa!

Wita nas pusta strona HABridge, którą będziemy teraz wypełniać.

Przechodzimy na Bridge Control


Przechodzimy na dół do sekcji Domoticz Names and IP Addresses:


Tam dodajemy swoje dane serwera Domoticz:


I, BARDZO WAŻNE, wracamy na górę i zapisujemy.


Jeżeli wszystko dobrze zrobiliście (wierzę w Was, także na pewno tak ;) ), na zakładce Domoticz Devices znajdą się Wasze urządzenia. To już ogromny sukces!


Teraz, po wejściu za pomocą przycisku Build na konkretny element (lub, jeżeli macie urządzenia nazwane po angielsku - można je zaznaczyć i wybrać Bulk Add), na początek wybieramy jego nazwę w polu Name, którą będziemy używać z Alexą.

Czyli, coś przyjaznego do wymówienia :D

Najpierw zabrałem się do opisywania tego dość bogato, kończąc jednak na prostych, szybkich frazach. Inaczej mówi się 'Alexa, turn living room lights on', a inaczej 'Alexa, living on'. Ale akurat tutaj Alexa jest nam bardzo pomocna i w większości wypadków rozpozna różne frazy. W sumie 'Alexa, living room on, 'Alexa, turn living room on', 'Alexa turn living room lights on' - da ten sam efekt.

W tym przykładzie integruję Yeelight, którą mam dodaną w Domoticz z HABridge.



HABridge rozpozna typ i zaproponuje komendę JSON do włączenia i wyłączenia urządzeń.

Miałem przez godzinę zgryz z komendą 'dim', czyli rozjaśnianiem i ściemnianiem. Może coś źle zrobiłem przy definicji w Domoticz, może jakiś inny powód, ale w HABridge musiałem podać w Dim Items, komendę w Target Item ręcznie. Jak poniżej na zrzucie ekranu. Dzięki parametrowi ${intensity.percent} możemy zadać Alexie żądany poziom jasności.


Chwilowo tyle. Przechodzimy do serwisu Alexa albo wydajemy jej polecenie 'Alexa, discover devices'. Dla jasności przestawiam również proces rozpoznawania na stronie, który ogranicza się do wybrania Discover.



TADAM! Już można wołać 'Alexa, left light on', 'Alexa, left light off,' 'Alexa, dim left light to 20'. W tym ostatnim przykładzie odnosimy się do procentów, czyli efekt ten sam jak przy '20 percent'.


Warto również od razu zrobić backup bazy danych HABridge. Jest dostępny na dole strony, przy pracy z ekranem Home.


Ja dodałem sobie również komendę do skryptu, który co noc robi ma na pendrive backup bazy, skryptów i folderu www Domoticz.

Identycznie jak żarówki zintegrowałem sobie zdalne gniazdka sieciowe. Nieważne czy 433MHz, Xiaomi, czy inne - po prostu działa po wypowiedzeniu komendy.

35 komentarzy:

  1. Witam
    Pytanko:
    To znaczy że HaBridge trzeba zainstalować na innym Raspberry niż domoticz. Tak to zrozumiałem.
    Jeśli źle zrozumiałem to mnie popraw.
    Pozdrawiam
    Darek

    OdpowiedzUsuń
  2. Dzięki za odp.
    Na razie jestem na etapie wyboru :
    Amazon Echo 2 generation
    Amazon Echo Dot 2 generation.
    Na ebay-u widzę sprzęt z opisem: "Deutsche version"
    Czy naprawdę jest jakaś niemiecka wersja ?

    OdpowiedzUsuń
    Odpowiedzi
    1. Nie, wersji żadnych jako takich nie ma. Jedyne różnice to wtyczki - UK albo EU. Nie traktuj tego wyłącznie jako sprzętu - Alexa do chmura i zaawansowana SI, która ciągle się uczy. 'Wersje' to wyłącznie kwestia ustawienia języka w którym będzie się z Tobą komunikować.

      Tak przy okazji... Mam jedną do sprzedania - kupiłem dwie, ale okazuje się, że jedna w zupełności nam w domu wystarczy. Jeżeli trzeba - jest nawet aktualnie na 'popularnym serwisie aukcyjnym'. W razie potrzeb - podam swój adres e-mail na priv.

      Usuń
  3. Dzięki za uświadomienie.
    Jestem w trakcie instalacji Habridge na testowym raspberry

    OdpowiedzUsuń
  4. Witam
    Czy koledze udało się rozgryźć komendę "dim"?
    Mam wszystkie lampy w domu na QuinLED-ie i możliwość sterowaniem rozjaśnieniem z Alexy byłaby świetna. :D

    OdpowiedzUsuń
    Odpowiedzi
    1. Tak, mnie na Yeelight działa bez problemu. Wystarczyła komenda w HABridge tak jak wyżej i gdy tylko powiemy ‚Alexa, dim living room to 10’ światła przygasają ‚do 10%’.

      Usuń

  5. Czy każde urządzenie bedzie pracować z domoticz czy tylko konkretne a
    znalazłem to: https://www.x-kom.pl/p/392772-glosnik-przenosny-amazon-echo-dot-2-gen-czarny.html#specification
    chce rozpocząć zabawe wg Twoich opisów:-)

    OdpowiedzUsuń
    Odpowiedzi
    1. Cześć. W sensie które Echo? Dowolne, może być Echo dot 2, może być też wersja 'duża'. Ja mam na razie Dot 2 (http://cezarowy.blogspot.com/2017/11/amazon-echo-dot-konfiguracja.html), ale przy pierwszej możliwej okazji kupuję wersję 'standardową'.

      Usuń
  6. Witam.
    HA działa mi bez zarzutów. Niestety Alexa nie wyszukuje urządzeń. Miał ktoś podobny problem?
    Pozdrawiam,

    OdpowiedzUsuń
    Odpowiedzi
    1. Dzień dobry. Jeżeli Alexa jest w tej samej sieci, nie masz zamieszania na routerze - nie powinno być problemów. Może opisz bardziej konfigurację, postaram się pomóc.

      Usuń
  7. Są w tej samej sieci. HA jak wejdzie przez przeglądarkę steruje urządzeniami. Mam go na porcie 80. Alexa go nie widzi. Porty zmieniałem ale to noc. IE daje.

    OdpowiedzUsuń
  8. Teraz mam na porcie 8080 i zaznaczyłem w opcjach use link Button. Nadal nic nie działa mimo klikania Link.

    OdpowiedzUsuń
  9. Zrobione. Mam zainstalowane hamachi i HA adres upnp pobrał z tego adresu. Po zmianie na adres maliny wszytko zadziałało. Bardzo dziękuję.

    OdpowiedzUsuń
  10. Czy zamiast Alexy można ten sposób użyć dla google home?

    OdpowiedzUsuń
  11. Z tego co wyczytałem to nie działa już to rozwiązanie bo philips zablokował swojego clouda

    OdpowiedzUsuń
    Odpowiedzi
    1. Fakt, z Google Home nie działa od pewnego czasu. Z serwisem Alexa nie mam żadnego problemu.

      Usuń
  12. Super poradnik. Mam zator techniczny w jednym momencie. Nie jestem w stanie rozjaśnić lub sciemnić yeelight oraz zmieniać kolorów. Z tym rozjaśnianiem to rozumiem że da się. Nie mam pojęcia co wpisać w target item i proszę tutaj o pomoc. Czy da się coś z tymi kolorami ogarnąć?

    OdpowiedzUsuń
    Odpowiedzi
    1. Cześć, dziękuję za miłe słowa. Kolorów zmieniać nie umiem, to potrafi Controlicz :( Co do DIM, to jest pokazane na jednym ze zrzutów ekranu, ale dokładnie komenda, którą musisz podpiąć pod Dim Items wygląda tak: http://192.168.1.200:80/json.htm?type=command&param=switchlight&idx=166&switchcmd=Set%20Level&level=${intensity.percent}. Oczywiście IP oraz IDX zmieniasz na swoje własne. Alexa przekazuje później parametr intensity.percent który mówisz do HABridge. Czyli na przykład 'Alexa, dim living room to 20'

      Usuń
    2. Udało się. Musiałem usunąć urządzenie i przy dodawaniu zaznaczyć tam w tekście procenty (akurat nie jestem przy komputerze żeby dokładnie podać nazwę). Dodałem jeszcze raz i już było wypełnione chyba nawet z tym dim i działało. Ogólnie poczytałem trochę różnych poradników i Twoje są bardzo czytelne i fajne. DOpiero zaczynam przygodę, pewnie jak wiele osób które Ciebie czyta i naprawdę szacuneczek. Teraz walczę z oczyszczaczem powietrza i też mam problem ale to napiszę jak stwierdzę, że nie umiem tego rozwiązać. Chciałem też sterować telewizorem (samsung) ale te poradniki anglojęzyczne dla zaawansowanych userów to już prawdziwa magia. Na razie dziekuje ;)

      Usuń
    3. Dziękuję za miłe słowa, dobrze wiedzieć, że przydaje się to, co człowiek spisuje. Samsungiem chcesz sterować przez sieć czy IrDA?

      Usuń
    4. Myślałem o sieci :-)

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

    OdpowiedzUsuń
  14. A czy ktoś może wie jak zmusić Alexe (Dot 3gen) do wyszukania HA-Bridge? HAB steruje Domoticzem z poziomu przegladarki ale nie jest znajdowany przez DOT3, niestety :(

    OdpowiedzUsuń
  15. Witam. Mam ten sam problem co Anonimowy, wszystko pięknie działa,
    HA steruje wszystkim a aleksa jak wyszuka to tylko "gada" że jest urządzenie Philips Hue i pokazuje "Amazon smart device".
    Może to kwestia że HA mam na porcie 8090, bo domoticz stoi na 8080, ale nie wydaje mi się żeby to miało znaczenie. Jedna sieć jeden router. Jakieś sugestie?.
    Pozdrawiam.

    OdpowiedzUsuń
  16. EDIT:
    Może to coś pomoże. Brak pliku "data/group.db" w Twoim Cezarowym settingu go nie widzę ale w obecnej wersji 5.2.2 jest, a pliku nima :(. Poniżej zrzut z rpi.

    pi@raspberrypi:~/habridge $ sudo ./starthabridge.sh
    pi@raspberrypi:~/habridge $ tail -f habridge-log.txt
    2019-05-08 21:08:16,193 [main] INFO com.bwssystems.HABridge.plugins.openhab.OpenHABHome - OpenHAB Home created. No OpenHABs configured.
    2019-05-08 21:08:16,194 [main] INFO com.bwssystems.HABridge.plugins.fhem.FHEMHome - FHEM Home created. No FHEMs configured.
    2019-05-08 21:08:16,194 [main] INFO com.bwssystems.HABridge.plugins.broadlink.BroadlinkHome - Broadlink Home created. No Broadlinks configured.
    2019-05-08 21:08:16,208 [main] WARN com.bwssystems.HABridge.dao.GroupRepository - Error reading the file: data/group.db - Does not exist or is not readable. continuing...
    2019-05-08 21:08:16,209 [main] INFO com.bwssystems.HABridge.devicemanagmeent.DeviceResource - HABridge device management service started....
    2019-05-08 21:08:16,220 [main] INFO com.bwssystems.HABridge.hue.HueMulator - Hue emulator service started....
    2019-05-08 21:08:16,228 [main] INFO com.bwssystems.HABridge.upnp.UpnpSettingsResource - Description xml service started....
    2019-05-08 21:08:16,232 [main] INFO com.bwssystems.HABridge.upnp.UpnpListener - UPNP Discovery Listener starting....
    2019-05-08 21:08:16,234 [main] INFO com.bwssystems.HABridge.upnp.UpnpListener - UPNP Discovery Listener running and ready....
    2019-05-08 21:08:22,897 [qtp6475523-35] INFO spark.http.matching.MatcherFilter - The requested route [/api//lights/6/state] has not been mapped in Spark for Accept: [application/json, text/plain, */*]

    OdpowiedzUsuń
  17. Widzę zero zainteresowania, ale moja determinacja zwyciężyła. Otóż
    Dot 3gen komunikuje się tylko i wyłącznie na porcie 80. Żadna zmiana w konfigu HA go nie rusza, HABridge musi być na porcie 80. Niestety musiałem serwer www wrzucić na inny port ale Alexa w końcu zagadała :).

    OdpowiedzUsuń
  18. Hey,
    Mam mały problem z Alexa (używam Echo Dot 2). Wykonałem integrację z Domoticzem przez HA bridge wg Twojego poradnika. Wszystko pięknie działało przez rok. I ostatnio Alexa jakby przestała rozumieć. Spróbowałem ponownej instalacji HA brigde - Alexa nie widzi mojego sprzętu. Wszystkie przyciski w HA bridge działają. Alexę przywracałem do ustawień fabrycznych - nadal nic. Alexa nie widzi żadnego sprzętu, który mam skonfigurowany w HA bridge. Nic nie zmieniałem (Rpi jest na LAN, natomiast Alexa na WiFi). Nie bardzo mam pojęcie, co się mogło zmienić. Ewentualnie co zrobić, aby przywrócić tą funkcjonalność... Tak sobie myślę, że może jakiś downgrade dla HA bridge... Masz jakiś pomysł?

    OdpowiedzUsuń
    Odpowiedzi
    1. Uhhh, odpowiedź bardzo późna... Amazon zmienił API w Alexa i teraz musi 'gadać' na porcie 80, nie ma innego wyjścia, tak jak Ryszard pisze.

      Usuń
  19. W moim wypadku sytuacja wyglądała bardzo podobnie. Twój wpis jest bardzo pomocny.

    OdpowiedzUsuń
  20. Ten wpis jest bardzo interesujący

    OdpowiedzUsuń