Hur man ansluter vilken smart enhet som helst till HomeKit (med en Raspberry Pi)

Många smarta enheter hoppar över Apple HomeKit-stöd och integrerar endast med Alexa, Google och andra plattformar. Med detta Raspberry Pi-hack kan du dock lägga till HomeKit-stöd till vilken smart enhet som helst med Homebridge-mjukvaran med öppen källkod.

HomeKit för alla smarta enheter

Om du är all-in på HomeKit är ett stort problem hur få smarta enheter som stöder det. Till exempel, det enda som håller tillbaka några billiga smarta glödlampor är deras brist på HomeKit-stöd. Amazons val för en ”smart glödlampa” är en fyrpack från TECKINsom, när detta skrivs, kostar runt $40—mindre än en enda LIFX-lampa.

Visst, de är inte lika premium som LIFX; färgerna är inte lika livfulla, och de avger ett hörbart surr i badrummet, men för $10 per pop är de ett ganska oslagbart värde.

Huvudproblemet är dock att de inte har HomeKit-stöd. De är inte helt dumma – de fungerar med Google Home, Alexa, IFTTT och tillverkarens app. De är bra för någon som bara har TECKIN smarta glödlampor.

Men eftersom du inte kan komma åt dem från HomeKit kan du inte styra dem från Home-appen, widgeten i Control Center eller Siri. Du kan inte heller inkludera dem i scener med glödlampor från andra märken eller använda dem i Automations. Om du redan har investerat i HomeKit är detta med största sannolikhet en dealbreaker.

Möt Homebridge

Lyckligtvis finns det ett hack som gör just dessa glödlampor mycket mer användbara. HomeKit API tillåter enheter som kallas broar, som den här från Philips Hue, för att ansluta underordnade enheter som fungerar på andra protokoll. Du lägger helt enkelt till bryggan som en enhet i HomeKit, och den registrerar varje lampa som är ansluten till den i HomeKit. När du gör en begäran om att uppdatera en lampa pratar din telefon med bron och bron talar med ljuset.

Så, en brygga vidarebefordrar bara information från ett API till ett annat. Eftersom du kan styra TECKIN-glödlamporna över internet är det fullt möjligt att ansluta dem till HomeKit med bara mjukvara – ingen egen maskinvara krävs.

Om du har en Raspberry Pi liggandes (5 $ Pi Zero är bra), kan du ställa in den som en brygga med ett ramverk som heter Homebridge. Denna lätta NodeJS-applikation emulerar HomeKit API och vidarebefordrar förfrågningar till dina smarta enheter som inte kommer från HomeKit.

I grund och botten kör du den på Pi, och den lägger till varje ”dum” enhet till Home-appen. När du försöker styra glödlampan via Home-appen eller Siri pratar Homebridge med enheterna åt dig. När du har ställt in den är det precis som att enheten hade HomeKit-stöd i första hand.

Detta kräver att enheten kör Homebridge hela tiden, så detta är inte något du skulle installera på din bärbara dator. En Raspberry Pi är idealisk, men om du har en gammal enhet som du kan använda som en server eller skrivbord som alltid är igång, kan du installera den där.

Homebridge är ett ramverk, och du kan utöka det med plug-ins. Den har en ganska stor gemenskapsstöd, så det finns en god chans att en given smart enhet förmodligen har en Homebridge-plugin för att lägga till stöd för den. Om din enhet inte har ett plugin-program, men din smarta enhet har ett API och du är tekniskt kunnig, kan du skriva en själv.

För de flesta är installationen dock bara att installera Homebridge och varumärkets plug-in för enheten, tillsammans med lite konfiguration. Om du kan använda kommandoraden och har lite tid är det ganska enkelt.

Installera och konfigurera Homebridge

Homebridge är en NodeJS-app, så du måste installera node och npm för att använda den. Om din maskin kör Linux kan du förmodligen få det från din pakethanterare.

På Ubuntu måste du skriva följande för att ställa in Node-repo manuellt och sedan installera nodejs:

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

Annars kan du rådfråga Nodens nedladdningssida för information om hur du installerar det för just ditt operativsystem.

Om du använder Linux måste du också installera vissa beroenden, som visas nedan:

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

Efteråt kan du installera Homebridge globalt genom npm, som visas nedan:

sudo npm install -g --unsafe-perm homebridge

Du vill också installera de varumärkesplugin-program du behöver, eftersom Homebridge bara är ett ramverk. För TECKIN-lamporna, till exempel, är plug-in homebridge-tuya-websom också installeras globalt.

Du skulle skriva följande:

npm i homebridge-tuya-web -g

När allt är installerat kan du faktiskt använda saken! Skriv följande för att köra Homebridge en gång och initiera allt:

homebridge

Det kommer att klaga på en brist på konfiguration, som du måste skapa. Standardkatalogen är ~/.homebridge/, men du kan använda parametern -U om du vill flytta den.

Skriv följande för att skapa en ny JSON-konfigurationsfil i den här mappen:

nano ~/.homebridge/config.json

Oavsett vilka plugin-program du använder behöver du följande grundläggande konfiguration:

{
  "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": [

  ]
}

Detta konfigurerar Homebridge med en standardport, namn, PIN-kod och portintervall som är tillgängliga för att allokera till andra enheter.

Inuti den tomma plattformsarrayen placerar du konfigurationen för varje plugin. Du bör kunna hitta instruktioner och exempel på detta på varje plugin-programs GitHub-sida.

I exemplet nedan vill plugin-programmet homebridge-tuya-web för TECKIN-lamporna veta mitt användarnamn och lösenord för att ansluta till API:et för lampans app, och några andra saker:

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

När allt är konfigurerat bör Homebridge vara redo att gå. Kör det igen, och din terminal bör visa en gigantisk QR-kod som kan tvinga dig att zooma ut. Skanna detta med Home-appen för att lägga till det och alla anslutna enheter till HomeKit.

Homebridge laddar dina plugin-program och bör logga ett meddelande till skärmen för varje enhet den hittar. Du bör se dem alla i HomeKit efter att de har lagts till, och de bör vara fullt fungerande.

Jag märkte en liten fördröjning jämfört med mina LIFX-lampor. Det beror förmodligen på att glödlamporna styrs över ett API snarare än direkt. Till en början visade glödlamporna inte heller några vita och varmvita färger korrekt, men efter lite justeringar kunde jag sätta upp ordentliga scener.

Du kan alltid konfigurera enheterna i sina egna appar, vänta på att Home-appen ska uppdateras och sedan ställa in scenen i HomeKit med den förgjorda konfigurationen.

Om du behöver lägga till Homebridge igen, vill du ta bort mappen persist/ i config-katalogen och sedan ta bort bryggan från HomeKit från inställningarna för en ansluten glödlampa under fliken ”Bridge”.

Lägger till Homebridge som en tjänst

Om du vill att Homebridge ska köra hela tiden, vill du förmodligen konfigurera den så att den startar om om den kraschar eller om din Raspberry Pi startar om. Du kan göra detta via en Unix-tjänst. Ställ in detta efter att du har verifierat att Homebridge fungerar som det är tänkt.

Lägg först till en ny tjänstanvändare, kallad homebridge:

sudo useradd -M --system homebridge

Ange ett lösenord:

sudo passwd homebridge

Därefter måste du flytta homebridge-konfigurationen utanför din personliga hemkatalog. /var/lib/homebridge/ borde vara bra:

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

Se till att personen som använder homebridge äger katalogen och alla undermappar:

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

När det är gjort kan du skapa tjänsten. För att göra det, skapa en ny fil som heter homebridge.service i /etc/systemd/system/:

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

Och klistra sedan in följande konfiguration:

[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

Ladda om tjänstdemonen för att uppdatera den med dina ändringar:

sudo systemctl daemon-reload

Nu bör du kunna aktivera din tjänst (ställa in den att köras vid uppstart):

sudo systemctl enable homebridge

Och börja det:

sudo systemctl start homebridge

Om du behöver felsöka fel som uppstår från tjänstens konfiguration kan du se loggarna för tjänsten genom att skriva:

journalctl -fn 50 -u homebridge