Node-RED: Premiers pas
Comment débuter avec Node-RED
👋 Bienvenue sur la documentation de Stackhero !
Stackhero propose une solution Node-RED cloud prête à l'emploi qui offre de nombreux avantages, notamment :
- Serveur MQTT inclus (Mosquitto).
- Accès complet à l'interface d'administration Node-RED.
- Dashboard Node-RED inclus.
- Serveur SMTP email dédié et illimité inclus.
- Mises à jour simplifiées en un clic.
- Nom de domaine personnalisable sécurisé en HTTPS (par exemple, https://node-red.votre-entreprise.com).
- Performance optimale et sécurité renforcée grâce à une VM privée et dédiée.
Gagnez du temps et simplifiez-vous la vie : il suffit de 5 minutes pour essayer la solution Node-RED cloud hosting de Stackhero !
Comment envoyer des notifications par e-mail
Chaque instance Node-RED sur Stackhero dispose de son propre serveur e-mail dédié. Ce serveur vous permet d'envoyer un nombre illimité de notifications par e-mail en quelques clics.
Pour commencer à envoyer des e-mails depuis votre instance Node-RED, ajoutez un nœud "email" à votre flow. Vous verrez deux nœuds email dans la liste des nœuds. Choisissez celui avec l'icône de mail à droite. Une fois ajouté, le nœud sera automatiquement nommé "Stackhero integrated email server" et il est déjà préconfiguré.
Double-cliquez sur le nœud email et saisissez votre adresse e-mail dans le champ "To:". Il est préférable de laisser les autres paramètres inchangés.
Ensuite, ajoutez un nœud "inject" à votre flow et reliez-le au nœud email. Double-cliquez sur le nœud inject (nommé "timestamp" par défaut), sélectionnez "string" comme type de payload, puis saisissez "This is an email from Node-RED" comme payload.
Vérifiez la configuration de vos nœuds, déployez votre flow, puis cliquez sur l'icône d'action du nœud inject. Consultez ensuite votre boîte de réception pour voir l'e-mail envoyé depuis Node-RED !
Tip: Vous pouvez envoyer des e-mails à plusieurs destinataires en séparant chaque adresse e-mail par un point-virgule dans le champ "To:".
Comment utiliser des modules natifs Node.js
Dans les fonctions Node-RED, tenter d'utiliser directement un module natif Node.js avec require entraîne l'erreur ReferenceError: require is not defined. Cela s'explique par le fait que Node-RED n'autorise pas l'utilisation directe de require dans une fonction.
Pour contourner cela, ces modules ont été intégrés dans le contexte global de Node-RED. Vous pouvez y accéder via context.global.
Par exemple, si vous avez besoin du module crypto, déclarez-le ainsi :
const { crypto } = context.global;
Les modules Node.js suivants sont disponibles : util, buffer, child_process, crypto, fs, os, http, http2, https et zlib.
Connexion à une base de données MySQL ou MariaDB
Nous avons développé un nœud permettant de se connecter à un serveur MySQL, entièrement compatible avec le nouveau système d'authentification de MySQL 8, "Caching SHA2 Password", ainsi qu'avec MariaDB.
Nœud MySQL/MariaDB
Pour plus de détails, consultez le dépôt officiel. Pour installer ce nœud sur votre instance Node-RED, il suffit de rechercher stackhero dans la section Manage palette de votre tableau de bord Node-RED.
Connexion à une base de données InfluxDB v2
Nous proposons un nœud conçu pour se connecter à une base InfluxDB v2. Ce nœud vous permet d'écrire des données et d'effectuer des requêtes en utilisant le langage Flux.
Nœud InfluxDb-v2
Des informations complémentaires sont disponibles sur le dépôt officiel. Pour l'ajouter à votre instance Node-RED, recherchez simplement stackhero dans la section Manage palette.
Comment capturer et enregistrer les erreurs des nœuds Node-RED
Il arrive que des nœuds génèrent des erreurs. Une solution efficace consiste à mettre en place un flow "catch all debug" pour surveiller ces erreurs.
Exemple de flow Node-RED pour capturer les erreurs
Pour cela, ajoutez un nœud catch et reliez-le à un nœud debug. Configurez le nœud debug pour afficher l'objet msg complet. Cette configuration permet de consigner chaque erreur générée dans le flow dans la fenêtre de debug de Node-RED.
Exemple d'erreur capturée par un nœud Node-RED
Un nœud
catchne se déclenche que pour les erreurs des nœuds du même flow. Si vous utilisez plusieurs flows (ou onglets), vous devrez ajouter les nœudscatchetdebugà chaque flow.
Stocker des données sur le système de fichiers
Stackhero for Node-RED propose un espace de stockage local où vos nœuds peuvent enregistrer des fichiers. Ce stockage se trouve dans le répertoire /persistent/storage/.
N'utilisez jamais un autre emplacement pour votre stockage local qu'un sous-répertoire de
/persistent/storage/. Si vous utilisez un autre répertoire, vous perdrez vos données lors d'une mise à jour de Node-RED !
Configuration d'un nœud pour stocker des données locales
Dans cet exemple, nous allons utiliser le nœud node-red-node-sqlite. Ce nœud nécessite un répertoire pour stocker ses données.
Vous devrez définir un fichier dans le répertoire /persistent/storage/, par exemple /persistent/storage/myDatabase.sqlite.
Exemple de configuration SQLite sur Node-RED
Stocker des fichiers
Si vous souhaitez stocker des données localement, vous pouvez écrire des fichiers dans le répertoire /persistent/storage/. Certaines données Node-RED peuvent déjà être présentes dans ce répertoire. Pour éviter tout conflit, il est recommandé d'utiliser des sous-répertoires, par exemple /persistent/storage/myFlowData, pour stocker vos fichiers.
Pour créer ce répertoire avec Node.js, exécutez le code suivant dans votre nœud :
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
notice Si vous prévoyez de stocker plus que quelques fichiers, nous vous recommandons d'utiliser un serveur d'object storage. Les serveurs d'object storage facilitent la gestion, le partage et l'accès aux fichiers via une API, comme avec le protocole S3. Pensez au service MinIO disponible sur Stackhero, qui vous permet de disposer d'un serveur d'object storage compatible S3 en seulement 2 minutes.
Utiliser un nœud HTTP avec un iFrame
Lorsque vous utilisez un iFrame pour demander du contenu via un nœud HTTP, l'en-tête par défaut X-Frame-Options: SAMEORIGIN peut empêcher l'affichage de la page. À partir de Node-RED version 1.2.2-0, il est possible de remplacer cet en-tête par défaut.
Pour cela, définissez l'en-tête X-Frame-Options à null sur votre nœud de réponse HTTP. Par exemple :
msg.headers = { "X-Frame-Options": null };
Exemple de nœud définissant l'en-tête X-Frame-Options
Vous pouvez télécharger cet exemple de flow et l'importer dans votre instance Node-RED pour tester cette fonctionnalité.
Notez que vous pouvez également restreindre les domaines autorisés à l'aide des en-têtes Content-Security-Policy: frame-ancestors <source> ou X-Frame-Options: ALLOW-FROM <source>.
Safe mode : résoudre les erreurs de flows Node-RED (erreur 502)
Si vous rencontrez une erreur 502 lors de l'accès à votre tableau de bord d'administration, commencez par consulter les logs de votre instance. Vous trouverez ces logs sur le tableau de bord Stackhero, dans l'onglet "Logs" après avoir sélectionné votre service Node-RED.
Les logs peuvent contenir des erreurs Node-RED qui empêchent son démarrage correct. Rassemblez un maximum d'informations pour faciliter le débogage de vos flows.
Après avoir consulté vos logs, rendez-vous dans la configuration de votre service sur le tableau de bord Stackhero et activez l'option "Safe mode". En mode safe, Node-RED redémarre sans lancer automatiquement vos flows.
Cela vous permet d'accéder au tableau de bord d'administration, de corriger les erreurs de vos flows et de déployer vos modifications. Une fois tout fonctionnel, pensez à désactiver le mode safe dans la configuration de votre service afin que vos flows démarrent automatiquement au prochain redémarrage de Node-RED.
Version du nœud dans le gestionnaire de palette plus ancienne que celle sur NPM
Si vous essayez d'installer un nœud via le Palette Manager mais constatez que la version proposée est plus ancienne que celle disponible sur NPM, cela signifie probablement que le créateur du nœud n'a pas mis à jour la version sur le site Node-RED.
Auparavant, les versions des nœuds étaient automatiquement synchronisées avec celles publiées sur NPM. Ce n'est plus le cas.
La bonne nouvelle, c'est que vous pouvez demander au site Node-RED de rafraîchir la version. Rendez-vous simplement sur https://flows.nodered.org/add/node, saisissez le nom du module NPM (par exemple, node-red-contrib-xxx), puis cliquez sur le bouton "Add". Une fois l'opération terminée, retournez sur votre tableau de bord Node-RED et ouvrez le Palette Manager. La version à jour devrait maintenant apparaître et être prête à l'installation.
Gérer l'erreur "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c"
Si vous voyez cette erreur lors de l'envoi d'un e-mail, c'est probablement parce que vous avez activé l'option "Use secure connection" dans la configuration de votre nœud email.
Comme le serveur e-mail Stackhero et le serveur Node-RED fonctionnent sur la même instance, ils communiquent localement, il n'est donc pas nécessaire d'utiliser le chiffrement TLS (SSL). Activer l'option de connexion sécurisée fait que Node-RED tente d'utiliser TLS pour communiquer avec le serveur e-mail, ce qui provoque l'erreur SSL concernant un "wrong version number".
Sachez que si le serveur destinataire prend en charge le chiffrement, l'e-mail sera automatiquement chiffré avec TLS. Cette configuration est déjà en place pour vous.