กิจกรรมที่ 3 — สร้างกฎควบคุมระบบ (Logic)
IoT ในฟาร์มอัจฉริยะหน้าแรก

กิจกรรมที่ 3 — สร้างกฎควบคุมระบบ (Logic)

ไฟทางเดินในสวนเปิดขึ้นเมื่อฟ้ามืด ขณะที่เกษตรกรปั่นจักรยานกลับ

40 นาที

อุปกรณ์ที่ใช้ แล็ปท็อปของตัวแทนกลุ่มที่เปิดหน้า Login ของ Home Assistant ไว้, โทรศัพท์ 1 เครื่อง, อุปกรณ์ทั้งหมดจากกิจกรรมที่ 1–2

เพิ่มบอร์ดทั้งสองเข้า Home Assistant แล้วสร้างกฎให้ไฟสวนเปิดเองเมื่อมืดและปิดเองเมื่อสว่าง

ใบงาน

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

  • 3.1 เพิ่มบอร์ดทั้งสองเข้า Home Assistant เข้าระบบด้วยชื่อผู้ใช้และรหัสผ่านที่ผู้สอนแจ้ง เพิ่มบอร์ดทั้งสองตัวด้วยหมายเลข IP ที่จดไว้ แล้วตรวจชื่อที่ขึ้น
  • 3.2 ทดสอบบอร์ดใน Home Assistant ดูค่าเซนเซอร์ในหน้าอุปกรณ์ สั่งหลอดไฟจากแล็ปท็อป แล้วสั่งจากโทรศัพท์ (ถ้าโทรศัพท์เปิดไม่ได้ ข้ามไปก่อนแล้วบอกผู้สอน)
  • 3.3 เลือกเกณฑ์ความสว่าง ค่าเกณฑ์ความสว่างที่ใช้ตั้งกฎ (กรอกตัวเลข) lux
  • 3.4 เขียนกฎเปิด–ปิดไฟ เขียนเป็นประโยค "ถ้า ... แล้วให้ ..."
    • มืด: เงื่อนไขค่าแสง (ระบุว่าต่ำกว่าค่าใด พร้อมหน่วย) แล้วให้ระบบสั่งอะไร
    • สว่าง: เงื่อนไขค่าแสง (ระบุว่าสูงกว่าค่าใด พร้อมหน่วย) แล้วให้ระบบสั่งอะไร
  • 3.5 สร้างและทดสอบกฎอัตโนมัติ มืด-เปิดไฟ และ สว่าง-ปิดไฟ ครอบแล้วเอามือออกสามรอบ ไฟติดและดับเองครบกี่รอบ ต้องได้ 3 จาก 3
  • 3.6 โจทย์เสริม: ปิดไฟตามเวลา (ไม่บังคับทำ) เวลาที่ตั้งให้ไฟดับ (เช่น 14:05; ถ้าไม่ได้ทำให้เว้นว่าง) น. ผลที่สังเกตได้ เมื่อทดสอบเสร็จ ให้ ปิดการใช้งานกฎนี้
  • คำถามท้ายกิจกรรม ถ้าค่าแสงอยู่ใกล้เกณฑ์พอดี แล้วมีเมฆลอยผ่านตอนพลบค่ำจนค่าแสงแกว่งไปมา ระบบจะเปิด–ปิดไฟอย่างไร

3.1เพิ่มบอร์ดทั้งสองเข้า Home Assistant

ชื่อและหมายเลข IP ของบอร์ดทั้งสอง ที่จดไว้ในกิจกรรมที่ 1 และ 2 จะแสดงในตารางนี้ให้เอง ใช้กรอกในขั้นตอนถัดไปได้เลย ไม่ต้องเปิดกลับไปดู (ถ้าช่องว่าง ให้กรอกจากที่จดไว้)

บอร์ด ชื่อบอร์ดเต็ม (DEVICE NAME) หมายเลข IP
GoGo-IoT (บอร์ดเซนเซอร์)
บอร์ดรีเลย์

เข้าสู่ Home Assistant

  1. ที่แล็ปท็อปของตัวแทนกลุ่ม กลับไปที่หน้า Login ของ Home Assistant ที่เปิดไว้ตอนก่อนเริ่ม ใส่ ชื่อผู้ใช้และรหัสผ่านที่ผู้สอนแจ้ง แล้วกด Log in (ถ้าหน้าเปิดไม่ขึ้น ให้อ่านที่อยู่ IP จากหน้าจอเครื่อง Farm Workshop ใหม่)

เพิ่มและตั้งชื่อบอร์ด

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

ขั้นตอนเพิ่มบอร์ดด้วยหมายเลข IP: กด + Add integration ค้นหา ESPHome พิมพ์ IP ในช่อง Host กด Submit แล้วตรวจชื่อในช่อง Device name

ทำไมต้องพิมพ์ IP เอง บอร์ดในห้องนี้ปิดการประกาศชื่อตัวเองบนเครือข่าย (mDNS) เพราะบอร์ดหลายร้อยตัวประกาศพร้อมกันจน WiFi ใช้งานไม่ได้ Home Assistant จึงไม่เห็นบอร์ดเอง และใช้ชื่อแบบ .local ไม่ได้

ตรวจชื่อบอร์ดให้ตรงกับที่จดไว้ทั้งชื่อ ถ้าพิมพ์ IP ผิดแม้แต่ตัวเดียว อาจไปเพิ่มบอร์ดของกลุ่มอื่น แล้วดูค่าหรือสั่งงานอุปกรณ์ผิดกลุ่มได้ ถ้าชื่อไม่ตรง ให้กดปุ่มมุมขวาล่างให้หน้าต่างปิดก่อน แล้วลบรายการนั้นทิ้ง (หน้า ESPHome → ⋮ ท้ายแถวของบอร์ด → Delete) แล้วเพิ่มใหม่ด้วย IP ที่ถูกต้อง · ถ้ากด Submit แล้วต่อไม่ได้ ให้อ่าน IP ใหม่จาก web.esphome.io (Reset device แล้วดูบรรทัด IP ADDRESS) เลขอาจเปลี่ยนไปแล้ว

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

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

3.2ทดสอบบอร์ดใน Home Assistant

ทดสอบจากแล็ปท็อป

  1. ใน Settings → Devices & services กดเข้าไปที่บอร์ด GoGo-IoT จะเห็น entity ชุดเดียวกับหน้าเว็บของบอร์ด ครอบบอร์ดแล้วดูว่าค่าความสว่างลดลง
  2. กดเข้าไปที่บอร์ดรีเลย์ กดสวิตช์ รีเลย์ (relay) เป็น On หลอดไฟต้องติด กด Off หลอดต้องดับ

ทดสอบจากโทรศัพท์

  1. สมาชิกอีกคนต่อโทรศัพท์เข้า WiFi farm-laptop-สี ของโซนเรา (ไม่ใช่อินเทอร์เน็ตมือถือ เพราะ Home Assistant อยู่ในแล็ปท็อป) เปิดที่อยู่เดียวกับที่จดไว้ตอนก่อนเริ่ม เข้าระบบด้วยชื่อผู้ใช้และรหัสผ่านเดียวกัน แล้วสั่งหลอดไฟจากโทรศัพท์ ทั้งสองจอต้องแสดงสถานะเดียวกัน

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

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

3.3เลือกเกณฑ์ความสว่าง

สถานการณ์จำลอง เราต้องการให้ไฟสวนเปิดเมื่อมืดและปิดเมื่อสว่าง ในห้องทดลองนี้ ใช้หลอด LED แทนไฟสวน และใช้มือครอบบอร์ดเพื่อจำลองว่าฟ้ามืด ระบบจะอ่านค่าจาก เซนเซอร์แสง แล้วสั่ง หลอดไฟ ผ่านรีเลย์

อ่านค่าแสง

  1. ในหน้าอุปกรณ์ของบอร์ด GoGo-IoT ดูค่าความสว่างเมื่อไม่มีสิ่งบัง แล้วใช้มือครอบบอร์ดให้มิดและรอจนค่าเปลี่ยน เปรียบเทียบกับค่าที่บันทึกในกิจกรรมที่ 1: ไม่บังแสง lux ใช้มือครอบ lux หากแสงในห้องเปลี่ยนไป ให้ใช้ค่าที่เห็นในขณะนี้เลือกเกณฑ์

เลือกเกณฑ์

  1. เลือกค่ากลาง ๆ ระหว่างสองค่านั้นเป็น เกณฑ์ ที่ถือว่ามืด เช่น เปิดโล่ง 80 ครอบ 7 เกณฑ์อาจเป็น 40 · ค่าเกณฑ์ความสว่างที่ใช้ตั้งกฎ (กรอกตัวเลข) lux

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

3.4เขียนกฎเปิด–ปิดไฟ

เขียนกฎจากเกณฑ์ที่เลือก

  1. เขียนกฎสองข้อเป็นประโยค "ถ้า ... แล้วให้ ..." ข้อหนึ่งสำหรับตอนมืด อีกข้อสำหรับตอนสว่าง โดยใช้ค่าเกณฑ์ที่เพิ่งเลือก

มืด: เงื่อนไขค่าแสง (ระบุว่าต่ำกว่าค่าใด พร้อมหน่วย) แล้วให้ระบบสั่งอะไร

สว่าง: เงื่อนไขค่าแสง (ระบุว่าสูงกว่าค่าใด พร้อมหน่วย) แล้วให้ระบบสั่งอะไร

ใน Home Assistant เราสร้างกฎอัตโนมัติที่เรียกว่า automation โดยกำหนด trigger คือเหตุการณ์ที่เริ่มให้กฎทำงาน และ action คือสิ่งที่ระบบต้องทำ สำหรับกฎนี้ เหตุการณ์คือค่าความสว่างเปลี่ยนข้ามเกณฑ์ ส่วนคำสั่งคือเปิดหรือปิดรีเลย์

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

3.5สร้างและทดสอบกฎอัตโนมัติ

วางเมาส์บนป้าย 📷 ท้ายข้อเพื่อดูภาพหน้าจอของขั้นนั้น (หน้าจอสัมผัสให้แตะ)

เปิดหน้าสร้างกฎ

  1. เปิด Settings → Automations & scenes 📷
  2. กด + Create automation 📷 แล้วเลือก Create new automation 📷

ตั้งเหตุการณ์เปิดไฟ

  1. ในส่วน When กด + Add trigger 📷
  2. พิมพ์ ความสว่าง แล้วกดที่ ความสว่าง (light) 📷
  3. เลือก Illuminance crossed threshold 📷
  4. Threshold type เลือก Below 📷 แล้วพิมพ์ค่าเกณฑ์ของกลุ่มในช่อง Below 📷

ตั้งคำสั่งและบันทึกกฎ

  1. ในส่วน Then do กด + Add action 📷
  2. พิมพ์ รีเลย์ แล้วกดที่ รีเลย์ (relay) 📷 เลือก Turn on switch 📷
  3. กด Save 📷 ตั้งชื่อ มืด-เปิดไฟ แล้วกด Save อีกครั้ง 📷 กฎที่เสร็จมี trigger หนึ่งข้อและ action หนึ่งข้อ 📷

ทดสอบกฎเปิดไฟ

  1. เริ่มจากเอามือออกและรอให้ค่าแสงสูงกว่าเกณฑ์ จากนั้นครอบบอร์ดให้มิด รอจนค่าบนหน้าจอต่ำกว่าเกณฑ์ โดยเผื่อเวลาตามที่วัดในข้อ 1.5 หลอดควรติดเอง เมื่อเอามือออก หลอดจะยังไม่ดับ เพราะยังไม่มีกฎสั่งปิด ให้สั่ง Off จากหน้าอุปกรณ์ก่อนทำข้อต่อไป

