การรับรู้ฟังก์ชันการรวมข้อมูลโดยใช้ Node-RED
สารบัญ
คำนำ
ขอบคุณสำหรับความช่วยเหลือของคุณ.
นี่คือบริษัท ซิมท็อปส์ จำกัด
ครั้งนี้บริษัท Panasonic FS Engineering Co., Ltd. ซึ่งเป็นตัวแทนของ i-Reporter ได้เขียนบทความเรื่อง "การสร้างฟังก์ชันการรวมข้อมูลโดยใช้ i-Reporter และ Node RED" ซึ่งอธิบายถึงเทคโนโลยีที่ทำให้การสร้างการรวมข้อมูลระหว่าง i-Reporter และระบบภายนอกง่ายขึ้น (ด้วยโค้ดน้อย)
Node-RED เป็นเครื่องมือที่ช่วยให้คุณสร้างแอปพลิเคชันและระบบอัตโนมัติได้อย่างง่ายดายโดยไม่ต้องมีความรู้ด้านการเขียนโปรแกรม คุณสามารถเชื่อมต่อบล็อกที่เรียกว่า "โหนด" ในเบราว์เซอร์ของคุณเพื่อออกแบบการไหลของข้อมูลได้อย่างชัดเจน
หากคุณประสบปัญหาในการบูรณาการกับระบบภายนอกโดยใช้ ConMas Gateway เราหวังว่าคุณจะอ่านบทความนี้
สวัสดี
ยินดีที่ได้รู้จัก.
ชื่อฉันโคบะ จากบริษัท พานาโซนิค เอฟเอส เอ็นจิเนียริ่ง จำกัด ผู้จำหน่าย i-Reporter
เราสงสัยว่าเราจะสามารถทำให้การใช้ข้อมูลภาคสนามง่ายและราบรื่นขึ้นได้หรือไม่ ด้วยเหตุนี้ เราจึงคิดค้นวิธีการผสานรวมข้อมูลโดยใช้ i-Reporter และ Node-RED
เมื่อได้ลองใช้จริง ผมพบว่าการผสานรวมข้อมูลอัตโนมัติสามารถทำได้ด้วยการตั้งค่าง่ายๆ ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานได้อย่างมาก ผมจึงอยากแบ่งปันวิธีการที่สะดวกสบายนี้ให้ทุกคนได้ทราบ จึงได้เขียนบทความเกี่ยวกับเรื่องนี้ขึ้นมา
หนังสือเล่มนี้จะเป็นประโยชน์อย่างแน่นอนสำหรับผู้ที่ต้องการใช้ข้อมูล i-Reporter ให้เกิดประโยชน์มากขึ้น หรือผู้ที่ต้องการบูรณาการระบบของตนอย่างยืดหยุ่นโดยใช้เครื่องมือแบบไม่ต้องเขียนโค้ด
โปรดอย่าลืมดูจนจบนะครับ!
ความเป็นมาของการก่อตั้งความร่วมมือนี้
ลูกค้ารายหนึ่งติดต่อเราเกี่ยวกับการใช้ i-Reporter เป็น UI สำหรับระบบภายในของพวกเขา เราได้แนะนำวิธีการผสานรวมระบบโดยใช้ Gateway และ Python ให้พวกเขาทราบ และพวกเขาก็เริ่มดำเนินการตรวจสอบต่อไป
อย่างไรก็ตาม การเปิดตัว i-Reporter ถูกเลื่อนออกไปด้วยเหตุผลดังต่อไปนี้:
เหตุผลที่ยกเลิกการนำ i-Reporter มาใช้
- ค่าใช้จ่ายในการเรียนรู้ Python
ฉันไม่มีเวลาเรียนรู้ Python - ความซับซ้อนเมื่อใช้ฟังก์ชัน Gateway
จำเป็นต้องเขียนโค้ดโดยตรงในไฟล์หลายไฟล์ภายนอกเครื่องมือ ซึ่งทำให้การจัดการมีความซับซ้อนและการบำรุงรักษาทำได้ยาก - การสร้าง SQL ที่ซับซ้อนเป็นภาระ
เมื่อสร้าง SQL ที่ซับซ้อน จำเป็นต้องเขียนด้วย Python ซึ่งจะทำให้เวลาในการพัฒนาเพิ่มขึ้น - จุดหมายปลายทางการเข้าถึงไม่ชัดเจน
เป็นเรื่องยากที่จะทราบว่าจะเข้าถึงข้อมูลที่จำเป็นได้จากที่ใด จึงทำให้การบริหารจัดการทำได้ยาก - ความสัมพันธ์ที่ไม่ชัดเจนระหว่างไฟล์ i-Reporter และ Python
จุดหมายปลายทางการโทรจาก i-Reporter ไม่ได้เชื่อมโยงโดยตรงกับไฟล์ Python ซึ่งทำให้การทำงานมีภาระหนัก
แนวทางแก้ไขที่เสนอ
- ฉันไม่มีเวลาเรียนรู้ Python
→ พิจารณาใช้เครื่องมือพัฒนาแบบไม่ต้องเขียนโค้ดหรือเขียนโค้ดน้อย - ลดภาระการจัดการโค้ดเมื่อใช้ Gateway
→ เรากำลังมองหาวิธีโทรและกลับโดยตรงจาก i-Reporter - ขจัดความสับสนในการเข้าถึง
→ ลดความซับซ้อนในการจัดการและรวบรวมข้อมูล และพิจารณาวิธีการเข้าถึงที่ใช้งานง่ายยิ่งขึ้น
คุณสมบัติของ Node-RED
- การเขียนโปรแกรมเชิงภาพ
มันให้ตัวแก้ไขการไหลที่ทำงานบนเว็บเบราว์เซอร์ ช่วยให้คุณสร้างเวิร์กโฟลว์ได้อย่างชัดเจนด้วยการลากและวางโหนด - รองรับ JavaScript
การประมวลผลที่กำหนดเองสามารถนำไปปฏิบัติได้โดยการเขียนฟังก์ชัน JavaScript - รันไทม์ที่ใช้ Node.js
มันมอบสภาพแวดล้อมที่มีน้ำหนักเบาและยืดหยุ่นที่สามารถทำงานได้บนอุปกรณ์หลากหลายชนิด - การจัดการการไหลของรูปแบบ JSON
โฟลว์ที่คุณสร้างจะถูกบันทึกในรูปแบบ JSON ทำให้สามารถนำกลับมาใช้ซ้ำและแชร์ได้ง่าย - รองรับ MQTT/TLS
ตั้งแต่เวอร์ชัน 0.14 เป็นต้นไป โหนด MQTT สามารถสร้างการเชื่อมต่อ TLS ได้ ช่วยให้การสื่อสารมีความปลอดภัยยิ่งขึ้น
Node-RED ถูกใช้กันอย่างแพร่หลายในด้าน IoT และระบบอัตโนมัติทางธุรกิจ เนื่องจากแม้แต่ผู้เริ่มต้นก็สามารถสร้างระบบโดยใช้ Node-RED ได้อย่างเป็นธรรมชาติ
[อ้างอิง] Node-RED (Wikipedia)
ตัวอย่างสภาพแวดล้อมการปฏิบัติการ

