สารบัญ:

วิธีทำงานกับ JSON ใน Node-RED: 13 ขั้นตอน
วิธีทำงานกับ JSON ใน Node-RED: 13 ขั้นตอน

วีดีโอ: วิธีทำงานกับ JSON ใน Node-RED: 13 ขั้นตอน

วีดีโอ: วิธีทำงานกับ JSON ใน Node-RED: 13 ขั้นตอน
วีดีโอ: การสร้าง data logger โดยใช้ Node-red IOT บันทึกข้อมูลไว้ที่ Google sheet ผ่าน HF2211 Modbus to MQTT 2024, กรกฎาคม
Anonim
วิธีทำงานกับ JSON ใน Node-RED
วิธีทำงานกับ JSON ใน Node-RED

คำแนะนำนี้จะสอนวิธีทำงานกับ JSON ใน node-RED ฉันจะแสดงวิธีควบคุมปลั๊กไฟในเครือข่ายด้วยการถ่ายโอนไฟล์ json ผ่าน http get และ post และคุณสามารถใช้ความรู้นี้ในภายหลังเพื่อควบคุมอุปกรณ์ใดๆ ที่รองรับโปรโตคอล JSON

เพื่อจุดประสงค์ในการสอน ฉันจะใช้ปลั๊กไฟเครือข่าย NETIO 4All แต่ไม่ต้องกังวล คุณไม่จำเป็นต้องซื้ออะไรเลย NETIO มีการสาธิตออนไลน์ 4All ที่น่าทึ่งที่คุณสามารถใช้ได้

เสบียง

NETIO 4Powersocket เครือข่ายทั้งหมดหรือการสาธิตออนไลน์ 4All:

โหนด-RED

ขั้นตอนที่ 1: REST JSON Http Protocol

REST JSON Http โปรโตคอล
REST JSON Http โปรโตคอล

ส่วนนี้เป็นเทคนิคเล็กน้อย แต่โปรดอดทนกับฉัน หากฉันไม่ได้อธิบายส่วนนี้ คุณจะมีปัญหาในการทำความเข้าใจค่าในไฟล์ json ที่เราจะส่งใน node-RED

การดำเนินการที่ใช้ได้กับแต่ละเอาต์พุต (ซ็อกเก็ตไฟฟ้า):

ในโปรโตคอล M2M ทั้งหมด ปลั๊กไฟ NETIO ใช้การดำเนินการเดียวกันกับที่สามารถใช้กับเอาต์พุตเดี่ยวได้ ตัวอย่างเช่น สามารถเขียนการทำงาน Toggle หรือ Short Off ไปยังเอาต์พุตใดก็ได้

อย่างไรก็ตาม ตัวแปร Action สามารถใช้สำหรับเขียนค่าเท่านั้น ไม่สามารถใช้เพื่ออ่านสถานะทางออกปัจจุบันได้

นี่คือการดำเนินการที่คุณสามารถใช้กับแต่ละเอาต์พุตได้:

0 = เอาต์พุตถูกปิด (ปิด)

1 = เปิดเอาต์พุต (เปิด)

2 = เอาต์พุตถูกปิดชั่วคราว (ปิดสั้น)

3 = เปิดเอาต์พุตเป็นเวลาสั้น ๆ (เปิดสั้น)

4 = เอาต์พุตเปลี่ยนจากสถานะหนึ่งไปอีกสถานะหนึ่ง (สลับ)

5 = สถานะเอาต์พุตไม่เปลี่ยนแปลง (ไม่มีการเปลี่ยนแปลง)

6 = ถูกละเว้น

ตัวอย่าง – ไฟล์ JSON เพื่อสลับหมายเลขเอาต์พุต 1:

{

"ผลลัพธ์": [{

"ไอดี": 1, "การกระทำ": 4

}]

}

ID - ตัวเลขนี้ระบุเอาต์พุตที่เราจะใช้

การกระทำ - ส่วนนี้เป็นการกระทำที่เอาต์พุตจะทำ (เช่น 1 (เปิดเอาต์พุต))

ขั้นตอนที่ 2: ไหล

ไหล
ไหล

และตอนนี้ส่วนหลัก นี่คือลักษณะของสภาพแวดล้อม node-RED

เราได้นำเข้าโฟลว์ URL ของ URL (โครงการที่คุณเห็น ต่อมาฉันจะแสดงวิธีการนำเข้าโฟลว์และโปรเจ็กต์นี้) โปรเจ็กต์นี้ประกอบด้วยสองส่วน:

  1. NETIO AN30 (JSON REST API) โฟลว์
  2. แดชบอร์ด (อินเทอร์เฟซแบบกราฟิกซึ่งคุณสามารถใช้งานโปรแกรมของคุณได้)

