Så här använder du Siri för att ställa in scenen för romantik
Igår visade vi dig hur man skapar ett DIY Wi-Fi-ljus. Hur man gör ett DIY-styrt Wi-Fi-ljus. Hur man gör ett DIY-styrt Wi-Fi-ljus I den här guiden kommer du att lära dig hur man skapar ett Wi-Fi kontrollerbart ljus och styra det med Siri. Läs mer som kan kontrolleras med Siri; idag ska vi bygga vidare på den kunskapen för att Siri ska kunna arbeta med ett Sonos ljudsystem och sedan sätta allt ihop i en romantisk scen.
Kolla in slutresultatet:
Videon ovan var inte fakad eller iscensatt - allt är möjligt med hjälp av Siri och guiden nedan. Ingen jailbreak krävs, men det finns viss programmering, för vilken jag har angivit koden.
Saker du behöver:
- Raspberry Pi
- iOS-enhet
- Siri-kompatibel färgbelysning, till exempel Philips Hue med en 2: a generations nav eller vår DIY Wi-Fi Light
- Sonos (eller annan uppspelningsenhet med ett HTTP API)
- (Valfritt) NodeMCU / ESP8266, relä och eluttag; eller ett kommersiellt HomeKit-uttag
Varför är det så komplicerat?
HomeKit, och kontrollerar dina enheter via röstkontroll är verkligen snyggt. Tyvärr är det stängda ekosystemet som Apple är HomeKit begränsat till en handfull enheter. Sonos är inte en av dem. Men allt är inte förlorat. Tack vare några hårt arbetande hackare, var HomeKit-protokollet nyligen ombyggt, och som visat i vårt senaste projekt kan du nu skapa egna falska HomeKit-enheter. Vi kommer att dra nytta av det.
Börja med att följa vår DIY Wi-Fi-ljusstudie. Hur man gör ett DIY-styrt Wi-Fi-ljus. Hur man gör ett DIY-styrt Wi-Fi-ljus I den här guiden kommer du att lära dig hur du skapar ett Wi- Fi kontrollerbart ljus, och kontrollera det med Siri. Läs mer, för det kommer att ligga till grund för allt annat. Faktum är att om du inte redan har ett Philips Hue-belysningssystem, kan du gå vidare och faktiskt bygga Wi-Fi-ljuset som beskrivs i den handledningen.
Även om du har ett nyanssystem, fortsätt och följ handledningen eftersom du måste skapa falska HomeKit-tillbehör för allt annat (kod som anges nedan). Genom att fortsätta med den här guiden kommer jag att anta att du har HAP-NodeJS-servern redan igång och har framgångsrikt lagt till ett falskt ljus och testat ut servern, även om den inte är kopplad till en verklig bit av DIY hårdvara.
Gör en spellista
Gå vidare och skapa en ny Sonos-spellista med namnet “Romantisk”. Det behöver inte vara exakt samma namn, men du måste justera åtkomstskript senare om du ändrar det. Jag har lagt till några Marvin Gaye och Sade spår till min. Slät.
Därefter över på Raspberry Pi som kör HAB-NodeJS (om du inte vet vad jag pratar om, läste du inte Wi-Fi-ljushandledningen. Gör det först), Navigera till din hemkatalog och skriv följande för att installera HTTP API för Sonos. Detta kommer att ge oss en webbadress som vi kan pinga för att utlösa vissa åtgärder på Sonos.
git klon https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm installera produktionen npm installera grundläggande auth sonos-discovery require-fu request-promise node-static async npm start
Om du ser ett meddelande om en sådan modul hittades inte, gör bara en annan npm installera och modulnamnet, försök sedan npm start igen. Det är möjligt att jag redan hade några moduler installerade globalt från andra projekt, och du kanske behöver installera mer. Förhoppningsvis ser du något så här:
Grattis, du har nu ett enkelt HTTP API som du kan använda för att utlösa din Sonos. Läs igenom dokumentationen för hela listan med kommandon, men det format vi är mest intresserade av är:
http: // [SERVER IP]: 5005 / [ROOM NAME] / [ACTION]
eller som ett speciellt exempel:
http://192.168.1.99:5005/master%20bedroom/playlist/romantic
Fallet verkar inte vara så viktigt. % 20 är en URL-kodning av en mellanslag, men du borde kunna skriva ett faktiskt utrymme också, och din webbläsare konverterar den automatiskt. Kommandot ovan utlöser bara den romantiska spellistan till sovrummet. Använd paus kommando för att stoppa det:
http://192.168.1.99:5005/master%20bedroom/pause
Dessutom ger API-en oss en funktion som kommer att bli väldigt praktisk för andra projekt: möjligheten att säga ett specifikt uttalande, som en anmälan, fortsätt sedan spela den aktuella köen. Prova:
http://192.168.1.99:5005/master%20bedroom/say/make%20use%20of%20is%20awesome/en-gb
Första gången du gör det får du ett meddelande om att du måste registrera dig på en API-nyckel på VoiceRSS.org (upp till 350 förfrågningar per dag är gratis). När du är klar med det, skriv:
nano settings.json
och klistra in i nyckeln till följande exempel:
"voicerss": "YOURAPIKEY"
Starta om servern och pinga URL-adressen igen. Efter några sekunder borde du höra en härlig engelsk röst. Du kan ändra slutet på webbadressen till en-us om du föredrar en amerikansk röst Propert! Helt irrelevant för detta projekt, men snyggt ändå!
Till sist, låt oss göra den här servern igen när Pi startas om:
sudo nano /etc/rc.local
Lägg till en rad före utgång 0:
sudo nod /home/pi/sonos/server.js < /dev/null &
CTRL-X, Y för att spara. Du kan se att jag kör detta tillsammans med OpenHAB, en DIY Bluetooth-närvaro detektor, och HAP-NodeJS HomeKit-servern - du borde också ha det redan om du följde den nödvändiga Wi-Fi-självstudiet redan.
Gör en HomeKit-enhet för Sonos
Kärnpunkten i detta projekt är att Sonos inte kan styras av Siri, men vi kan lägga till viss grad av kontroll genom att skapa en falsk HomeKit-enhet som aktiverar en viss spellista när vi slår på den - ett falskt ljus är det enklaste sättet att göra detta.
Navigera till din HAP-NodeJS / katalog först och installera “begäran” modul.
sudo npm-installationsförfrågan
Hoppa sedan ner till Tillbehör/ katalog och ta tag i min premade fixture med följande enkla kommando:
wget https://gist.githubusercontent.com/jamesabruce/72bd250fbcf054acaa25/raw/8272d4b9a4ef76db752cab2ddd9bdc47d09a65f1/Romantic_accessory.js
Gör några ändringar om du behöver - det här är inställt för standard Sonos “Huvudsovrum” plats, så ändra strängen Master% 20bedroom mot kodens början om du vill att den ska riktas till ett annat rum. Eftersom vi har misslyckats som ett ljus, skickar kommandot ljusstyrka inte någonting, men vid något tillfälle uppdaterar jag det för att hantera volymen. Detta är kodblocket som gör det magiska:
setPowerOn: funktion (på) console.log ("Slå på lampan% s!", på? "on": "off"); FAKELIGHT.powerOn = on; console.log (på); om (på) request ('http: // localhost: 5005 / master% 20bedroom / playlist / romantic', funktion (fel, svar, kropp) console.log ("Skickat spelförfrågan");) begäran ('http: // localhost: 5005 / master% 20bedroom / pause', funktion (fel, svar, kropp) console.log ("Skickad pausförfrågan");,
Du kan se det är förvånansvärt enkelt: när ljuset mottar ett setPowerOn-kommando från HomeKit, kontrollerar det om värdet är 1 (eller sant) och vilket pekar det pekar på Sonos HTTP API-url för att spela den spellistan. Om det är något annat (dvs 0, falskt), skickar det pauskommandot. Starta om din HAP-NodeJS-server och gå vidare till en iOS-enhet och följ samma procedur som tidigare för att lägga till din falska “Romantisk spellista” ljus (du behöver parningskoden 031-45-154).
Kontrollera att din nya enhet fungerar och fortsätt sedan. Om du känner dig lite programmerad, försök att kartlägga ljusstyrkan ändras till volymen (och dela din kod i kommentarerna, tack!).
(Valfritt) Fairy Lights och andra AC-enheter
Det kan överraska dig att lära dig att det inte finns några officiella HomeKit-ljusljus, och jag kunde inte hitta några HomeKit generiska strömuttag som jag gillade utseendet / priset på - så jag slog samman en DIY-enhet med en NodeMCU / ESP8266 dev-styrelse Meet Arduino Killer: ESP8266 Möt Arduino Killer: ESP8266 Vad händer om jag sa till dig att det finns en Arduino-kompatibel dev-kort med inbyggd Wi-Fi för mindre än $ 10? Jo, det finns det. Läs mer, ett relä och en standard tvåfaldig strömuttag. Jag kommer inte att detaljera hårdvaran för mycket, eftersom du inte borde sätta saker i stickkontakter om du inte är helt säker på den typen av saker, men jag kommer att förse dig med min kod för NodeMCU-sidan av saker (anslut den relä utlösare till stift D2 / GPIO4) och tillbehöret att gå med det.
Liksom Wi-Fi-ljuset kommunicerar detta kommandon på en MQTT-kanal (“bedroomplug”), så du måste ändra koden med din MQTT-mäklareadress (kolla in del 2 i vår OpenHAB-guide om hur du ställer in en MQTT-mäklare. OpenHAB Nybörjarhandledning Del 2: ZWave, MQTT, Regler och kartläggning OpenHAB Beginners Guide Part 2: ZWave, MQTT, Regler och kartläggning OpenHAB, öppen källkodsautomatiseringsprogramvara, överstiger möjligheterna för andra hemautomatiseringssystem på marknaden - men det är inte lätt att få igång. Det kan faktiskt vara frustrerande. Mer), ändra kanalnamn om du vill, och självklart skriv in dina egna Wi-Fi-detaljer.
Få alltid att falla på plats
Slutligen ska vi göra några “scener” med hjälp av appen Elgato Eve eller din favorit HomeKit-chef. I HomeKit parlance kan en scen bestå av ett antal tillbehör och kommandon till dessa tillbehör.
Du kan namnge en scen oavsett vad du vill, och Siri kommer att kunna matcha den även utan att säga “ställa in scenen”. Så jag har gjort två scener: en som heter “barnen är i sängen”, och en annan “låt oss bli allvarliga nu”.
Den förstnämnda stänger av ett av nyanslysen, vänder den andra till rosa och slår sedan på det romantiska spellistortillbehöret och feiljuset. Den senare gör lamporna vita igen och pausar Sonos (dvs stänger av det romantiska spellista-tillbehöret). simples!
Jag hoppas att du har haft den här handledningen och kan verkligen se hur vi kan utöka Siri-kontrollen till allt utan att för mycket problem tack vare kraften hos HAP-NodeJS. Finns det något du vill se några speciella Siri-åtgärder för? Låt oss veta i kommentarerna och berätta hur du har använt Siri för att styra ditt hem.
Utforska mer om: Raspberry Pi, Siri, Sonos.