ตัวอย่างหน้าจอ

การไหลของโหนด-RED

ภาพการดำเนินการ

สรุป
ประโยชน์ของการใช้ Node-RED
1. ลดต้นทุนการศึกษา
Node-RED เป็นเครื่องมือพัฒนาแบบ low-code ที่ช่วยให้แม้แต่ผู้ที่มีความรู้ด้านการเขียนโปรแกรมเพียงเล็กน้อยก็สามารถสร้างโฟลว์ได้ค่อนข้างง่าย ทำให้สามารถพัฒนาระบบได้อย่างรวดเร็วในขณะที่ยังคงต้นทุนการเรียนรู้ที่ต่ำ
2. โครงสร้างไฟล์ที่เรียบง่าย
ช่วยขจัดความจำเป็น ในการเขียนสตริงการเชื่อมต่อ DB จัดการไฟล์ Action และสร้างไฟล์สคริปต์ ซึ่งจำเป็นก่อนหน้านี้ เนื่องจากการประมวลผลทั้งหมดเสร็จสิ้นภายใน Node-RED การกำหนดค่าไฟล์จึงง่ายขึ้นและการจัดการก็สะดวกยิ่งขึ้น
3. รองรับคำสั่ง SQL ที่ซับซ้อน
เนื่องจากคุณสามารถเขียนคำสั่ง SQL ภายใน Node-RED ได้ คุณจึงสามารถดำเนินการข้อมูลที่ซับซ้อน เช่น การประมวลผลธุรกรรม การรวมภายนอกและภายใน SELECT, INSERT และ UPDATE ได้ด้วย
4. การเข้าถึงที่ชัดเจน
เนื่องจากที่อยู่ Gateway และที่อยู่ API ของ Node-RED ตรงกัน การเชื่อมต่อระบบจึงง่ายขึ้น ทำให้การทำงานและการจัดการสะดวกยิ่งขึ้น
5. ความสามารถในการปรับขนาดได้สูง
Node-RED เป็นเครื่องมือพัฒนาที่มีความสามารถในการขยายได้สูงซึ่งช่วยให้คุณสามารถใช้งานฟังก์ชันต่อไปนี้ได้อย่างง่ายดาย:
- การอ่านและการเขียนไฟล์ CSV
- การบูรณาการกับ Web API ของบริษัทอื่น
- ส่งการแจ้งเตือนไปยังอีเมล์และแชท
- การรับข้อมูล PLC
ด้วยวิธีนี้ การใช้ Node-RED จะช่วยปรับปรุงประสิทธิภาพการพัฒนาและสร้างระบบที่ยืดหยุ่นได้
จุดสำคัญในการใช้ Node-RED
1. สร้าง WebAPI ด้วย Node-RED
Node-RED ช่วยให้คุณ สร้าง Web API ได้อย่างง่ายดาย ด้วยโค้ดน้อย การออกแบบโฟลว์แบบ Visual ช่วยให้การพัฒนาเป็นไปอย่างราบรื่น
2. ค่าส่งคืนรูปแบบ JSON มีความสำคัญ
สิ่งสำคัญคือการเตรียมค่าที่ส่งกลับของ WebAPI ที่สร้างด้วย Node-RED ในรูปแบบ JSON ที่เหมาะสม สิ่งสำคัญคือการออกแบบโครงสร้างข้อมูลแบบรวมศูนย์เพื่อให้มั่นใจว่าการประมวลผลบนฝั่งไคลเอ็นต์จะราบรื่น
การจดจำสองประเด็นนี้ไว้จะช่วยให้คุณสร้างระบบที่มีประสิทธิภาพมากขึ้นได้
ข่าวอื่นๆสำหรับผู้อ่านของเรา:
หากคุณกำลังใช้บริการนี้อยู่แล้ว โปรด แบ่งปันข้อมูลเพิ่มเติม ที่คุณมี
เราจะขอบคุณมากหากคุณสามารถส่งความคิดเห็นและข้อเสนอแนะของคุณมาให้เรา
ตัวอย่างคำอธิบายการเชื่อมโยง i-Reporter
ตัวอย่างต่อไปนี้จะอธิบายรายการต่อไปนี้:
นอกจากนี้ โปรดดูเว็บไซต์แยกต่างหากเพื่อดูข้อมูลเกี่ยวกับวิธีการติดตั้ง Node-RED วิธีการเพิ่มโหนดที่จำเป็น และวิธีการใช้งาน Node-RED
นอกจากนี้ ในส่วนคำอธิบายโหนด คำอธิบายของโหนดที่เหมือนกับในตัวอย่างก่อนหน้านี้จะถูกละเว้น
กรุณาดูตัวอย่างก่อนหน้านี้
- การแสดงข้อมูล PostgreSQL ใน i-Reporter
- แสดงรหัส QR บน i-Reporter
- การแสดงไฟล์ภาพ
- กำหนดโฟกัส
- ชุดตัวเลือกคลัสเตอร์แบบตัวเลือกเดียว
การแสดงข้อมูล PostgreSQL ใน i-Reporter
ภาพไหล

