กิจกรรมที่ 11 — นำข้อมูลจากแปลงไกลขึ้นแดชบอร์ด Home Assistant (Bridge)
IoT ในฟาร์มอัจฉริยะหน้าแรก

กิจกรรมที่ 11 — นำข้อมูลจากแปลงไกลขึ้นแดชบอร์ด Home Assistant (Bridge)

45 นาที

อุปกรณ์ที่ใช้ ระบบทั้งหมดจากกิจกรรมที่ 10 (บอร์ด GoGo-IoT เสียบไฟจากกล่องจ่ายไฟ บอร์ดตัวรับเสียบไฟจากแล็ปท็อปหรือช่อง USB ที่ว่าง) และแล็ปท็อปที่เปิด Home Assistant

ตอนนี้ตัวรับมีค่าจากแปลงแล้ว แต่ผู้ใช้ยังต้องพิมพ์ IP เพื่อดู กิจกรรมนี้เราจะเพิ่มตัวรับเข้า Home Assistant เพื่อให้ค่าจากแปลงไกลอยู่ในระบบเดียวกับข้อมูลอื่น สร้างแดชบอร์ดสำหรับแปลงไกล และตั้งกฎเตือนเมื่อแปลงเงียบไป

ใบงาน

คลิกหัวข้อเพื่อดูวิธีทำ ทำเสร็จแล้วทำเครื่องหมายและบันทึกผล กรอกที่นี่หรือในขั้นตอนด้านล่างก็ได้

11.1เพิ่มบอร์ดตัวรับเข้า Home Assistant

เพิ่มและตั้งชื่อ

  1. ไปที่ Settings → Devices & services → + Add integration → ESPHome (ถ้าขึ้นรายการให้เลือก Setup another instance of ESPHome ก่อน) ในช่อง Host พิมพ์ IP ของบอร์ดตัวรับ ที่จดไว้ในกิจกรรมที่ 10 () คงช่อง Port ไว้ที่ 6053 เหมือนกิจกรรมที่ 3 แล้วกด Submit จะขึ้นหน้า Name and assign ให้ดูช่อง Device name ว่าตรงกับชื่อบอร์ดตัวรับ () ทั้งสีและรหัสหกตัวท้าย ตัวพิมพ์เล็กหรือใหญ่ไม่ต้องสนใจ เช่น Gogo-Iot-Red-6749A4 ถือว่าตรงกับ gogo-iot-red-6749a4
  2. ในช่อง Device name เดิม จะพิมพ์ชื่อใหม่เป็น เช่น ตัวรับที่บ้าน ก็ได้ (ไม่บังคับทำ) แล้วกดปุ่มมุมขวาล่าง ปุ่มนี้ขึ้นว่า Finish ถ้าแก้ชื่อ หรือ Skip and finish ถ้าไม่ได้แก้

ดูรายการที่ได้

  1. เปิดหน้าอุปกรณ์ของตัวรับ จะเห็นสามกลุ่ม: Sensors คือค่าจากแปลงที่ต่อท้ายว่า ESP-NOW และ รับข้อมูลจากแปลง (link) ซึ่งแสดงเป็น Connected / Disconnected · Configuration มีช่อง ชื่อบอร์ดที่แปลง (sender name) ที่เราพิมพ์ไว้บนหน้าเว็บของบอร์ด แก้จากที่นี่ก็ได้ · Diagnostic มีสัญญาณ จำนวนแพ็กเก็ต และแพ็กเก็ตล่าสุด

ถ้ากด Submit แล้วต่อไม่ได้ อ่าน IP ใหม่จาก web.esphome.io (Reset device แล้วดูบรรทัด IP ADDRESS) เลขอาจเปลี่ยนไปแล้ว

ตัวรับที่เพิ่มแล้วกลายเป็น Unavailable IP ของบอร์ดอาจเปลี่ยน อ่าน IP ใหม่จาก web.esphome.io แล้วกด ⋮ ท้ายแถวของบอร์ดใน Settings → Devices & services → ESPHome → Reconfigure → พิมพ์ IP ใหม่ในช่อง Host ชื่อและ entity เดิมยังอยู่ ไม่ต้องลบแล้วเพิ่มใหม่

↑ กลับไปที่ใบงาน

11.2เทียบค่าที่มาสองทาง

ใน Home Assistant ตอนนี้มีค่าความชื้นอากาศของแปลงเรา สองรายการ: จากบอร์ด GoGo-IoT โดยตรงผ่าน WiFi (ทางที่ใช้มาตั้งแต่ช่วงที่ 1) และจากตัวรับผ่าน ESP-NOW ที่ฟาร์มจริงจะเหลือทางหลังทางเดียว

อ่านค่าคู่กัน

  1. เปิดหน้าอุปกรณ์ของบอร์ด GoGo-IoT และของตัวรับไว้คนละแท็บ อ่านค่าเวลาเดียวกัน
ค่า จากบอร์ด GoGo-IoT โดยตรง ผ่านตัวรับ (ESP-NOW)
ความชื้นอากาศ % %
ความสว่าง
  1. เป่าลมใส่บอร์ด GoGo-IoT แล้วดูว่าความชื้นทั้งสองรายการขึ้นตามกัน รายการโดยตรงอาจขึ้นก่อนเล็กน้อย เพราะบอร์ดส่งค่าให้ Home Assistant ทันทีที่ค่าเปลี่ยน ส่วนทาง ESP-NOW ส่งเป็นรอบทุก 3 วินาที

