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!

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:".

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.

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/MariaDBWę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.

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-v2Wę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ą.

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-REDPrzykł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-REDPrzykład przechwyconego błędu węzła Node-RED

Węzeł catch jest 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ły catch i debug do każdego przepływu.

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!

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-REDPrzykład konfiguracji SQLite na Node-RED

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.

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-OptionsPrzykł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>.

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.

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.

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.