Slik bruker du Siri til å sette scenen for romantikk

Slik bruker du Siri til å sette scenen for romantikk / DIY

I går viste vi deg hvordan du lager et DIY Wi-Fi-lys. Hvordan lage et DIY-kontrollert Wi-Fi-lampe. Hvordan lage et DIY-kontrollert Wi-Fi-lys I denne guiden skal du lære å lage et Wi-Fi kontrollerbart lys, og kontroller det med Siri. Les mer som kan styres med Siri; i dag skal vi bygge videre på den kunnskapen for å få Siri til å jobbe med et Sonos lydsystem, og så sette det sammen i en romantisk scene.

Sjekk ut sluttresultatet:

Videoen ovenfor var ikke faket eller iscenesatt - alt er mulig ved hjelp av Siri, og veiledningen under. Ingen jailbreak er nødvendig, selv om det er noen programmering, som jeg har oppgitt koden for.

Ting du trenger:

  • Raspberry Pi
  • iOS-enhet
  • Siri-kompatibel farget belysning, som Philips Hue med et 2 generasjons hub eller vår DIY Wi-Fi Light
  • Sonos (eller annen avspillingsenhet med en HTTP API)
  • (Valgfritt) NodeMCU / ESP8266, relé og stikkontakter; eller et kommersielt HomeKit strømuttak tilbehør

Hvorfor er dette så komplisert?

HomeKit, og styring av enhetene dine via talestyring er veldig pent. Dessverre er det lukkede økosystemet som Apple er, HomeKit begrenset til en håndfull enheter. Sonos er ikke en av dem. Men alt er ikke tapt. Takket være noen hardt arbeidende hackere ble HomeKit-protokollen nylig omvendt konstruert, og som vist i vårt siste prosjekt, kan du nå lage dine egne falske HomeKit-enheter. Vi vil dra nytte av det.

Start med å følge vår DIY Wi-Fi-veiledning Hvordan lage et DIY-kontrollert Wi-Fi-lampe Hvordan lage et DIY-kontrollert Wi-Fi-lys I denne veiledningen skal du lære å lage en Wi- Fi kontrollerbart lys, og kontroller det med Siri. Les mer, fordi det kommer til å danne grunnlaget for alt annet. Faktisk, hvis du ikke allerede har et Philips Hue belysningssystem, kan du gå videre og faktisk bygge Wi-Fi lyset beskrevet i den opplæringen.

Selv om du har et Hue-system, gå videre og følg opplæringen, for du må lage falske HomeKit-tilbehør for alt annet (kode som følger med nedenfor). Ved å fortsette med denne veiledningen, kommer jeg til å anta at du har HAP-NodeJS-serveren som kjører allerede, og har lykkes lagt til et falskt lys og testet ut serveren, selv om den ikke er koblet til en egentlig bit av DIY maskinvare.

Lag en spilleliste

Gå videre og opprett en ny Sonos spilleliste som heter “Romantisk”. Det trenger ikke å være akkurat det samme navnet, men du må justere tilleggsskriptene senere hvis du endrer det. Jeg har lagt til noen Marvin Gaye og Sade-spor til min. Glatt.

Deretter over på Raspberry Pi som kjører HAB-NodeJS (hvis du ikke vet hva jeg snakker om, har du ikke lest Wi-Fi lysopplæringen. Gjør det først), naviger til din hjemmekatalog og skriv inn følgende for å installere HTTP API for Sonos. Dette skal gi oss en webadresse som vi kan pinge for å utløse bestemte handlinger på Sonos.

git klone https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm installere produksjon npm installere basic-auth sonos-discovery require-fu request-løfte node-static async npm start

Hvis du ser en melding om en slik modul som ikke er funnet, gjør du bare en annen npm installasjon og modulnavnet, og prøv deretter npm start en gang til. Det er mulig at jeg allerede hadde noen moduler installert globalt fra andre prosjekter, og du må kanskje installere mer. Forhåpentligvis ser du noe slikt:

Gratulerer, du har nå en enkel HTTP API som du kan bruke til å utløse Sonos. Les opp dokumentasjonen for hele listen over kommandoer, men formatet vi er mest interessert i er:

http: // [SERVER IP]: 5005 / [ROOM NAME] / [ACTION]

eller som et spesielt eksempel:

http://192.168.1.99:5005/master%20bedroom/playlist/romantic

Saken ser ikke ut til å ha betydning. % 20 er en URL-kode for et mellomrom, men du bør også kunne skrive inn en faktisk plass, og nettleseren din konverterer den automatisk. Kommandoen ovenfor utløser bare den romantiske spillelisten til Master Bedroom-enheten. Bruke pause kommandoen for å stoppe det:

http://192.168.1.99:5005/master%20bedroom/pause

I tillegg gir API-en oss også en funksjon som kommer til å være veldig nyttig for andre prosjekter: evnen til å si en bestemt uttalelse, som et varsel, fortsett å spille den nåværende køen. Prøve:

http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb

Første gang du gjør dette, får du en melding om å måtte registrere deg på en API-nøkkel på VoiceRSS.org (opptil 350 forespørsler per dag er gratis). Når du er ferdig med det, skriv:

nano settings.json

og lim inn nøkkelen til følgende eksempel:

"voicerss": "YOURAPIKEY"

Start serveren på nytt, og ping nettadressen igjen. Etter noen sekunder bør du høre en herlig engelsk stemme. Du kan endre slutten av nettadressen til en-us hvis du foretrekker en amerikansk stemme. Ryddig! Helt irrelevant for dette prosjektet, men pent likevel!

Til slutt, la oss få denne serveren til å starte igjen når Pi er startet på nytt:

sudo nano /etc/rc.local

Legg til en linje før Avslutt 0:

sudo node /home/pi/sonos/server.js < /dev/null &

CTRL-X, Y for å lagre. Du kan se at jeg kjører dette ved siden av OpenHAB, en DIY Bluetooth-tilstedeværelsesdetektor og HAP-NodeJS HomeKit-serveren - du bør også ha det som kjører allerede hvis du fulgte forutsetningen for Wi-Fi-lysopplæringen allerede.

Lag en HomeKit-enhet for Sonos

Kjernen i dette prosjektet er at Sonos ikke kan kontrolleres av Siri, men vi kan legge til en viss grad av kontroll ved å lage en falsk HomeKit-enhet som aktiverer en bestemt spilleliste når vi slår den på. Et falskt lys er den enkleste måten å gjøre dette på..

Naviger til din HAP-NodeJS / katalog først og installer “be om” modul.

sudo npm installasjonsforespørsel

Deretter hopper du ned til tilbehør/ katalog og ta tak i min premade armatur med følgende enkle kommando:

wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js

Gjør noen endringer hvis du trenger - dette er angitt for standard Sonos “Hovedsoverom” plassering, så endre strengen Hoved% 20bedroom mot begynnelsen av koden hvis du vil at den skal ledes til et annet rom. Siden vi har fakket å være et lys, sender ikke lysstyrke kommandoen egentlig noe, men på et tidspunkt vil jeg oppdatere det for å håndtere volum. Dette er koden blokk som gjør det magiske:

setPowerOn: funksjon (på) console.log ("Slå på lyset% s!", på? "on": "off"); FAKELIGHT.powerOn = on; console.log (på); hvis (på) request ('http: // localhost: 5005 / master% 20bedroom / playlist / romantic', funksjon (feil, svar, kropp) console.log ("Sendt spillforespørsel");)  forespørsel ('http: // localhost: 5005 / master% 20bedroom / pause', funksjon (feil, svar, kropp) console.log ("Sent pause request");), 

Du kan se det er overraskende enkelt: Når lyset mottar en setPowerOn-kommando fra HomeKit, kontrollerer den for å se om verdien er 1 (eller sann), og som peker det pings Sonos HTTP API-url for å spille spillelisten. Hvis det er noe annet (dvs. 0, feil), sender den pause-kommandoen. Start HAP-NodeJS-serveren på nytt, og deretter fortsett til en iOS-enhet og følg samme fremgangsmåte som før for å legge til din falske “Romantisk spilleliste” lys (du trenger paringskoden 031-45-154).

Sjekk at den nye enheten fungerer, og fortsett deretter. Hvis du føler deg opp til en liten programmering, prøv å kartlegge lysstyrken endres til volum (og del koden i kommentarene, vær så snill!).

(Valgfritt) Fairy Lights og andre AC-enheter

Det kan overraske deg for å lære at det ikke er noen offisielle HomeKit feelykter, og jeg kunne heller ikke finne noen generiske strømkilder til HomeKit som jeg likte utseendet / prisen på - så jeg banket sammen en DIY-en ved hjelp av en NodeMCU / ESP8266 dev board Arduino Killer: ESP8266 Møt Arduino Killer: ESP8266 Hva om jeg fortalte deg at det er et Arduino-kompatibelt dev-kort med innebygd Wi-Fi for mindre enn $ 10? Vel, det er det. Les mer, et relé og en standard to-gangs stikkontakt. Jeg vil ikke detaljere maskinvaren for mye, siden du ikke burde sette ting i stikkontakter hvis du ikke er helt sikker på den typen ting, men jeg vil gi deg koden min for NodeMCU-siden av ting (koble til relé utløser til pin D2 / GPIO4), og tilbehøret å gå med det.

I likhet med Wi-Fi-lyset kommuniserer dette kommandoer på en MQTT-kanal (“bedroomplug”), så du må endre koden med MQTT-megleradressen (se del 2 i vår OpenHAB-veiledning om hvordan du konfigurerer en MQTT-megler. OpenHAB Beginner's Guide Del 2: ZWave, MQTT, Regler og kartlegging OpenHAB Beginners Guide Part 2: ZWave, MQTT, Regler og kartlegging OpenHAB, open source hjemmeautomatiseringsprogramvare, overgår langt fra mulighetene til andre hjemmeautomatiseringssystemer på markedet - men det er ikke lett å sette opp. Faktisk kan det være rett og slett frustrerende. Mer), endre kanalnavnene hvis du ønsker det, og selvfølgelig skriv inn dine egne Wi-Fi-detaljer.

Sette alt sammen

Til slutt skal vi gjøre noen “scener” bruker Elgato Eve app, eller din foretrukne HomeKit manager. I HomeKit parlance kan en scene bestå av et hvilket som helst antall tilbehør og kommandoer til det aktuelle tilbehøret.

Du kan navngi en scene uansett hva du vil, og Siri vil kunne matche den selv uten å si “sett scene”. Så jeg har laget to scener: en som heter “barna er i sengen”, og en til “la oss bli seriøse nå”.

Den forrige slår av et av Hue-lysene, slår den andre til rosa, så slår du på det romantiske spilleliste-tilbehøret og eventyrlysene. Den sistnevnte gjør lysene hvite igjen, og pauser Sonos (dvs. deaktiverer det romantiske spillelistens tilbehør). simples!

Jeg håper du har hatt denne opplæringen, og kan virkelig se hvordan vi kan utvide Siri-kontrollen til noe uten for mye trøbbel, takket være kraften til HAP-NodeJS. Er det noe du vil se noen spesielle Siri handlinger for? Gi oss beskjed i kommentarene, og fortell oss hvordan du har brukt Siri til å kontrollere hjemmet ditt.

Utforsk mer om: Raspberry Pi, Siri, Sonos.