Jak podłączyć dowolne inteligentne urządzenie do HomeKit (z Raspberry Pi)

Wiele inteligentnych urządzeń pomija obsługę Apple HomeKit i integruje się tylko z Alexa, Google i innymi platformami. Jednak dzięki temu hackowi Raspberry Pi możesz dodać obsługę HomeKit do dowolnego inteligentnego urządzenia z oprogramowaniem Open Source Homebridge.

HomeKit dla każdego inteligentnego urządzenia

Jeśli jesteś all-in w HomeKit, jednym dużym problemem jest to, jak niewiele inteligentnych urządzeń go obsługuje. Na przykład jedyną rzeczą, która powstrzymuje niektóre niedrogie inteligentne żarówki, jest brak obsługi HomeKit. Wybór Amazon dla „inteligentnej żarówki” to czteropak firmy TECKIN, która w chwili pisania tego artykułu kosztuje około 40 dolarów – mniej niż pojedyncza żarówka LIFX.

Inteligentne światła Tuya

Jasne, nie są tak wysokiej jakości jak LIFX; kolory nie są tak żywe i emitują słyszalny brzęczenie w łazience, ale za 10 dolarów za sztukę to całkiem bezkonkurencyjna wartość.

Głównym problemem jest jednak to, że nie obsługują HomeKit. Nie są całkowicie głupi – współpracują z Google Home, Alexą, IFTTT i aplikacją producenta. Są w porządku dla kogoś, kto ma tylko inteligentne żarówki TECKIN.

Ponieważ jednak nie możesz uzyskać do nich dostępu z HomeKit, nie możesz kontrolować ich z aplikacji Home, widżetu w Control Center ani Siri. Nie możesz też włączać ich do scen z żarówkami innych marek ani używać ich w Automatyzacjach. Jeśli już zainwestowałeś w HomeKit, najprawdopodobniej jest to przełom.

Poznaj Homebridge

Na szczęście istnieje hack, który sprawia, że ​​te konkretne żarówki są znacznie bardziej przydatne. HomeKit API umożliwia korzystanie z urządzeń zwanych mostami, takich jak ten od Philips Hue, aby podłączyć urządzenia podrzędne, które działają na innych protokołach. Po prostu dodajesz most jako urządzenie w HomeKit i rejestruje on każde światło podłączone do niego w HomeKit. Za każdym razem, gdy zażądasz aktualizacji światła, telefon rozmawia z mostkiem, a most rozmawia ze światłem.

Tak więc most po prostu przekazuje informacje z jednego interfejsu API do drugiego. Ponieważ możesz sterować żarówkami TECKIN przez Internet, jest całkowicie możliwe podłączenie ich do HomeKit za pomocą samego oprogramowania – nie jest wymagany żaden zastrzeżony sprzęt.

Jeśli masz Raspberry Pi w pobliżu (5 USD Pi Zero jest w porządku), możesz ustawić go jako most z frameworkiem o nazwie Homebridge. Ta lekka aplikacja NodeJS emuluje HomeKit API i przekazuje żądania do inteligentnych urządzeń innych niż HomeKit.

Zasadniczo uruchamiasz go na Pi i dodaje każde „głupie” urządzenie do aplikacji Home. Kiedy próbujesz sterować żarówką za pomocą aplikacji Home lub Siri, Homebridge rozmawia z urządzeniami za Ciebie. Po skonfigurowaniu jest tak, jakby urządzenie miało obsługę HomeKit na pierwszym miejscu.

Wymaga to ciągłego działania urządzenia Homebridge, więc nie jest to coś, co można zainstalować na swoim laptopie. Raspberry Pi jest idealne, ale jeśli masz stare urządzenie, które możesz zmienić jako serwer lub komputer stacjonarny, który zawsze działa, możesz go tam zainstalować.

Homebridge to framework i możesz go rozszerzyć za pomocą wtyczek. Ma dość duże wsparcie społeczności, więc istnieje duża szansa, że ​​każde urządzenie inteligentne prawdopodobnie ma wtyczkę Homebridge, aby dodać obsługę. Jeśli Twoje urządzenie nie ma wtyczki, ale urządzenie inteligentne ma interfejs API, a jesteś obeznany z technologią, możesz napisać go samodzielnie.

Jednak dla większości ludzi konfiguracja polega po prostu na zainstalowaniu Homebridge i wtyczki marki dla urządzenia, wraz z odrobiną konfiguracji. Jeśli możesz użyć wiersza poleceń i masz trochę czasu, jest to dość łatwe.

Instalowanie i konfigurowanie Homebridge

Homebridge to aplikacja NodeJS, więc aby z niej korzystać, musisz zainstalować node i npm. Jeśli na twoim komputerze działa Linux, prawdopodobnie możesz go pobrać od swojego menedżera pakietów.

W systemie Ubuntu musisz wpisać następujące polecenie, aby ręcznie skonfigurować repozytorium Node, a następnie zainstalować nodejs:

curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
sudo apt-get install -y nodejs

W przeciwnym razie możesz się skonsultować Strona pobierania węzła aby uzyskać informacje o tym, jak zainstalować go w konkretnym systemie operacyjnym.

Jeśli korzystasz z Linuksa, musisz również zainstalować pewne zależności, jak pokazano poniżej:

sudo apt-get install libavahi-compat-libdnssd-dev

Następnie możesz zainstalować Homebridge globalnie przez npm, jak pokazano poniżej:

sudo npm install -g --unsafe-perm homebridge

Chcesz także zainstalować potrzebne wtyczki marki, ponieważ Homebridge to tylko framework. Na przykład w przypadku żarówek TECKIN wtyczka jest homebridge-tuya-web, który jest również instalowany na całym świecie.

