Obsah:

Jak pracovat s JSON v Node-RED: 13 kroků
Jak pracovat s JSON v Node-RED: 13 kroků

Video: Jak pracovat s JSON v Node-RED: 13 kroků

Video: Jak pracovat s JSON v Node-RED: 13 kroků
Video: Node-RED: Tipy a triky #2 - Namakaný webinár #40 2024, Listopad
Anonim
Jak pracovat s JSON v Node-RED
Jak pracovat s JSON v Node-RED

Tento instruktážní program vás naučí pracovat s JSON v uzlu-ČERVENÉ. Ukážu vám, jak ovládat síťové zásuvky přes přenos souborů json přes http get a post. A tyto znalosti můžete později použít k ovládání jakéhokoli zařízení podporujícího protokol JSON.

Pro výukové účely budu používat síťovou zásuvku NETIO 4All, ale nebojte se, nemusíte nic kupovat. NETIO má úžasné online demo 4All, které můžete použít.

Zásoby

NETIO 4All síťová zásuvka nebo online demo 4All:

Uzel-ČERVENÝ

Krok 1: Protokol REST JSON Http (s)

Protokol REST JSON Http (s)
Protokol REST JSON Http (s)

Tato část je trochu technická, ale prosím, mějte se mnou. Pokud bych tuto část nevysvětlil, pak byste měli problémy s porozuměním hodnotám v souborech json, které budeme posílat v uzlu-ČERVENÉ.

Akce platné pro každý výstup (elektrická zásuvka):

Ve všech protokolech M2M používají zásuvky NETIO stejné akce, jaké lze použít na jednotlivé výstupy. Například na jakýkoli výstup lze zapsat akci Toggle nebo Short Off.

Proměnnou Action je však možné použít pouze pro zápis hodnot, nelze ji použít ke čtení aktuálního stavu výstupu.

Toto jsou akce, které můžete použít pro každý výstup:

0 = výstup vypnutý (vypnutý)

1 = výstup zapnutý (zapnutý)

2 = Výstup na krátkou dobu vypnutý (krátký vypnuto)

3 = Výstup zapnutý na krátkou dobu (krátký zapnutý)

4 = Výstup přepnut z jednoho stavu do druhého (přepnout)

5 = stav výstupu beze změny (beze změny)

6 = Ignorováno

Příklad - soubor JSON pro přepnutí výstupu č. 1:

{

"Výstupy": [{

"ID": 1, "Akce": 4

}]

}

ID - toto číslo udává, jaký výstup budeme používat

Akce - tato část je akce, kterou výstup provede (např. 1 (Zapnout výstup))

Krok 2: Tok

Tok
Tok

A teď hlavní část. Tak vypadá prostředí uzlu-ČERVENÉ.

Importovali jsme tok API URL (projekt, který vidíte. Později vám ukážu, jak importovat toky a tento projekt) Tento projekt se skládá ze dvou částí:

  1. Tok NETIO AN30 (JSON REST API)
  2. Dashboard (grafické rozhraní, pomocí kterého můžete ovládat svůj program)

Krok 3: Hlavní panel

Přístrojová deska
Přístrojová deska

Takhle vypadá dashboard v uzlu-ČERVENÉ pro tento instruktáž. Můžete si jej přizpůsobit, pokud chcete, aby vyhovoval vašemu vkusu.

Řídicí panel pro tento projekt je rozdělen na 4 části:

  1. Stav zařízení - zobrazuje informace o zařízení, jako je model, adresa mac nebo verze firmwaru.
  2. (POST) Ovládací výstup 1 - Obsahuje 5 tlačítek, která ovládají výstup 1. Každé tlačítko provádí jinou akci
  3. (GET) O1 - O4 Stavy výstupu - Tato část zobrazuje aktuální stav každého výstupu z vašeho zařízení.
  4. Správa zařízení - V této části najdete všechny druhy grafů a měřidel, které zobrazují aktuální naměřené hodnoty ze zařízení NETIO 4Aall

Krok 4: Import toku (projekt, skript, atd.)

Tok importu (projekt, skript, atd.)
Tok importu (projekt, skript, atd.)

V nabídce (pravý horní roh) vyberte Import a poté Schránka.

