NodeJS Raspberry Pi

Raspberry Pi : comment concevoir un bot qui dicte la météo chaque jour ?

Publié par Maxence Rose
Like
Like Love Haha Wow Sad Angry
32

Cette semaine a été remplie d’article pour votre Raspberry Pi, aujourd’hui on se penche sur un tutoriel pour la création d’un bot qui dicte la météo chez vous tous les matins.

Vous aurez besoin pour cela, d’un Raspberry Pi (RPi), et d’un haut-parleur que vous devrez brancher sur la carte mère du RPi, le haut-parleur du RPi n’étant pas assez puissant pour dicter quoi que ce soit.

Conception d’un bot qui dicte la météo

Pour commencer, créez vous un dossier dans votre répertoire de développement et créez-y un fichier que vous appellerez index.js par exemple.

Ensuite, installez les dépendances NodeJS suivantes :

  • google-tts-api : un « text-to-speech » pour faire parler votre compteur vocal
  • node-schedule : un planificateur de tâches pour exécuter les actions
  • play-sound : une dépendance nécessaire à l’exécution des fichiers audios
  • request : request est conçue pour être la manière la plus simple possible de faire des appels HTTP/HTTPS

Pour récupérer la météo, nous allons utiliser une API (Application Programming Interface, ou Interface de programmation) Suisse qui nous donnera la météo pour une ville souhaitée. Le résultat nous retournera différentes valeurs :

  • température minimum de la journée (en degré Celsius)
  • température maximum de la journée (en degré Celsius)
  • l’heure du levé du soleil
  • l’heure du couché du soleil
  • le jour exacte en Français (Lundi, Mardi, etc…)
  • la condition météo en moyenne pour la journée (pluvieux, ensoleillé, nuageux, etc…)
  • et tout un tas d’autres valeurs que nous n’utiliserons pas dans ce tutoriel

Commencez par inclure les dépendances dans votre projet, dans le fichier index.js, créé précédemment :

On déclare une variable « ville » qui possède la valeur de votre ville en question, par exemple, ici, ça seraMarseille :

On doit à présent faire parler notre bot ! Pour cela nous allons utiliser une librairie de Google, le « text-to-speech » afin de transformer du texte en fichier audio, avec la même méthode utilisée pour Google Traduction.

L’API que nous utiliserons est Suisse, son lien est prevision-meteo.ch/services/json/Marseille.

Nous allons donc utiliser la dépendance « request » pour appeler cette page est récupérer du contenu JSON (plus facile à lire dans notre code) :

La méthode JSON.parse() « parse » (ou manipule) une chaîne de caractères en JSON et construit la valeur JavaScript ou l’objet décrit par cette chaîne. On peut éventuellement utiliser cette fonction avec un paramètre de modification permettant de traiter l’objet avant qu’il soit renvoyé.

Il faut ensuite faire parler le bot avec une série de fonction avec rappel (callback) :

A vous de jouer, vous pouvez modifier à volonté ces phrases pour que votre bot soit le plus intelligent possible !

Il vous reste désormais à définir « node-schedule » pour qu’il exécute tout ce code à une heure précise de la journée, pour ma part, j’ai choisi 8h30 (l’heure à laquelle je suis levé).

Résultat du code en entier

Si le son n’est pas déclenché à partir de la console Shell. Vous pouvez installer les codecs audio en saisissant ces commandes :

Vous pouvez faire tourner ce programme aisément sur votreRaspberry Pi, ou un autre appareil.

Like
Like Love Haha Wow Sad Angry
32

A propos de l'auteur

Maxence Rose

Passionné de high-tech et fasciné par Google, j'écris ce que bon me semble et je teste pour vous les derniers services du Web. Ce blog me permet de m'exprimer sur les différents produits de Google, en premier lieu ses services et les appareils Android.

10 commentaires

  • Question, tu te lève à 7h30 ou 8h30 ? :p

    « Il vous reste désormais à définir « node-schedule » pour qu’il exécute tout ce code à une heure précise de la journée, pour ma part, j’ai choisi 8h30 (l’heure à laquelle je suis levé).

    schedule.scheduleJob(’30 7 * * *’, function () {
    // Exécution du code avec « request »
    }); »

  • Merci pour le tuto, mais petit soucis à l’execution…
    [email protected]:~# nodejs index.js

    Error: native promise missing, set Fetch.Promise to your favorite alternative
    at new Fetch (/root/node_modules/google-tts-api/node_modules/isomorphic-fetch/node_modules/node-fetch/index.js:41:9)
    at Fetch (/root/node_modules/google-tts-api/node_modules/isomorphic-fetch/node_modules/node-fetch/index.js:37:10)
    at module.exports (/root/node_modules/google-tts-api/node_modules/isomorphic-fetch/fetch-npm-node.js:8:19)
    at module.exports (/root/node_modules/google-tts-api/lib/key.js:11:10)
    at module.exports (/root/node_modules/google-tts-api/index.js:14:10)
    at speak (/root/index.js:9:5)
    at Request._callback (/root/index.js:37:9)
    at Request.self.callback (/root/node_modules/request/request.js:188:22)
    at Request.emit (events.js:98:17)
    at Request. (/root/node_modules/request/request.js:1171:10)

    PS : je débute avec NodeJS

  • pb trouve : maj nodejs en 5.12 et rajout d’omxplayer dans playsound.
    merci encore pour ce tuto, qui demontre bien l’interet de nodejs avec le raspberry

Écrire un commentaire

Partager ceci avec un(e) ami(e)