ภาพรวม
นี่คือตัวอย่างที่ดึงข้อมูล PostgreSQL และแสดงใน i-Reporter
ดึงข้อมูลจากตารางสินค้าคงคลังและแสดงบนหน้าจอ i-Reporter
โหนดที่จะใช้ (โหนดที่จะเพิ่ม)
ในตัวอย่างนี้ โหนด Node-RED ต่อไปนี้จะถูกเพิ่มเพื่อเข้าถึง PostgreSQL
- node-red-contrib-re-postgres
การกำหนดค่าโหนด
http อินโหนด

วิธีการ: ใช้วิธีการเดียวกันกับ i-Reporte
URL: ระบุจุดสิ้นสุด URL
ชื่อ : ระบุชื่อที่เข้าใจง่ายเหมือนความคิดเห็น
โหนดเทมเพลต

กรอกคำสั่ง SQL เพื่อเข้าถึงฐานข้อมูล
ชื่อ : ระบุชื่อที่เข้าใจง่ายเหมือนความคิดเห็น
คุณสมบัติ: ชื่อตัวแปรที่จะกำหนดเนื้อหาเทมเพลต
ตัวแปรที่โหนด postgres ถัดไปร้องขอคือ msg.payload
ดังนั้นให้กำหนดให้กับ msg.payload
รูปแบบ: ระบุเทมเพลตหนวด
รูปแบบผลลัพธ์: ระบุข้อความธรรมดา
โหนด postgres

