Comment envoyer des notifications vocales à haut-parleurs sonos

Le rêve de tout amateur de maison intelligente est une maison que vous pouvez parler, mais la réalité est loin de là.

Amazon Echo, par exemple, vous permet d`utiliser un certain nombre de fonctions à commande vocale, mais de dialogue doit être initié par vous une question - vous ne pouvez pas juste lui annoncer un message important.

Toi pouvez faire cela avec un système Sonos bien, et un peu de magie bricolage Raspberry Pi. Aujourd`hui, je vais vous montrer comment configurer les notifications vocales sur votre système Sonos, introduisant quelques recettes de ifttt utiles, les intégrations OpenHAB, et plus encore, d`utiliser la fonction de notification.

Video: How to send manual and scheduled push notifications?

Notez qu`il ya un Sonos natif de liaison pour OpenHAB disponible, mais il est connu pour causer des problèmes de mémoire en raison d`une bibliothèque uPnP défectueuse. Je vous suggère de sauter que pour l`instant, et en utilisant la méthode dans ce tutoriel à la place.

Un linux Raspian fonctionnement Raspberry Pi est idéal pour ce tutoriel, mais il devrait également fonctionner sur un serveur domestique basé sur Linux que vous avez en cours d`exécution. Dans ce cas, j`utilise le même Raspberry Pi qui fonctionne OpenHAB, le système domotique open source. Le reste de ce tutoriel suppose que vous vous utilisez également ce sur un Raspberry Pi, et soit une fenêtre de terminal local ouvert sur le bureau, ou sont connecté à distance en utilisant SSH.Mise en route avec OpenHAB Home Automation sur Raspberry PiMise en route avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique source mature, ouverte qui fonctionne sur une variété de matériel et est le protocole agnostique, ce qui signifie qu`il peut se connecter à presque tout matériel domotique sur le marché aujourd`hui.Lire la suite

Tu auras besoin

  • Raspberry Pi 2 (anciens modèles devraient travailler, mais il faut vérifier les changements spécifiques dans les instructions)
  • (Ce qui est d`autres systèmes audio ne sont pas pris en charge, un tutoriel pour Sonos uniquement) au moins un haut-parleur Sonos
  • compte gratuit à VoiceRSS.org. Alors inscrivez-vous trouver votre clé API, que nous aurons besoin plus tard pour générer les messages vocaux.

Installer Noeud dernier

Vérifiez la version du nœud que vous avez en tapant:

-v noeud

Notez que la version 6 n`est pas pris en charge. Si vous avez nœud 6, vous d`abord l`enlever, puis suivez les instructions ci-dessous pour installer v5.5.

Si vous n`avez pas v5 ou si vous obtenez une erreur non trouvée, suivez ces instructions pour installer le nœud. La commande suivante suppose un Raspberry Pi 2 pour les anciens modèles, l`utilisation armv6l au lieu de armv7l.

wget https://nodejs.org/download/release/latest-v5.x/node-v5.12.0-linux-armv7l.tar.gzle goudron -xvf noeud-v5.12.0-linux-armv7l.tar.gzCD node-v5.12.0-linux-armv7lsudo cp -R * / usr / local

Confirmez à nouveau en tapant:

-v noeud

Et vous devriez voir V5.12 (ou quel que soit le dernier en date, que vous avez téléchargé).

Ensuite, nous avons des modules de nœud à installer. Nous voulons aussi le gestionnaire de paquets de nœud.

sudo apt-get installer NPMsudo NPM installer -g NPMsudo NPM installer -g noeud-gyp

Ce sont les pré-requis de la route, maintenant sur les choses amusantes.

API HTTP Sonos

L`API Sonos HTTP crée un serveur Web sur le réseau local, ce qui nous permet de faire un ping une URL avec un message pour annoncer sur un Sonos (et de le contrôler à distance si vous voulez, bien que ce tutoriel se concentre uniquement sur l`aspect de notification vocale).

git clone https://github.com/jishi/node-sonos-http-api.git sonosCD sonosNPM installer --productionNPM début

Si vous voyez un message sur tel ou tel module non trouvé, faire juste une autre NPM installer et le nom du module, puis essayez NPM début encore. Si vous rencontrez des erreurs relatives à « Nécessite un compilateur C ++ 11 », fixer avec les commandes suivantes:

sudo apt-get installer gcc-4,8 g ++ - 4,8sudo update-alternatives --install / usr / bin / gccgcc / usr / bin / gcc-4.6 20sudo update-alternatives --install / usr / bin / gcc gcc /usr/bin/gcc-4.8 50sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.6 20sudo update-alternatives --install / usr / bin / g ++ g ++ /usr/bin/g++-4.8 50

