Node-RED: Iniziare
Come iniziare con Node-RED
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Node-RED cloud pronta all'uso che fornisce numerosi vantaggi, tra cui:
- Server MQTT incluso (Mosquitto).
- Accesso completo all'interfaccia admin di Node-RED.
- Dashboard di Node-RED inclusa.
- Server email SMTP illimitato e dedicato incluso.
- Aggiornamenti senza sforzo con un solo clic.
- Nome di dominio personalizzabile sicuro con HTTPS (ad esempio, https://node-red.tua-azienda.com).
- Prestazioni ottimali e sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplifica la tua vita: bastano 5 minuti per provare la soluzione Node-RED cloud hosting di Stackhero!
Come inviare notifiche email
Ogni istanza di Node-RED su Stackhero è dotata del proprio server email dedicato. Questo server consente di inviare notifiche email illimitate con pochi clic.
Per iniziare a inviare email dalla tua istanza Node-RED, aggiungi un nodo "email" al tuo flusso. Noterai due nodi email nell'elenco dei nodi. Scegli quello con l'icona della posta a destra. Una volta aggiunto, il nodo verrà automaticamente nominato "Stackhero integrated email server" ed è preconfigurato.
Fai doppio clic sul nodo email e inserisci il tuo indirizzo email nel campo "To:". È meglio lasciare invariati gli altri parametri.
Successivamente, aggiungi un nodo "inject" al tuo flusso e collegalo al nodo email. Fai doppio clic sul nodo inject (denominato "timestamp" per impostazione predefinita), seleziona "string" come tipo di payload e inserisci "This is an email from Node-RED" come payload.
Rivedi le configurazioni dei tuoi nodi, distribuisci il tuo flusso e fai clic sull'icona di azione sul nodo inject. Quindi controlla la tua casella di posta per visualizzare l'email inviata da Node-RED!
Suggerimento: Puoi inviare email a più destinatari separando ogni email con un punto e virgola nel campo "To:".
Come richiedere moduli nativi di Node.js
Nelle funzioni Node-RED, tentare di richiedere un modulo nativo di Node.js direttamente risulta nell'errore ReferenceError: require is not defined. Questo perché Node-RED non consente di richiedere un modulo Node.js direttamente all'interno di una funzione.
Per risolvere questo problema, questi moduli sono stati integrati nel contesto globale di Node-RED. Puoi accedervi utilizzando context.global.
Ad esempio, se hai bisogno del modulo crypto, dichiaralo così:
const { crypto } = context.global;
I seguenti moduli Node.js sono disponibili: util, buffer, child_process, crypto, fs, os, http, http2, https, e zlib.
Connessione a un database MySQL o MariaDB
Abbiamo sviluppato un nodo per connettersi a un server MySQL che è completamente compatibile con il nuovo sistema di autenticazione di MySQL 8, "Caching SHA2 Password", così come con MariaDB.
Nodo MySQL/MariaDB
Per ulteriori dettagli, visita il repository ufficiale. Per installare questo nodo sulla tua istanza Node-RED, cerca semplicemente stackhero nella sezione Gestisci palette del tuo dashboard Node-RED.
Connessione a un database InfluxDB v2
Offriamo un nodo progettato per connettersi a un database InfluxDB v2. Questo nodo ti consente di scrivere dati ed eseguire query utilizzando il linguaggio Flux.
Nodo InfluxDb-v2
Ulteriori informazioni sono disponibili sul repository ufficiale. Per aggiungerlo alla tua istanza Node-RED, cerca stackhero nella sezione Gestisci palette.
Come catturare e registrare errori dai nodi Node-RED
A volte, i nodi possono generare errori. Una soluzione pratica è configurare un flusso "catch all debug" per monitorare questi errori.
Esempio di flusso di cattura errori Node-RED
Per configurarlo, aggiungi un nodo catch e collegalo a un nodo debug. Configura il nodo debug per visualizzare l'oggetto msg completo. Questa configurazione registra ogni errore generato nel flusso nella finestra di debug di Node-RED.
Esempio di errore di nodo Node-RED catturato
Un nodo
catchviene attivato solo da errori provenienti da nodi nello stesso flusso. Se utilizzi più flussi (o schede), dovrai aggiungere i nodicatchedebuga ciascun flusso.
Memorizzare dati sul filesystem
Stackhero per Node-RED offre uno storage locale dove i tuoi nodi possono memorizzare file. Questo storage si trova nella directory /persistent/storage/.
avviso Non utilizzare mai un'altra destinazione per il tuo storage locale se non una sottodirectory di
/persistent/storage/. Se utilizzi un'altra directory, perderai i tuoi dati quando applichi un aggiornamento di Node-RED!
Configurazione del nodo per memorizzare dati locali
In questo esempio, utilizzeremo il nodo node-red-node-sqlite. Questo nodo richiede una directory per memorizzare i suoi dati.
Dovrai definire un file nella directory /persistent/storage/, ad esempio, /persistent/storage/myDatabase.sqlite.
Esempio di configurazione SQLite su Node-RED
Memorizzare file
Se hai bisogno di memorizzare dati localmente, puoi scrivere file nella directory /persistent/storage/. Alcuni dati di Node-RED potrebbero già essere presenti in questa directory. Per evitare conflitti, è consigliato utilizzare sottodirectory, ad esempio, /persistent/storage/myFlowData, per memorizzare i tuoi file.
Per creare questa directory utilizzando Node.js, esegui il seguente codice nel tuo nodo:
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
avviso Se prevedi di memorizzare più di pochi file, ti consigliamo di utilizzare un server di storage oggetti. I server di storage oggetti facilitano la gestione, la condivisione e l'accesso ai file tramite un'API, come con il protocollo S3. Considera il servizio MinIO disponibile su Stackhero per questo scopo, che ti offre un server di storage oggetti compatibile S3 in soli 2 minuti.
Utilizzare un nodo HTTP con un iFrame
Quando si utilizza un iFrame per richiedere contenuti tramite un nodo HTTP, l'intestazione predefinita X-Frame-Options: SAMEORIGIN potrebbe impedire la visualizzazione della pagina. A partire dalla versione 1.2.2-0 di Node-RED, puoi sovrascrivere questa intestazione predefinita.
Per farlo, imposta l'intestazione X-Frame-Options su null sul tuo nodo di risposta HTTP. Ad esempio:
msg.headers = { "X-Frame-Options": null };
Esempio di un nodo che imposta l'intestazione X-Frame-Options
Puoi scaricare questo esempio di flusso e importarlo nella tua istanza Node-RED per testare la funzionalità.
Nota che puoi anche limitare i domini consentiti utilizzando le intestazioni Content-Security-Policy: frame-ancestors <source> o X-Frame-Options: ALLOW-FROM <source>.
Modalità sicura: risolvere errori di flussi Node-RED (errore 502)
Se incontri un errore 502 quando accedi al tuo dashboard amministrativo, inizia controllando i log della tua istanza. Puoi trovare questi log nel dashboard Stackhero sotto la scheda "Logs" dopo aver selezionato il tuo servizio Node-RED.
I log possono contenere errori di Node-RED che impediscono l'avvio corretto. Raccogli quante più informazioni possibili per aiutare a debugare i tuoi flussi.
Dopo aver esaminato i tuoi log, vai alla configurazione del tuo servizio nel dashboard Stackhero e abilita l'opzione "Modalità sicura". In modalità sicura, Node-RED si riavvierà senza avviare automaticamente i tuoi flussi.
Questo ti consente di accedere al dashboard amministrativo, correggere i tuoi errori di flusso e distribuire le tue modifiche. Una volta che tutto funziona correttamente, ricorda di disabilitare la modalità sicura nella configurazione del tuo servizio in modo che i tuoi flussi si avviino automaticamente al riavvio di Node-RED.
Versione del nodo nel gestore palette più vecchia rispetto a quella su NPM
Se provi a installare un nodo utilizzando il Gestore Palette ma noti che la versione è più vecchia di quella su NPM, probabilmente significa che il creatore del nodo non ha aggiornato la versione sul sito di Node-RED.
In precedenza, le versioni dei nodi venivano aggiornate automaticamente per riflettere la versione pubblicata su NPM. Questo non è più il caso.
La buona notizia è che puoi sollecitare il sito di Node-RED ad aggiornare la versione. Vai semplicemente su https://flows.nodered.org/add/node, inserisci il nome del modulo NPM (ad esempio, node-red-contrib-xxx), e fai clic sul pulsante "Add". Una volta completato, torna al tuo dashboard Node-RED e apri il Gestore Palette. La versione aggiornata dovrebbe ora essere visibile e pronta per l'installazione.
Gestire l'errore "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c"
Se vedi questo errore quando invii un'email, è probabile che tu abbia selezionato l'opzione "Use secure connection" nella configurazione del tuo nodo email.
Poiché il server email Stackhero e il server Node-RED funzionano sulla stessa istanza, comunicano localmente, quindi non è necessario utilizzare la crittografia TLS (SSL). Abilitare l'opzione di connessione sicura fa sì che Node-RED utilizzi TLS per comunicare con il server email, portando all'errore SSL riguardante un "wrong version number".
Si prega di notare che se il server destinatario supporta la crittografia, l'email verrà automaticamente crittografata con TLS. Questo è stato preconfigurato per te.