Je veux installer node.js sur un Raspberry Pi car je voudrais disposer d’un serveur capable de diffuser des travaux d’art numérique (qui utilisent du javascript et la bibliothèque p5.js). C’est aussi une installation qui me servira à tester différents capteurs connectés à un Raspberry Pi pour des projets de domotique. J’en parlerai dans les prochains articles de cette série, .
Dans cet article je vais me concentrer sur l’installation de node.js. Je parlerai plus tard d’expériences que je réaliserai ensuite en art numérique ou domotique.
Préparer un Raspberry Pi avec Raspbian
Je dispose d’un Raspberry Pi 3 B+ qui fonctionnait sous Raspbian Stretch lite. J’y ai installé Raspbian Buster « with desktop and recommanded software ». C’est possible sous réserve d’avoir une carte SD de 8 Go au moins (avec 4Go, la carte est occupée à 85% dès l’installation de Raspbian).
L’installation a été réalisée sur la base de mon article « Mise en service d’un Raspberry Pi« . Le Pi est connecté en ethernet mais dispose aussi d’une connexion wifi. Son nom est Pi-ArtNum-01.
Qu’est-ce que node.js (et npm)
Je ne suis pas une experte, ce que je dis doit être pris avec des pincettes ! Ma source principale a été cette page de OpenClassRoom et aussi cet article, beaucoup plus concret mais en anglais. Node.js est un moyen de faire du JavaScript en dehors du navigateur, par exemple pour générer des pages web. Node.js est open source et compatible avec la plupart des plateforme.
et node.js est inséparable de npm le système de gestion de paquets de node.js. Ce que je comprends c’est que c’est le système qui gère les « extensions » de node.js.
et NodeRed ???
Pour savoir à quoi sert nodered, voir cet article de projetdiy.fr. nodeRED est une application reposant sur Node.js qui permet de programmer graphiquement des composants dans un environnement Web (source cet article de blog.ippon.fr). Pour l’instant nous ne nous y intéresserons pas, même s’il est déjà installé sur notre Raspberry Pi (essayez de taper node-red -v
dans l’invite de commande).
Installation d’une version récente de node.js
Je vais avoir besoin des dernières versions de node.js et npm. Commençons par déterminer si j’ai ces programmes et dans quelle version avec les commandes node -v
et npm -v
.
C’est une version assez ancienne. Je vais donc aller chercher la version 13 et mettre npm à jour si nécessaire. Mes deux sources pour accomplir cela étaient Beginner’s Guide to Installing Node.js on a Raspberry Pi et Upgrade Node.js/npm in Raspbian on Raspberry Pi.
Il faut « ajouter la source de node version 13 à nos dépôts de paquets Debian ». Je crois que ça signifie donner l’adresse de cette version à Linux !
curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
Maintenant je peux installer node
apt-get install -y nodejs
et maintenant node -v
renvoie v13.12.0
.
Il faut aussi mettre à jour npm. S’il n’était pas installé au préalable, on tapera d’abord la commande apt-get install -y npm
.
npm install -g npm@latest
On vérifie ensuite avec npm -v
, qui nous renvoie le numéro de version actuel, pour moi 6.14.4.
Installation d’un serveur HTTP
npm install -g http-server
Et ça y est nous avons un serveur !
tester le système avec un script p5.js
avec editor de p5.js téléchargement d’un script https://editor.p5js.org/p5/sketches/Hello_P5:_drawing
Le dézipper puis le placer dans le répertoire home/al/ Hello_P5_drawing_2020_04_12_07_55_16 avec filezilla. Et maintenant regardons quel est son chemin exact sur le Pi :
cd /home/al
cd p5jsFiles
cd Hello_P5_drawing_2020_04_12_07_55_16
ls
Nota si j’étais entrée comme al, cd ~ ou seulement cd m’enverrait directmeent sur /home/al
Maintenant lancer le serveur http avec http-server, en étant dans le répertoire du script précédent
Dans un navigateur internet je peux en principe accéder au serveur avec l’une des trois adresses HTTP proposées. Dans mon cas je suis en accès distant (SSH) et la première adresse ne fonctionne pas. Par contre les deux autres adresses sont celles du Pi (en connexion ethernet et en connexion wifi). Si je tape http://192.168.1.100:8080
, j’ai un message d’erreur d’abord et lorsque je recommence, mon canevas apparaît à l’écran du navigateur tandis que divers message apparaissent dans la console pi !
Et si je bouge ma souris dans le canevas, le script Hello P5 drawing fonctionne !
Donc ca y est j’ai réussi à servir des fichiers p5.js sur mon pi.
Autres utilisations possibles de node.js sur mon raspberry pi
Si je veux disposer de plusieurs serveurs (plusieurs nodes ou processus), il va falloir trouver un système qui permet de lancer simultanément des serveurs http sur plusieurs ports distincts. C’est ce que font les auteurs des articles suivants :
- Multi-node: Concurrent NodeJS HTTP Server ;
- Hosting multiple apps on the same server — Implement a reverse proxy with Node ;
- running node.js http server on multiple ports.
Sur les Capteurs ou arduino
- https://itp.nyu.edu/physcomp/labs/labs-serial-communication/lab-arduino-and-p5js-using-a-raspberry-pi/
- http://www.v-labs.fr/article/tuto-capteur-de-mouvements-photos-sur-arduino-raspberry-b
Pour créer un serveur web visible depuis l’extérieur :
Et enfin sur l’utilisation de nodeRed
Et maintenant
Je ne sais pas encore ce que je veux faire. Mon souhait est de pouvoir brancher un Pi à une télévision et le laisser tout seul pour exposer des travaux numériques. Et ensuite, je pourrai y connecter des capteurs divers pour que les scripts interagissent avec les visiteurs ou le contexte. A suivre donc dans la série !
Une piste, c’est de suivre le tutoriel de W3 School , en anglais, sur les entrées / Sorties du Raspberry Pi.