Poté zkopírujte níže uvedený text do uvedeného pole a klikněte na Importovat.

Instalace chybějících uzlů

Uzly se načtou do vybraného toku. Je možné, že se zobrazí chybová zpráva se seznamem uzlů, které se importují, ale ještě nejsou nainstalovány v Node-RED. V tomto případě je třeba nainstalovat chybějící uzly.

Pokud chybí uzly, vyberte v nabídce Spravovat paletu, klikněte na Instalovat a najděte a nainstalujte chybějící uzly.

Import textu:

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

Krok 5: Jak to všechno funguje dohromady

Jak to všechno funguje dohromady
Jak to všechno funguje dohromady

Tok je v zásadě rozdělen na dvě části: POST a GET.

POST: Zápis do O1

  • Na panelu se zobrazí pět tlačítek vytvořených na panelu v toku.
  • Po kliknutí na tlačítko Výstup 1 = ZAPNUTO na hlavním panelu se užitečné zatížení nastaví na soubor netio.json, který určuje výstup a akci (definovanou pro každé z tlačítek).
  • Blok POST (HTTP Request) odešle soubor netio.json jako požadavek na IP adresu.
  • Jako výstup je vrácena odpověď serveru (stav).
  • Blok Msg.payload zobrazuje výsledek z požadavku HTTP (POST).

ZÍSKEJTE: Čtení z O1 - O4

  • Blok 1sekundového opakování aktivuje s periodou jedné sekundy blok požadavku HTTP (GET), který zase odešle netio.json jako požadavek GET a vrátí kompletní soubor JSON se stavem soketu přijatým ze serveru.
  • Blok JSON Parse transformuje soubor JSON z bloku HTTP Request (GET) na objekt JSON, takže je možné manipulovat s vlastnostmi v souboru JSON.
  • Funkční blok přebírá jednotlivé části objektu JSON a transformuje je do vlastností objektu msg pro pozdější použití.
  • Blok Aktuální graf nastavuje msg.payload na vlastnost msg. TotalCurrent objektu msg, protože následující blok Current Chart (Device) může zobrazovat pouze hodnotu msg.payload.
  • Následují různé výstupní uzly, aby se na panelu zobrazily vybrané vlastnosti objektu msg převzaté z objektu JSON.

Objekt msg a msg.payload

Jednoduché a stručné vysvětlení naleznete zde:

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

Krok 6: HTTP POST a ZÍSKEJTE

HTTP POST a ZÍSKEJTE
HTTP POST a ZÍSKEJTE
HTTP POST a ZÍSKEJTE
HTTP POST a ZÍSKEJTE

HTTP požadavek (POST)

Tento uzel odesílá příkazový soubor netio.json jako požadavek HTTP (POST) za účelem ovládání zařízení NETIO 4All.

HTTP požadavek (GET)

Tento uzel odešle požadavek HTTP (GET) a vrátí stavovou odpověď.

Předem vyplněná adresa ukazuje na online demo NETIO 4All, kde můžete otestovat připojení, aniž byste měli u stolu zařízení NETIO.

netio-4all.netio-products.com

V těchto uzlech je možné nastavit vlastní IP adresu; IP je však třeba změnit jak v uzlech požadavku HTTP, POST, tak i GET.

Krok 7: Uzly tlačítek

Uzly tlačítek
Uzly tlačítek
Uzly tlačítek
Uzly tlačítek

Kliknutím na uzel tlačítka se vygeneruje zpráva obsahující soubor netio.json (pravý obrázek), který je poté odeslán prostřednictvím uzlu post http do chytré zásuvky netio.

Krok 8: Funkční uzel

Funkční uzel
Funkční uzel
Funkční uzel
Funkční uzel

Funkční uzel je speciální uzel, který umožňuje psaní vlastní funkce JavaScriptu.

V tomto pokynu funkce vybere hodnoty z analyzovaného souboru JSON (nyní objekt JSON) a přiřadí je k vlastnostem objektu msg.