ขั้นตอนที่ 3: แดชบอร์ด

แผงควบคุม
แผงควบคุม

นี่คือลักษณะของแดชบอร์ดใน node-RED สำหรับคำแนะนำนี้ คุณสามารถปรับแต่งได้หากต้องการให้เหมาะกับรสนิยมของคุณ

แดชบอร์ดสำหรับโครงการนี้แบ่งออกเป็น 4 ส่วน:

  1. สถานะอุปกรณ์ - แสดงข้อมูลอุปกรณ์ เช่น รุ่น ที่อยู่ Mac หรือเวอร์ชันเฟิร์มแวร์
  2. (POST) เอาต์พุตควบคุม 1 - ประกอบด้วยปุ่ม 5 ปุ่มซึ่งควบคุมเอาต์พุต 1 ปุ่มแต่ละปุ่มดำเนินการต่างกัน
  3. (GET) O1 - สถานะเอาต์พุต O4 - ส่วนนี้แสดงสถานะปัจจุบันของแต่ละเอาต์พุตจากอุปกรณ์ของคุณ
  4. การจัดการอุปกรณ์ - ในส่วนนี้ คุณสามารถค้นหากราฟและเกจทุกประเภทที่แสดงค่ามิเตอร์ปัจจุบันจากอุปกรณ์ NETIO 4Aall

ขั้นตอนที่ 4: นำเข้าโฟลว์ (โครงการ สคริปต์ ฯลฯ)

ขั้นตอนการนำเข้า (โครงการ สคริปต์ ฯลฯ)
ขั้นตอนการนำเข้า (โครงการ สคริปต์ ฯลฯ)

ในเมนู (มุมบนขวา) เลือกนำเข้าแล้วเลือกคลิปบอร์ด

จากนั้นคัดลอกข้อความด้านล่างไปยังฟิลด์ที่ระบุและคลิกนำเข้า

การติดตั้งโหนดที่ขาดหายไป

โหนดถูกโหลดเข้าสู่โฟลว์ที่เลือก เป็นไปได้ว่าข้อความแสดงข้อผิดพลาดจะแสดงพร้อมรายการโหนดที่กำลังนำเข้าแต่ยังไม่ได้ติดตั้งใน Node-RED ในกรณีนี้ จำเป็นต้องติดตั้งโหนดที่หายไป

หากมีโหนดหายไป ให้เลือก จัดการจานสี ในเมนู คลิก ติดตั้ง และค้นหาและติดตั้งโหนดที่คุณหายไป

นำเข้าข้อความ:

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

ขั้นตอนที่ 5: มันทำงานร่วมกันอย่างไร

มันทำงานร่วมกันอย่างไร
มันทำงานร่วมกันอย่างไร

โดยทั่วไปโฟลว์จะแบ่งออกเป็นสองส่วน: POST และ GET

POST: การเขียนถึง O1

  • ปุ่มห้าปุ่มที่สร้างในแดชบอร์ดในโฟลว์จะแสดงในแดชบอร์ด
  • หลังจากคลิกปุ่ม เอาต์พุต 1 = เปิด ในแดชบอร์ด เพย์โหลดจะถูกตั้งค่าเป็นไฟล์ netio.json ที่ระบุเอาต์พุตและการดำเนินการ (กำหนดไว้สำหรับแต่ละปุ่ม)
  • บล็อกคำขอ HTTP (POST) จะส่งไฟล์ netio.json เป็นคำขอไปยังที่อยู่ IP
  • การตอบสนองของเซิร์ฟเวอร์ (สถานะ) ถูกส่งกลับเป็นเอาต์พุต
  • บล็อก Msg.payload แสดงผลลัพธ์จากคำขอ HTTP (POST)

GET: การอ่านจาก O1 – O4

  • บล็อกการทำซ้ำ 1 วินาทีเปิดใช้งานด้วยช่วงเวลาหนึ่งวินาที บล็อกคำขอ HTTP (GET) ซึ่งส่ง netio.json เป็นคำขอ GET และส่งคืนไฟล์ JSON ที่สมบูรณ์พร้อมสถานะซ็อกเก็ตที่ได้รับจากเซิร์ฟเวอร์
  • บล็อก JSON Parse แปลงไฟล์ JSON จากบล็อก HTTP Request (GET) เป็น JSON Object เพื่อให้สามารถจัดการคุณสมบัติในไฟล์ JSON
  • บล็อกฟังก์ชันนำแต่ละส่วนของอ็อบเจ็กต์ JSON และแปลงเป็นคุณสมบัติของอ็อบเจ็กต์ msg เพื่อใช้ในภายหลัง
  • บล็อกแผนภูมิปัจจุบันตั้งค่า msg.payload เป็นคุณสมบัติ msg. TotalCurrent ของวัตถุ msg เนื่องจากบล็อกแผนภูมิปัจจุบัน (อุปกรณ์) ที่ตามมาสามารถแสดงเฉพาะค่า msg.payload เท่านั้น
  • จากนั้นโหนดเอาต์พุตต่างๆ จะตามมาเพื่อแสดงคุณสมบัติที่เลือกของอ็อบเจ็กต์ msg ตามที่นำมาจากออบเจ็กต์ JSON ในแดชบอร์ด

