Comment configurer un serveur Web Raspberry Pi Node.js et contrôler les GPIO

1592206209 Comment configurer un serveur Web Raspberry Pi Nodejs et controler
1592206209 Comment configurer un serveur Web Raspberry Pi Nodejs et controler

Node.JS est une plate-forme serveur qui utilise JavaScript. Développé à l’origine pour le navigateur Google Chrome, il est très économe en ressources, ce qui rend l’utilisation d’un serveur Web Raspberry Pi Node.JS intéressante. En plus des avantages des applications asynchrones, Node.JS offre une méthode très simple mais puissante pour installer et utiliser différents plugins ou bibliothèques, en utilisant le gestionnaire de paquets interne « npm ».

Ce tutoriel vous montre comment installer et configurer un serveur Raspberry Pi NodeJS. De plus, j’ai écrit un petit programme pour Node, qui peut contrôler les GPIO du Raspberry Pi.

Un serveur NodeJS est une condition préalable pour de nombreuses applications différentes, telles que HomeBridge. De nombreux autres projets, pour lesquels un serveur est nécessaire, peuvent également être réalisés avec un Raspberry Pi et NodeJS.

Matériel utilisé

En raison des meilleures performances par rapport aux versions précédentes et en particulier en raison de l’architecture ARMv8, je recommande un Raspberry Pi 3. De plus, votre routeur doit prendre en charge la redirection de port, si vous souhaitez appeler les applications en dehors de votre réseau domestique. Je recommande pour cela une FRITZ! Box ou similaire.

Afin de pouvoir reproduire le petit exemple à la fin, le matériel suivant est également requis:

De plus, je recommande d’utiliser l’accès SSH, ainsi que de manière optimale à partir d’un service FTP, pour simplement transférer des fichiers vers le Raspberry Pi.

Installation de Node.JS sur le Raspberry Pi

Avant d’installer Node, nous mettons à jour les packages et les sources de packages pour avoir tout ce dont vous avez besoin:

sudo apt-get update
sudo apt-get full-upgrade

Le processus peut prendre un certain temps. Étant donné que Node.JS n’est pas dans les sources de package prédéfinies, nous devons d’abord l’ajouter. La dernière version de LTS peut être consultée sur le Site Web de Node.JS et adapté en conséquence.

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Maintenant, nous pouvons facilement installer Node via le gestionnaire de paquets interne, ce qui peut prendre un peu de temps:

sudo apt-get install -y nodejs

Premier test

Si l’installation s’est déroulée sans problème, nous pouvons simplement écrire ce qui suit dans la console pour voir si tout a fonctionné:

node --version

le dernière version devrait maintenant être affiché.

Commençons maintenant par un petit Bonjour le monde! programme. Nous créons un nouveau fichier.

sudo nano hello-world.js

Ici, nous ajoutons le contenu suivant:

Nous enregistrons et fermons ensuite l’éditeur (CTRL + O, CTRL + X). Vous pouvez maintenant démarrer le serveur simplement en entrant les informations suivantes dans le terminal:

node hello-world.js

Vous pouvez maintenant afficher la page dans le navigateur. Saisissez l’IP de votre Pi dans le réseau, y compris le port (par exemple, 192.168.1.68:8000) ou (si votre routeur le prend en charge) simplement le nom de l’hôte, y compris le port. Pour moi, c’est http: // raspberrypi: 8000 /

node-js-hello-world-preview

PS: Nous utilisons le port 8000 dans cet exemple. Le port par défaut pour les serveurs Web est 80. Cependant, Node.js nécessite privilèges root pour les ports inférieurs à 1 000.

Si vous souhaitez accéder en permanence au serveur depuis l’extérieur de votre réseau domestique, il est judicieux d’installer un serveur DNS. Bien sûr, les ports sélectionnés doivent également être sélectionnés et activés dans votre routeur via la redirection de port pour l’adresse IP interne de votre Raspberry Pi.

NPM – Gestionnaire de packages NodeJS

Avec l’aide du NPM (Node.js Package Manager), des bibliothèques supplémentaires peuvent être facilement installées et utilisées dans un projet de nœud. En règle générale, un projet créé a un fichier nommé «package.json» dans le répertoire racine. Dans ce fichier, des «dépendances» sont utilisées pour spécifier les packages utilisés (minimum requis). Si vous utilisez / téléchargez un autre projet, les packages requis doivent d’abord être installés. Pour ce faire, accédez au répertoire où se trouve le package.json et entrez:

npm install

