Hoe Siri te gebruiken om de scène voor romantiek in te stellen

Hoe Siri te gebruiken om de scène voor romantiek in te stellen / DIY

Gisteren hebben we je laten zien hoe je een doe-het-Wi-Fi-lampje kunt maken. Hoe maak je een DIY Siri-bestuurd wifi-licht Hoe maak je een DIY Siri-bestuurd wifi-licht? In deze gids leer je hoe je een Wii-licht kunt maken. een Wi-Fi bestuurbaar licht, en bestuur het met Siri. Lees meer dat kan worden beheerd met Siri; vandaag gaan we voortbouwen op die kennis om Siri te laten werken met een Sonos-geluidssysteem, en dan alles in een romantische scène samenvoegen.

Bekijk het eindresultaat:

De video hierboven was niet nagebootst of geënsceneerd - alles is mogelijk met behulp van Siri en de onderstaande gids. Er is geen jailbreak vereist, hoewel er enige programmering is waarvoor ik de code heb verstrekt.

Dingen die je nodig hebt:

  • Raspberry Pi
  • iOS-apparaat
  • Siri-compatibele gekleurde verlichting, zoals Philips Hue met een 2e generatie hub, of onze DIY Wi-Fi Light
  • Sonos (of een ander afspeelapparaat met een HTTP API)
  • (Optioneel) NodeMCU / ESP8266, relais en stopcontacten; of een commercieel HomeKit-stopcontact

Waarom is dit zo ingewikkeld?

HomeKit, en het bedienen van je apparaten via spraakbesturing is echt netjes. Helaas, het gesloten ecosysteem van Apple is HomeKit beperkt tot een handvol apparaten. Sonos is niet een van hen. Echter, alles is niet verloren. Dankzij enkele hardwerkende hackers is het HomeKit-protocol recentelijk reverse-engineered en zoals aangetoond in ons laatste project, kunt u nu uw eigen nep HomeKit-apparaten maken. Daar profiteren we van.

Begin met het volgen van onze DIY Wi-Fi light-zelfstudie. Hoe maak je een DIY Siri-bestuurd wifi-licht Hoe maak je een DIY Siri-bestuurd wifi-licht? In deze gids leer je hoe je een Wi-Fi-licht kunt maken. Fi bestuurbaar licht, en bestuur het met Siri. Lees meer, want dat zal de basis vormen van al het andere. Als je nog geen Philips Hue-verlichtingssysteem hebt, kun je eigenlijk beginnen met het bouwen van het Wi-Fi-lampje dat in die zelfstudie wordt beschreven.

Zelfs als je wel een Hue-systeem hebt, ga je gang en volg je de tutorial omdat je nep HomeKit-accessoires voor al het andere moet maken (onderstaande code). Door met deze gids verder te gaan, ga ik ervan uit dat je de HAP-NodeJS-server al hebt uitgevoerd, en met succes een neplampje hebt toegevoegd en de server hebt getest, zelfs als deze niet is verbonden met een eigenlijke bit van DIY hardware.

Maak een afspeellijst

Ga je gang en maak een nieuwe Sonos-afspeellijst met de naam “Romantisch”. Het hoeft niet exact dezelfde naam te zijn, maar je moet de accessoire scripts later aanpassen als je het verandert. Ik heb enkele tracks van Marvin Gaye en Sade toegevoegd aan de mijne. Glad.

Vervolgens op de Raspberry Pi met HAB-NodeJS (als je niet weet waar ik het over heb, heb je de handleiding van het wifi-licht niet gelezen.), Ga naar uw thuismap en typ het volgende om de HTTP API voor Sonos te installeren. Dit gaat ons een web-URL geven die we kunnen pingen om bepaalde acties op de Sonos te activeren.

git clone https://github.com/jishi/node-sonos-http-api.git sonos cd sonos npm install production npm install basic-auth sonos-discovery require-fu request-promise node-static async npm start

