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 offrant de nombreux avantages, notamment :
- Serveur MQTT inclus (Mosquitto).
- Accès complet à l'interface admin de Node-RED.
- Dashboard Node-RED inclus.
- Serveur SMTP d'e-mails illimité et dédié inclus.
- Mises à jour sans effort en un clic.
- Nom de domaine personnalisable sécurisé avec HTTPS (par exemple, https://node-red.votre-entreprise.com).
- Performance optimale et sécurité robuste 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 est équipée de son propre serveur e-mail dédié. Ce serveur vous permet d'envoyer des notifications par e-mail illimitées en quelques clics.
Pour commencer à envoyer des e-mails depuis votre instance Node-RED, ajoutez un nœud "email" à votre flow. Vous remarquerez deux nœuds email dans la liste des nœuds. Choisissez celui avec l'icône de courrier à droite. Une fois ajouté, le nœud sera automatiquement nommé "Stackhero integrated email server" et est préconfiguré.
Double-cliquez sur le nœud email et entrez votre adresse e-mail dans le champ "To:". Il est préférable de laisser le reste des paramètres inchangés.
Ensuite, ajoutez un nœud "inject" à votre flow et connectez-le au nœud email. Double-cliquez sur le nœud inject (nommé "timestamp" par défaut), sélectionnez "string" comme type de payload, et entrez "This is an email from Node-RED" comme payload.
Vérifiez vos configurations de nœuds, déployez votre flow, et cliquez sur l'icône d'action sur le nœud inject. Ensuite, vérifiez votre boîte de réception pour voir l'e-mail envoyé depuis Node-RED !
Astuce : Vous pouvez envoyer des e-mails à plusieurs destinataires en séparant chaque e-mail par un point-virgule dans le champ "To:".
Comment utiliser les modules natifs de Node.js
Dans les fonctions Node-RED, essayer de requérir un module natif Node.js directement entraîne l'erreur ReferenceError: require is not defined. Cela est dû au fait que Node-RED ne permet pas de requérir un module Node.js directement à l'intérieur d'une fonction.
Pour résoudre cela, ces modules ont été intégrés dans le contexte global de Node-RED. Vous pouvez y accéder en utilisant 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 pour se connecter à un serveur MySQL qui est 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, visitez le dépôt officiel. Pour installer ce nœud sur votre instance Node-RED, recherchez simplement stackhero dans la section Gérer la 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 de données 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 supplémentaires sont disponibles sur le dépôt officiel. Pour l'ajouter à votre instance Node-RED, recherchez stackhero dans la section Gérer la palette.
Comment capturer et enregistrer les erreurs des nœuds Node-RED
Parfois, les nœuds peuvent générer des erreurs. Une solution pratique est de configurer un flow "catch all debug" pour surveiller ces erreurs.
Exemple de flow de capture d'erreurs Node-RED
Pour configurer cela, ajoutez un nœud catch et connectez-le à un nœud debug. Configurez le nœud debug pour qu'il affiche l'objet msg complet. Cette configuration enregistre chaque erreur générée dans le flow dans la fenêtre de debug de Node-RED.
Exemple d'erreur de nœud Node-RED capturée
Un nœud
catchest uniquement déclenché par des erreurs provenant de nœuds dans le 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 pour Node-RED offre un stockage local où vos nœuds peuvent stocker des fichiers. Ce stockage est situé dans le répertoire /persistent/storage/.
alerte N'utilisez jamais une autre destination 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 de l'application d'une mise à jour de Node-RED !
Configuration du nœud pour stocker des données locales
Dans cet exemple, nous utiliserons 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 avez besoin de stocker des données localement, vous pouvez écrire des fichiers dans le répertoire /persistent/storage/. Certaines données Node-RED pourraient déjà être présentes dans ce répertoire. Pour éviter les conflits, il est recommandé d'utiliser des sous-répertoires, par exemple, /persistent/storage/myFlowData, pour stocker vos fichiers.
Pour créer ce répertoire en utilisant 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 recommandons d'utiliser un serveur de stockage d'objets. Les serveurs de stockage d'objets facilitent la gestion, le partage et l'accès aux fichiers via une API, comme avec le protocole S3. Considérez le service MinIO disponible sur Stackhero à cet effet, qui vous offre un serveur de stockage d'objets compatible S3 en seulement 2 minutes.
Utiliser un nœud HTTP avec un iFrame
Lors de l'utilisation d'un iFrame pour demander du contenu via un nœud HTTP, l'en-tête par défaut X-Frame-Options: SAMEORIGIN pourrait empêcher l'affichage de la page. À partir de la version 1.2.2-0 de Node-RED, vous pouvez remplacer cet en-tête par défaut.
Pour ce faire, définissez l'en-tête X-Frame-Options sur null sur votre nœud de réponse HTTP. Par exemple :
msg.headers = { "X-Frame-Options": null };
Exemple d'un 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 la fonctionnalité.
Notez que vous pouvez également restreindre les domaines autorisés en utilisant les en-têtes Content-Security-Policy: frame-ancestors <source> ou X-Frame-Options: ALLOW-FROM <source>.
Mode sécurisé : 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 administrateur, commencez par vérifier les logs de votre instance. Vous pouvez trouver ces logs dans le tableau de bord Stackhero sous l'onglet "Logs" après avoir sélectionné votre service Node-RED.
Les logs peuvent contenir des erreurs Node-RED qui l'empêchent de démarrer correctement. Collectez autant d'informations que possible pour aider à déboguer vos flows.
Après avoir examiné vos logs, allez dans la configuration de votre service dans le tableau de bord Stackhero et activez l'option "Mode sécurisé". En mode sécurisé, Node-RED redémarrera sans démarrer automatiquement vos flows.
Cela vous permet d'accéder au tableau de bord administrateur, de corriger vos erreurs de flow et de déployer vos modifications. Une fois que tout fonctionne correctement, n'oubliez pas de désactiver le mode sécurisé dans la configuration de votre service afin que vos flows démarrent automatiquement au 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 en utilisant le Gestionnaire de Palette mais que vous remarquez que la version est plus ancienne que celle sur NPM, cela signifie probablement que le créateur du nœud n'a pas mis à jour la version sur le site de Node-RED.
Auparavant, les versions des nœuds étaient automatiquement mises à jour pour refléter la version publiée sur NPM. Ce n'est plus le cas.
La bonne nouvelle est que vous pouvez inciter le site de Node-RED à actualiser la version. Allez simplement sur https://flows.nodered.org/add/node, entrez le nom du module NPM (par exemple, node-red-contrib-xxx), et cliquez sur le bouton "Add". Une fois terminé, retournez à votre tableau de bord Node-RED et ouvrez le Gestionnaire de Palette. La version mise à jour devrait maintenant être visible et prête à être installée.
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 sélectionné l'option "Use secure connection" dans la configuration de votre nœud email.
Étant donné que le serveur e-mail Stackhero et le serveur Node-RED fonctionnent sur la même instance, ils communiquent localement, donc vous n'avez pas besoin d'utiliser le chiffrement TLS (SSL). Activer l'option de connexion sécurisée entraîne l'utilisation de TLS par Node-RED pour communiquer avec le serveur e-mail, ce qui conduit à l'erreur SSL concernant un "wrong version number".
Veuillez noter que si le serveur destinataire prend en charge le chiffrement, l'e-mail sera automatiquement chiffré avec TLS. Cela a été préconfiguré pour vous.