Smart Farm EP.5 : จัดการข้อมูลด้วย Node-RED

Smart Farm EP.5 : จัดการข้อมูลด้วย Node-RED

จากบทความที่แล้วที่เราได้ทำการเตรียมซอฟต์แวร์และเครื่องมือบน Edgebox RPi200 เรียบร้อยแล้ว อันดับต่อมา เราก็จะมาทำการติดตั้งเซนเซอร์ลงสู่พื้นที่ปลูกกัน พร้อมทั้งนำข้อมูลทั้งหมดเข้าสู่ระบบของเรา รวมถึงสร้าง Dashboard สำหรับการมอนิเตอร์ค่าต่างๆเบื้องต้นบน Home Assistant ด้วย


ขั้นตอนที่ 1 : การติดตั้งเซนเซอร์ลงพื้นที่ปลูก

จากเซนเซอร์ที่เราได้เตรียมไว้ทั้ง 3 ส่วน ได้แก่ Air Node, Light Node และ Soil Node เราจะมาติดตั้งลงพื้นที่ปลูก

การติดตั้ง Air Node

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

 

 

การติดตั้ง Light Node

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

 

 

การติดตั้ง Soil Node

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

 


ขั้นตอนที่ 2 : การจ่ายไฟให้เซนเซอร์

สำหรับแต่ละโหนดนั้น ใช้งานแรงดันไฟฟ้าเท่ากัน ที่แรงดันไฟฟ้ากระแสตรง DC 5V โดยสามารถเลือกจ่ายไฟให้กับแต่ละโหนดโดยใช้แบตเตอรี่ หรือ ผ่านสายไฟที่ลากไปยังแต่ละโหนดได้

 


สำหรับระบบตัวอย่าง ใช้งานเป็น switching power supply 24V ในการแปลงกระแสไฟฟ้า AC220V เป็น DC24V สำหรับจ่ายแรงดันไฟฟ้าให้กับเซนเซอร์, รีเลย์, Edgebox RPi200 และเซนเซอร์โหนดต่างๆ

 


เนื่องจากแต่ละโหนดนั้นใช้งานแรงดันไฟฟ้าที่ 5V จึงต้องมีการลดระดับแรงดันไฟฟ้ามาที่ DC5V โดยใช้ LM2596 ลดระดับแรงดันไฟฟ้าจาก DC24V เป็น DC5V สำหรับจ่ายให้กับโหนดต่างๆ รวมถึงรีเลย์ที่ใช้งานแรงดันไฟฟ้า DC5V ด้วย

 


รีเลย์ที่ใช้งานแรงดันไฟฟ้า DC5V จาก LM2596 และโซลินอยด์วาล์วทองเหลืองที่ใช้งานแรงดันไฟฟ้า DC24V โดยตรงจาก switching power supply

 


Edgebox RPi200 ที่ใช้งานแรงดันไฟฟ้า DC24V โดยตรงจาก switching power supply

 

โดยในการเดินสายไฟในระบบตัวอย่าง มีรายละเอียด ดังนี้

 

 

ขั้นตอนที่ 3 : ติดตั้ง flow ที่เตรียมไว้บน Node-RED

