Aujourd'hui je vous propose de détecter la réception de nouveaux sms reçus sur votre NadHat. Nous verrons ensuite comment commander une pin de votre Raspberry Pi par sms. L'outil qui va nous permettre de détecter les sms et de contrôler les pins du RPi est Node-Red.
Principe
Tout d'abord c'est quoi Node-Red? Node-Red est un outil de programmation graphique permettant de connecter des équipements entre eux et de créer des scénarios d'automatisations. Nous allons pouvoir grâce à cet outil relier graphiquement une pin de notre Raspberry Pi à un relais et écrire un scénario qui nous permettra de commander ce relais par sms.
Matériels nécessaires
Vous allez avoir besoin du matériel suivant:
- Une carte Nadhat
- Un Raspberry Pi. Nous utiliseront le Raspberry Pi 0 dans ce tuto
- Le système de distribution NADBIAN lite incluant gammu et Node-Red
Si vous n'avez pas encore installé NADBIAN lite vous pouvez suivre ce tuto.
Vérification de gammu
Nous allons effectuer une vérification rapide de notre service gammu afin de vérifier que le code PIN configuré dans gammu correspond bien à celui de notre module GSM et que le port est bien celui de notre Raspberry Pi. Pour cela nous allons ouvrir le fichier de configuration gammu gammu-smsdrc.
pi@NadHAT:~ $ sudo nano /etc/gammu-smsdrc
Par défaut le code PIN est celui d'une SIM de l'opérateur Orange donc '0000' et le port série utilisé sur le Raspberry Pi est 'ttyAMA0'. Vous devez donc modifier ces paramètres pour selon votre configuration.
Rédemmarrer le service gammu pour enregistrer vos paramètres grâce à la commande suivante:
pi@NadHAT:~ $ sudo /etc/init.d/gammu-smsd restart
[ ok ] Restarting gammu-smsd (via systemctl): gammu-smsd.service.
Vérifier le clignotement lent de la LED orange signe d'une bonne configuration de votre module GSM.
Enfin tester l'envoie d'un sms par votre Nadhat:
pi@NadHAT:~ $ sudo gammu-smsd-inject TEXT 06XXXXXXXX -text "Test gammu"
gammu-smsd-inject[576]: Created outbox message OUTC20180108_195618_00_0676604681_sms0.smsbackup
Written message with ID /var/spool/gammu/outbox/OUTC20180108_195618_00_0676604681_sms0.smsbackup
Configuration de Node-Red
La première chose à faire est de donner les droits en lecture au pool SMS à l'utilisateur de Node-Red avec la commande suivante:
pi@NadHAT:~ $ sudo usermod -a -G gammu pi
Node-Red se lance automatiquement au démarrage de votre RaspBerry Pi installé avec NADBIAN.
Cependant la commande pour le démarrer manuellement est:
pi@NadHAT:~ $ node-red-start
Start Node-RED
Once Node-RED has started, point a browser at http://192.168.43.140:1880
On Pi Node-RED works better with the Firefox or Chrome browser
Use node-red-stop to stop Node-RED
Use node-red-start to start Node-RED again
Use node-red-log to view the recent log output
Use sudo systemctl enable nodered.service to autostart Node-RED at every boot
Use sudo systemctl disable nodered.service to disable autostart on boot
To find more nodes and example flows - go to http://flows.nodered.org
Starting as a systemd service.
11 Jan 09:45:43 - [info] Server now running at http://127.0.0.1:1880/
Et pour l'arrêter:
pi@NadHAT:~ $ node-red-stop
Stop Node-RED
Use node-red-start to start Node-RED again
Pour accéder à l'interface Node-Red il vous suffit de tapez l'url suivant dans votre navigateur favoris:
http://ADRESSE_IP_DE_VOTRE_RPI:1880/
Vous pouvez donc créer vos premiers flow et scénarios.
Notre système de distribution NADBIAN inclut le flow Node-Red de détection de sms. Pour l'importer dans Node-Red vous devez aller dans le menu de configuration en haut à droite de l'interface (les 3 barres horizontales), puis dans import->library->SMS to GPIO.
Pour enregistrer les modifications dans Node-Red vous devez cliquer sur "Deploy".
Ce flow Node-Red est capable de détecter la présence d'un nouveau fichier SMS arrivé dans l'inbox SMS de gammu (node Sms Inbox). Il permet ensuite de lire le contenu du SMS (node SMS content) et d'en extraire les informations nécessaires (node Extract msg). Ensuite le node cmd permet la commande de la pin choisit si le message du sms est égal à 0 ou 1.
Enfin, vous pouvez donc tester ce flow en envoyant simplement par sms:
- 0 pour commuter la pin à 0
- 1 pour commuter la pin à 1
Ce flow permet de commander le relais de la carte Automation pHAT (GPIO16) donc si vous double cliquez sur le node "pHAT onboard relay" vous pouvez changer la commande vers la pin de votre choix.
Vous êtes maintenant prêt à utilisez Node-Red sur d'autres scénarios de domotique.