Node-RED: Pierwsze kroki
Jak zacząć z Node-RED
👋 Witamy w dokumentacji Stackhero!
Stackhero oferuje gotowe do użycia rozwiązanie Node-RED cloud, które zapewnia wiele korzyści, w tym:
- Serwer MQTT w zestawie (Mosquitto).
- Pełny dostęp do interfejsu administracyjnego Node-RED.
- Dashboard Node-RED w zestawie.
- Nieograniczony i dedykowany serwer SMTP do e-maili w zestawie.
- Bezproblemowe aktualizacje za pomocą jednego kliknięcia.
- Dostosowywalna nazwa domeny zabezpieczona HTTPS (na przykład, https://node-red.twoja-firma.com).
- Optymalna wydajność i solidne zabezpieczenia dzięki prywatnej i dedykowanej VM.
Oszczędzaj czas i upraszczaj swoje życie: wystarczy 5 minut, aby wypróbować rozwiązanie Node-RED cloud hosting Stackhero!
Jak wysyłać powiadomienia e-mail
Każda instancja Node-RED na Stackhero ma własny dedykowany serwer e-mail. Ten serwer pozwala na wysyłanie nieograniczonej liczby powiadomień e-mail za pomocą kilku kliknięć.
Aby rozpocząć wysyłanie e-maili z instancji Node-RED, dodaj węzeł "email" do swojego przepływu. Zauważysz dwa węzły e-mail na liście węzłów. Wybierz ten z ikoną koperty po prawej stronie. Po dodaniu węzeł zostanie automatycznie nazwany "Stackhero integrated email server" i jest wstępnie skonfigurowany.
Kliknij dwukrotnie węzeł e-mail i wpisz swój adres e-mail w polu "Do:". Najlepiej pozostawić resztę ustawień bez zmian.
Następnie dodaj węzeł "inject" do swojego przepływu i połącz go z węzłem e-mail. Kliknij dwukrotnie węzeł inject (domyślnie nazwany "timestamp"), wybierz "string" jako typ ładunku i wpisz "This is an email from Node-RED" jako ładunek.
Sprawdź konfiguracje węzłów, wdroż swój przepływ i kliknij ikonę akcji na węźle inject. Następnie sprawdź swoją skrzynkę odbiorczą, aby zobaczyć e-mail wysłany z Node-RED!
Wskazówka: Możesz wysyłać e-maile do wielu odbiorców, oddzielając każdy adres e-mail średnikiem w polu "Do:".
Jak używać natywnych modułów Node.js
W funkcjach Node-RED próba zaimportowania natywnego modułu Node.js bezpośrednio skutkuje błędem ReferenceError: require is not defined. Dzieje się tak, ponieważ Node-RED nie pozwala na bezpośrednie importowanie modułu Node.js wewnątrz funkcji.
Aby to rozwiązać, te moduły zostały zintegrowane z globalnym kontekstem Node-RED. Możesz uzyskać do nich dostęp za pomocą context.global.
Na przykład, jeśli potrzebujesz modułu crypto, zadeklaruj go w ten sposób:
const { crypto } = context.global;
Dostępne są następujące moduły Node.js: util, buffer, child_process, crypto, fs, os, http, http2, https, i zlib.
Łączenie z bazą danych MySQL lub MariaDB
Opracowaliśmy węzeł do łączenia się z serwerem MySQL, który jest w pełni kompatybilny z nowym systemem uwierzytelniania MySQL 8, "Caching SHA2 Password", jak również z MariaDB.
Węzeł MySQL/MariaDB
Więcej szczegółów znajdziesz w oficjalnym repozytorium. Aby zainstalować ten węzeł na swojej instancji Node-RED, po prostu wyszukaj stackhero w sekcji Zarządzaj paletą na swoim pulpicie Node-RED.
Łączenie z bazą danych InfluxDB v2
Oferujemy węzeł zaprojektowany do łączenia się z bazą danych InfluxDB v2. Ten węzeł umożliwia zapisywanie danych i wykonywanie zapytań za pomocą języka Flux.
Węzeł InfluxDb-v2
Dodatkowe informacje są dostępne w oficjalnym repozytorium. Aby dodać go do swojej instancji Node-RED, wyszukaj stackhero w sekcji Zarządzaj paletą.
Jak przechwytywać i rejestrować błędy z węzłów Node-RED
Czasami węzły mogą generować błędy. Praktycznym rozwiązaniem jest skonfigurowanie przepływu "catch all debug" do monitorowania tych błędów.
Przykład przepływu przechwytywania błędów Node-RED
Aby to skonfigurować, dodaj węzeł catch i połącz go z węzłem debug. Skonfiguruj węzeł debug, aby wyświetlał pełny obiekt msg. Ta konfiguracja rejestruje każdy błąd generowany w przepływie w oknie debugowania Node-RED.
Przykład przechwyconego błędu węzła Node-RED
Węzeł
catchjest wyzwalany tylko przez błędy z węzłów w tym samym przepływie. Jeśli używasz wielu przepływów (lub kart), musisz dodać węzłycatchidebugdo każdego przepływu.
Przechowywanie danych w systemie plików
Stackhero dla Node-RED oferuje lokalne przechowywanie, gdzie twoje węzły mogą przechowywać pliki. To przechowywanie znajduje się w katalogu /persistent/storage/.
Nigdy nie używaj innego miejsca docelowego dla swojego lokalnego przechowywania niż podkatalog
/persistent/storage/. Jeśli użyjesz innego katalogu, stracisz swoje dane podczas aktualizacji Node-RED!
Konfiguracja węzła do przechowywania danych lokalnych
W tym przykładzie użyjemy węzła node-red-node-sqlite. Ten węzeł wymaga katalogu do przechowywania swoich danych.
Musisz zdefiniować plik w katalogu /persistent/storage/, na przykład, /persistent/storage/myDatabase.sqlite.
Przykład konfiguracji SQLite na Node-RED
Przechowywanie plików
Jeśli potrzebujesz przechowywać dane lokalnie, możesz zapisywać pliki w katalogu /persistent/storage/. Niektóre dane Node-RED mogą już być obecne w tym katalogu. Aby uniknąć konfliktów, zaleca się używanie podkatalogów, na przykład, /persistent/storage/myFlowData, do przechowywania swoich plików.
Aby utworzyć ten katalog za pomocą Node.js, uruchom następujący kod w swoim węźle:
fs.mkdirSync('/persistent/storage/myFlowData', { recursive: true });
notice Jeśli planujesz przechowywać więcej niż kilka plików, zalecamy użycie serwera przechowywania obiektów. Serwery przechowywania obiektów ułatwiają zarządzanie, udostępnianie i dostęp do plików za pomocą API, jak w przypadku protokołu S3. Rozważ skorzystanie z usługi MinIO dostępnej na Stackhero w tym celu, która oferuje serwer przechowywania obiektów kompatybilny z S3 w zaledwie 2 minuty.
Użycie węzła HTTP z iFrame
Podczas korzystania z iFrame do żądania treści za pomocą węzła HTTP, domyślne nagłówki X-Frame-Options: SAMEORIGIN mogą uniemożliwić wyświetlenie strony. Począwszy od wersji 1.2.2-0 Node-RED, możesz zastąpić ten domyślny nagłówek.
Aby to zrobić, ustaw nagłówek X-Frame-Options na null na swoim węźle odpowiedzi HTTP. Na przykład:
msg.headers = { "X-Frame-Options": null };
Przykład węzła ustawiającego nagłówek X-Frame-Options
Możesz pobrać ten przykład przepływu i zaimportować go do swojej instancji Node-RED, aby przetestować funkcję.
Zauważ, że możesz również ograniczyć dozwolone domeny, używając nagłówków Content-Security-Policy: frame-ancestors <source> lub X-Frame-Options: ALLOW-FROM <source>.
Tryb bezpieczny: rozwiązywanie błędów przepływów Node-RED (błąd 502)
Jeśli napotkasz błąd 502 podczas uzyskiwania dostępu do swojego pulpitu administracyjnego, zacznij od sprawdzenia logów swojej instancji. Możesz znaleźć te logi w pulpicie Stackhero w zakładce "Logs" po wybraniu swojej usługi Node-RED.
Logi mogą zawierać błędy Node-RED, które uniemożliwiają jego poprawne uruchomienie. Zbierz jak najwięcej informacji, aby pomóc w debugowaniu swoich przepływów.
Po przejrzeniu logów, przejdź do konfiguracji swojej usługi w pulpicie Stackhero i włącz opcję "Tryb bezpieczny". W trybie bezpiecznym Node-RED uruchomi się ponownie bez automatycznego uruchamiania twoich przepływów.
To pozwala na dostęp do pulpitu administracyjnego, naprawienie błędów przepływu i wdrożenie zmian. Gdy wszystko działa poprawnie, pamiętaj, aby wyłączyć tryb bezpieczny w konfiguracji swojej usługi, aby twoje przepływy uruchamiały się automatycznie przy ponownym uruchomieniu Node-RED.
Wersja węzła w menedżerze palet jest starsza niż na NPM
Jeśli próbujesz zainstalować węzeł za pomocą Menedżera Palet, ale zauważysz, że wersja jest starsza niż na NPM, prawdopodobnie oznacza to, że twórca węzła nie zaktualizował wersji na stronie Node-RED.
Wcześniej wersje węzłów były automatycznie aktualizowane, aby odzwierciedlać wersję opublikowaną na NPM. To już nie jest przypadek.
Dobrą wiadomością jest to, że możesz skłonić stronę Node-RED do odświeżenia wersji. Po prostu przejdź do https://flows.nodered.org/add/node, wpisz nazwę modułu NPM (na przykład, node-red-contrib-xxx), i kliknij przycisk "Add". Po zakończeniu wróć do swojego pulpitu Node-RED i otwórz Menedżera Palet. Zaktualizowana wersja powinna być teraz widoczna i gotowa do instalacji.
Obsługa błędu "SSL routines:ssl3_get_record:wrong version number:../deps/openssl/openssl/ssl/record/ssl3_record.c"
Jeśli widzisz ten błąd podczas wysyłania e-maila, prawdopodobnie dlatego, że wybrałeś opcję "Use secure connection" w konfiguracji swojego węzła e-mail.
Ponieważ serwer e-mail Stackhero i serwer Node-RED działają na tej samej instancji, komunikują się lokalnie, więc nie musisz używać szyfrowania TLS (SSL). Włączenie opcji bezpiecznego połączenia powoduje, że Node-RED używa TLS do komunikacji z serwerem e-mail, co prowadzi do błędu SSL dotyczącego "wrong version number".
Należy zauważyć, że jeśli serwer odbiorcy obsługuje szyfrowanie, e-mail zostanie automatycznie zaszyfrowany za pomocą TLS. To zostało wstępnie skonfigurowane dla Ciebie.