จากคอมเมนท์ปัญหาท่านหนึ่งในกลุ่ม LINE OpenChat ถามว่ามีวิธีการตรวจสอบอุปกรณ์ Zigbee  ที่ขาดการเชื่อมต่อกับระบบ แต่ยังคงสถานะเดิมไว้เป็นเวลานานทำให้ไม่รู้ว่าจริงๆแล้วอุปกรณ์ตัวนั้นๆหลุดการเชื่อมต่อไปนานแล้ว วิธีตรวจสอบโดยหลักการก็คงจะเป็นตรวจดูว่าระยะเวลาที่มีการอัพเดทสถานะนั้นเป็นเวลานานเท่าไหร่แล้ว หากถึงที่เรากำหนดให้ทำการแจ้งเตือนผ่านระบบต่างๆตามต้องการ การทำอะไรซับซ้อนแบบนี้ขอแนะนำให้ไปใช้บน NodeRED จะดีที่สุด

NodeRED

เริ่มต้นกันที่ Poll State Node เพื่อที่จะทำการตรวจสอบสถานะ ทุกๆกี่นาที กี่ชั่วโมงแล้วแต่เราตรงนี้ไม่แนะนำให้ตั้งถี่มากถ้าอุปกรณ์เราไม่ได้เร็วมาก เปลืองทรัพยากรไปเปล่าๆ

จากนั้นก็มาถึงการใช้งาน Function Node เพื่อตรวจสอบค่าที่ถูกส่งออกมาจาก Poll State

วิธีที่เราจะตรวจสอบก็คือการเช็คข้อมูล Last Update ของอุปกรณ์ครั้งสุดท้ายหน่วยที่ได้จะถูกส่งออกมาเป็น ms (milli-secconds) โดยในตัวอย่างจะตรวจสอบว่าอุปกรณ์ไม่ทำการอัพเดทมานานเกิน 1 ชั่วโมงให้ทำการแจ้งเตือน โดยเราไปเซิร์ชเอาง่ายๆเลยครับ 1hr to ms จะได้เท่ากับ 3,6000,000ms แล้วเราจึงนำเอาค่าที่ได้มาตั้งสูตรกันใน Function Node

ในตัวอย่างคือเก็บค่า Last Update ในรูปแบบ ms ออกมาใส่ตัวแปร lastChange  และเข้าสูตร If จากตัวเลขสามล้านหกแสนที่เราได้มา โดยแทนสูตรกันง่ายๆและ return ค่าไปยัง Switch Node เพื่อสร้าง Condtition การแจ้งเตือนต่อไป

จาก Node ก่อนหน้าเราตั้งค่า Condition ว่าหากการอัพเดทสถานะครั่งสุดท้ายเกิน 1 ชั่วโมงให้ส่งเลข 1 ออกมาใส่ใน msg.payload คราวนี้ที่ switch node เราจึงสร้าง Condtion ขึ้นมา โดยที่ 1 ให้ทำการแจ้งเตือน และ 0 ให้ทำหรือไม่ทำอะไรก็ได้ หรือจะไม่มีก็ได้

จากนั้นให้ทำการใช้ Condition 1 สำหรับแจ้งเตือนในตัวอย่างให้แจ้งเตือนเข้า LINE Notify ต่อไปง่ายๆแค่นี้ครับ