ชื่อ: ระบุความคิดเห็นสำหรับโหนด Postgres
Sewver: ระบุชื่อที่คุณตั้งให้กับข้อมูลการเชื่อมต่อฐานข้อมูลด้านล่าง
รับผลลัพธ์ของแบบสอบถามหรือไม่: หากคุณต้องการใช้ข้อมูลที่ดึงมาในโฟลว์ถัดไป
ทำเครื่องหมายในช่อง

ชื่อ: ตั้งชื่อข้อมูลการเชื่อมต่อฐานข้อมูล
โฮสต์: ระบุชื่อเซิร์ฟเวอร์และที่อยู่ IP
ฐานข้อมูล: ระบุชื่อฐานข้อมูล
ชื่อผู้ใช้ : ระบุชื่อผู้ใช้
รหัสผ่าน : ระบุรหัสผ่าน
โหนดเทมเพลต

สร้างสตริงเพื่อส่งคืนข้อมูลที่ได้รับไปยังคลัสเตอร์ i-Reporter
สร้างข้อมูลในรูปแบบ JSON นี้
โหนดตอบสนอง http

นี่คือโหนดที่จับคู่กับ http ใน
ใช้ค่าเริ่มต้น
การตั้งค่า i-Reporter

ไฟล์ต้นฉบับ
[
{
"id": "e5093ff27efd600e",
"type": "http in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "データ取得",
"url": "/Get-Data",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 280,
"y": 4220,
"wires": [
[
"a016c039f0157d8f"
]
]
},
{
"id": "a016c039f0157d8f",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "SQL",
"field": "payload",
"fieldType": "msg",
"format": "sql",
"syntax": "mustache",
"template": "SELECT\n id\n , part_no\n , part_no\n , part_nam\n , stock_cnt\nFROM\n stddb.t_inventory\nORDER BY stock_cnt ASC\nLIMIT 5\n",
"output": "str",
"x": 690,
"y": 4220,
"wires": [
[
"4cc5f7592a8bf6ff"
]
]
},
{
"id": "4cc5f7592a8bf6ff",
"type": "postgres",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"postgresdb": "1429ffd5a6603e33",
"name": "",
"output": true,
"perrow": false,
"rowspermsg": "1",
"return_on_error": false,
"limit_queries": "0",
"limit_by": "payload",
"limit_value": "1",
"limit_drop_intermediate": false,
"limit_drop_if_in_queue": false,
"outputs": true,
"x": 880,
"y": 4220,
"wires": [
[
"85397862ed216455"
]
]
},
{
"id": "85397862ed216455",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "json",
"syntax": "mustache",
"template": "{\n \"result\": {\n \"code\": 0,\n \"description\": \"Success!!!\"\n },\n \"apply\": [\n {\n \"sheet\": 1,\n \"cluster\": 2,\n \"type\": \"string\",\n \"value\": \"{{{payload.0.id}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 3,\n \"type\": \"string\",\n \"value\": \"{{{payload.0.part_no}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 4,\n \"type\": \"string\",\n \"value\": \"{{{payload.0.part_nam}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 5,\n \"type\": \"string\",\n \"value\": \"{{{payload.0.stock_cnt}}}\"\n },\n\n {\n \"sheet\": 1,\n \"cluster\": 7,\n \"type\": \"string\",\n \"value\": \"{{{payload.1.id}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 8,\n \"type\": \"string\",\n \"value\": \"{{{payload.1.part_no}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 9,\n \"type\": \"string\",\n \"value\": \"{{{payload.1.part_nam}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 10,\n \"type\": \"string\",\n \"value\": \"{{{payload.1.stock_cnt}}}\"\n },\n\n {\n \"sheet\": 1,\n \"cluster\": 11,\n \"type\": \"string\",\n \"value\": \"{{{payload.2.id}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 12,\n \"type\": \"string\",\n \"value\": \"{{{payload.2.part_no}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 13,\n \"type\": \"string\",\n \"value\": \"{{{payload.2.part_nam}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 14,\n \"type\": \"string\",\n \"value\": \"{{{payload.2.stock_cnt}}}\"\n },\n\n {\n \"sheet\": 1,\n \"cluster\": 15,\n \"type\": \"string\",\n \"value\": \"{{{payload.3.id}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 16,\n \"type\": \"string\",\n \"value\": \"{{{payload.3.part_no}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 17,\n \"type\": \"string\",\n \"value\": \"{{{payload.3.part_nam}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 18,\n \"type\": \"string\",\n \"value\": \"{{{payload.3.stock_cnt}}}\"\n },\n\n {\n \"sheet\": 1,\n \"cluster\": 19,\n \"type\": \"string\",\n \"value\": \"{{{payload.4.id}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 20,\n \"type\": \"string\",\n \"value\": \"{{{payload.4.part_no}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 21,\n \"type\": \"string\",\n \"value\": \"{{{payload.4.part_nam}}}\"\n },\n {\n \"sheet\": 1,\n \"cluster\": 22,\n \"type\": \"string\",\n \"value\": \"{{{payload.4.stock_cnt}}}\"\n }\n\n ]\n}",
"output": "str",
"x": 1300,
"y": 4220,
"wires": [
[
"9d7dfb43e876a634"
]
]
},
{
"id": "9d7dfb43e876a634",
"type": "http response",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"statusCode": "",
"headers": {},
"x": 1450,
"y": 4220,
"wires": []
},
{
"id": "1429ffd5a6603e33",
"type": "postgresdb",
"cfgname": "Localhost",
"hostname": "localhost",
"port": "5432",
"db": "postgres",
"ssl": false
}
]
แสดงรหัส QR บน i-Reporter
ภาพไหล