วัตถุ msg และ msg.payload

สำหรับคำอธิบายที่ง่ายและกระชับ โปรดดูที่นี่:

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

ขั้นตอนที่ 6: HTTP POST และ GET

HTTP POST และ GET
HTTP POST และ GET
HTTP POST และ GET
HTTP POST และ GET

คำขอ HTTP (POST)

โหนดนี้ส่งไฟล์คำสั่ง netio.json เป็นคำขอ HTTP (POST) เพื่อควบคุมอุปกรณ์ NETIO 4All

คำขอ HTTP (GET)

โหนดนี้ส่งคำขอ HTTP (GET) และส่งคืนการตอบกลับสถานะ

ที่อยู่ที่กรอกไว้ล่วงหน้าจะชี้ไปที่การสาธิตออนไลน์ NETIO 4All ซึ่งคุณสามารถทดสอบการเชื่อมต่อโดยไม่ต้องมีอุปกรณ์ NETIO อยู่ที่โต๊ะทำงานของคุณ

netio-4all.netio-products.com

เป็นไปได้ที่จะตั้งค่าที่อยู่ IP ของคุณเองในโหนดเหล่านี้ อย่างไรก็ตาม IP จำเป็นต้องเปลี่ยนทั้งในโหนด HTTP Request, POST และ GET

ขั้นตอนที่ 7: โหนดปุ่ม

โหนดปุ่ม
โหนดปุ่ม
โหนดปุ่ม
โหนดปุ่ม

การคลิกที่โหนดปุ่มจะสร้างข้อความที่มีไฟล์ netio.json (ภาพขวา) ซึ่งจะถูกส่งผ่าน http post node ไปยังเต้ารับไฟฟ้าอัจฉริยะของ netio

ขั้นตอนที่ 8: โหนดฟังก์ชัน

โหนดฟังก์ชัน
โหนดฟังก์ชัน
โหนดฟังก์ชัน
โหนดฟังก์ชัน

โหนดฟังก์ชันคือโหนดพิเศษที่ช่วยให้สามารถเขียนฟังก์ชัน JavaScript ที่กำหนดเองได้

ในคำสั่งนี้ ฟังก์ชันจะเลือกค่าจากไฟล์ JSON ที่แยกวิเคราะห์ (ตอนนี้เป็นอ็อบเจ็กต์ JSON) และกำหนดค่าให้กับคุณสมบัติของอ็อบเจ็กต์ msg

รหัสแบ่งออกเป็นสี่ส่วน:

  1. การกำหนดค่าจากวัตถุ JSON ให้กับคุณสมบัติแต่ละรายการของวัตถุ msg
  2. การจัดการข้อผิดพลาดในกรณีที่เต้ารับไฟฟ้าในเครือข่ายไม่รองรับการวัดทั่วโลก

    หากปลั๊กไฟในเครือข่ายไม่รองรับการวัดค่าส่วนกลาง Node-RED จะแสดงข้อผิดพลาดเนื่องจากฟังก์ชันนี้จะไม่พบคุณสมบัติที่เกี่ยวข้อง เช่น msg.payload. GlobalMeasure. Voltage เนื่องจากจะไม่ปรากฏในวัตถุ JSON ในกรณีนี้ คุณสมบัติของวัตถุ msg เช่น msg. Voltage ถูกตั้งค่าเป็น 0 และตรวจพบข้อผิดพลาดว่าได้รับการจัดการแล้ว

  3. การกำหนดค่าสถานะเอาต์พุต
  4. การตั้งค่าสีของค่าสถานะเอาต์พุตที่แสดงตามสถานะเอาต์พุต

ขั้นตอนที่ 9: โหนด JSON และ Inject Node

JSON Node และ Inject Node
JSON Node และ Inject Node
JSON Node และ Inject Node
JSON Node และ Inject Node

โหนด JSON

โหนด JSON แยกวิเคราะห์ไฟล์ JSON และแปลงเป็นวัตถุ JSON