Kód je rozdělen do čtyř částí:

  1. Přiřazení hodnot z objektu JSON jednotlivým vlastnostem objektu msg
  2. Zpracování chyb v případě, že síťová zásuvka nepodporuje globální měření

    Pokud síťová zásuvka nepodporuje měření globálních hodnot, Node-RED zobrazí chyby, protože tato funkce nenalezne příslušnou vlastnost, např. msg.payload. GlobalMeasure. Voltage, protože by nebyl přítomen v objektu JSON. V tomto případě vlastnost objektu msg, např. msg. Voltage, je nastaveno na 0 a chyba je chycena zpracována.

  3. Přiřazení hodnot stavu výstupu
  4. Nastavení barev zobrazených hodnot stavů výstupu podle stavů výstupu

Krok 9: Uzel JSON a Vložit uzel

Uzel JSON a Vložit uzel
Uzel JSON a Vložit uzel
Uzel JSON a Vložit uzel
Uzel JSON a Vložit uzel

Uzel JSON

Uzel JSON analyzuje soubor JSON a transformuje jej na objekt JSON.

Jako odpověď ze serveru na požadavek GET uzel požadavku HTTP vrací soubor JSON obsahující aktuální stav zařízení NETIO 4x, ale je to jednoduše textový soubor, takže pro práci s daty potřebuje soubor JSON být analyzovány do objektu JSON.

Vložit uzel

Každou sekundu tento uzel aktivuje uzel požadavku HTTP, který odešle požadavek GET.

V důsledku toho se hodnoty na hlavním panelu aktualizují po dobu jedné sekundy

Krok 10: Textový uzel a ladicí uzel

Textový uzel a ladicí uzel
Textový uzel a ladicí uzel
Textový uzel a ladicí uzel
Textový uzel a ladicí uzel

Textový uzel

Zobrazí textové pole na řídicím panelu. V tomto pokynu textové uzly zobrazují aktuální, napětí, model, verzi firmwaru nebo verzi JSON.

Štítek se zobrazí na řídicím panelu a název je název uzlu zobrazený v toku v Node-RED.

Ladicí uzel

Zobrazí msg.payload.

Krok 11: Uzel grafu

Uzel grafu
Uzel grafu
Uzel grafu
Uzel grafu

Tento uzel vykreslí aktuální graf na řídicím panelu podle hodnoty užitečného zatížení.

Tento uzel může vykreslovat grafy pouze podle hodnoty užitečného zatížení.

Z tohoto důvodu se funkční uzel používá k nastavení msg.payload na hodnotu, kterou je třeba zobrazit.

msg.payload = msg. TotalCurrent;

Krok 12: Měřící uzel a propojovací uzly

Uzel měřidla a uzly spojení
Uzel měřidla a uzly spojení
Uzel měřidla a uzly spojení
Uzel měřidla a uzly spojení

Uzel měřidla

Tento uzel přidá na řídicí panel widget měřidla.

V tomto pokynu každý měřič vizualizuje jednu vlastnost objektu zprávy: napětí [V], proud [A], frekvenci [Hz] a celkový skutečný účiník (TPF).

Propojit uzly

Spojení a odpojení uzlů funguje jako tunel. Zpráva msg.payload dorazí do uzlu odkaz v uzlu a vyjde z uzlu mimo odkaz.

Použil jsem to, aby byl tok trochu jasnější a lépe čitelný.

Krok 13: Děkujeme, že jste si přečetli můj návod

Doufám, že se vám moje instruktáž líbila a doufám, že jste se dozvěděli něco nového.

Tento instruktabilní je pouze zkrácená verze různých průvodců, které jsem vytvořil

Původní průvodce je delší, mnohem detailněji orientovaný a obecně lépe strukturovaný. Pokud něčemu nerozumíte nebo si myslíte, že jsem něco zmeškal nebo dostatečně nevysvětlil, pak to tam určitě najdete.

Slibuji, že nebudete zklamáni

Originál:

Existují také podobní průvodci o různých způsobech použití uzlu-RED, takže pokud máte zájem, můžete prozkoumat:

Práce s API REST URL v uzlu-ČERVENÉ

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

Práce s REST XML v uzlu-ČERVENÉ

www.netio-products.com/en/application-notes/an31-node-red-example-of-rest-xml-communication-with-netio-4x

Práce s TCP/Modbus v uzlu-ČERVENÉ

Již brzy:)

Doporučuje: