Projekt Raspberry Pi – 7 – Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit
Jakiś czas temu Logitech wyłączył w Harmony funkcję umożliwiającą integrację tego urządzenia z HomeKitem poprzez Homebridge’a. Musieliśmy czekać do lutego 2019, ale w końcu częściowo przywrócili tę funkcjonalność. Częściowo, ponieważ konfiguruje się ją teraz inaczej niż poprzednio, ale całość działa jak należy.
Ten projekt jest możliwy dzięki uprzejmości Botland, który dostarczył następujące elementy umożliwiające jego wykonanie:
- Zestaw Raspberry Pi Zero W Camera Noir Pack – 224,00 PLN
- Adapter OTG microUSB – USB – 9,90 PLN
- Adapter miniHDMI – HDMI – 5,90 PLN
Spis treści
- Instalacja i konfiguracja Raspbian (Wi-Fi, SSH i VNC).
- Instalacja Homebridge i konfiguracja Xiaomi Air Purifier 2.
- Uruchomienie kamery Raspberry Pi NOIR pod HomeKitem.
- Dodajemy pozycję w HomeKit, wyświetlającą jakość powietrza na dworze.
- Dodajemy prognozę pogody do HomeKit dla naszej ulicy.
- Dodajemy sterowanie TV, Apple TV i amplitunerem do HomeKit przez Homebridge i Logitech Harmony.
- Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit.
- Wywalamy Airly, bo zabili swoje publiczne API.
- Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem.
Wymagania
- Po pierwsze, Wasz Logitech Harmony musi mieć odpowiednią wersję firmware’u, czyli najnowszą na stan obecny, tj. 4.15.250.
- Musicie też wejść w aplikację Harmony → Menu → Harmony Setup → Add/Edit Devices & Activities → Remote & Hub i na dole włączyć funkcję XMPP. Bez tego całość nie będzie działała,
- Ostatecznie, zakładam, że konfiguracja Waszego RPi i Homebridge’a jest taka jak w 6. części tego poradnika.
Przepis
Dawno nie uaktualnialiśmy naszego RPi, więc to dobry moment, aby to zrobić, za pomocą poniższych komend. Pamiętajcie, że po każdej musicie poczekać, aż się skończy wszystko aktualizować. Jeśli nie robiliście update’ów od paru miesięcy (jak ja), to uaktualnienie może zająć nawet godzinę.
- Logujemy się do Raspberry Pi z Terminala, czyli za pomocą
ssh pi@192.168.x.x
, pamiętając, żepi
to nazwa użytkownika (jeśli macie inną, to podmieńcie ją w komendzie) i podając prawidłowy adres IP. - Po zalogowaniu się, wpiszcie
sudo apt-get update
. - Po zakończeniu powyższej operacji wpiszcie
sudo apt-get upgrade
. - Jak powyższa komenda skończy się wykonywać, to wpisujecie
sudo apt-get dist-upgrade
. - Teraz kolej na wywalenie śmieci za pomocą
sudo apt-get clean
. - Następną komendą jest
sudo raspi-config
, która uruchomi pseudo-graficzne menu. Wybierzcie pozycję nr 8, czyli8 Update
. - Na koniec restartujemy Malinkę za pomocą
sudo reboot
i 1-2 minutach znowu się na nią logujemy przez ssh, jak w 1. kroku.
Stary plugin homebridge-harmony
niestety nie został uaktualniony od roku, więc nie działa z nowym firmwarem. Trzeba go będzie odinstalować i na jego miejsce wstawić inny.
- Przypominam, że po restarcie znowu powinniśmy się zalogować do Malinki, jak pisałem w punkcie 7. powyżej za pomocą
ssh pi@192.168.x.x
. - Zanim zaczniemy grzebać w pluginach, warto jeszcze uaktualnić wszystkie paczki npm za pomocą
npm outdated
. Ta operacja może potrwać kilkanaście minut, więc uzbrojcie się w cierpliwość. - Następnie, po zakończeniu powyższej, wpiszcie komendę
npm list -g --depth 0
, która po minucie wyświetli listę zainstalowanych pluginów do Homebridge’a. Na tej liście powinna znajdować się pozycjahomebridge-harmonyhub
, bo z tego pluginu korzystaliśmy wcześniej. Wynik będzie wyglądał podobnie do tego:/usr/local/lib ├── homebridge@0.4.46 ├── homebridge-airly@1.1.6 ├── homebridge-camera-rpi@0.0.3 ├── homebridge-harmonyhub@0.3.0-alpha.2 ├── homebridge-mi-airpurifier@0.1.3 ├── miio@0.15.6 └── npm@5.10.0
- Musimy odinstalować homebridge-harmonyhub za pomocą komendy
npm -g uninstall homebridge-harmonyhub
. W razie niepowodzenia możecie spróbowaćsudo npm -g uninstall homebridge-harmonyhub
. - Teraz musimy oczyścić cache, bo to on u mnie powodował sporo problemów, więc wpisujemy
cd /var/homebridge/accessories/
i następnie komendęls -la
. Powinniście zobaczyć plik o nazwiecachedAccessories
. Jeśli potwierdzacie jego istnienie, to wpiszciesudo rm cachedAccessories
. - Następnie zatrzymujemy Homebridge’a za pomocą komendy
sudo systemctl stop homebridge
. - Teraz czas na zainstalowanie nowego pluginu do Homebridge’a, który prawidłowo obsługuje Logitech Harmony. Są obecnie dwa warte zainteresowania i szczęścia próbowałem z homebridge-harmony, ale nie udało mi się go uruchomić. Dla odmiany, homebridge-harmonyhub-plugin działa wzorowo. Aby go zainstalować, należy wpisać
npm -g install homebridge-harmonyhub-plugin
. - Teraz czas na edycję pliku konfiguracyjnego. Wasz plik z poprzedniego poradnika powinien wyglądać podobnie do poniższego:
{ "bridge": { "name": "Homebridge", "username": "XX:XX:XX:XX:XX:XX", "port": 51826, "pin": "031-45-154" }, "description": "HomePi Homebridge.", "accessories": [{ "accessory": "Air", "apikey": "KLUCZ", "latitude": "xx.xxxxxx", "longitude": "yy.yyyyyy", "name": "DZIELNICA" }, { "accessory": "Air", "apikey": "KLUCZ", "latitude": "xx.xxxxxx", "longitude": "yy.yyyyyy", "name": "MIASTO" } ], "platforms": [{ "platform": "MiAirPurifierPlatform", "deviceCfgs": [{ "type": "MiAirPurifier2", "ip": "192.168.xxx.xxx", "token": "xxx", "airPurifierDisable": false, "airPurifierName": "MiAirPurifier2", "silentModeSwitchDisable": false, "silentModeSwitchName": "MiAirPurifier2 Silent Mode Switch", "temperatureDisable": false, "temperatureName": "MiAirPurifier2 Temperature", "humidityDisable": false, "humidityName": "MiAirPurifier2 Humidity", "buzzerSwitchDisable": true, "buzzerSwitchName": "MiAirPurifier2 Buzzer Switch", "ledBulbDisable": true, "ledBulbName": "MiAirPurifier2 LED Switch", "airQualityDisable": false, "airQualityName": "MiAirPurifier2 AirQuality" }] }, { "platform": "WeatherStation", "name": "Pogoda DZIELNICA", "key": "xxx", "location": "pws:XXXXXXXXX", "interval": "4", "forecast": "3days" }, { "platform": "HarmonyHub", "name": "Harmony Hub" } ] }
- Interesuje nas pozycja ostatnia i edytujemy tylko ten fragment pliku. Aby edytować plik, skorzystamy z nano, za pomocą komendy
sudo nano /var/homebridge/config.json
. - Strzałkami nawigujemy na koniec pliku i pozycję
"name": "Harmony Hub"
zastępujemy"name": "homebridge-harmonyhub-plugin"
, czyli ten fragment pliku powinien wyglądać następująco:{ "platform": "HarmonyHub", "name": "homebridge-harmonyhub-plugin" }
- Teraz wciskamy
^X
(Ctrl + X), aby zamknąć plik i jak program się zapyta, czy chcemy zapisać zmiany, to wciskamyy
i zatwierdzamyEnterem
.
Teraz będziemy musieli zweryfikować, czy całość działa prawidłowo, więc…
- Wpisujemy komendę
sudo systemctl daemon-reload
i zatwierdziamyEnterem
. - Wpisujemy
sudo systemctl start homebridge
i zatwierdzamy jak zwykle. - Teraz możemy sprawdzić logi ładowania się Homebridge’a, aby upewnić się, że wszystko idzie tak, jak powinno, za pomocą komendy
journalctl -f -u homebridge
. Z trybu obserwowania logów możecie wyjść za pomocą komendy^C
(Ctrl + C). - Jeśli wszystko uruchomi się prawidłowo, to powinniście zobaczyć coś w stylu poniższym:
Mar 05 09:50:27 HomePi homebridge[220]: [2019-3-5 09:50:27] [homebridge-harmonyhub-plugin] {HarmonyHub} Found <1> hubs Mar 05 09:50:27 HomePi homebridge[220]: [2019-3-5 09:50:27] [homebridge-harmonyhub-plugin] {HarmonyHub} <2d13738c-dcd6-483d-a7b5-6b8035de9e50> <Harmony Hub> Mar 05 09:50:33 HomePi homebridge[220]: [2019-3-5 09:50:33] [homebridge-harmonyhub-plugin] {HarmonyHub} create new client for <Harmony Hub> Mar 05 09:50:33 HomePi homebridge[220]: [2019-3-5 09:50:33] [homebridge-harmonyhub-plugin] {HarmonyHub} Found <2> activities: <TV, Music>
Jeśli pokaże się Wam jakiś błąd (exit code), to prawdopodobnie macie źle sformatowany plik config.json – zapewne problem jest z jakimś zabłąkanym nawiasem lub przecinkiem. Validator JSON pomoże Wam znaleźć gdzie dokładnie leży problem (wklejacie do niego zawartość config.json). Możecie skorzystać z tego, lub dowolnego innego, który Wam odpowiada (szukajcie validate json
).
Natychmiast pojawiły mi się oba activities, które mam skonfigurowany w Logitech Harmony, czyli TV (Apple TV + TV + amplituner) oraz Music (Apple TV + amplituner). Nie przepadam za grzebaniem w działających konfiguracjach, bo potem kończę na wielogodzinnym szukaniu rozwiązania, ale jeśli się uda, to przynajmniej pozostaje smak zwycięstwa.
Komentarze: 12
Przed Tobą trochę roboty, bo TV można sterować już znacznie lepiej – w iOS 12.2 bet już jest natywna obsługa pilotów TV oraz TV przez homekit. Są już na to zaktualizowane homebridge i pluginy do TV.
Tak widziałem. Ten drugi plugin, który nie chciał mi działać prawidłowo, obsługuje to.
Szkoda, że nie opisujecie podobnej możliwości sterowania TV, amplitunerem i innymi sprzętami za pomocą tańszego rozwiązania od BroadLink. Działa super z Homebridge. Swój zestaw kina domowego (TV LG, amplituner Onkyo) uruchamiam za pomocą Siri poprzez Apple Watch. Urządzenie kosztuje ok 50zł, zamiast 700zł…
Harmony kupiłem za bodajże 150-180 zł, więc daleko do 700… A nie opisujemy BroadLink, bo go nie mamy.
PS. Przecież wszystko co się integruje z HomeKit, niezależnie od modelu, uruchomisz z Apple Watch, włączając w to moje rozwiązanie.
Sexy Time – wygląda intrygująco ;)
😉
Przed Tobą trochę roboty, bo TV można sterować już znacznie lepiej – w iOS 12.2 bet już jest natywna obsługa pilotów TV oraz TV przez homekit. Są już na to zaktualizowane homebridge i pluginy do TV.
Tak widziałem. Ten drugi plugin, który nie chciał mi działać prawidłowo, obsługuje to.
Szkoda, że nie opisujecie podobnej możliwości sterowania TV, amplitunerem i innymi sprzętami za pomocą tańszego rozwiązania od BroadLink. Działa super z Homebridge. Swój zestaw kina domowego (TV LG, amplituner Onkyo) uruchamiam za pomocą Siri poprzez Apple Watch. Urządzenie kosztuje ok 50zł, zamiast 700zł…
Harmony kupiłem za bodajże 150-180 zł, więc daleko do 700… A nie opisujemy BroadLink, bo go nie mamy.
PS. Przecież wszystko co się integruje z HomeKit, niezależnie od modelu, uruchomisz z Apple Watch, włączając w to moje rozwiązanie.
Sexy Time – wygląda intrygująco ;)
😉