Projekt Raspberry Pi – 9 – Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem
Ostatni wpis w temacie Projekt Raspberry Pi, na którym stoi Homebridge do sterowania paroma rzeczami w domu, był półtora roku temu, a całość działała w tym czasie bez zarzutu. Przeniosłem jednak cały swój Home i zrobiłem kilka rzeczy źle, więc pojawiły się problemy. Oto, jak całość rozwiązałem.
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.
Przenosiny Home
Aplikacja Home na iOS wspiera tworzenie większej ilości „domów”. Przenosząc swój config z jednego do drugiego, tak właśnie zrobiłem – stworzyłem nowy i sukcesywnie usuwałem rzeczy z pierwszego, a dodawałem do drugiego. Niestety, to spowodowało sporo problemów.
Korzystam z geofencing w Home, dzięki czemu, jak wracam do domu, to światła mam już zapalone, a muzyka sączy się z głośników. Niestety, po dodaniu nowego domu, Home nadal myślał, że jego lokazliacja znajduje się w miejscu starego. To oczywiście spowodowało, że automatyzacje wariowały. Za żadne skarby nie wiedziałem, jak to zmienić, więc m.in. zmieniłem „Home” w Mapach Apple na nowy adres, zmieniłem adresy w kartach w Wallet i jeszcze kilka innych rzeczy, których teraz nie pamiętam. Nic z tego nie chciało działać, więc zostawiłem temat na wieczór (to było kilka dni temu), kiedy to się okazało, że automagicznie w końcu rozpoznał nowy adres. Skąd go wziął? Nie wiem. W ustawieniach miałem wpisane, że ma korzystać z lokalizacji iPhone’a, ale ignorował to wcześniej.
Usuwajać pierwszy dom w Home, zapomniałem wywalić z niego Apple TV 4, które teraz wisi w Bridge’ach jako „niepodłączone / disconnected” i nie mam jak go usunąć. Zapewne skończy się na konieczności kolejnego podłączenia, usunięcia go i dopiero odpięcia od prądu.
Przenosiny Raspberry Pi i Homebridge
RPi i Homebridge wcześniej wykorzystywałem do integracji Logitech Harmony Hub, oczyszczacza Xiaomi oraz kamery RPi. Po przenosinach nie mam już potrzeby tego pierwszego, więc usunąłem go z pliku config.json
, a stosowny plugin odinstalowałem.
Mój config.json, przed zmianami, wyglądał następująco:
{ "bridge": { "name": "Homebridge", "username": "xx:xx:xx:xx:xx:xx", "port": 51826, "pin": "031-45-154" }, "description": "HomePi Homebridge.", "platforms": [{ "platform": "MiAirPurifierPlatform", "deviceCfgs": [{ "type": "MiAirPurifier2", "ip": "192.168.1.xx", "token": "token_dla_xiaomi", "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": "HarmonyHub", "name": "homebridge-harmonyhub-plugin" } ] }
Po usunięciu Harmony, wygląda tak:
{ "bridge": { "name": "Homebridge", "username": "xx:xx:xx:xx:xx:xx", "port": 51826, "pin": "031-45-154" }, "description": "HomePi Homebridge.", "platforms": [{ "platform": "MiAirPurifierPlatform", "deviceCfgs": [{ "type": "MiAirPurifier2", "ip": "192.168.1.xx", "token": "token_dla_xiaomi", "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" }] } ] }
Zwróćcie szczególną uwagę na brak przecinka po przedostatnim }
.
Usunięcie samej konfiguracji z config.json
to jednak nie wszystko – musiałem też odinstalować plugin za pomocą komendy sudo npm uninstall homebridge-harmonyhub-plugin -g
, a potem zrestartować Homebridge za pomocą sudo systemctl restart homebridge
. Upełniłem się jeszcze, że wszystko działa prawidłowo za pomocą journalctl -f -u homebridge
.
Nie można ponownie dodać Homebridge!
Następnym krokiem była próba ponownego dodania Homebridge’a do aplikacji Home i ta niestety zakończyła się niepowodzeniem. W tym celu, musiałem zrobić kilka rzeczy, bo bez tego nie chciał ruszyć:
- Zalogować się ponownie na RPi po ssh.
rm /var/homebridge/persist*
.rm /var/homebridge/accessories/*
.
Te dwa foldery trzymają cache i należy go wyczyścić, aby całość się ponownie poprawnie „spięła”. Po tych czynnościach już mogłem bez problemu dodać Homebridge do Home app.
W logach już widziałem, że niedługo będę musiał zająć się uaktualnieniem node’a i paru innych rzeczy, ale prawdopodobnie poczekam z tym, dopóki całość działa – pamiętam wcześniejsze problemy z odpowiednią wersją node’a i nie chce mi się teraz w to bawić.
Komentarze: 3
Wojtek myślę że powinieneś zmienić instrukcję i to
rm *
zamienić tak ja podałeś w pierwszym przykładzie narm /var/homebridge/persist/*
orazrm /var/homebridge/accessories/*
, ponieważ homebridge instaluje się w różnych ścieżkach i jeżeli ktoś nieświadomy wykona Twoją instrukcję, a katalog nie będzie istniał to usunie sobie pliki z katalogu w którym się znajduje (najczęściej ~/).OK słusznie, ktoś kto nie wiem co robi, może sobie zrobić kuku.
Już.