Mastodon
Zdjęcie okładkowe wpisu Projekt Raspberry Pi – 7 – Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit

Projekt Raspberry Pi – 7 – Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit

12
Dodane: 5 lat temu

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:


Spis treści

  1. Instalacja i konfiguracja Raspbian (Wi-Fi, SSH i VNC).
  2. Instalacja Homebridge i konfiguracja Xiaomi Air Purifier 2.
  3. Uruchomienie kamery Raspberry Pi NOIR pod HomeKitem.
  4. Dodajemy pozycję w HomeKit, wyświetlającą jakość powietrza na dworze.
  5. Dodajemy prognozę pogody do HomeKit dla naszej ulicy.
  6. Dodajemy sterowanie TV, Apple TV i amplitunerem do HomeKit przez Homebridge i Logitech Harmony.
  7. Naprawiamy sterowanie TV, Apple TV i amplitunerem przez Homebridge i Logitech Harmony w HomeKit.
  8. Wywalamy Airly, bo zabili swoje publiczne API.
  9. Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem.

Wymagania

  1. Po pierwsze, Wasz Logitech Harmony musi mieć odpowiednią wersję firmware’u, czyli najnowszą na stan obecny, tj. 4.15.250.
  2. 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,
  3. 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ę.

  1. Logujemy się do Raspberry Pi z Terminala, czyli za pomocą ssh pi@192.168.x.x, pamiętając, że pi to nazwa użytkownika (jeśli macie inną, to podmieńcie ją w komendzie) i podając prawidłowy adres IP.
  2. Po zalogowaniu się, wpiszcie sudo apt-get update.
  3. Po zakończeniu powyższej operacji wpiszcie sudo apt-get upgrade.
  4. Jak powyższa komenda skończy się wykonywać, to wpisujecie sudo apt-get dist-upgrade.
  5. Teraz kolej na wywalenie śmieci za pomocą sudo apt-get clean.
  6. Następną komendą jest sudo raspi-config, która uruchomi pseudo-graficzne menu. Wybierzcie pozycję nr 8, czyli 8 Update.
  7. 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.

  1. 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.
  2. 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ść.
  3. 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ę pozycja homebridge-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
  4. 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.
  5. 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 nazwie cachedAccessories. Jeśli potwierdzacie jego istnienie, to wpiszcie sudo rm cachedAccessories.
  6. Następnie zatrzymujemy Homebridge’a za pomocą komendy sudo systemctl stop homebridge.
  7. 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.
  8. 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"
      }
      ]
    }
  9. 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.
  10. 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"
            }
  11. Teraz wciskamy ^X (Ctrl + X), aby zamknąć plik i jak program się zapyta, czy chcemy zapisać zmiany, to wciskamy y i zatwierdzamy Enterem.

Teraz będziemy musieli zweryfikować, czy całość działa prawidłowo, więc…

  1. Wpisujemy komendę sudo systemctl daemon-reload i zatwierdziamy Enterem.
  2. Wpisujemy sudo systemctl start homebridge i zatwierdzamy jak zwykle.
  3. 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).
  4. 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.

Wojtek Pietrusiewicz

Wydawca, fotograf, podróżnik, podcaster – niekoniecznie w tej kolejności. Lubię espresso, mechaniczne zegarki, mechaniczne klawiatury i zwinne samochody.

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .

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.

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.