ตรวจสอบไฟล์ “Smart Farm (Node-Red flow).json” ที่มีอยู่ในไฟล์โปรเจ็กต์ที่ได้ทำการดาว์นโหลดมาจาก Github (คลิกที่นี่เพื่อดาว์นโหลดไฟล์สำหรับโปรเจ็กต์

 

 

เปิด Node-RED เลือกเมนู 3 ขีดทางด้านขวาบน เลือก Import

 

 

 


เลือก select a file to import

 


เลือกไฟล์ Smart Farm (Node-RED flow).json ที่ได้ดาว์นโหลดมา แล้วกด Open

 


เลือก Import

 


จะเห็นมี flow ใหม่ปรากฏขึ้นมา ชื่อ Smart Farm ให้คลิกเข้ามาได้เลย

 


ก็จะพบกับ flow ทั้งหมดพร้อมให้ใช้งาน

 

โดยแต่ละ node ใน flow มีรายละเอียด ดังนี


1. MQTT in node

 

 

เป็นโหนดที่มีหน้าที่รับข้อมูลจาก MQTT Broker ตามที่เราได้ตั้งค่า topic ไว้ โดยเมื่อทำการดับเบิลคลิกเข้าไป ก็จะพบกับหน้าตั้งค่าโหนด โดยมีรายละเอียด ดังนี้

 

 

1. Server : MQTT server ที่จะทำการรับค่า โดยสามารถคลิกที่รูปดินสอด้านหลังเพื่อตั้งค่าได้

 

 

1.1.ตั้งชื่อ MQTT server ที่เลือก (สามารถตั้งได้ตามใจชอบ)
1.2. IP address ของ MQTT server (กรณีใช้งาน MQTT server add-on บน Home Assistant สามารถใช้คำว่า localhost หรือ 127.0.01 ได้เลย)
1.3. Port ของ MQTT server ใช้งานพอร์ต 1883 ซึ่งเป็นพอร์ต default ของ MQTT Broker ได้เลย
1.4. ClientID ที่จะให้ MQTT Broker มองเห็น Node-RED ที่ไป Subscribe อยู่ (สามารถตั้งได้ตามใจชอบ)

 


(สำคัญ!) ในส่วนของแถบด้านบน หัวข้อ Security ให้เข้ามาทำการกรอก Username และ Password ของ MQTT Broker (Username และ Password ของ MQTT Broker คือ Username และ Password ที่เราใช้ในการ Login ใช้งาน Home Assistant)

หลังทำการตั้งค่าทั้ง 2 แถบเมนูเสร็จสิ้น กด Update และ Done เพื่อบันทึกค่าตามลำดับ

2. Topic : หัวข้อที่เราจะทำการ Subscribe ข้อมูลจาก MQTT Broker (กรณีใช้งานโค้ดในโหนดเซนเซอร์ต่างๆตามที่ได้แจกไว้ใน Github ไม่จำเป็นต้องเปลี่ยน สามารถใช้ Topic นี้ได้เลย)
3. Output : รูปแบบข้อมูลที่จะออกมาจาก MQTT in node โดยกรณีเลือกเป็น auto-detect โหนดจะทำการแปลงข้อมูลในรูปแบบ json เป็น Object ที่เราสามารถเข้าถึงข้อมูลโดยอ้างอิงตัวแปรในภาษา javascript ได้ง่ายกว่า
4. Name : ชื่อโหนดที่จะแสดงใน flow

 

2. Sensor node

 

 

เป็นโหนดที่ทำหน้าที่ส่งข้อมูลเข้าสู่ระบบ Home Assistant ในรูปแบบเอนติตี้เซนเซอร์  โดยเมื่อทำการดับเบิลคลิกเข้าไป ก็จะพบกับหน้าตั้งค่าโหนด โดยมีรายละเอียด ดังนี้

 

 

  1. Name : ชื่อของโหนดที่จะแสดงใน flow
  2. Entity config : entity ที่จะไปปรากฏใน Home Assistant (เปรียบเสมือนตัวแปรที่เก็บข้อมูลต่างๆสำหรับเซนเซอร์ที่เราสร้างขึ้นมาด้วย Node-RED) ซึ่งสามารถตั้งค่าได้โดยคลิกที่รูปดินสอด้านหลัง โดยวิธีการตั้งค่า Entity config นั้นสามารถอ่านได้จากในหัวข้อถัดไป
  3. State : ค่าข้อมูลที่จะแสดงของ entity นั้นๆ โดยสามารถอ้างอิงค่าได้จาก path ของ object ที่ถูกส่งออกมาจาก MQTT node in โดยวิธีการดู path นั้น สามารถอ่านได้ในหัวข้อถัดไป


การตั้งค่า Entity config (สำคัญ)

หลังจากกดปุ่มรูปดินสอด้านหลัง โดยเมื่อคลิกเข้าไปแล้ว ก็จะพบกับหน้าการตั้งค่า Entity config ดังภาพ โดยมีรายละเอียด ดังนี้

 


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

a. Name : ชื่อของ entity ที่จะแสดงในหน้าการตั้งค่าก่อนหน้า
b. Server : เซิฟเวอร์ Home Assistant ที่เราจะทำการส่ง entity นี้เข้าไป โดยสามารถกดที่รูปดินสอด้านหลังเพื่อตั้งค่าได้ โดยคลิกที่ปุ่มดินสอด้านหลัง
c. Device : อุปกรณ์สำหรับ entity โดยสามารถคลิกที่รูปดินสอด้านหลังเพื่อตั้งค่าได้
d. Type: ประเภทของ entity โดยในที่นี้ให้เลือกเป็น sensor
e. Friendly Name : ชื่อของ entity ที่จะปรากฏในระบบของ Home Assistant
f. Icon : ไอคอนมาตรฐานที่จะแสดงในเซิฟเวอร์ Home Assistant โดยสามารถเลือก icon ที่ต้องการได้จากลิงก์นี้ คลิก
g. Device class : ประเภทของค่าที่ตรวจวัดจากเซนเซอร์ เช่น ความสว่าง อุณหภูมิ และอื่นๆ
h. Unit : หน่วยของค่าที่แสดงผล โดยสามารถกำหนดด้วยตนเองได้ หรือหากได้ทำการตั้งค่าในส่วนของ Device class จะมีการเติมหน่วยให้เราอัตโนมัติ
i. State class : ลักษณะของข้อมูลที่ตรวจวัด ในที่นี้เลือกเป็น measurement

การตั้งค่าเพื่อเชื่อมต่อ Server Home Assistant กับ Node-RED (สำคัญ)

 

 

โดยเมื่อคลิกเข้าไปแล้ว ก็จะพบกับหน้าการตั้งค่าเพื่อทำการเชื่อมต่อ Home Assistant เข้ากับ Node-RED ดังภาพ

 

 

  1. Name : ทำการตั้งค่าชื่อเซิฟเวอร์ Home Assistant ที่จะทำการเชื่อมต่อกับ Node-RED
  2. ทำเครื่องหมายถูกหน้าช่อง Using the Home Assistant Add-on เพื่อทำการเชื่อมต่อกับเซิฟเวอร์ Home Assistant อัตโนมัติ แล้วกด Add(3) ได้เลย

โดยเมื่อกลับมานี้ ก็ทำการเลือกเซิฟเวอร์ Home Assistant ตามที่เราได้ทำการตั้งค่าไว้ 

 

 

การตั้งค่าเพื่อสร้าง Device บน Node-RED เพื่อส่งเข้าไปยังเซิฟเวอร์ Home Assistant (Optional)

*การตั้งค่าส่วนนี้ เฉพาะต้องการเพิ่มอุปกรณ์ชนิดอื่นนอกจากที่ได้กำหนดไว้ (Air Node, Light Node, Soil Node)

 


โดยเมื่อคลิกเข้าไปแล้ว ก็จะพบกับหน้าการตั้งค่าเพื่อสร้าง Device บน Node-RED สำหรับส่งเข้าไปยังเซิฟเวอร์ Home Assistant ดังภาพ

 

 

  1. Name : ชื่อของอุปกรณ์ที่จะปรากฏในหน้าต่างตั้งค่าก่อนหน้าและในเซิฟเวอร์ Home Assistant
  2. Manufacturer : ชื่อผู้ผลิต (สามารถตั้งได้ตามใจชอบ)
  3. Model : โมเดล (สามารถตั้งได้ตามใจชอบ)
  4. Software Version : เวอร์ชันซอฟต์แวร์ (สามารถตั้งได้ตามใจชอบ) 
  5. Harware Version : เวอร์ชันฮาร์ดแวร์ (สามารถตั้งได้ตามใจชอบ) 

โดยเมื่อตั้งค่าเสร็จสิ้น สามารถกด Add ที่มุมขวาบนได้เลย

Tips : วิธีการดู path ของข้อมูลที่ถูกส่งออกมาจาก MQTT in node

นำ debug node ต่อเข้ากับ MQTT in node แล้วทำการกด Deploy

 

 

หลังจากกด Deploy จะพบกับข้อมูลที่ถูกส่งเข้ามาจากเซนเซอร์โหนดต่างๆ โดยสามารถดูได้จากหน้าต่าง Debug ดังภาพ

 


โดยเราสามารถทำการดึงข้อมูลที่ต้องการออกมาได้ โดยการอ้างอิงจาก path โดยนำเมาส์ไปชื้ที่ค่าที่ต้องการ จะพบกับเครื่องหมายคัดลอก ใก้กดคัดลอกได้เลย

 


หลังจากนั้น ไปที่ Node ที่ต้องการอ้างอิงค่า นำ path ที่ได้ทำการคัดลอกมานั้น ลงไปวางได้เลย (ยกตัวอย่างคือ sensor node ดังภาพ)

 


Path ที่ได้ทำการกดคัดลอกมาเมื่อสักครู่ นำมาวาง แล้วกดปุ่ม Done เพื่อทำการบันทึกได้เลย

 

เพียงเท่านี้ sensor node ก็สามารถดึงค่าที่ออกมาจาก MQTT in node ออกมาได้ตามความต้องการ สำหรับส่งค่าเป็น entity แบบเซนเซอร์เข้าไปในเซิฟเวอร์ Home Assistant ได้แล้ว

สำคัญ อย่าลืมเข้าไปทำการตั้งค่าในส่วนของ Server ใน sensor node ให้เรียบร้อย สำหรับการเชื่อมต่อ Home Assistant กับ Node-RED เพื่อให้ Node-RED สามารถส่ง entity ในรูปแบบเซนเซอร์เข้าไปใน Home Assistant ได้

3. Influxdb out node

เป็นโหนดที่ทำหน้าที่ส่งข้อมูลเข้าสู่ฐานข้อมูล InfluxDB ที่เราได้สร้างไว้ก่อนหน้า โดยมีรายละเอียด ดังนี้

 

 

  1. Name : ชื่อของโหนดที่จะแสดงใน flow
  2. Server : เซิฟเวอร์ InfluxDB ที่จะทำการเชื่อมต่อเพื่อบันทึกข้อมูลลงฐานข้อมูล โดยสามารถกดที่ปุ่มดินสอด้านหลังเพื่อตั้งค่าได้ (โดยวิธีการตั้งค่า Entity config นั้นสามารถอ่านได้จากในหัวข้อถัดไป)
  3. Measurement : ชื่อตัวแปรของชุดข้อมูลที่จะถูกบันทึกไว้ในฐานข้อมูล (สามารถใช้ค่าเดิมได้เลย)

การตั้งค่าเซิฟเวอร์ InfluxDB

 

 

โดยเมื่อคลิกเข้ามาแล้ว มีรายละเอียดการตั้งค่า ดังนี้

 

 

  1. Name : ทำการตั้งค่าชื่อเซิฟเวอร์ InfluxDB ที่จะทำการเชื่อมต่อกับ Node-RED
  2. Host : IP address ของเซิฟเวอร์ InfluxDB โดยกรณีที่ติดตั้งโดยใช้ Add-on สามารถใช้คำว่า “localhost” หรือเลข ip 127.0.0.1 ได้เลย
  3. Port : พอร์ตมาตรฐานสำหรับการส่งข้อมูลเข้า InfluxDB สามารถใช้พอร์ต 8086 ได้เลย
  4. Database : ชื่อฐานข้อมูลที่เราได้ทำการสร้างไว้จากในบทความที่แล้ว 
  5. Username : ชื่อผู้ใช้งานบนเซิฟเวอร์ InfluxDB ที่เราได้ทำการสร้างไว้จากในบทความที่แล้ว
  6. Password : รหัสผ่านผู้ใช้งานบนเซิฟเวอร์ InfluxDB ที่เราได้ทำการสร้างไว้จากในบทความที่แล้ว

 


ชื่อฐานข้อมูลที่ได้ตั้งไว้ขั้นตอนในบทความที่แล้ว

 


Username และ Password ที่ได้ตั้งค่าไว้ในบทความที่แล้ว

 

หลังจากข้อมูลทุกส่วนเสร็จเรียบร้อยแล้ว ให้ทำการกด Add เพื่อเสร็จสิ้นการตั้งค่าในส่วนของเซิฟเวอร์ InfluxDB ได้เลย

สำคัญ อย่าลืมทำการตั้งค่าเซิฟเวอร์ InfluxDB ให้กับ influxdb out node ทุกโหนด เพื่อให้ Node-RED สามารถบันทึกค่าลงฐานข้อมูลของ InfluxDB ได้

4. Function node 

 

 

เป็นโหนดที่เราสามารถจัดการข้อมูล (payload) ด้วยเครื่องมือในภาษา Javascript โดยใน flow นี้ เราได้ทำการนำมาใช้ใน 2 ลักษณะ ดังนี้

1. ลดจำนวนทศนิยม

 


ลดจำนวนโดยใช้ .toFixed()

2. Convert payload

 


สร้างตัวแปรเพื่อรับค่าจาก MQTT in node แล้วส่งต่อไปยัง msg.payload

 

สำคัญ ในส่วนของ 2 node ข้างต้นที่ปรากฏใน flow ไม่มีความจำเป็นต้องแก้ สามารถใช้ตามที่ได้กำหนดไว้ได้เลย

5. Range node

 

 

เป็นโหนดที่ทำหน้าที่เทียบบัญญัติไตรยางค์ ระหว่างช่วงของข้อมูล 2 ชุด ได้แก่ ช่วงของข้อมูลที่รับเข้ามา และช่วงของข้อมูลที่จะถูกส่งออกไป โดยมีรายละเอียดการตั้งค่า ดังนี้

 

 

  1. Property : Path ของข้อมูลที่ต้องการนำมาทำการเทียบบัญญัติไตรยางค์ (วิธีการดู path คลิก)
  2. ค่า Analog read ที่อ่านได้จากเซนเซอร์ เมื่อไฟแสดงสถานะบน Maker soil moisture sensor ขั้นเป็นสถานะ Dry
  3. ค่า Analog read ที่อ่านได้จากเซนเซอร์ เมื่อไฟแสดงสถานะบน Maker soil moisture sensor ขั้นเป็นสถานะ Wet
  4. ค่า % ที่จะส่งออกไปยัง Home Assistant กรณี Maker soil moisture sensor แห้งมากที่สุด (สถานะ Dry)
  5. ค่า % ที่จะส่งออกไปยัง Home Assistant กรณี Maker soil moisture sensor ชื้นมากที่สุด (สถานะ Wet)

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

สำหรับในบทความถัดไป เราจะเริ่มมาสร้าง Dashboard สำหรับการแสดงผลและควบคุมระบบอย่างง่ายบน Home Assistant กันครับ รับรองว่าไม่ยาก แต่ขั้นตอนอาจมีความซับซ้อนแล็กน้อย แต่พอได้เริ่มทำแล้ว ผมเชื่อว่าเพื่อนๆทุกคนสามารถทำเองต่อได้อย่างแน่นอนครับ อย่าลืมติดตามอ่านนะครับ
 

อุปกรณ์ฮาร์ดแวร์


โพสต์ที่เกี่ยวข้อง

Smart Farm EP.1 เข้าใจคอนเซ็ปต์การสร้างด้วย Home Assistant

Smart Farm EP.1 เข้าใจคอนเซ็ปต์การสร้างด้วย Home Assistant

มาลองสร้างระบบ Smart Farm ขนาดเล็กที่สามารถสเกลเพื่อนำไปใช้งานในระบบขนาดใหญ่ได้ ด้วยความสามารถของระบบหลังบ้านอย่าง Home Assistant ที่ทำงานอยู่บน Raspberry Pi..
Smart Farm EP.2 เตรียมพร้อมโหนดเซนเซอร์ (อากาศ, แสง, ดิน)

Smart Farm EP.2 เตรียมพร้อมโหนดเซนเซอร์ (อากาศ, แสง, ดิน)

เตรียมพร้อม โปรแกรมการทำงานเซนเซอร์โหนดต่างๆ ไม่ว่าจะเป็น เซนเซอร์วัดค่าทางอากาศ, แสงสว่าง และดิน..
Smart Farm EP.3 เตรียม Edgebox RPi200 ให้พร้อมใช้งาน

Smart Farm EP.3 เตรียม Edgebox RPi200 ให้พร้อมใช้งาน

เตรียมพร้อมเซิฟเวอร์บน Edgebox RPi200 ให้พร้อมสำหรับการใช้งาน โดยการติดตั้ง Bootloader ใหม่ และติดตั้ง Home Assistant บน M.2 SSD..
Smart Farm EP.4 เตรียมซอฟต์แวร์สำหรับระบบสมาร์ทฟาร์มให้พร้อม

Smart Farm EP.4 เตรียมซอฟต์แวร์สำหรับระบบสมาร์ทฟาร์มให้พร้อม

หลังจากในบทความที่แล้ว ที่เราได้ทำการเตรียม Home Assistant จนพร้อมใช้งานบน Edgebox RPi200 แล้ว อันดับต่อมา เราก็จะมาทำการเตรียมเครื่องมือต่างๆใน Home Assistant ที่จำเป็นสำหรับการสร้าง Dashboard, Autom..
Smart Farm EP.6 สร้าง Dashboard บน Home Assistant + Grafana

Smart Farm EP.6 สร้าง Dashboard บน Home Assistant + Grafana

เริ่มต้นสร้าง Dashboard สวยงาม สำหรับใช้งานบน Home Assistant พร้อมทั้ง Dashboard สำหรับการตรวจสอบข้อมูลอย่างละเอียดบน Grafana..