รถเข็นของคุณว่างเปล่า!
Smart Farm EP.4 เตรียมซอฟต์แวร์สำหรับระบบสมาร์ทฟาร์มให้พร้อม
- Yo Nutchanon
- 11 Jul 2023
- Project
- Intermediate
- 1600
หลังจากในบทความที่แล้ว ที่เราได้ทำการเตรียม Home Assistant จนพร้อมใช้งานบน Edgebox RPi200 แล้ว อันดับต่อมา เราก็จะมาทำการเตรียมเครื่องมือต่างๆใน Home Assistant ที่จำเป็นสำหรับการสร้าง Dashboard, Automation ต่างๆที่จำเป็น
เตรียมเครื่องมือต่างๆใน Home Assistant ให้พร้อม
ติดตั้ง Mosquitto Broker สำหรับการรับค่าและส่งค่าไปยังโหนดต่างๆ
โดยไปที่ Settings > Add-ons > Add-on Store แล้วค้นหา Add-on ที่มีชื่อว่า Mosquitto broker
กด Install เพื่อติดตั้ง Mosquitto Broker
กด Start เพื่อเริ่มการทำงานของ MQTT Broker ได้เลย
เพียงเท่านี้ MQTT Broker ของเราก็พร้อมใช้งานแล้ว โดยกลับไปที่โหนดต่างๆที่เราได้เตรียมไว้ ให้นำข้อมูลไปกรอกในส่วนของไฟล์ secret.py ในบอร์ดที่ได้ทำการโปรแกรมไปแล้ว โดยมีรายละเอียด ดังนี้
- แทนที่
ด้วย IP address ของ Home Assistant - แทนที่ ด้วย username ที่เราใช้ในการ Login เข้าใช้งาน Home Assistant
- แทนที่ ด้วย password ที่เราใช้ในการ Login เข้าใช้งาน Home Assistant
เพียงเท่านี้โหนดเซนเซอร์ต่างๆของเรา ก็สามารถที่จะเชื่อมต่อมาที่ MQTT Broker ที่เราติดตั้งไว้ได้แล้ว
ติดตั้ง Node-RED และ HACS สำหรับจัดการข้อมูลที่จะเข้าสู่ระบบ
อันดับต่อมา เราจะมาทำการติดตั้ง Node-RED ที่เป็นเครื่องมือสำหรับการจัดการข้อมูลที่เราจะได้รับมาจากเซนเซอร์โหนดต่างๆ
ไปที่ Settings > Add-ons > Add-on Store แล้วค้นหา Add-on ที่มีชื่อว่า Node-RED
กดเข้าไปเพื่อทำการกด Install ได้เลย
หลังจากทำการติดตั้งแล้ว ไปที่หัวข้อ Configuration เพื่อทำการตั้งค่า Credential Secret (เป็นเหมือนรหัสผ่าน) และ ปิดการทำงาน SSL แล้วกด Save
กลับมาที่หัวข้อ Info แล้วกด Start เพื่อเริ่มการทำงานของ Node-RED ได้เลย
ตอนนี้เราก็จะได้ Node-RED พร้อมสำหรับการสร้าง Flow แล้ว แต่ก่อนที่เราจะไปทำการสร้าง Flow เพื่อจัดการข้อมูลนั้น เราจำเป็นที่จะต้องติดตั้งเครื่องมือสำหรับการนำข้อมูลเข้าสู่ Home Assistant ด้วย Node-RED ก่อน โดยการติดตั้ง Node-RED Companion ซึ่งต้องมีการติดตั้งผ่าน HACS (Home Assistant Community Store) ซึ่งเราก็จะต้องมาติดตั้ง HACS ด้วย โดยมีวิธีการ ดังนี้
ไปที่ Settings > Add-ons > Add-on Store ค้นหา Add-on ที่มีชื่อว่า Advance SSH & Web Terminal โดยคลิกเข้าไปเพื่อทำการติดตั้งได้เลย
หลังจากทำการติดตั้งแล้ว ไปที่หัวข้อ Configuration เพื่อทำการตั้งค่า Password แล้วกด Save
กลับไปที่หัวข้อ Info แล้วเริ่มการทำงาน โดยกดที่ Start
หลังจากนั้น ไปที่เมนูด้านซ้าย เลือก Terminal
โดยเมื่อเข้าไปแล้ว ทำการติดตั้ง HACS (Home Assistant Community Store) โดยใช้คำสั่ง
wget -O - https://get.hacs.xyz | bash -
แล้วกด Enter
โดยหลังจากการติดตั้ง HACS เสร็จสิ้น ให้ทำการรีสตาร์ต Home Assistant หนึ่งครั้ง โดยไปที่ Developer Tools แล้วเลือก Restart
รอสักครู่หนึ่ง จนกระทั่งการรีสตาร์ตเสร็จสิ้น ไปที่ Settings > Devices & Services > Add Integration แล้วค้นหาโดยใช้คำว่า HACS แล้วคลิกเพื่อติดตั้ง
หลังจากคลิกเพื่อติดตั้งแล้ว ทำการทำเครื่องหมายถูกทั้ง 4 ช่อง แล้วกด Submit
จะพบกับหน้านี้ ให้ทำการคลิกที่ลิงก์ดังภาพ เพื่อเปิด Github
โดยเมื่อเข้าเว็บไซต์ไปแล้ว กรณีที่ยังไม่มีบัญชี Github ให้ทำการสมัครให้เรียบร้อย แล้วกลับไปคลิกลิงก์ที่หน้า Home Assistant ใหม่ กรณีที่มีบัญชีแล้ว ให้ทำการ Login ให้เรียบร้อย แล้วกลับไปคลิกลิงก์ที่ Home Assistant จนมาพบหน้านี้ ให้ทำการนำเอารหัสที่แสดงใน Home Assistant มากรอกลงในช่องว่างให้ถูกต้อง แล้วกด Continue
กดปุ่ม Authorize hacs
หากสำเร็จ จะปรากฏหน้าต่างนี้ขึ้นมา
กลับไปที่ Home Assistant จะพบกับหน้านี้ ดังภาพ ให้กด Finish
สังเกตที่ด้านซ้าย จะพบกับเมนูใหม่ปรากฏขึ้นมา ชื่อว่า HACS ให้กดเข้าไป
เลือก Integrations > Explore & Download repositories
ทำการค้นหาโดยใช้คีย์เวิร์ดว่า nodered จะพบผลลัพธ์ดังภาพ ให้คลิกเข้าไป
คลิกที่ปุ่ม Download ทางด้านขวาล่าง
ทำการรีสตาร์ต Home Assistant อีกครั้ง
หลังจากรีสตาร์ตเสร็จสิ้น ให้ไปที่ Settings > Devices & Services > Add Integration แล้วค้นหาโดยใช้คำว่า nodered จนพบกับ Node-RED Companion ให้ทำการคลิกเพื่อติดตั้งได้เลย
คลิก Submit
คลิก Finish
จะปรากฏ Node-RED Companion ใน Devices ของ Home Assistant แล้ว
เพียงเท่านี้ Node-RED ก็พร้อมที่จะจัดการข้อมูลที่เราจะป้อนเข้าสู่ระบบแล้ว แต่ก่อนที่เราจะไปสร้าง flow กันนั้น เราจะมาติดตั้งเครื่องมือที่เหลืออีก 2 ส่วน ดังนี้
ติดตั้งใช้งานและสร้างฐานข้อมูลด้วย InfluxDB
โดยไปที่ Settings > Add-ons > Add-on Store แล้วค้นหา Add-on ที่มีชื่อว่า InfluxDB
กด Install เพื่อทำการติดตั้ง
ที่หัวข้อ Configuration ให้ทำการปิดฟังก์ชัน SSL แล้วกด Save
ทำการเปิดสวิตช์ในส่วนของ Watchdog และ Show in Sidebar แล้วทำการกด Start
โดยหลังจากกด Start จะพบกับเมนูใหม่ปรากฏขึ้นมาทางด้านซ้าย ชื่อว่า InfluxDB ให้ทำการรอประมาณ 1 นาที รอจนกระทั่ง InfluxDB เริ่มทำงาน ก่อนทำการคลิกเข้าใช้งาน
โดยเมื่อคลิกเข้าไปแล้ว เลือกเมนูด้านขวาในหัวข้อ InfluxDB Admin แล้วเลือก Create Database
ทำการตั้งชื่อฐานข้อมูลเป็นภาษอังกฤษ แล้วคลิกเครื่องหมายถูกสีเขียวด้านหลัง
โดยเราสามารถกำหนดระยะเวลาที่จะให้ฐานข้อมูลของเราจัดเก็บข้อมูลได้ โดยคลิกที่ปุ่ม Edit แล้วกรอกวันที่ต้องการลงไปในช่อง Duration แล้วกด Save
สร้างผู้ใช้งานสำหรับให้ระบบสามารถเขียน-อ่านข้อมูลจากฐานข้อมูลได้ โดยไปที่หัวข้อ Users เลือก Create User
ทำการตั้งชื่อผู้ใช้งานและรหัสผ่านตามต้องการ โดยชื่อผู้ใช้งานและรหัสผ่านในส่วนนี้ เราจะต้องนำไปใช้งานกับ Node-RED สำหรับการเขียนข้อมูลลงบนฐานข้อมูล และใช้งานร่วมกับ Grafana ในการอ่านข้อมูลจากฐานข้อมูล
หลังจากตั้งค่าเสร็จสิ้น กด Create เพื่อบันทึกค่า
ทำการกำหนดสิทธิ์สำหรับการจัดการข้อมูลของผู้ใช้งานใหม่ที่เราพึ่งสร้างขึ้นมา โดยในกรณีที่เราจะใช้ชื่อผู้ใช้งานนี้กับทั้ง Node-RED และ Grafana ให้ทำการกำหนดสิทธิ์ให้ผู้ใช้งานนี้สามารถ เขียน และ อ่าน ข้อมูลบนฐานข้อมูลได้
เพียงเท่านี้ เราก็จะได้ ฐานข้อมูลสำหรับการจัดเก็บข้อมูลของเซนเซอร์จากโหนดต่างๆ พร้อมทั้งชื่อผู้ใช้งานสำหรับการนำไปใช้งานร่วมกับ Node-RED และ Grafana แล้ว
ติดตั้งใช้งาน Grafana สำหรับการอ่านข้อมูลจากฐานข้อมูล
โดยไปที่ Settings > Add-ons > Add-on Store แล้วค้นหา Add-on ที่มีชื่อว่า Grafana
ทำการกด Install เพื่อติดตั้งใช้งาน
ที่หัวข้อ Configuration ให้ทำการปิดฟังก์ชัน SSL แล้วกด Save
ทำการเปิดสวิตช์ในส่วนของ Watchdog และ Show in Sidebar แล้วทำการกด Start
โดยหลังจากกด Start จะพบกับเมนูใหม่ปรากฏขึ้นมาทางด้านซ้าย ชื่อว่า Grafana ให้ทำการรอประมาณ 1 นาที รอจนกระทั่ง Grafana เริ่มทำงาน ก่อนทำการคลิกเข้าใช้งาน
โดยเมื่อเข้ามาแล้ว คลิกที่สัญลักษณ์ 3 ขีดหน้าคำว่า Home ทางด้านซ้ายบน เลือก Connection > Add new connection
เลือกประเภทฐานข้อมูลเป็น InfluxDB
เลือก Create a InfluxDB data source
โดยเมื่อเข้ามาที่หน้านี้แล้ว เราจะต้องทำการกรอกข้อมูลเพื่อเชื่อมต่อฐานข้อมูล InfluxDB ของเราที่ได้สร้างมาเมื่อสักครู่ เข้ากับ Grafana โดยมีรายละเอียดข้อมูลต่างๆที่ต้องกรอก ดังนี้
- ชื่อแหล่งที่มาข้อมูล : ชื่อที่ใช้ในการเรียกแหล่งที่มาข้อมูลนี้ สามารถตั้งได้ตามใจชอบ
- ที่อยู่เซิฟเวอร์ InfluxDB : สามารถดูได้จากลิงก์ด้านบนเวลาที่เราเปิดใช้งาน InfluxDB (รายละเอียด ดังภาพด้านล่าง)
3. ชื่อฐานข้อมูล : ที่เราได้ทำการสร้างไว้ ในขั้นตอนของการสร้างฐานข้อมูลบน InfluxDB
4. ชื่อผู้ใช้งาน : ที่เราได้ทำการสร้างไว้ในขั้นตอนของการสร้างผู้ใช้งานบน InfluxDB
5. รหัสผ่านฐานข้อมูล : ที่เราได้ทำการสร้างไว้ในขั้นตอนของการสร้างผู้ใช้งานบน InfluxDB
หลังจากกรอกข้อมูลทั้งหมดเสร็จสิ้น กดปุ่ม Save & Test เพื่อทำการทดสอบอ่านค่าจากฐานข้อมูล หากสามารถอ่านค่าจากข้อมูลได้ จะปรากฏดังภาพ
ติดตั้งใช้งาน ESPhome สำหรับการควบคุมรีเลย์ด้วย Raspberry Pi Pico W
โดยไปที่ Settings > Add-ons > Add-on Store แล้วค้นหา Add-on ที่มีชื่อว่า ESPHome
ทำการกด Install เพื่อติดตั้งใช้งาน
ทำการเปิดสวิตช์ในส่วนของ Watchdog และ Show in Sidebar แล้วทำการกด Start
โดยหลังจากกด Start จะพบกับเมนูใหม่ปรากฏขึ้นมาทางด้านซ้าย ชื่อว่า ESPHome ให้ทำการรอประมาณ 1 นาที รอจนกระทั่ง ESPHome เริ่มทำงาน ก่อนทำการคลิกเข้าใช้งาน
กด New Device เพื่อสร้างอุปกรณ์ใหม่
กด Continue
ทำการตั้งชื่ออุปกรณ์, ชื่อ WiFi (SSID) และ รหัสผ่านของ WiFi ที่บอร์ด Raspberry Pi Pico W จะทำการเชื่อมต่อ
เลือกบอร์ดเป็น Raspberry Pi Pico W
กด Install เพื่อติดตั้ง
คลิก Manual download เพื่อดาว์นโหลดไฟล์ UF2 เข้าสู่คอมพิวเตอร์
เลือกแบบ Modern format
หากเจอ Error ลักษณะนี้ ให้ทำการกด Close ไปก่อน
คลิกที่สัญลักษณ์ สามจุดทางด้านขวาล่าง แล้วเลือก Install
รอโปรเจ็ค Compile เสร็จสิ้น
หลังจากโปรเจ็กต์คอมไฟล์เสร็จสิ้น คำว่า Download project จะกลายเป็นสีฟ้า
หลังจากกด Download มาแล้ว เราก็จะได้ไฟล์ UF2 มา
อันดับต่อมา ในการอัพโหลดไฟล์ UF2 เข้าสู่ตัวบอร์ด Raspberry Pi Pico W นั้น เราจะต้องทำการเปิดโหมดในการอัพโหลด โดยการกดปุ่ม BOOTSEL บนตัวบอร์ดค้างไว้ โดยระหว่างนั้นให้นำปลายสาย USB อีกฝั่งเชื่อมต่อเข้ากับคอมพิวเตอร์ (ในขณะที่ปุ่ม BOOTSEL ยังคงถูกกดอยู่)
หลังจากเชื่อมต่อบอร์ดและคอมพิวเตอร์แล้ว จะพบกับไดรฟ์ของบอร์ด Raspberry Pi Pico ให้ทำการคัดลอกไฟล์ UF2 ที่ดาว์นโหลดมาจาก ESPHome เข้าสู่ตัวบอร์ด
ไฟล์กำลังถูกอัพโหลดเข้าสู่ตัวบอร์ด Raspberry Pi Pico W
โดยหลังจากที่ไฟล์ถูกอัพโหลดเสร็จสิ้นแล้ว รอประมาณ 1 นาทีให้บอร์ด Raspberry Pi Pico W ทำการเชื่อมต่อกับเครือข่าย WiFi ที่เราได้กำหนดไว้ ก็จะพบกับตัวบอร์ดที่ได้ออนไลน์ขึ้นมาแล้ว
โดยในอันดับต่อมา เราก็จะมาทำการเขียนโปรแกรมในการควบคุม GPIO ของ Raspberry Pi Pico W
โดยจากการที่เราจะใช้งาน Industrial 8-Channel Relay Module for Raspberry Pi Pico โดยใช้ Relay ตัวที่ 7 และ 8 ซึ่งใช้งาน GP15 และ GP14 ตามลำดับ
สามารถโปรแกรมได้ โดยการกด EDIT แล้วทำการเพิ่มโค้ดในส่วนของการควบคุม GPIO ของ Raspberry Pi Pico W โดยใช้โค้ดข้างต้น
switch:
- platform: gpio
name: "Solinoid 1"
pin: 14
- platform: gpio
name: "Solinoid 2"
pin: 15
หลังจากนั้นทำการกด Save และ Install
เลือกการอัพโหลดแบบ Wirelessly
ระหว่างการอัพโหลดโปรแกรมชุดใหม่เข้าสู่ตัวบอร์ดอย่างไร้สาย หลังจากที่ได้มีการติดตั้ง ESPHome ลงบอร์ด Raspberry Pi Pico W เป็นพื้นฐานไปก่อนหน้าแล้ว
หลังจากอัพโหลดเสร็จสิ้น จะปรากฏดังภาพด้านล่าง ให้ทำการกด Stop ออกไปได้เลย
โดยเมื่อกลับมาที่ Home Assistant ไปที่ Settings > Devices & Services จะพบกับอุปกรณ์ที่ถูก Discovered ใหม่ โดยจะเป็นชื่ออุปกรณ์ที่เราได้ตั้งค่าไว้ใน ESPHome ให้ทำการกด Configure
กด Submit
กด Finish
โดยเมื่อกลับมาที่หน้า Devices & Services จะพบกับอุปกรณ์ใหม่ ให้คลิกเข้าไป
จะพบกับสวิตช์ที่ใช้ควบคุม GPIO ทั้ง 2 ตัว ที่เราตั้งชื่อไว้ว่าเป็น Solinoid Valve นั่นเอง
ลองทดสอบนำ Raspberry Pi Pico W มาใช้งานร่วมกับ Industrial 8-Channel Relay Module for Raspberry Pi Pico
ผลลัพธ์ที่ได้ คือสามารถควบคุมการทำงานของรีเลย์ผ่านสวิตช์บน Home Assistant ได้ตามปกติ ตาม GPIO ที่เราได้กำหนดไว้ใน ESPHome
เป็นอย่างไรบ้างครับ สำหรับในบทความนี้ อุปกรณ์ทั้งในส่วนซอฟต์แวร์และฮาร์ดแวร์ของเราก็พร้อมแล้วนะครับ ในบทความต่อไป เราจะเริ่มนำข้อมูลเข้าสู่ระบบ บันทึกข้อมูลลงฐานข้อมูลที่เราสร้างไว้ และสร้างแดชบอร์ดสำหรับแสดงผลข้อมูลและควบคุมอุปกรณ์ อย่าลืมติดตามอ่านกันนะครับ