Wpisz:

npm i homebridge-tuya-web -g

Po zainstalowaniu wszystkiego możesz faktycznie korzystać z rzeczy! Wpisz następujące polecenie, aby raz uruchomić Homebridge i zainicjować wszystko:

homebridge

Będzie narzekał na brak konfiguracji, którą trzeba stworzyć. Domyślnym katalogiem jest ~ / .homebridge /, ale możesz użyć parametru -U, jeśli chcesz go przenieść.

Wpisz następujące polecenie, aby utworzyć nowy plik konfiguracyjny JSON w tym folderze:

nano ~/.homebridge/config.json

Niezależnie od używanych wtyczek potrzebujesz następującej podstawowej konfiguracji:

{
  "bridge": {
    "name": "Homebridge",
    "username": "CC:22:3D:E3:CE:30",
    "port": 51826,
    "pin": "031-45-154"
  },

  "description": "Custom HomeBridge Server",

  "ports": {
    "start": 52100,
    "end": 52150,
  },

  "platforms": [

  ]
}

Spowoduje to skonfigurowanie Homebridge z domyślnym portem, nazwą, kodem PIN i zakresem portów dostępnych do przydzielenia innym urządzeniom.

Wewnątrz pustej tablicy platform umieszczasz konfigurację dla każdej wtyczki. Powinieneś być w stanie znaleźć instrukcje i przykłady tego na stronie GitHub każdej wtyczki.

W poniższym przykładzie wtyczka homebridge-tuya-web dla żarówek TECKIN chce znać moją nazwę użytkownika i hasło, aby połączyć się z interfejsem API aplikacji żarówki, a także kilka innych rzeczy:

  "platforms": [
     {
       "platform": "TuyaWebPlatform",
       "name": "TuyaWebPlatform",
       "options":
         {
           "username": "username",
           "password": "password",
           "countryCode": "1",
           "platform": "smart_life",
           "pollingInterval": 10
         }
     }
   ]

Po skonfigurowaniu Homebridge powinien być gotowy do pracy. Uruchom go ponownie, a twój terminal powinien wyświetlać gigantyczny kod QR, który może zmusić cię do oddalenia. Zeskanuj to za pomocą aplikacji Home, aby dodać ją i wszystkie podłączone urządzenia do HomeKit.

Kod QR w terminalu

Homebridge ładuje wtyczki i powinien rejestrować komunikat na ekranie dla każdego znalezionego urządzenia. Powinieneś zobaczyć je wszystkie w HomeKit po ich dodaniu i powinny być w pełni funkcjonalne.

Zauważyłem niewielkie opóźnienie w porównaniu do moich żarówek LIFX. Dzieje się tak prawdopodobnie dlatego, że żarówki są kontrolowane przez interfejs API, a nie bezpośrednio. Początkowo żarówki również nie wyświetlały poprawnie bieli i ciepłej bieli, ale po drobnych poprawkach udało mi się ustawić odpowiednie sceny.

Zawsze możesz skonfigurować urządzenia we własnych aplikacjach, poczekać na aktualizację aplikacji Home, a następnie ustawić scenę w HomeKit za pomocą wstępnie skonfigurowanej konfiguracji.

Jeśli chcesz ponownie dodać Homebridge, będziesz chciał usunąć folder persist / w katalogu konfiguracyjnym, a następnie usunąć most z HomeKit z ustawień dowolnej podłączonej żarówki na karcie „Most”.

Dodawanie Homebridge jako usługi

Jeśli chcesz, aby Homebridge działał przez cały czas, prawdopodobnie będziesz chciał skonfigurować go do ponownego uruchomienia, jeśli ulegnie awarii lub jeśli Raspberry Pi uruchomi się ponownie. Możesz to zrobić za pośrednictwem usługi Unix. Skonfiguruj to po upewnieniu się, że Homebridge działa zgodnie z przeznaczeniem.

Najpierw dodaj nowego użytkownika usługi o nazwie homebridge:

sudo useradd -M --system homebridge

Ustaw hasło:

sudo passwd homebridge

Następnie będziesz musiał przenieść konfigurację homebridgeconfiguracji poza swój osobisty katalog domowy. / var / lib / homebridge / powinno wystarczyć:

sudo mv ~/.homebridge /var/lib/homebridge/

Upewnij się, że osoba korzystająca z mostka domowego ma prawo własności do tego katalogu i wszystkich podfolderów:

sudo chown -R homebridge /var/lib/homebridge/

Gdy to zrobisz, możesz utworzyć usługę. Aby to zrobić, utwórz nowy plik o nazwie homebridge.service w / etc / systemd / system /:

sudo nano /etc/systemd/system/homebridge.service

A następnie wklej następującą konfigurację:

[Unit]
Description=Homebridge service
After=syslog.target network-online.target

[Service]
Type=simple
User=homebridge
ExecStart=/usr/bin/homebridge -U /var/lib/homebridge
Restart=on-failure
RestartSec=10
KillMode=process


[Install]
WantedBy=multi-user.target

Załaduj ponownie demona usług, aby zaktualizować go o wprowadzone zmiany:

sudo systemctl daemon-reload

Teraz powinieneś być w stanie włączyć swoją usługę (ustawienie jej do uruchamiania podczas rozruchu):

sudo systemctl enable homebridge

I zacznij:

sudo systemctl start homebridge

Jeśli chcesz debugować błędy, które wynikają z konfiguracji usługi, możesz wyświetlić dzienniki usługi, wpisując:

journalctl -fn 50 -u homebridge