Spisu treści:

Jak pracować z JSON w Node-RED: 13 kroków
Jak pracować z JSON w Node-RED: 13 kroków

Wideo: Jak pracować z JSON w Node-RED: 13 kroków

Wideo: Jak pracować z JSON w Node-RED: 13 kroków
Wideo: Node-RED globalne i msg.topic 2024, Lipiec
Anonim
Jak pracować z JSON w Node-RED
Jak pracować z JSON w Node-RED

Ta instrukcja nauczy Cię, jak pracować z JSON w node-RED. Pokażę ci, jak sterować gniazdkami sieciowymi z przesyłaniem plików json przez http get i post. Możesz później wykorzystać tę wiedzę do kontrolowania dowolnego urządzenia obsługującego protokół JSON.

Do celów dydaktycznych będę używał gniazdka sieciowego NETIO 4All, ale nie martw się, nie musisz niczego kupować. NETIO ma niesamowite demo online 4All, z którego możesz skorzystać.

Kieszonkowe dzieci

Gniazdo sieciowe NETIO 4All lub wersja demonstracyjna online 4All:

Węzeł-CZERWONY

Krok 1: Protokół REST JSON

Protokół HTTP (s) REST JSON
Protokół HTTP (s) REST JSON

Ta część jest trochę techniczna, ale proszę o wyrozumiałość. Gdybym nie wyjaśnił tej części, miałbyś problemy ze zrozumieniem wartości w plikach json, które wyślemy w node-RED.

Czynności mające zastosowanie do każdego wyjścia (gniazdo elektryczne):

We wszystkich protokołach M2M gniazda zasilania NETIO wykorzystują te same czynności, które można zastosować do poszczególnych wyjść. Na przykład do dowolnego wyjścia można zapisać akcję Przełącz lub Wyłącz.

Jednak zmienna Action może być używana tylko do zapisywania wartości, nie może być używana do odczytu bieżącego stanu wyjścia.

Oto działania, które możesz zastosować do każdego wyniku:

0 = wyjście wyłączone (wył.)

1 = wyjście włączone (włączone)

2 = wyjście wyłączone na krótki czas (krótkie wyłączenie)

3 = wyjście włączone na krótki czas (na krótko)

4 = Wyjście przełączane z jednego stanu do drugiego (przełącznik)

5 = Stan wyjścia niezmieniony (bez zmian)

6 = ignorowane

Przykład – plik JSON do przełączania wyjścia nr. 1:

{

"Wyjścia": [{

"ID": 1, „Akcja”: 4

}]

}

ID - ta liczba wskazuje, z którego wyjścia będziemy korzystać

Akcja - ta część, to akcja, którą wykona wyjście (np. 1 (Włącz wyjście))

Krok 2: Przepływ

Pływ
Pływ

A teraz główna część. Tak wygląda środowisko node-RED.

Zaimportowaliśmy przepływ URL API (Projekt, który widzisz. Później pokażę Ci jak importować przepływy i ten projekt) Ten projekt składa się z dwóch części:

  1. Przepływ NETIO AN30 (JSON REST API)
  2. Dashboard (interfejs graficzny, za pomocą którego możesz obsługiwać swój program)

Krok 3: Pulpit

Deska rozdzielcza
Deska rozdzielcza

Tak wygląda pulpit nawigacyjny w node-RED dla tej instrukcji. Możesz go dostosować, jeśli chcesz, aby pasował do Twojego gustu.

Pulpit nawigacyjny dla tego projektu podzielony jest na 4 części:

  1. Stan urządzenia - wyświetla informacje o urządzeniu, takie jak model, adres mac lub wersja oprogramowania układowego.
  2. (POST) Control Output 1 – Zawiera 5 przycisków, które sterują wyjściem 1. Każdy przycisk wykonuje inną akcję
  3. (GET) O1 - O4 Output States - Ta część pokazuje aktualny stan każdego wyjścia z twojego urządzenia.
  4. Zarządzanie urządzeniami - W tej części można znaleźć wszelkiego rodzaju wykresy i wskaźniki, które pokazują aktualne wartości pomiarowe z urządzenia NETIO 4Aall

Krok 4: Przepływ importu (projekt, skrypt itp.)

Przepływ importu (projekt, skrypt itp.)
Przepływ importu (projekt, skrypt itp.)

W menu (prawy górny róg) wybierz Import, a następnie Schowek.

Następnie skopiuj poniższy tekst do wskazanego pola i kliknij Importuj.

Instalowanie brakujących węzłów

Węzły są ładowane do wybranego przepływu. Możliwe, że zostanie wyświetlony komunikat o błędzie z listą węzłów, które są importowane, ale nie są jeszcze zainstalowane w Node-RED. W takim przypadku należy zainstalować brakujące węzły.