Tous les packages nécessaires sont installés. Cependant, il n’est pas absolument nécessaire que vous saisissiez manuellement vos packages utilisés. Si vous souhaitez utiliser un nouveau package (dans notre cas, il est rpio) vous pouvez spécifier le paramètre --save et le package sera automatiquement ajouté au fichier package.json:

npm install rpio --save

Pour de plus amples instructions et explications, vous pouvez consulter le Documentation NPM.

Contrôlez les GPIO Raspberry Pi via l’interface Web

Si votre exemple de fichier est toujours en cours d’exécution, vous pouvez le terminer en appuyant sur CTRL + C.

J’ai écrit une petite application qui vous permet de contrôler vos GPIO via l’interface web (navigateur PC de bureau, smartphone, tablette). Comme ce n’est qu’un petit exemple, la sortie ne peut être contrôlée. Cependant, il est également facile de définir des GPIO comme entrées et de les lire. Comme base j’ai pris le paquet NPM rpio.

Pour un test simple, vous pouvez cloner le GitHub paquet:

git clone https://github.com/tutRPi/Raspberry-Pi-Simple-Web-GPIO-GUI
cd Raspberry-Pi-Simple-Web-GPIO-GUI

Avant de démarrer le serveur, les autres packages doivent être installés:

npm install

Le serveur Raspberry Pi Node.JS peut alors être démarré. Puisque nous utilisons les GPIO, nous devons le démarrer avec sudo. J’ai donc décidé d’exécuter le serveur sur le port 80, car nous pouvons facilement y accéder via le nom d’hôte ou l’IP interne du Pi sans spécifier le port. La condition préalable est que rien d’autre ne fonctionne sur ce port (comme Apache2). Nous commençons donc maintenant:

sudo npm start

De retour dans le navigateur Web, vous pouvez voir l’interface utilisateur pour contrôler les GPIO (aucun port requis). Pour cela, il faut dire que les GPIO sont initialement affichés comme «OFF», même si une autre application a préalablement connecté l’une des broches. En effet, la bibliothèque ne peut malheureusement pas lire l’état de sortie des GPIO. Bien que vous puissiez démarrer l’application Web tous les GPIO au bas niveau, mais j’ai décidé de ne pas le faire. Si cela vous dérange, vous êtes libre de le régler.

Raspberry Pi Node.js Webserver installieren und GPIOs schalten

De plus, je l’ai enregistré pour montrer à quoi ressemblerait le contrôle via l’interface Web. Si vous souhaitez voir la structure du circuit d’échantillonnage, vous pouvez le faire ici. Fondamentalement, cependant, c’est assez simple, car une LED avec une résistance en série était simplement attachée aux GPIO individuels (contrôlables).

YouTube video

Démarrage automatique du serveur Raspberry Pi Node.js

Enfin, nous voulons démarrer le serveur automatiquement après le redémarrage du Raspberry Pi. Sinon, le serveur se terminerait à l’arrêt et vous devriez être réactivé manuellement.

Avant de pouvoir créer l’entrée pour un démarrage automatique à partir de notre application serveur, nous devons trouver le chemin où se trouve le nœud (par défaut, c’est /usr/bin/node).

pi@raspberrypi:~ $ which node
/usr/bin/node

Maintenant, nous avons besoin du chemin complet où notre fichier javascript (app.js) est situé. En utilisant ls, nous pouvons afficher les fichiers présents dans le dossier et avec pwd le chemin.

Ces deux valeurs sont copiées pour créer maintenant une nouvelle entrée:

sudo crontab -e

À la fin de ce fichier, des entrées peuvent être ajoutées, qui sont exécutées par exemple après un redémarrage ou à un certain moment. Pour démarrer notre application automatiquement après le redémarrage, nous ajoutons la ligne suivante à la fin du fichier (si nécessaire, ajustez les chemins):

@reboot sudo /usr/bin/node /home/pi/Raspberry-Pi-Simple-Web-GPIO-GUI/app.js &

Enregistrez-le avec CTRL + O et quittez avec CTRL + X (Nano Editor). Pour vérifier si tout a fonctionné, vous pouvez redémarrer le Raspberry Pi (sudo reboot), puis appelez à nouveau l’URL dans votre navigateur. Si la page s’affiche, tout a fonctionné.

Les applications que vous pouvez exécuter sur votre serveur Raspberry Pi Node.JS sont presque illimitées. Du contrôle GPIO pur, en passant par une surface pour la domotique au serveur de surveillance pour des services ou capteurs individuels. En raison de la faible consommation d’énergie du Raspberry Pi et de ses performances relativement élevées, le Raspberry Pi est un serveur idéal pour les petits projets (hobby).