สองรายการนี้คือ ค่าเดียวกันจากเซนเซอร์ตัวเดียว ที่เดินทางมาคนละทาง ในกิจกรรมที่ 5 เราเห็นว่าเมื่อบอร์ดดับ รายการโดยตรงกลายเป็น unavailable ทางตัวรับก็มีสัญญาณแบบเดียวกันคือ รับข้อมูลจากแปลง (link) เป็น Disconnected และค่ากลายเป็น unknown เราจะใช้สัญญาณนี้ในข้อ 11.4

↑ กลับไปที่ใบงาน

11.3สร้างแดชบอร์ด “แปลงไกล”

สร้างแดชบอร์ดใหม่

  1. เปิด Settings → Dashboards → + Add dashboard → New dashboard from scratch ตั้งชื่อ แปลงไกล และเปิด Add to sidebar ไว้ เหมือนข้อ 7.3
  2. เปิดแดชบอร์ดใหม่ กดไอคอนดินสอ แล้วเพิ่มการ์ดตามตาราง ทุกการ์ดเลือกรายการของตัวรับ (ชื่อมี ESP-NOW หรือ link)
การ์ดที่ต้องมี เลือกข้อมูล ชื่อที่ใช้บนจอ
Tile รับข้อมูลจากแปลง (link) การเชื่อมต่อกับแปลง
Gauge ความชื้นอากาศ (humidity, ESP-NOW) ความชื้นอากาศที่แปลง (%)
Tile สวิตช์ลูกลอย (float switch, ESP-NOW) น้ำถึงลูกลอยที่แปลง
Tile ความแรงสัญญาณ ESP-NOW (rssi) สัญญาณจากแปลง
  1. วางการ์ด การเชื่อมต่อกับแปลง ไว้บนสุด ผู้ใช้ต้องรู้ก่อนว่าค่าที่เห็นยังเชื่อถือได้ แล้วกด Done

(ไม่บังคับทำ) เทียบสองทางบนกราฟ

  1. เพิ่ม History graph เลือกความชื้นอากาศทั้งสองรายการ (โดยตรงและ ESP-NOW) ตั้ง Hours to show: 1 เส้นทั้งสองต้องซ้อนกัน

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

↑ กลับไปที่ใบงาน

11.4เตือนเมื่อแปลงเงียบ

ในกิจกรรมที่ 10 ตัวรับรายงานว่าขาดการเชื่อมต่อได้เอง แต่ถ้าไม่มีใครเปิดหน้าจอดูอยู่ก็ไม่มีใครรู้ เราจะให้ Home Assistant แจ้งเตือนเหมือนข้อ 4.4

สร้างกฎ

  1. เปิด Settings → Automations & scenes → + Create automation → Create new automation
  2. When กด + Add trigger → Entity → State เลือก Entity รับข้อมูลจากแปลง (link) ช่อง To เลือก Disconnected และช่อง For ตั้ง 30 วินาที เพื่อไม่ให้เตือนเมื่อสัญญาณหายไปแวบเดียว
  3. Then do กด + Add action ค้นหา Send a persistent notification พิมพ์ข้อความ เช่น ไม่ได้รับข้อมูลจากแปลงเกิน 30 วินาที ตรวจบอร์ดที่แปลง
  4. กด Save ตั้งชื่อ แปลงเงียบ - เตือน

ทดสอบ

  1. ปิดสวิตช์ ON / OFF บนบอร์ด GoGo-IoT รอ ตัวรับจะรายงาน Disconnected หลัง 15 วินาที และอีก 30 วินาทีถัดมา ต้องมีการแจ้งเตือนขึ้นที่ไอคอนกระดิ่งของ Home Assistant มีการแจ้งเตือน
  2. เปิดสวิตช์บอร์ดกลับ รอให้ค่ากลับมาบนแดชบอร์ด แล้วปิดการแจ้งเตือนที่ค้างอยู่

ที่ฟาร์มจริง การแจ้งเตือนควรไปถึงโทรศัพท์ของผู้ดูแล ซึ่งต้องมีวิธีเข้าถึงจากนอกฟาร์มที่คุยกันในข้อ 8.3 · กฎนี้ไม่สั่งรีเลย์ จึงเปิดไว้ได้ตลอด

↑ กลับไปที่ใบงาน

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

สรุปช่วงที่ 4

คืนอุปกรณ์

ทำตามลำดับต่อไปนี้ เพื่อป้องกันระบบสั่งเปิดปั๊มระหว่างเก็บอุปกรณ์

แดชบอร์ดของผู้สอนแสดงความคืบหน้าในการทำกิจกรรม แต่ไม่ได้รับคำตอบที่เรากรอก การเห็นสถานะ “เชื่อมต่อผู้สอนแล้ว” จึงไม่ได้หมายความว่าส่งไฟล์คำตอบแล้ว ให้เก็บไฟล์ JSON ไว้ในเครื่องด้วย