Jeśli brakuje węzłów, wybierz z menu paletę Zarządzaj, kliknij Zainstaluj i znajdź i zainstaluj brakujące węzły.

Importuj tekst:

[{"id":"56b9510c.98c6f", "type":"tab", "label":"NETIO AN30 (REST JSON)", "disabled":false, "info":""}, {"id ":"6a66b637.da1558", "type":"żądanie http", "z":"56b9510c.98c6f", "name":"Żądanie HTTP (POST)", "method":"POST", "ret":"txt", "url":"https://netio-4All.netio-products.com:8080/netio.json", "tls":"", "x":430, "y":100, "wires":

Krok 5: Jak to wszystko działa razem

Jak to wszystko działa razem
Jak to wszystko działa razem

Przepływ jest zasadniczo podzielony na dwie części: POST i GET.

POST: Pisanie do O1

  • Pięć przycisków utworzonych w Dashboard w Flow jest wyświetlanych w Dashboard.
  • Po kliknięciu przycisku Output 1 = ON na pulpicie nawigacyjnym ładunek jest ustawiany na plik netio.json, który określa dane wyjściowe i akcję (zdefiniowaną dla każdego z przycisków).
  • Blok HTTP Request (POST) wysyła plik netio.json jako żądanie na adres IP.
  • Odpowiedź serwera (stan) jest zwracana jako dane wyjściowe.
  • Blok Msg.payload wyświetla wynik żądania HTTP (POST).

GET: Czytanie od O1 do O4

  • Blok 1-sekundowego powtarzania aktywuje, z okresem jednej sekundy, blok HTTP Request (GET), który z kolei wysyła netio.json jako żądanie GET i zwraca kompletny plik JSON ze statusem gniazda otrzymanym z serwera.
  • Blok JSON Parse przekształca plik JSON z bloku HTTP Request (GET) na obiekt JSON, dzięki czemu można manipulować właściwościami w pliku JSON.
  • Blok funkcyjny pobiera poszczególne części obiektu JSON i przekształca je we właściwości obiektu msg do późniejszego wykorzystania.
  • Blok Current Chart ustawia msg.payload na właściwość msg. TotalCurrent obiektu msg, ponieważ kolejny blok Current Chart (Device) może wyświetlać tylko wartość msg.payload.
  • Następnie następują różne węzły wyjściowe, aby wyświetlić wybrane właściwości obiektu msg, pobrane z obiektu JSON, w Dashboard.

Obiekt msg i msg.payload

Aby uzyskać proste i zwięzłe wyjaśnienie, zobacz tutaj:

www.steves-internet-guide.com/node-red-mess…

Krok 6: HTTP POST i GET

HTTP POST i GET
HTTP POST i GET
HTTP POST i GET
HTTP POST i GET

Żądanie HTTP (POST)

Ten węzeł wysyła plik poleceń netio.json jako żądanie HTTP (POST) w celu sterowania urządzeniem NETIO 4All.

Żądanie HTTP (GET)

Ten węzeł wysyła żądanie HTTP (GET) i zwraca odpowiedź statusu.

Wstępnie wypełniony adres wskazuje na demo online NETIO 4All, w którym można przetestować połączenie bez konieczności posiadania urządzenia NETIO przy biurku.

netio-4all.netio-products.com

W tych węzłach można ustawić własny adres IP; jednak adres IP musi zostać zmieniony zarówno w węzłach żądania HTTP, POST, jak i GET.

Krok 7: Węzły przycisków

Węzły przycisków
Węzły przycisków
Węzły przycisków
Węzły przycisków

Kliknięcie przycisku węzła generuje wiadomość zawierającą plik netio.json (zdjęcie po prawej), która jest następnie wysyłana za pośrednictwem węzła post HTTP do inteligentnego gniazda zasilania netio.

Krok 8: Węzeł funkcji

Węzeł funkcji
Węzeł funkcji
Węzeł funkcji
Węzeł funkcji

Węzeł funkcji to specjalny węzeł, który umożliwia napisanie niestandardowej funkcji JavaScript.

W tej instrukcji funkcja pobiera wartości z przeanalizowanego pliku JSON (obecnie obiektu JSON) i przypisuje je do właściwości obiektu msg.

Kod podzielony jest na cztery sekcje:

  1. Przypisywanie wartości z obiektu JSON do poszczególnych właściwości obiektu msg
  2. Obsługa błędów w przypadku, gdy gniazdko sieciowe nie obsługuje pomiarów globalnych

    Jeśli gniazdo sieciowe nie obsługuje pomiaru wartości globalnych, węzeł CZERWONY wyświetli błędy, ponieważ ta funkcja nie znajdzie odpowiedniej właściwości, np. msg.payload. GlobalMeasure. Voltage, ponieważ nie byłoby go w obiekcie JSON. W tym przypadku właściwość obiektu msg, np. msg. Voltage, jest ustawiony na 0, a błąd jest przechwycony i obsłużony.

  3. Przypisywanie wartości stanu wyjścia
  4. Ustawienie kolorów wyświetlanych wartości stanów wyjść zgodnie ze stanami wyjść

Krok 9: Węzeł JSON i węzeł wstrzykiwania

Węzeł JSON i węzeł wstrzykiwania
Węzeł JSON i węzeł wstrzykiwania
Węzeł JSON i węzeł wstrzykiwania
Węzeł JSON i węzeł wstrzykiwania

węzeł JSON

Węzeł JSON analizuje plik JSON i przekształca go w obiekt JSON.

W odpowiedzi z serwera na żądanie GET węzeł HTTP Request zwraca plik JSON zawierający aktualny stan urządzenia NETIO 4x, ale jest to po prostu plik tekstowy, więc do pracy z danymi potrzebny jest plik JSON do przetworzenia na obiekt JSON.

Wstrzyknij węzeł

Co sekundę ten węzeł aktywuje węzeł HTTP Request, który wysyła żądanie GET.

W rezultacie wartości w panelu są aktualizowane z okresem jednej sekundy

Krok 10: Węzeł tekstowy i węzeł debugowania

Węzeł tekstowy i węzeł debugowania
Węzeł tekstowy i węzeł debugowania
Węzeł tekstowy i węzeł debugowania
Węzeł tekstowy i węzeł debugowania

Węzeł tekstowy

Wyświetla pole tekstowe na pulpicie nawigacyjnym. W tej instrukcji węzły tekstowe wyświetlają prąd, napięcie, model, wersję oprogramowania układowego lub wersję JSON.

Etykieta jest wyświetlana na pulpicie nawigacyjnym, a Nazwa jest nazwą węzła wyświetlaną w przepływie w Węźle-CZERWONYM.

Debuguj węzeł

Wyświetla msg.payload.

Krok 11: Węzeł wykresu

Węzeł wykresu
Węzeł wykresu
Węzeł wykresu
Węzeł wykresu

Ten węzeł przedstawia bieżący wykres na pulpicie nawigacyjnym zgodnie z wartością ładunku.

Ten węzeł może kreślić wykresy tylko zgodnie z wartością ładunku.

Z tego powodu węzeł funkcji służy do ustawiania msg.payload na wartość, która ma być wyświetlana.

msg.payload = msg. TotalCurrent;

Krok 12: Węzeł pomiarowy i węzły łączące

Węzeł miernika i węzły łączące
Węzeł miernika i węzły łączące
Węzeł miernika i węzły łączące
Węzeł miernika i węzły łączące

Węzeł pomiarowy

Ten węzeł dodaje widżet miernika do pulpitu nawigacyjnego.

W tej instrukcji każdy miernik wizualizuje jedną właściwość obiektu msg: napięcie [V], prąd [A], częstotliwość [Hz] i całkowity rzeczywisty współczynnik mocy (TPF).

Połącz węzły

Węzły link in i link out działają jak tunel. msg.payload dociera do łącza w węźle i wychodzi z węzła wychodzącego łącza.

Użyłem go, aby przepływ był nieco wyraźniejszy i łatwiejszy do odczytania.

Krok 13: Dziękuję za przeczytanie mojej instrukcji

Mam nadzieję, że podobało Ci się moje instruktażowe i mam nadzieję, że nauczyłeś się czegoś nowego.

Ta instrukcja jest tylko skróconą wersją innego przewodnika, który stworzyłem

Oryginalny przewodnik jest dłuższy, bardziej szczegółowy i ogólnie lepiej zorganizowany. Jeśli czegoś nie zrozumiałeś lub uważasz, że przeoczyłem lub nie wyjaśniłem wystarczająco czegoś, to na pewno możesz to tam znaleźć.

Obiecuję, że nie będziesz zawiedziony

Oryginał:

Istnieją również podobne przewodniki o różnych zastosowaniach node-RED, więc jeśli jesteś zainteresowany, możesz zapoznać się z:

Praca z REST URL API w węźle-RED

www.netio-products.com/en/application-notes/an29-node-red-example-of-url-api-communication-with-netio-4x

Praca z REST XML w węźle-RED

www.netio-products.com/en/application-notes/an31-node-red-przyklad-odpoczynku-xml-komunikacja-z-netio-4x

Praca z TCP/Modbus w węźle-RED

Wkrótce:)

Zalecana: