Node-RED: Pradžia
Kaip pradėti naudotis Node-RED
👋 Sveiki atvykę į Stackhero dokumentaciją!
Stackhero siūlo paruoštą naudoti Node-RED cloud sprendimą, kuris suteikia daugybę privalumų, įskaitant:
- Įtrauktas MQTT serveris (Mosquitto).
- Pilna prieiga prie Node-RED administravimo sąsajos.
- Įtrauktas Node-RED Dashboard.
- Įtrauktas neribotas ir dedikuotas SMTP el. pašto serveris.
- Lengvi atnaujinimai vienu paspaudimu.
- Pritaikomas domeno vardas, apsaugotas HTTPS (pavyzdžiui, https://node-red.jusu-imone.com).
- Optimali veikla ir tvirta sauga, užtikrinta privačia ir dedikuota VM.
Taupykite laiką ir supaprastinkite savo gyvenimą: tereikia 5 minučių, kad išbandytumėte Stackhero Node-RED cloud hosting sprendimą!
Kaip siųsti el. pašto pranešimus
Kiekviena Node-RED instancija Stackhero turi savo dedikuotą el. pašto serverį. Šis serveris leidžia siųsti neribotus el. pašto pranešimus vos keliais paspaudimais.
Norėdami pradėti siųsti el. laiškus iš savo Node-RED instancijos, pridėkite "email" mazgą į savo srautą. Pastebėsite du el. pašto mazgus mazgų sąraše. Pasirinkite tą, kuris turi pašto ikoną dešinėje. Pridėjus, mazgas automatiškai bus pavadintas "Stackhero integrated email server" ir bus iš anksto sukonfigūruotas.
Dukart spustelėkite el. pašto mazgą ir įveskite savo el. pašto adresą į lauką "To:". Geriausia palikti kitus nustatymus nepakeistus.
Tada pridėkite "inject" mazgą į savo srautą ir prijunkite jį prie el. pašto mazgo. Dukart spustelėkite inject mazgą (pagal numatymą pavadintą "timestamp"), pasirinkite "string" kaip payload tipą ir įveskite "This is an email from Node-RED" kaip payload.
Peržiūrėkite savo mazgų konfigūracijas, įdiekite savo srautą ir spustelėkite veiksmų ikoną ant inject mazgo. Tada patikrinkite savo el. pašto dėžutę, kad pamatytumėte el. laišką, išsiųstą iš Node-RED!
Patarimas: Galite siųsti el. laiškus keliems gavėjams, atskirdami kiekvieną el. paštą kabliataškiu lauke "To:".
Kaip naudoti Node.js natūralius modulius
Node-RED funkcijose bandymas tiesiogiai naudoti Node.js natūralų modulį sukelia klaidą ReferenceError: require is not defined. Taip yra todėl, kad Node-RED neleidžia tiesiogiai naudoti Node.js modulio funkcijos viduje.
Norėdami tai išspręsti, šie moduliai buvo integruoti į Node-RED globalų kontekstą. Galite juos pasiekti naudodami context.global.
Pavyzdžiui, jei jums reikia crypto modulio, deklaruokite jį taip:
const { crypto } = context.global;
Galimi šie Node.js moduliai: util, buffer, child_process, crypto, fs, os, http, http2, https, ir zlib.
Prisijungimas prie MySQL arba MariaDB duomenų bazės
Mes sukūrėme mazgą, skirtą prisijungti prie MySQL serverio, kuris yra visiškai suderinamas su nauja MySQL 8 autentifikavimo sistema "Caching SHA2 Password", taip pat su MariaDB.
MySQL/MariaDB mazgas
Daugiau informacijos rasite oficialiame saugykloje. Norėdami įdiegti šį mazgą savo Node-RED instancijoje, tiesiog ieškokite stackhero Node-RED valdymo skydelio skiltyje "Manage palette".
Prisijungimas prie InfluxDB v2 duomenų bazės
Mes siūlome mazgą, skirtą prisijungti prie InfluxDB v2 duomenų bazės. Šis mazgas leidžia rašyti duomenis ir vykdyti užklausas naudojant Flux kalbą.
InfluxDb-v2 mazgas
Papildoma informacija yra oficialioje saugykloje. Norėdami jį pridėti prie savo Node-RED instancijos, ieškokite stackhero skiltyje "Manage palette".
Kaip sugauti ir registruoti Node-RED mazgų klaidas
Kartais mazgai gali generuoti klaidas. Praktinis sprendimas yra sukurti "catch all debug" srautą, kad stebėtumėte šias klaidas.
Node-RED klaidų sugavimo srauto pavyzdys
Norėdami tai nustatyti, pridėkite catch mazgą ir prijunkite jį prie debug mazgo. Sujunkite debug mazgą, kad jis išvestų visą msg objektą. Ši konfigūracija registruoja kiekvieną klaidą, generuotą sraute, Node-RED debug lange.
Node-RED mazgo klaidos sugavimo pavyzdys
catchmazgas suaktyvinamas tik dėl klaidų iš mazgų tame pačiame sraute. Jei naudojate kelis srautus (arba skirtukus), turėsite pridėticatchirdebugmazgus į kiekvieną srautą.
Duomenų saugojimas failų sistemoje
Stackhero for Node-RED siūlo vietinę saugyklą, kur jūsų mazgai gali saugoti failus. Ši saugykla yra /persistent/storage/ kataloge.
įspėjimas Niekada nenaudokite kitos vietos savo vietinei saugyklai nei
/persistent/storage/subkatalogas. Jei naudosite kitą katalogą, prarasite savo duomenis, kai pritaikysite Node-RED atnaujinimą!
Mazgo konfigūracija vietiniams duomenims saugoti
Šiame pavyzdyje naudosime node-red-node-sqlite mazgą. Šis mazgas reikalauja katalogo savo duomenims saugoti.
Turėsite apibrėžti failą kataloge /persistent/storage/, pavyzdžiui, /persistent/storage/myDatabase.sqlite.
SQLite konfigūracijos pavyzdys Node-RED
Failų saugojimas
Jei reikia saugoti duomenis vietoje, galite rašyti failus į /persistent/storage/ katalogą. Kai kurie Node-RED duomenys jau gali būti šiame kataloge. Kad išvengtumėte konfliktų, rekomenduojama naudoti subkatalogus, pavyzdžiui, /persistent/storage/myFlowData, savo failams saugoti.
Norėdami sukurti šį katalogą naudodami Node.js, vykdykite šį kodą savo mazge:
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
pranešimas Jei planuojate saugoti daugiau nei kelis failus, rekomenduojame naudoti objektų saugyklos serverį. Objektų saugyklos serveriai palengvina failų valdymą, dalijimąsi ir prieigą per API, kaip su S3 protokolu. Apsvarstykite MinIO paslaugą, kurią siūlo Stackhero šiam tikslui, suteikiančią S3 suderinamą objektų saugyklos serverį vos per 2 minutes.
Naudoti HTTP mazgą su iFrame
Naudojant iFrame turiniui užklausti per HTTP mazgą, numatytasis antraštė X-Frame-Options: SAMEORIGIN gali neleisti puslapiui būti rodomam. Pradedant nuo Node-RED versijos 1.2.2-0, galite pakeisti šią numatytąją antraštę.
Norėdami tai padaryti, nustatykite antraštę X-Frame-Options į null savo HTTP atsako mazge. Pavyzdžiui:
msg.headers = { "X-Frame-Options": null };
Mazgo, nustatančio antraštę X-Frame-Options, pavyzdys
Galite atsisiųsti šį srauto pavyzdį ir importuoti jį į savo Node-RED instanciją, kad išbandytumėte funkciją.
Atkreipkite dėmesį, kad taip pat galite apriboti leidžiamus domenus naudodami antraštes Content-Security-Policy: frame-ancestors <source> arba X-Frame-Options: ALLOW-FROM <source>.
Saugus režimas: Node-RED srautų klaidų sprendimas (502 klaida)
Jei susiduriate su 502 klaida, kai bandote pasiekti savo administratoriaus skydelį, pradėkite nuo savo instancijos žurnalų patikrinimo. Šiuos žurnalus galite rasti Stackhero skydelyje, skirtuke "Logs", pasirinkę savo Node-RED paslaugą.
Žurnalai gali turėti Node-RED klaidų, kurios neleidžia jam tinkamai paleisti. Surinkite kuo daugiau informacijos, kad padėtumėte ištaisyti savo srautus.
Peržiūrėję savo žurnalus, eikite į savo paslaugos konfigūraciją Stackhero skydelyje ir įjunkite "Saugus režimas" parinktį. Saugus režimas leidžia Node-RED paleisti be automatinio srautų paleidimo.
Tai leidžia jums pasiekti administratoriaus skydelį, ištaisyti savo srautų klaidas ir įdiegti pakeitimus. Kai viskas veikia sklandžiai, nepamirškite išjungti saugaus režimo savo paslaugos konfigūracijoje, kad jūsų srautai automatiškai pradėtų veikti Node-RED paleidimo metu.
Mazgo versija paletės valdytojuje yra senesnė nei NPM
Jei bandote įdiegti mazgą naudodami Paletės valdytoją, bet pastebite, kad versija yra senesnė nei NPM, tai greičiausiai reiškia, kad mazgo kūrėjas neatnaujino versijos Node-RED svetainėje.
Anksčiau mazgų versijos buvo automatiškai atnaujinamos, kad atspindėtų NPM paskelbtą versiją. Tai nebėra taip.
Gera žinia yra ta, kad galite paskatinti Node-RED svetainę atnaujinti versiją. Tiesiog eikite į https://flows.nodered.org/add/node, įveskite NPM modulio pavadinimą (pavyzdžiui, node-red-contrib-xxx), ir spustelėkite "Add" mygtuką. Baigę, grįžkite į savo Node-RED skydelį ir atidarykite Paletės valdytoją. Atnaujinta versija turėtų būti matoma ir paruošta diegimui.
Klaidos "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c" tvarkymas
Jei matote šią klaidą siųsdami el. laišką, tai greičiausiai dėl to, kad pasirinkote "Use secure connection" parinktį savo el. pašto mazgo konfigūracijoje.
Kadangi Stackhero el. pašto serveris ir Node-RED serveris veikia toje pačioje instancijoje, jie bendrauja lokaliai, todėl nereikia naudoti TLS (SSL) šifravimo. Įjungus saugaus ryšio parinktį, Node-RED naudoja TLS bendrauti su el. pašto serveriu, dėl ko atsiranda SSL klaida apie "wrong version number".
Atkreipkite dėmesį, kad jei gavėjo serveris palaiko šifravimą, el. laiškas bus automatiškai užšifruotas su TLS. Tai buvo iš anksto sukonfigūruota jums.