Mastodon
Zdjęcie okładkowe wpisu Projekt Raspberry Pi – 9 – Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem

Projekt Raspberry Pi – 9 – Przenosimy Homebridge do nowego Home i rozwiązujemy problemy z HomeKitem

3
Dodane: 3 lata temu

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:


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.

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ć:

  1. Zalogować się ponownie na RPi po ssh.
  2. rm /var/homebridge/persist*.
  3. 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ć.

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: 3

Wojtek myślę że powinieneś zmienić instrukcję i to rm * zamienić tak ja podałeś w pierwszym przykładzie na rm /var/homebridge/persist/* oraz rm /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 ~/).