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ż.