สร้างกฎปิดไฟ

  1. ทำซ้ำข้อ 2–9 แต่ Threshold type เลือก Above ใส่ ค่าเกณฑ์เดียวกัน และ action เลือก Turn off switch ตั้งชื่อ สว่าง-ปิดไฟ ในรายการ Automations ต้องเห็นกฎสองข้อพร้อมสวิตช์เปิดอยู่ 📷

ทดสอบทั้งสองกฎ

  1. เริ่มเมื่อค่าแสงสูงกว่าเกณฑ์ ใช้มือครอบจนค่าต่ำกว่าเกณฑ์และไฟติด แล้วเอามือออก รอจนค่าสูงกว่าเกณฑ์และไฟดับ ทำครบสามรอบโดยไม่กดสวิตช์เอง บันทึกจำนวนรอบที่ไฟติดและดับได้ตามกฎ จาก 3 รอบ

ตัวแก้ไข automation แสดง trigger แบบ Illuminance crossed threshold ของ ความสว่าง (light) และ action แบบ Turn on switch ของ รีเลย์ (relay)

ครอบแล้วไฟไม่ติด กฎแบบ crossed threshold ทำงานเฉพาะตอนค่า ข้าม เกณฑ์ ต้องให้ค่าอยู่เหนือเกณฑ์ก่อนแล้วค่อยครอบ · ตรวจว่ากฎทั้งสองเปิดอยู่ trigger ชี้ที่ ความสว่าง (light) และ action ชี้ที่รีเลย์ของ กลุ่มเรา · ถ้าไฟกะพริบเมื่อค่าแสงเปลี่ยนขึ้นลงใกล้เกณฑ์ อาจเกิดจากการใช้เกณฑ์เดียวกันทั้งเปิดและปิด ให้ลองครอบบอร์ดให้มิดและค้างมือไว้นิ่ง ๆ เราจะทดลองและแก้ปัญหานี้ในช่วงที่ 2

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

3.6โจทย์เสริม: ปิดไฟตามเวลา (ไม่บังคับทำ)

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

ตั้งเวลาปิดไฟ

  1. ดูนาฬิกาบนแล็ปท็อป เลือกเวลาประมาณ 2 นาทีข้างหน้า บันทึกเวลาแบบ 24 ชั่วโมง เช่น 14:05 น.
  2. สร้าง automation ใหม่ trigger เลือก Time ตั้ง At เป็นเวลานั้น action ค้นหา รีเลย์ (relay) เลือก Turn off switch ตั้งชื่อ ปิดไฟตามเวลา

ทดสอบและปิดกฎเสริม

  1. สั่งหลอดไฟ On จากหน้าอุปกรณ์ แล้วรักษาแสงรอบบอร์ดให้คงที่ระหว่างรอ เพื่อไม่ให้กฎตามความสว่างสั่งงานแทรก ไฟต้องดับเองเมื่อถึงเวลา เลือกผลที่สังเกตได้
  2. ปิดการใช้งานกฎนี้ ใน Settings → Automations & scenes ทันที ไม่อย่างนั้นกฎจะทำงานทุกวันเวลาเดิม รวมถึงตอนที่รีเลย์ต่อกับปั๊มในช่วงที่ 2

ถ้าทดสอบแล้วไฟไม่ดับ ให้ดูว่าเวลาที่ตั้งผ่านไปแล้วหรือยัง เพราะต้องตั้งเวลาในอนาคตเสมอ

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

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

ก่อนออกจากห้อง

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

ขณะนี้บอร์ดเซนเซอร์รับไฟจากแล็ปท็อป ก่อนออกจากห้องให้ย้ายสายไปใช้ช่อง USB ของกล่องจ่ายไฟตามขั้นตอนต่อไปนี้


ต่อไป: ช่วงที่ 2 — ตรรกะควบคุมอัตโนมัติและการออกแบบ Fail-safe สำหรับฟาร์ม