Finalement, vous devriez voir quelque chose comme ceci:

sonos-http-api travail

Le serveur est maintenant en cours d`exécution, l`interface avec Sonos. Le format de cette API est facile:

http: // [IP du serveur]: 5005 / [NOM DE LA PIÈCE] / [ACTION]

Ou comme un exemple précis:

http://192.168.1.99:5005/kitchen/playlist/chillout

L`action qui nous intéresse est la commande « dire », utilisé comme suit:

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

Vous entendrez un message d`erreur d`avoir à vous inscrire à une clé API à VoiceRSS.org. Vous devriez déjà avoir fait cela, donc taper ce qui suit et coller dans votre clé API comme appropirate:

nano settings.json

{

 "voicerss":"YOURAPIKEY"}

(Appuyez sur CTRL-X, Y, pour enregistrer le fichier)

Redémarrez le serveur et l`URL ping à nouveau. Au bout de quelques secondes, vous devriez entendre une voix anglaise délicieuse (si vous changez la fin de l`URL fr-fr si vous préférez). Pour démarrer à nouveau l`API Sonos HTTP serveur lorsque le Pi est redémarré:

sudo nano /etc/rc.local

Ajouter une ligne avant la exit 0:

sudo noeud /home/pi/sonos/server.js lt; / Dev / null &

Vous avez maintenant la possibilité de créer un message vocal à partir de n`importe où sur le réseau local simplement par une URL pinger, de sorte que les possibilités sont grandes ouvertes à ce stade. Si vous avez du mal pour des idées bien, lisez la suite pour quelques notifications utiles que j`ai mis en place.

OpenHAB Notifications Événements

Prenons un exemple simple d`abord: la détection de mouvement. Ceci est un cas d`utilisation commune pour activer les lumières, mais vous voudrez peut-être une notification vocale trop si elle est un capteur de mouvement dans une zone à faible trafic, ou peut-être un avertissement avant que quelqu`un arrive le chemin de jardin.

Règle "mouvement de jardin détecté"whenItem Garden_Motion changedthenvar String message = "Vous avez un visiteur"sendHttpGetRequest("http: // localhost: 5005 / cuisine / dire /"+message.encoder("UTF-8")+"/ Fr-fr")fin

Vous devriez voir comment vous pouvez intégrer ces simples notifications vocales dans l`un de vos règles, mais nous allons essayer quelque chose d`un peu plus complexe.

Rapport météo tous les jours de IFTTT à OpenHAB à Sonos

Dans cette recette, nous avons Sonos annonce un bulletin météo quotidien à l`heure preferred.

Vous aurez besoin du My.OpenHAB liaison activée, car cela crée une connexion sécurisée entre votre serveur OpenHAB interne et le service ifttt externe. Réglez que si vous avez pas déjà - vous pouvez consulter partie 1 de notre guide OpenHAB pour obtenir des instructions complètes, sinon je suppose que vous l`avez déjà configuré avec la persistance est activée pour tous les articles.Mise en route avec OpenHAB Home Automation sur Raspberry PiMise en route avec OpenHAB Home Automation sur Raspberry PiOpenHAB est une plate-forme domotique source mature, ouverte qui fonctionne sur une variété de matériel et est le protocole agnostique, ce qui signifie qu`il peut se connecter à presque tout matériel domotique sur le marché aujourd`hui.Lire la suite

Ensuite, créez un nouvel élément de chaîne dans votre OpenHAB installer, qui permet de stocker le bulletin météo quotidien. Avant cela est visible dans le canal de My.OpenHAB, nous aurons besoin de l`initialiser avec une variable par défaut. Ping l`URL suivante (changement raspberrypi.local à votre serveur OpenHAB, ou tout simplement utiliser son adresse IP, et La météo d`aujourd`hui à tout ce que vous avez appelé la chaîne):

http: //raspberrypi.local: 8080 / CMD Todays_Weather=Ensoleillé

Se connecter pour vérifier My.OpenHAB et la Articles la liste pour assurer l`exportation a été maintenant la variable.

mon article openhab contrôle d`exportation

Retour sur IFTTT, créer une nouvelle recette, et utiliser le canal météo comme déclencheur à votre moment préféré de la journée. Vous devez définir votre emplacement d`abord si vous ne l`avez jamais utilisé auparavant.

Sélectionnez My.OpenHAB comme l`action, et choisissez la Todays_Weather comme la variable mise à jour.

ifttt météo

Video: Sonos : système musical multiroom et HiFi

Pour l`instant, il suffit de choisir l`emplacement suivant une demi-heure pour les tests - vous pouvez mettre à jour la recette plus tard une fois que vous savez qu`il fonctionne.

Effectivement, au moment du test (en fait, un peu avant), je me suis prévu pour la journée mis à jour.

27/02/2016 10: 28: 01,689 [DÉBOGUER] [o.o.i.m.i.MyOpenHABServiceImpl] - Reçu commander Nuageux aujourd`hui! Avec un maximum de 7C et un faible 1C. Répéter. Les conditions seront Nuageux aujourd`hui, avec un haut de 7C et un faible 1C. pour Todays_Weather2016-02-27 article 10: 28: 01,697 [DÉBOGUER] [o.o.i.m.i.MyOpenHABServiceImpl] - le magasin(La météo d`aujourd`hui), Etat = Nuageux aujourd`hui! Avec un maximum de 7C et un faible 1C. Répéter. Les conditions seront Nuageux aujourd`hui, avec un haut de 7C et un faible 1C.

La prochaine étape, nous avons besoin d`une règle de OpenHAB d`envoyer cette variable Sonos « dire » URL. Ce qui suit devrait le faire:

Règle "Annoncer météo quotidien"whenItem Todays_Weather reçu la mise à jourpuissendHttpGetRequest("http: // localhost: 5005 / cuisine / dire /"+Todays_Weather.state.toString.encode("UTF-8")+"/ Fr-fr")fin

Ceci est assez simple: chaque fois que la variable Todays_Weather est mis à jour (ce qui sera, automatiquement, à 8h du matin tous les jours), ping l`URL. Nous utilisons coder ( « UTF-8 ») fonction de chaîne pour rendre la phrase de IFTTT appropriée pour une utilisation dans une URL. Pour tester manuellement cette partie du système, il suffit d`utiliser l`API HTTP OpenHAB à nouveau:

http: //raspberrypi.local: 8080 / CMD Todays_Weather=Nuageux avec une chance de boulettes de viande.

Connectez-vous à IFTTT Sans OpenHAB, Utiliser Si-ce-Then-Noeud

Enfin, regardons comment connecter de toute recette IFTTT sans l`intermédiaire OpenHAB. Au lieu de cela, nous allons installer un autre serveur Web, et exposons que l`Internet ouvert. Ce n`est pas sans risque: tout type de serveur ouvert est un risque de sécurité, mais nous atténuer cela en disposant pas d`une pile de serveur complète, juste un petit service spécifique qui accepte que certaines commandes dans un format de paquets de données JSON sécurité (donc pas injection SQL ou d`attaques d`authentification seront possibles). Une fois que nous aurons terminé, vous aurez une URL publique auquel vous pouvez envoyer des messages à partir du canal Maker IFTTT.

Commencez par la mise en place l`un des nombreux services DNS dynamiques gratuits là-bas - je recommande DuckDNS, en particulier parce qu`il donne un simple ensemble d`instructions pour Raspberry Pi, ce qui lui permet de mettre à jour votre adddress IP automatiquement. Suivez avec ces derniers, et rappelez-vous votre URL pour les prochaines étapes. Votre routeur peut également avoir une fonction DNS dynamique intégré, afin de vérifier les premiers. Dans mon cas, je peux obtenir un * .mynetgear.com URL gratuitement, je l`ai utilisé que si.5 Les meilleurs fournisseurs de DNS dynamiques Vous pouvez rechercher vous gratuitement dès aujourd`hui5 Les meilleurs fournisseurs de DNS dynamiques Vous pouvez rechercher vous gratuitement dès aujourd`huiDynDNS a toujours été une mention haut quand ont été amenés DNSes dynamiques libérer. Mais maintenant qu`il est parti, y at-il de bonnes solutions de rechange? Il vous sont.Lire la suite

Ensuite, trouvez votre routeur de redirection de port configuration page- c`est là que nous allons lui dire quoi faire avec les demandes entrantes. Transférer toutes les requêtes HTTP (port 80) vers le port 1337 sur votre serveur Raspberry Pi. Je suppose que vous avez une adresse IP réservée déjà pour votre Raspberry Pi - si vous ne l`avez pas, consultez la page de configuration de votre routeur pour les adresses IP réservées pendant que vous êtes là-bas, comme vous le faites pas changer la semaine prochaine pour le serveur cesse brusquement de fonctionner.

routeur transfert de port de configuration

Maintenant, pour installer le dernier bit du logiciel serveur.

Video: Développons un peu | Les notifications Push de type local | Episode 26 - Partie 2/3

https://github.com/sebauer/if-this-then-node.gitCD si-ce-then-noeud /NPM installernoeud server.js

Vous devriez voir ce qui suit.

si ces valeurs par défaut, puis noeud erreur

C`est ok, cela signifie que nous devons mettre à jour nos informations. S`ouvrir config.js dans Nano et modifier ces détails à autre chose que la valeur par défaut, puis enregistrez. Lorsque vous exécutez à nouveau le serveur, vous devriez voir ceci:

si ce serveur exécutant alors noeud

Génial. Testez votre machine est accessible depuis le monde extérieur en tapant votre nom d`hôte DNS dynamique et Append /ifttn / à la fin de l`URL. Si tout fonctionne, le message « IFTTN - si-ce-then-nœud version 2.0.1 est en cours d`exécution! » sera affiché dans votre navigateur. Encore une fois, pour faire de ce script exécuté au démarrage, modifiez la /etc/rc.local fichier et d`ajouter:

sudo noeud /home/pi/if-this-then-node/server.js lt; / Dev / null &

Si-Ce-Then-Node fonctionne grâce à des plugins - il y a quelques uns par défaut fournis, mais il n`y a pas d`intérêt pour nous. Au lieu de cela, téléchargez ce plugin personnalisé que je l`ai écrit pour vous avec les commandes suivantes.

CD pluginswget https://gist.githubusercontent.com/jamesabruce/4af8db24ba3452b94877/raw/d11c1cff3aa44dbb6a738eeb15202f3db461de75/sonos.js

Vous aurez également besoin d`installer le demande module.

NPM installer demande

Ensuite, redémarrez le serveur. Le plugin est assez simple, mais un peu différent de l`URL que nous sommes habitués à ce jour. Dans ce cas, je l`ai utilisé l`action « sayall » spécial, qui envoie le message à tous les appareils Sonos.

demande(`Http: // localhost: 5005 / sayall /`+params.message+« / Fr-fr », fonction (Erreur, réponse, corps)

Si vous préférez être en mesure de cibler des dispositifs spécifiques, remplacer cette ligne par:

demande(`Http: // localhost: 5005 /`+params.device +`/dire/`+params.message +« / Fr-fr », fonction (erreur, la réponse, le corps)

Ajouter un autre paramètre de ligne appelé dispositif à la demande JSON ci-dessous dans laquelle pour spécifier le nom de l`appareil Sonos.

Video: Swift - Les notifications

Pour tester cela, j`utilise la IFTTT application bouton « Do ». Créer une nouvelle recette, parcourir les canaux, et sélectionnez la Fabricant canal.

faire le bouton

Créer une nouvelle recette. Entrez dans l`URL que vous avez configuré précédemment d`un fournisseur de DNS dynamique libre (y compris / Ifttn / à la fin de l`URL. Ne pas oublier les barres obliques). Sélectionner POSTER demande, application / json le contenu, et le corps du message comme suit, en remplaçant toutes les variables selon les besoins avec ceux que vous avez configuré précédemment:

{"action":"sonos","utilisateur":"youruser","pw":"VOTRE MOT DE PASSE","message":"message entrant pour tout le monde: Le dîner est prêt! Répéter. Le dîner est prêt. Obtenez vos ânes maintenant à l`étage."}

Maintenant, j`ai un bouton facilement accessible qui annoncera le message sur tous les appareils Sonos dans la maison. Vous pouvez bien sûr coupler cela avec un canal ifttt vous voulez faire un message personnalisé à l`aide des variables de ce canal. Vous devriez même être en mesure de reproduire le bulletin météo d`en haut sans utiliser OpenHAB maintenant, mais il a pris l`effort supplémentaire d`installer un autre serveur.

Remarque: les pirates vous balayer automatiquement. Cela arrive tout le temps, mais si vous affichez des journaux, il peut sembler alarmant. Ci-dessous vous pouvez voir quelqu`un systématiquement essayé de déterminer si l`une des interfaces standard PHPMyAdmin étaient accessibles. Qu`ils ne sont pas. si vous voyez quelque chose de similaire ne vous inquiétez pas. Il est l`équivalent Internet du froid appelant les numéros de téléphone au hasard pour voir si quelqu`un est là.

les tentatives de hack serveur web

Qu`est-ce que vous annoncez?

Vous devriez maintenant avoir les outils et kwowledge de se baigner en permanence votre maison entière dans les notifications vocales sur tout ce que vous pourriez penser. Qui a besoin de la musique? Votre seule limite est de 350 demandes par jour de VoiceRSS.org - mais qui est d`environ un toutes les 4 minutes, alors vous devriez être bien.

Alors, que ferez-vous cela? Partagez vos idées ou recette IFTTT dans les commentaires!

Articles connexes