Als je een bericht over zo'n-en-die module niet ziet, doe gewoon een andere npm installeren en de modulenaam, probeer dan npm start nog een keer. Het is mogelijk dat ik al een aantal modules wereldwijd heb geïnstalleerd vanuit andere projecten en dat u mogelijk meer moet installeren. Hopelijk zie je zoiets als dit:

Gefeliciteerd, je hebt nu een eenvoudige HTTP API die je kunt gebruiken om je Sonos te activeren. Lees de documentatie voor de volledige lijst met opdrachten, maar het formaat waarin we het meest geïnteresseerd zijn, is:

http: // [SERVER IP]: 5005 / [RUIMTE NAAM] / [ACTIE]

of als een specifiek voorbeeld:

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

Case lijkt niet uit te maken. De% 20 is een URL-codering van een spatiesymbool, maar u zou ook een echte spatie moeten kunnen invoeren en uw browser zal deze automatisch converteren. De bovenstaande opdracht activeert eenvoudigweg de Romantische afspeellijst naar het Master Bedroom-apparaat. Gebruik de pauze commando om het te stoppen:

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

Daarnaast geeft de API ons ook een functie die erg handig zal zijn voor andere projecten: de mogelijkheid om een ​​specifieke verklaring te geven, zoals een melding, en vervolgens door te gaan met het spelen van de huidige wachtrij. Proberen:

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

De eerste keer dat u dit doet, krijgt u een bericht over het moeten registreren bij een API-sleutel op VoiceRSS.org (maximaal 350 verzoeken per dag zijn gratis). Als je daarmee klaar bent, typ je:

nano settings.json

en plak in je sleutel naar het volgende voorbeeld:

"voicerss": "YOURAPIKEY"

Start de server opnieuw en ping de URL opnieuw. Na een paar seconden hoort u een heerlijke Engelse stem. U kunt het einde van de URL wijzigen in nl-nl als je de voorkeur geeft aan een Amerikaanse stem. Netjes! Helemaal niet relevant voor dit project, maar toch netjes!

Laten we tot slot deze server opnieuw starten als de Pi opnieuw wordt opgestart:

sudo nano /etc/rc.local

Voeg een regel toe vóór de exit 0:

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

CTRL-X, Y om op te slaan. U kunt zien dat ik dit samen met OpenHAB, een DIY-Bluetooth-aanwezigheidsmelder en de HAP-NodeJS HomeKit-server, uitvoer - u zou dat ook al moeten hebben als u de vereiste Wi-Fi light-zelfstudie al hebt gevolgd.

Een HomeKit-apparaat maken voor de Sonos

De essentie van dit project is dat Sonos niet door Siri kan worden bestuurd, maar we kunnen enige mate van controle toevoegen door een nep HomeKit-apparaat te maken dat een bepaalde afspeellijst activeert wanneer we hem aanzetten - een neplicht is de gemakkelijkste manier om dit te doen.

Navigeer naar uw HAP-NodeJS / map eerst en installeer de “verzoek” module.

sudo npm install request

Spring dan naar de accessoires/ map en pak mijn premadelampte met de volgende eenvoudige opdracht:

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

Breng een aantal wijzigingen aan als dit nodig is - dit is ingesteld voor de standaard Sonos “Hoofdslaapkamer” locatie, dus verander de string meester% 20bedroom naar het begin van de code als u wilt dat deze naar een andere kamer wordt geleid. Omdat we hebben gefingeerd als een licht, zal het verzenden van de helderheidopdracht eigenlijk niets doen, maar op een gegeven moment zal ik dat updaten om met volume om te gaan. Dit is het codeblok dat de magie doet:

setPowerOn: function (on) console.log ("Het licht% s aanzetten!", aan? "aan": "uit"); FAKELIGHT.powerOn = on; console.log (on); if (on) request ('http: // localhost: 5005 / master% 20bedroom / playlist / romantic', functie (error, response, body) console.log ("Verzoek om sentiment te sturen");) else  request ('http: // localhost: 5005 / master% 20bedroom / pause', function (error, response, body) console.log ("Sent pause request");), 

Je ziet dat het verrassend eenvoudig is: wanneer het licht een set PowerAward-commando van HomeKit ontvangt, controleert het of de waarde 1 (of waar) is en welk punt het de URL van de Sonos HTTP API pingt om die afspeellijst af te spelen. Als het iets anders is (dwz 0, false), verzendt het de opdracht pause. Start uw HAP-NodeJS-server opnieuw op en ga vervolgens naar een iOS-apparaat en volg dezelfde procedure als eerder om uw nep-apparaat toe te voegen “Romantische afspeellijst” licht (je hebt de koppelingscode nodig 031-45-154).

Controleer of je nieuwe apparaat werkt en ga dan verder. Als u een beetje wilt programmeren, probeert u de helderheidswijzigingen in het volume in te delen (en deelt u uw code in de opmerkingen, alstublieft!).

(Optioneel) Fairy Lights en andere AC-apparaten

Het zal je misschien verbazen om te horen dat er geen officiële HomeKit-felle lichten zijn, en ik kan ook geen HomeKit-generieke stopcontacten vinden waarvan ik vond dat ze er leuk / prijzig uitzagen - dus heb ik een doe-het-zelf samengegooid met een NodeMCU / ESP8266 dev-board Meet de Arduino-moordenaar: ESP8266 Maak kennis met de Arduino-moordenaar: ESP8266 Wat als ik u heb verteld dat er een Arduino-compatibel dev-bord is met ingebouwde Wi-Fi voor minder dan $ 10? Welnu, dat is er. Read More, een relais en een standaard tweevoudig stopcontact. Ik zal de hardware niet te gedetailleerd beschrijven, omdat je de dingen niet in de stopcontacten moet stoppen als je niet helemaal zeker bent van dat soort dingen, maar ik zal je voorzien van mijn code voor de NodeMCU-kant van de dingen (sluit de relais trigger naar pin D2 / GPIO4) en het bijbehorende accessoire.

Net als het Wi-Fi-lampje communiceert dit commando's op een MQTT-kanaal (“bedroomplug”), dus je moet de code aanpassen met je MQTT-makelaarsadres (bekijk deel 2 van onze OpenHAB-gids over het opzetten van een MQTT-makelaar OpenHAB-beginnershandleiding Deel 2: ZWave, MQTT, regels en grafieken OpenHAB-beginnershandleiding Gedeelte 2: ZWave, MQTT, Regels en grafieken OpenHAB, de open source domotica-software, overtreft ruimschoots de mogelijkheden van andere domoticasystemen op de markt, maar het is niet eenvoudig om het in te stellen. Het kan zelfs ronduit frustrerend zijn. Meer), verander de kanaalnamen als je dat wilt, en voer natuurlijk je eigen Wi-Fi-details in.

Alles samenvoegen

Eindelijk gaan we wat maken “scenes” met de Elgato Eve-app of uw favoriete HomeKit-manager. In HomeKit-spraakgebruik kan een scène bestaan ​​uit een willekeurig aantal accessoires en opdrachten voor die accessoires.

Je kunt een scène een naam geven die je maar wilt, en Siri zal het kunnen evenaren zelfs zonder te zeggen “scène instellen”. Dus ik heb twee scènes gemaakt: één genoemd “de kinderen liggen in bed”, en een ander “laten we serieus worden nu”.

De eerste schakelt een van de Hue-lichten uit, zet de andere in roze en schakelt vervolgens de romantische afspeellijstaccessoire en de kerstverlichting in. De laatste maakt de lichten weer wit en pauzeert de Sonos (dwz schakelt de romantische afspeellijstaccessoire uit). simples!

Ik hoop dat je deze tutorial leuk vond, en echt kunt zien hoe we Siri-besturing kunnen uitbreiden naar alles zonder al te veel problemen, dankzij de kracht van HAP-NodeJS. Is er iets waarvoor je speciale Siri-acties wilt zien? Laat het ons weten in de comments en vertel ons hoe je Siri hebt gebruikt om je huis te besturen.

Ontdek meer over: Raspberry Pi, Siri, Sonos.