ภาพรวม
สตริงที่ป้อนในคลัสเตอร์ 1 จะถูกแปลงเป็นรหัส QR และแสดงบนหน้าจอ i-Reporter
โหนดที่จะใช้ (โหนดที่จะเพิ่ม)
node-red-contrib-image-tools
การกำหนดค่าโหนด
http อินโหนด

โหนดเครื่องกำเนิดบาร์โค้ด

ข้อความ: ระบุสตริงที่จะใช้เป็นรหัส QR
ครั้งนี้สตริงจะได้รับการสืบทอดจาก i-Reporter เป็นตัวแปรที่เรียกว่า id
ตัวแปรที่สืบทอดจะถูกป้อนลงในตัวแปรในรูปแบบ msg.payload.id
ประเภท: เนื่องจากเราจะแปลงเป็นรหัส QR ในครั้งนี้ ให้เลือกรหัส QR
โหนดภาพ

แปลงเป็นรูปแบบ Base64
เอาท์พุต: ตั้งค่า base64
โหนดเทมเพลต

สร้างข้อมูลในรูปแบบนี้
การตั้งค่า i-Reporter

ไฟล์ต้นฉบับ
[
{
"id": "e9a3130d5919b122",
"type": "http in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "QR作成",
"url": "/Make-QR",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 290,
"y": 4480,
"wires": [
[
"659cc17a2ce81dd4"
]
]
},
{
"id": "659cc17a2ce81dd4",
"type": "Barcode Generator",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"data": "payload.id",
"dataType": "msg",
"barcode": "qrcode",
"barcodeType": "barcode",
"options": "",
"optionsType": "ui",
"sendProperty": "payload",
"props": [],
"x": 710,
"y": 4480,
"wires": [
[
"613466464d37465f"
]
]
},
{
"id": "613466464d37465f",
"type": "jimp-image",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"data": "payload",
"dataType": "msg",
"ret": "b64",
"parameter1": "",
"parameter1Type": "msg",
"parameter2": "",
"parameter2Type": "msg",
"parameter3": "",
"parameter3Type": "msg",
"parameter4": "",
"parameter4Type": "msg",
"parameter5": "",
"parameter5Type": "msg",
"parameter6": "",
"parameter6Type": "msg",
"parameter7": "",
"parameter7Type": "msg",
"parameter8": "",
"parameter8Type": "msg",
"sendProperty": "payload",
"sendPropertyType": "msg",
"parameterCount": 0,
"jimpFunction": "none",
"selectedJimpFunction": {
"name": "none",
"fn": "none",
"description": "Just loads the image.",
"parameters": []
},
"x": 890,
"y": 4480,
"wires": [
[
"de0adf2b1d2ed0a6"
]
]
},
{
"id": "de0adf2b1d2ed0a6",
"type": "change",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"rules": [
{
"t": "change",
"p": "payload",
"pt": "msg",
"from": "data:image/png;base64,",
"fromt": "str",
"to": "",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1100,
"y": 4480,
"wires": [
[
"66027e96639dfcd1"
]
]
},
{
"id": "66027e96639dfcd1",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "json",
"syntax": "mustache",
"template": "{\n \"result\": {\n \"code\": 0,\n \"description\": \"Success!!!\"\n },\n \"apply\": [\n {\n \"sheet\": 1,\n \"cluster\": 32,\n \"type\": \"image\",\n \"value\":\"{{{payload}}}\"\n }\n ]\n}",
"output": "str",
"x": 1300,
"y": 4480,
"wires": [
[
"0ba54da75fb7fd64"
]
]
},
{
"id": "0ba54da75fb7fd64",
"type": "http response",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"statusCode": "",
"headers": {},
"x": 1450,
"y": 4480,
"wires": []
}
]
การแสดงไฟล์ภาพ
ภาพไหล

ภาพรวม
ไฟล์รูปภาพที่เลือกในคลัสเตอร์ 37 จะถูกเรียกและแสดงบนหน้าจอ i-Reporter
โหนดที่จะใช้ (โหนดที่จะเพิ่ม)
เพิ่มโหนด Node-RED ต่อไปนี้เพื่อดึงข้อมูลภาพและแปลงเป็นรูปแบบ Base64
node-red-contrib-image-tools
การกำหนดค่าโหนด
http อินโหนด

ไฟล์ Resd

ระบุชื่อไฟล์จาก i-Reporter ในตัวแปร Msg.payload.fl
โหลดไฟล์นี้
การตั้งค่า i-Reporter


ไฟล์ต้นฉบับ
[
{
"id": "2a05cf56bd260e0a",
"type": "http in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "画像読込",
"url": "/Make-picture",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 300,
"y": 4600,
"wires": [
[
"7dcccd963194b66e"
]
]
},
{
"id": "7dcccd963194b66e",
"type": "file in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"filename": "payload.fl",
"filenameType": "msg",
"format": "",
"chunk": false,
"sendError": false,
"encoding": "none",
"allProps": false,
"x": 720,
"y": 4600,
"wires": [
[
"83fddd4210b2173b"
]
]
},
{
"id": "83fddd4210b2173b",
"type": "jimp-image",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"data": "payload",
"dataType": "msg",
"ret": "b64",
"parameter1": "",
"parameter1Type": "msg",
"parameter2": "",
"parameter2Type": "msg",
"parameter3": "",
"parameter3Type": "msg",
"parameter4": "",
"parameter4Type": "msg",
"parameter5": "",
"parameter5Type": "msg",
"parameter6": "",
"parameter6Type": "msg",
"parameter7": "",
"parameter7Type": "msg",
"parameter8": "",
"parameter8Type": "msg",
"sendProperty": "payload",
"sendPropertyType": "msg",
"parameterCount": 0,
"jimpFunction": "none",
"selectedJimpFunction": {
"name": "none",
"fn": "none",
"description": "Just loads the image.",
"parameters": []
},
"x": 890,
"y": 4600,
"wires": [
[
"ac767862aee316a1"
]
]
},
{
"id": "ac767862aee316a1",
"type": "change",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"rules": [
{
"t": "change",
"p": "payload",
"pt": "msg",
"from": "data:image/png;base64,",
"fromt": "str",
"to": "",
"tot": "str"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1100,
"y": 4600,
"wires": [
[
"4c8d32ffa9bc11ee"
]
]
},
{
"id": "4c8d32ffa9bc11ee",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "json",
"syntax": "mustache",
"template": "{\n \"result\": {\n \"code\": 0,\n \"description\": \"Success!!!\"\n },\n \"apply\": [\n {\n \"sheet\": 1,\n \"cluster\": 34,\n \"type\": \"image\",\n \"value\":\"{{{payload}}}\"\n }\n ]\n}",
"output": "str",
"x": 1300,
"y": 4600,
"wires": [
[
"5c1d265fe120ddfa"
]
]
},
{
"id": "5c1d265fe120ddfa",
"type": "http response",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"statusCode": "",
"headers": {},
"x": 1450,
"y": 4600,
"wires": []
}
]
กำหนดโฟกัส
ภาพไหล

ภาพรวม
ย้ายโฟกัสไปที่หมายเลขคลัสเตอร์ที่ระบุในคลัสเตอร์ 35
การตั้งค่าโฟกัสไปที่คลัสเตอร์การดำเนินการจะดำเนินการนั้น
วิธีการนี้ช่วยให้คุณ เปลี่ยนโฟกัสโดยอัตโนมัติหลังจากป้อนข้อมูลบางอย่าง ช่วยให้เวิร์กโฟลว์ราบรื่น
โหนดที่จะใช้ (โหนดที่จะเพิ่ม)
ไม่มีโหนดที่จะเพิ่ม
การกำหนดค่าโหนด
http อินโหนด

โหนดเทมเพลต

การตั้งค่า i-Reporter

ไฟล์ต้นฉบับ
[
{
"id": "bce3b44ea5fd7c32",
"type": "http in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "フォーカスセット",
"url": "/Set-focus",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 330,
"y": 4840,
"wires": [
[
"f7e7778f83b25cae"
]
]
},
{
"id": "f7e7778f83b25cae",
"type": "change",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"rules": [
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "payload.clid",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1080,
"y": 4840,
"wires": [
[
"68c4e54ba5fc454e"
]
]
},
{
"id": "68c4e54ba5fc454e",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"field": "payload",
"fieldType": "msg",
"format": "json",
"syntax": "mustache",
"template": "{\n \"result\": {\n \"code\": 0,\n \"description\": \"Success!!!\"\n },\n \"apply\": [\n {\n \"sheet\":1,\n \"cluster\":{{{payload}}},\n \"type\":\"SetFocus\",\n \"value\": \"\"\n }\n ]\n\n}",
"output": "str",
"x": 1300,
"y": 4840,
"wires": [
[
"92a9e28385c334b8"
]
]
},
{
"id": "92a9e28385c334b8",
"type": "http response",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"statusCode": "",
"headers": {},
"x": 1450,
"y": 4840,
"wires": []
}
]
ชุดตัวเลือกคลัสเตอร์แบบตัวเลือกเดียว
ภาพไหล

ภาพรวม
ดึงข้อมูลจากฐานข้อมูลภายนอกและตั้งค่าเป็นตัวเลือกในคลัสเตอร์แบบตัวเลือกเดียว
โหนดที่จะใช้ (โหนดที่จะเพิ่ม)
เพิ่มโหนด Node-RED ต่อไปนี้เพื่อเข้าถึง PostgreSQL
node-red-contrib-re-postgres
การกำหนดค่าโหนด
http อินโหนด

โหนดเทมเพลต

เนื่องจากเราเข้าถึงฐานข้อมูลในครั้งนี้ เราจะสร้างสตริงส่งคืนในตัวแปรที่เรียกว่า msg.base_data
มาสุ
เปลี่ยนโหนด

ข้อมูลในตัวแปร msg.payload ที่ได้รับจากฐานข้อมูลภายนอก
กำหนดให้กับ msg.base_data.appy.0.selectitems
จากนั้นใส่ msg.base_data กลับเข้าไปใน msg.payload
โหนด JSON

โหนดนี้จะแปลงวัตถุ JSON ใน msg.payload ให้เป็นสตริง JSON
การตั้งค่า i-Reporter

ไฟล์ต้นฉบับ
[
{
"id": "2ea56ea0b25a0857",
"type": "http in",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "単一選択クラスタ選択肢取得",
"url": "/Get-tnam",
"method": "get",
"upload": false,
"swaggerDoc": "",
"x": 360,
"y": 4900,
"wires": [
[
"2fa4f08a98cd25fd"
]
]
},
{
"id": "2fa4f08a98cd25fd",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "ベースJSON",
"field": "base_data",
"fieldType": "msg",
"format": "json",
"syntax": "mustache",
"template": "{\n \"result\": {\n \"code\": 0,\n \"description\": \"Success!!!\"\n },\n \"apply\": [\n {\n \"item\": \"list1\",\n \"sheet\": {{{payload.sheet}}},\n \"cluster\": {{{payload.cluster}}},\n \"type\": \"SetItemsToSelect\",\n \"value\": \"\"\n \n }\n ]\n}",
"output": "json",
"x": 590,
"y": 4900,
"wires": [
[
"c1b53a7404b91999"
]
]
},
{
"id": "c1b53a7404b91999",
"type": "template",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "SQL",
"field": "payload",
"fieldType": "msg",
"format": "sql",
"syntax": "mustache",
"template": "SELECT\n player_nam AS item\n , player_nam AS label\n , false AS selected\nFROM\n stddb.t_player\nWHERE\n tema_nam={{{payload.tnam}}}",
"output": "str",
"x": 750,
"y": 4900,
"wires": [
[
"243b5892a658a184"
]
]
},
{
"id": "243b5892a658a184",
"type": "postgres",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"postgresdb": "1429ffd5a6603e33",
"name": "",
"output": true,
"perrow": false,
"rowspermsg": "1",
"return_on_error": false,
"limit_queries": "0",
"limit_by": "payload",
"limit_value": "1",
"limit_drop_intermediate": false,
"limit_drop_if_in_queue": false,
"outputs": true,
"x": 900,
"y": 4900,
"wires": [
[
"4cbadf09c151a876"
]
]
},
{
"id": "4cbadf09c151a876",
"type": "change",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "データOBJ追加",
"rules": [
{
"t": "set",
"p": "base_data.apply.0.selectItems",
"pt": "msg",
"to": "payload",
"tot": "msg"
},
{
"t": "set",
"p": "payload",
"pt": "msg",
"to": "base_data",
"tot": "msg"
}
],
"action": "",
"property": "",
"from": "",
"to": "",
"reg": false,
"x": 1080,
"y": 4900,
"wires": [
[
"48f412aaa05f34b6"
]
]
},
{
"id": "48f412aaa05f34b6",
"type": "json",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"property": "payload",
"action": "str",
"pretty": false,
"x": 1290,
"y": 4900,
"wires": [
[
"c7f2de45cf870ec8"
]
]
},
{
"id": "c7f2de45cf870ec8",
"type": "http response",
"z": "3b9d424424fa37f2",
"g": "beaca7f0903c3bfb",
"name": "",
"statusCode": "",
"headers": {},
"x": 1450,
"y": 4900,
"wires": []
},
{
"id": "1429ffd5a6603e33",
"type": "postgresdb",
"cfgname": "Localhost",
"hostname": "localhost",
"port": "5432",
"db": "postgres",
"ssl": false
}
]
คุณคิดอย่างไร? ฉันหวังว่าบทความนี้จะเป็นประโยชน์กับคุณบ้าง
ขอบคุณมากที่อ่านจนจบ
หากคุณมีคำถามใดๆ โปรดติดต่อเราตามที่อยู่ด้านล่างนี้
เรารอคอยที่จะได้ยินจากคุณ
i-Reporter: 5.2.24021
เกตเวย์: 2.1.230600
- เราจะไม่รับผิดชอบต่อความเสียหายใดๆ ที่เกิดจากระบบที่สร้างขึ้นจากเนื้อหาบทความนี้
- โปรดทราบว่าบริษัท ซิมท็อปส์ จำกัด จะไม่ให้การสนับสนุนด้านการพัฒนา ความช่วยเหลือด้านเทคนิค หรือการสนับสนุนใดๆ เกี่ยวกับเนื้อหาบทความนี้
-เนื่องจากมีการเปลี่ยนแปลงในข้อกำหนดของ ConMas Gateway ฟังก์ชันการรวมนี้อาจใช้ไม่ได้อีกต่อไป
ผู้เขียน/ติดต่อ:
บริษัท พานาโซนิค เอฟเอส เอ็นจิเนียริ่ง จำกัด
■ ข้อมูลการติดต่อ
https://www.panasonic.com/jp/company/pfseg.html
パナソニックFSエンジニアリング株式会社 ソリューション統轄部 IoTソリューション部
担当:大塚 篤 / 村瀬 達也
TEL:03-6714-4521 / 03-6714-4535
メールアドレス:pfseginfo@ml.jp.panasonic.com
*หากต้องการสอบถามข้อมูล กรุณาติดต่อตามอีเมล์ด้านบน
*โปรดทราบว่าเนื่องด้วยสถานการณ์ทางธุรกิจ การตอบกลับอาจล่าช้า
*กรุณางดสอบถามจากตัวแทนขาย

นี่คือกองบรรณาธิการของสถาบันวิจัยเอกสารภาคสนาม!
บล็อกนี้ดำเนินการโดย บริษัท ซิมท็อปส์ จำกัด ซึ่งเป็นผู้พัฒนาและจำหน่ายโซลูชั่นระบบเอกสารภาคสนามทางอิเล็กทรอนิกส์ "i-Reporter"
เราจะส่งมอบข้อมูลอุตสาหกรรมเป็นประจำเพื่อช่วยเหลือผู้ที่ทำงานหนักในการส่งเสริมการเปลี่ยนแปลงทางดิจิทัลในสถานที่ทำงาน ดังนั้นโปรดลองดู!