สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: REST JSON Http Protocol
- ขั้นตอนที่ 2: ไหล
- ขั้นตอนที่ 3: แดชบอร์ด
- ขั้นตอนที่ 4: นำเข้าโฟลว์ (โครงการ สคริปต์ ฯลฯ)
- ขั้นตอนที่ 5: มันทำงานร่วมกันอย่างไร
- ขั้นตอนที่ 6: HTTP POST และ GET
- ขั้นตอนที่ 7: โหนดปุ่ม
- ขั้นตอนที่ 8: โหนดฟังก์ชัน
- ขั้นตอนที่ 9: โหนด JSON และ Inject Node
- ขั้นตอนที่ 10: โหนดข้อความและโหนดดีบัก
- ขั้นตอนที่ 11: โหนดแผนภูมิ
- ขั้นตอนที่ 12: โหนดเกจและโหนดลิงก์
- ขั้นตอนที่ 13: ขอบคุณสำหรับการอ่านคำแนะนำของฉัน
วีดีโอ: วิธีทำงานกับ JSON ใน Node-RED: 13 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
คำแนะนำนี้จะสอนวิธีทำงานกับ JSON ใน node-RED ฉันจะแสดงวิธีควบคุมปลั๊กไฟในเครือข่ายด้วยการถ่ายโอนไฟล์ json ผ่าน http get และ post และคุณสามารถใช้ความรู้นี้ในภายหลังเพื่อควบคุมอุปกรณ์ใดๆ ที่รองรับโปรโตคอล JSON
เพื่อจุดประสงค์ในการสอน ฉันจะใช้ปลั๊กไฟเครือข่าย NETIO 4All แต่ไม่ต้องกังวล คุณไม่จำเป็นต้องซื้ออะไรเลย NETIO มีการสาธิตออนไลน์ 4All ที่น่าทึ่งที่คุณสามารถใช้ได้
เสบียง
NETIO 4Powersocket เครือข่ายทั้งหมดหรือการสาธิตออนไลน์ 4All:
โหนด-RED
ขั้นตอนที่ 1: REST JSON Http Protocol
ส่วนนี้เป็นเทคนิคเล็กน้อย แต่โปรดอดทนกับฉัน หากฉันไม่ได้อธิบายส่วนนี้ คุณจะมีปัญหาในการทำความเข้าใจค่าในไฟล์ 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 (โครงการที่คุณเห็น ต่อมาฉันจะแสดงวิธีการนำเข้าโฟลว์และโปรเจ็กต์นี้) โปรเจ็กต์นี้ประกอบด้วยสองส่วน:
- NETIO AN30 (JSON REST API) โฟลว์
- แดชบอร์ด (อินเทอร์เฟซแบบกราฟิกซึ่งคุณสามารถใช้งานโปรแกรมของคุณได้)
ขั้นตอนที่ 3: แดชบอร์ด
นี่คือลักษณะของแดชบอร์ดใน node-RED สำหรับคำแนะนำนี้ คุณสามารถปรับแต่งได้หากต้องการให้เหมาะกับรสนิยมของคุณ
แดชบอร์ดสำหรับโครงการนี้แบ่งออกเป็น 4 ส่วน:
- สถานะอุปกรณ์ - แสดงข้อมูลอุปกรณ์ เช่น รุ่น ที่อยู่ Mac หรือเวอร์ชันเฟิร์มแวร์
- (POST) เอาต์พุตควบคุม 1 - ประกอบด้วยปุ่ม 5 ปุ่มซึ่งควบคุมเอาต์พุต 1 ปุ่มแต่ละปุ่มดำเนินการต่างกัน
- (GET) O1 - สถานะเอาต์พุต O4 - ส่วนนี้แสดงสถานะปัจจุบันของแต่ละเอาต์พุตจากอุปกรณ์ของคุณ
- การจัดการอุปกรณ์ - ในส่วนนี้ คุณสามารถค้นหากราฟและเกจทุกประเภทที่แสดงค่ามิเตอร์ปัจจุบันจากอุปกรณ์ 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)
โหนดนี้ส่งไฟล์คำสั่ง 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
รหัสแบ่งออกเป็นสี่ส่วน:
- การกำหนดค่าจากวัตถุ JSON ให้กับคุณสมบัติแต่ละรายการของวัตถุ msg
-
การจัดการข้อผิดพลาดในกรณีที่เต้ารับไฟฟ้าในเครือข่ายไม่รองรับการวัดทั่วโลก
หากปลั๊กไฟในเครือข่ายไม่รองรับการวัดค่าส่วนกลาง Node-RED จะแสดงข้อผิดพลาดเนื่องจากฟังก์ชันนี้จะไม่พบคุณสมบัติที่เกี่ยวข้อง เช่น msg.payload. GlobalMeasure. Voltage เนื่องจากจะไม่ปรากฏในวัตถุ JSON ในกรณีนี้ คุณสมบัติของวัตถุ msg เช่น msg. Voltage ถูกตั้งค่าเป็น 0 และตรวจพบข้อผิดพลาดว่าได้รับการจัดการแล้ว
- การกำหนดค่าสถานะเอาต์พุต
- การตั้งค่าสีของค่าสถานะเอาต์พุตที่แสดงตามสถานะเอาต์พุต
ขั้นตอนที่ 9: โหนด JSON และ 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
เร็วๆนี้:)
แนะนำ:
วิธีการปรับใช้แอป Node.js บน Heroku: 3 ขั้นตอน
วิธีปรับใช้แอป Node.js บน Heroku: นี่คือวิธีที่ฉันปรับใช้แอป NodeJS ของฉันบน Heroku โดยใช้บัญชีฟรี เพียงคลิกลิงก์เพื่อดาวน์โหลดซอฟต์แวร์ที่จำเป็น:ซอฟต์แวร์ที่ใช้: VSCode (หรือโปรแกรมแก้ไขข้อความที่คุณเลือก)HerokuCLIGit
Node Mcu Indian Car Central Lock พร้อม Rfid และ Blynk Timer Unlock: 9 ขั้นตอน
Node Mcu Indian Car Central Lock พร้อม Rfid และ Blynk Timer Unlock: ฉันกำลังแสดงให้คุณเห็นวันนี้รถสไตล์อินเดียล็อคกลางอัตโนมัติเต็มรูปแบบพร้อมแท็ก rfid blynk wifi ควบคุมและปลดล็อคเวลานอกจากนี้ยังมีคุณสมบัติทั้งหมดของเซ็นทรัลล็อคปกติ รถคันนี้ เซ็นทรัลล็อค WORKS OFFLINE ACTIVATION ต้องการ NETWORK LOCKS AN
วิธีเชื่อมต่อ Raspberry Pi กับ Cloud โดยใช้ Node.js: 7 ขั้นตอน
วิธีเชื่อมต่อ Raspberry Pi กับคลาวด์โดยใช้ Node.js: บทช่วยสอนนี้มีประโยชน์สำหรับทุกคนที่ต้องการเชื่อมต่อ Raspberry Pi กับคลาวด์ โดยเฉพาะกับแพลตฟอร์ม AskSensors IoT โดยใช้ Node.js ไม่มี Raspberry Pi ใช่ไหม หากคุณไม่มี Raspberry Pi อยู่แล้ว ฉันจะแนะนำให้คุณซื้อ Raspberry
RaspberryPi WSPR Node: 7 ขั้นตอน
RaspberryPi WSPR Node: ฉันต้องการสร้างเครื่องส่งสัญญาณ WSPRnet (Weak Signal Propegation Reporter) เพื่อให้เท้าของฉันเปียกในเกม WSPRnet และเริ่มเห็นว่าฉันสามารถส่งสัญญาณบีคอนได้ไกลแค่ไหน ฉันมีอุปกรณ์ชิ้นนี้วางอยู่รอบๆ และตัดสินใจว่าฉันจะจัดโปร
วิธีทำงานกับ Arduino และไฟ LED RGB แบบต่างๆ: 3 ขั้นตอน
วิธีทำงานกับ Arduino และไฟ LED RGB แบบต่างๆ: Arduino เป็นอุปกรณ์ขนาดเล็กที่น่าทึ่ง แต่หนึ่งในแอปพลิเคชั่นที่ใช้กันมากที่สุดสำหรับอุปกรณ์ขนาดเล็กที่ทรงพลังนี้มักจะกะพริบหรือกะพริบไฟ LED บทช่วยสอนนี้จะแสดงให้คุณเห็นสามวิธีในการทำงานกับไฟ LED RGB และ Arduino1 วิธีแรกคือใช้วิธีง่ายๆ