ในการตอบกลับจากเซิร์ฟเวอร์ไปยังคำขอ GET โหนดคำขอ HTTP จะส่งคืนไฟล์ JSON ที่มีสถานะปัจจุบันของอุปกรณ์ NETIO 4x แต่เป็นเพียงไฟล์ข้อความ ดังนั้นเพื่อทำงานกับข้อมูล ไฟล์ JSON จำเป็นต้องใช้ เพื่อแยกวิเคราะห์เป็นวัตถุ JSON

โหนดฉีด

ทุกวินาที โหนดนี้จะเปิดใช้งานโหนดคำขอ HTTP ที่ส่งคำขอ GET

ด้วยเหตุนี้ ค่าในแดชบอร์ดจึงได้รับการอัปเดตด้วยระยะเวลาหนึ่งวินาที

ขั้นตอนที่ 10: โหนดข้อความและโหนดดีบัก

โหนดข้อความและโหนดดีบัก
โหนดข้อความและโหนดดีบัก
โหนดข้อความและโหนดดีบัก
โหนดข้อความและโหนดดีบัก

โหนดข้อความ

แสดงฟิลด์ข้อความในแดชบอร์ด ในคำแนะนำนี้ โหนดข้อความจะแสดงกระแส แรงดันไฟฟ้า รุ่น เวอร์ชันเฟิร์มแวร์ หรือเวอร์ชัน JSON

ป้ายกำกับจะแสดงในแดชบอร์ด และชื่อคือชื่อโหนดที่แสดงในโฟลว์ใน Node-RED

โหนดดีบัก

แสดง msg.payload

ขั้นตอนที่ 11: โหนดแผนภูมิ

โหนดแผนภูมิ
โหนดแผนภูมิ
โหนดแผนภูมิ
โหนดแผนภูมิ

โหนดนี้พล็อตแผนภูมิปัจจุบันในแดชบอร์ดตามค่าเพย์โหลด

โหนดนี้สามารถพล็อตแผนภูมิตามค่าเพย์โหลดเท่านั้น

ด้วยเหตุนี้ โหนดฟังก์ชันจึงใช้เพื่อตั้งค่า msg.payload เป็นค่าที่ต้องแสดง

msg.payload = msg.ยอดรวมปัจจุบัน;

ขั้นตอนที่ 12: โหนดเกจและโหนดลิงก์

โหนดเกจและโหนดลิงค์
โหนดเกจและโหนดลิงค์
โหนดเกจและโหนดลิงค์
โหนดเกจและโหนดลิงค์

โหนดเกจ

โหนดนี้เพิ่มวิดเจ็ตเกจไปยังแดชบอร์ด

ในคำแนะนำนี้ เกจแต่ละตัวแสดงภาพคุณสมบัติของวัตถุ msg หนึ่งอย่าง: แรงดันไฟฟ้า [V], กระแสไฟ [A], ความถี่ [Hz] และ True Power Factor (TPF) โดยรวม

เชื่อมโยงโหนด

เชื่อมโยงเข้าและเชื่อมโยงออกโหนดทำงานเหมือนอุโมงค์ msg.payload มาถึงลิงก์ในโหนดและออกจากโหนดลิงก์ออก

ฉันใช้มันเพื่อทำให้โฟลว์ชัดเจนขึ้นเล็กน้อยและอ่านง่ายขึ้น

ขั้นตอนที่ 13: ขอบคุณสำหรับการอ่านคำแนะนำของฉัน

ฉันหวังว่าคุณจะสนุกกับการเรียนรู้สิ่งใหม่ ๆ ที่สอนได้และมีความหวัง

คำแนะนำนี้เป็นเวอร์ชันย่อของคู่มือต่าง ๆ ที่ฉันทำเท่านั้น

คู่มือดั้งเดิมนั้นยาวกว่าและมีรายละเอียดมากกว่าและมีโครงสร้างที่ดีขึ้นโดยทั่วไป หากคุณไม่เข้าใจบางสิ่งหรือคิดว่าฉันพลาดหรืออธิบายบางสิ่งไม่เพียงพอ คุณจะพบมันที่นั่นอย่างแน่นอน

สัญญาว่าจะไม่ทำให้ผิดหวัง

ต้นฉบับ:

นอกจากนี้ยังมีคำแนะนำที่คล้ายคลึงกันเกี่ยวกับการใช้งานต่างๆ ของnode-RED ดังนั้นหากคุณสนใจ อย่าลังเลที่จะสำรวจ:

การทำงานกับ REST URL API ใน node-RED

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

การทำงานกับ REST XML ใน node-RED

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

การทำงานกับ TCP/Modbus ใน node-RED

เร็วๆนี้:)

แนะนำ: