Sådan tilsluttes enhver smart enhed til HomeKit (med en Raspberry Pi)

Mange smartenheder springer Apple HomeKit-support over og integrerer kun med Alexa, Google og andre platforme. Med dette Raspberry Pi-hack kan du dog tilføje HomeKit-understøttelse til enhver smartenhed med open source Homebridge-softwaren.

HomeKit til enhver smartenhed

Hvis du er all-in på HomeKit, er et stort problem, hvor få smartenheder der understøtter det. For eksempel er det eneste, der holder nogle billige smarte pærer tilbage, deres manglende HomeKit-understøttelse. Amazons valg for en “Smart Light Bulb” er en firepak fra TECKIN, som i skrivende stund koster omkring $40 – mindre end en enkelt LIFX-pære.

Sikker på, de er ikke så premium som LIFX; farverne er ikke så levende, og de udsender en hørbar summen på badeværelset, men for 10 dollars pr. pop er de en temmelig uovertruffen værdi.

Hovedproblemet er dog, at de ikke har HomeKit-understøttelse. De er ikke helt dumme – de arbejder med Google Home, Alexa, IFTTT og producentens app. De er fine til en, der kun har TECKIN smarte pærer.

Men fordi du ikke kan få adgang til dem fra HomeKit, kan du ikke styre dem fra Home-appen, widgetten i Kontrolcenter eller Siri. Du kan heller ikke inkludere dem i scener med pærer fra andre mærker eller bruge dem i Automations. Hvis du allerede har investeret i HomeKit, er dette højst sandsynligt en dealbreaker.

Mød Homebridge

Heldigvis er der et hack, der gør netop disse pærer meget mere nyttige. HomeKit API tillader enheder kaldet broer, som f.eks denne fra Philips Hue, for at forbinde underordnede enheder, der fungerer på andre protokoller. Du tilføjer blot broen som en enhed i HomeKit, og den registrerer hvert lys forbundet til det i HomeKit. Hver gang du anmoder om at opdatere et lys, taler din telefon til broen, og broen taler til lyset.

Så en bro videresender bare information fra en API til en anden. Fordi du kan styre TECKIN-pærerne over internettet, er det fuldt ud muligt at forbinde dem til HomeKit med kun software – der kræves ingen proprietær hardware.

  20 år senere: Sådan reddede Mac OS X Public Beta Mac'en

Hvis du har en Raspberry Pi liggende (en $5 Pi Zero er fint), kan du konfigurere den som en bro med en ramme kaldet Hjemmebro. Denne lette NodeJS-applikation emulerer HomeKit API og videresender anmodninger til dine ikke-HomeKit smartenheder.

Dybest set kører du det på Pi, og det tilføjer hver ‘dum’ enhed til Home-appen. Når du forsøger at styre pæren gennem Home-appen eller Siri, taler Homebridge til enhederne for dig. Efter du har konfigureret det, er det ligesom enheden havde HomeKit-understøttelse i første omgang.

Dette kræver, at enheden kører Homebridge til enhver tid, så dette er ikke noget, du ville installere på din bærbare computer. En Raspberry Pi er ideel, men hvis du har en gammel enhed, du kan genbruge som en server eller desktop, der altid kører, kan du installere den der.

Homebridge er et framework, og du kan udvide det med plug-ins. Den har en ret stor fællesskabsopbakning, så der er en god chance for, at enhver given smart-enhed sandsynligvis har et Homebridge-plugin for at tilføje understøttelse til det. Hvis din enhed ikke har et plug-in, men din smartenhed har en API, og du er teknisk kyndig, kan du selv skrive en.

For de fleste mennesker er opsætningen dog kun at installere Homebridge og mærkets plug-in til enheden sammen med en smule konfiguration. Hvis du kan bruge kommandolinjen og har lidt tid, er det ret nemt.

Installation og konfiguration af Homebridge

Homebridge er en NodeJS app, så du skal installere node og npm for at bruge den. Hvis din maskine kører Linux, kan du sandsynligvis få det fra din pakkeadministrator.

På Ubuntu skal du skrive følgende for at konfigurere Node-repoen manuelt og derefter installere nodejs:

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

Ellers kan du rådføre dig Nodes downloadside for information om, hvordan du installerer det til dit bestemte operativsystem.

  Sådan opsætter du et smart køkken

Hvis du er på Linux, skal du også installere nogle afhængigheder, som vist nedenfor:

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

Bagefter kan du installere Homebridge globalt gennem npm, som vist nedenfor:

sudo npm install -g --unsafe-perm homebridge

Du vil også installere de brand plug-ins, du har brug for, da Homebridge kun er en ramme. Til TECKIN-pærerne er plug-in f.eks homebridge-tuya-web, som også installeres globalt.

Du ville skrive følgende:

npm i homebridge-tuya-web -g

Når alt er installeret, kan du faktisk bruge tingen! Skriv følgende for at køre Homebridge én gang og initialisere alt:

homebridge

Det vil klage over en manglende konfiguration, som du skal oprette. Standardmappen er ~/.homebridge/, men du kan bruge parameteren -U, hvis du vil flytte den.

Indtast følgende for at oprette en ny JSON-konfigurationsfil i denne mappe:

nano ~/.homebridge/config.json

Uanset hvilke plug-ins du bruger, har du brug for følgende grundlæggende 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": [

  ]
}

Dette konfigurerer Homebridge med en standardport, navn, PIN-kode og portområde, der er tilgængeligt til at allokere til andre enheder.

Inde i det tomme platforms-array placerer du konfigurationen for hvert plug-in. Du burde være i stand til at finde instruktioner og eksempler på dette på hvert plug-ins GitHub-side.

I eksemplet nedenfor vil homebridge-tuya-web-plug-in’et til TECKIN-pærerne kende mit brugernavn og adgangskode for at oprette forbindelse til API’et for pærens app og et par andre ting:

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

Når det hele er konfigureret, burde Homebridge være klar til at gå. Kør det igen, og din terminal skulle vise en kæmpe QR-kode, der kan tvinge dig til at zoome ud. Scan dette med Home-appen for at tilføje det og alle tilsluttede enheder til HomeKit.

Homebridge indlæser dine plug-ins og skulle logge en besked på skærmen for hver enhed, den finder. Du bør se dem alle i HomeKit, efter de er tilføjet, og de skal være fuldt funktionelle.

  Sådan ændres låseskærmens lodrette ur på en Samsung-telefon

Jeg bemærkede en lille forsinkelse i forhold til mine LIFX-pærer. Dette skyldes sandsynligvis, at pærerne styres over et API i stedet for direkte. I starten viste pærerne heller ikke nogle hvide og varme hvide korrekt, men efter lidt finpudsning var jeg i stand til at sætte ordentlige scener op.

Du kan altid konfigurere enhederne i deres egne apps, vente på, at Home-appen opdateres, og derefter indstille scenen i HomeKit med den forudlavede konfiguration.

Hvis du har brug for at tilføje Homebridge igen, vil du slette mappen persist/ i config-mappen og derefter fjerne broen fra HomeKit fra indstillingerne for enhver tilsluttet pære under fanen “Bridge”.

Tilføjelse af Homebridge som en tjeneste

Hvis du vil have Homebridge til at køre hele tiden, vil du sandsynligvis konfigurere den til at genstarte, hvis den går ned, eller hvis din Raspberry Pi genstarter. Du kan gøre dette via en Unix-tjeneste. Konfigurer dette, når du har bekræftet, at Homebridge fungerer efter hensigten.

Tilføj først en ny tjenestebruger, kaldet homebridge:

sudo useradd -M --system homebridge

Indstil en adgangskode:

sudo passwd homebridge

Dernæst skal du flytte homebridge-konfigurationen uden for din personlige hjemmemappe. /var/lib/homebridge/ burde være i orden:

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

Sørg for, at den person, der bruger homebridge, har ejerskab af denne mappe og alle undermapper:

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

Når det er gjort, kan du oprette tjenesten. For at gøre det skal du oprette en ny fil kaldet homebridge.service i /etc/systemd/system/:

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

Og indsæt derefter følgende 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

Genindlæs services-dæmonen for at opdatere den med dine ændringer:

sudo systemctl daemon-reload

Nu burde du være i stand til at aktivere din tjeneste (indstille den til at køre ved opstart):

sudo systemctl enable homebridge

Og start det:

sudo systemctl start homebridge

Hvis du har brug for at fejlfinde fejl, der opstår fra tjenestekonfigurationen, kan du se logfilerne for tjenesten ved at skrive:

journalctl -fn 50 -u homebridge