Gisteren hebben we je laten zien hoe je een doe-het-wifi-lampje kunt maken. Hoe maak je een DIY Siri-bestuurd wifi-licht Hoe maak je een DIY Siri-bestuurd wifi-licht? In deze handleiding 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 het dan allemaal samen te voegen in een romantische scène.
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 gecompliceerd?
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, kun je nu je 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 uitgetest, ook al is deze niet verbonden met een echt stukje 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 Wi-Fi light-zelfstudie niet gelezen. Doe dat eerst), navigeer je naar je thuismap en typ je 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 u een bericht over een dergelijke-en-dergelijke module niet vindt, hoeft u alleen nog een npm-installatie en de naam van de module uit te voeren, en probeert u dan opnieuw met npm . 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- opdracht 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 en-us als u de voorkeur geeft aan een Amerikaanse stem. Netjes! Helemaal niet relevant voor dit project, maar toch leuk!
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 uitgang 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 zelfstudie voor Wi-Fi Light al hebt gevolgd.
Een HomeKit-apparaat maken voor de Sonos
De crux 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 eerst naar uw HAP-NodeJS / directory en installeer de module "request".
sudo npm install request
Spring dan naar de accessoires / map en pak mijn voorgevormde armatuur 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 standaardlocatie van de Sonos- hoofdslaapkamer, dus wijzig de hoofdreeks% 20bedroom naar het begin van de code als u wilt dat deze naar een andere ruimte 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("Turning the light %s!", on ? "on" : "off"); FAKELIGHT.powerOn = on; console.log(on); if(on){ request('http://localhost:5005/master%20bedroom/playlist/romantic', function (error, response, body) { console.log("Sent play request"); }) } 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 PowerAangebevel van HomeKit ontvangt, controleert het of de waarde 1 (of waar) is, en op welk punt het de URL-URL van de Sonos HTTP pingt om die afspeellijst af te spelen. Als het iets anders is (dwz 0, false), verzendt het de opdracht pauze. Start je HAP-NodeJS-server opnieuw op en ga vervolgens naar een iOS-apparaat en volg dezelfde procedure als hierboven om je valse "Romantic Playlist" -lampje toe te voegen (je hebt de koppelingscode 031-45-154 nodig) .
Controleer of je nieuwe apparaat werkt en ga dan verder. Als u een beetje wilt programmeren, probeert u de helderheidswijzigingen in het volume in kaart te brengen (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 kon 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 mijn code geven 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 voor het instellen van een MQTT broker OpenHAB Beginner's Guide Deel 2: ZWave, MQTT, regels en grafieken OpenHAB beginnershandleiding Deel 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 gemakkelijk om te installeren. Het kan zelfs ronduit frustrerend zijn, lees Meer), de kanaalnamen wijzigen als je dat wilt, en natuurlijk je eigen wifi-gegevens invoeren.
Alles samenvoegen
Ten slotte gaan we een aantal "scènes" maken 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 "set scene" te zeggen . Dus heb ik twee scènes gemaakt: de ene heet "de kinderen liggen in bed" en de andere "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.