วันอังคารที่ 1 กันยายน พ.ศ. 2558

Node-RED - แจ้งเตือนไปที่ Tweeter

การแจ้งเตือนจำเป็นอย่างมากในการเฝ้าดูความเป็นไปของระบบที่ต้องการควบคุม
IoT devices ที่มีลักษณะเป็นเซนเซอร์ อาจถูกพัฒนาให้สามารถแสดงผลบนหน้าจอ
มีการแจ้งเตือนเป็นแสง สี เสียง หรืออื่นๆ รวมทั้งส่งเตือนเป็นข้อมูลเป็น SMS e-Mail
สำหรับ Node-RED เอง มี node มาตราฐานสำหรับการแจ้งเตือนเป็น e-Mail
และ tweeter อยู่ที่แท๊ป social
image
มีทั้งแบบรับและส่ง ในโพสต์นี้จะเลือกทดสอบการส่งแจ้งเตือนเมื่อพบเงื่อนไขที่กำหนดไปยัง tweeter
image
สร้าง Flow ตามรูป
inject node 2 ตัว ตั้งค่าเป็นแบบ string ค่า 100 กับ 500
switch node 1 ตัว ตั้งค่าตามนี้ ความหมายคือ ตรวจสอบค่าที่เข้ามา
ถ้าเกินกว่า 100 ให้กระตุ้น node ที่ช่องออกหมายเลข 1 ให้ทำงาน
คือส่งค่าไปที่ debug และส่งไปที่ template node
image
template node 1 ตัว ต่อกับ switch node ตั้งค่าข้อความที่จะส่งไปที่ tweeter
image
tweeter node ส่วนนี้จะมีขั้นตอนมากหน่อย
สิ่งที่ต้องเตรียมคือสมัครใช้งาน Tweeter สำหรับคนที่ยังไม่มี
กดที่รูปปากกา
image
กดปุ่มที่แสดง
image
จะขึ้นหน้าจอนี้ ให้กดที่ Authorize app
ผมสมัคร tweeter ผ่าน facebook ก็จะขึ้นหน้านี้เลย แต่ถ้าสมัตรแบบอื่น
ไม่แน่ใจว่าจะขึ้นแบบไหน
image
ถ้าไม่ติดปัญหาอะไรก็จะแสดงหน้านี้ ให้กดปิด browser หน้านี้
image
Node-RED จะแสดง tweeter ID ซึ่งจะเป็นปลายทางที่ tweeter node ส่งข้อมูลไป
ให้กดปุ่ม Add
image
ผมตั้งชื่อ node เป็น tweet
image
เรียบร้อย ให้ทำการ Deploy พร้อมทดสอบ
เงื่อนไขของการส่ง tweeter จะทำเมื่อ switch node ได้รับค่าเกินกว่า 100
นั่นก็คือเรากดที่ inject node ที่มีค่า 500 แต่จะไม่ส่งเมื่อเรากดที่ inject node ที่มีค่า 100
ทดลองกดที่ inject แล้วดูผลที่แท๊ป debug
จะเห็นว่ากดที่ inject node ค่า 100 จะไม่แสดงผลใดๆ แต่เมื่อกดที่ inject node ค่า 500
ที่ debug จะแสดงค่า 500 ถ้าสังเกตุที่ tweeter node จะมีข้อความ tweeting ที่ด้านล่าง node
ให้ตรวจสอบที่ tweeter จะแสดงข้อความที่เราตั้งค่าไว้
ข้อสังเกตุ ถ้าทำการกดที่ inject ค่า 500 อีกครั้ง จะเกิด Error ขึ้นที่ช่อง debug
เนื่องจาก tweeter พบว่ามีการส่งข้อความซ้ำ ให้เปลี่ยนข้อความที่จะส่งใน template แล้วลองอีกครั้งก็จะสามารถส่งได้อีก
ซึ่งเราอาจหลีกเลี่ยง Error ได้ด้วยการใส่วันที่ เวลา เข้าไว้ใน template ข้อความที่ส่งออกก็จะไม่ซ้ำและสามารถส่งออกไปได้
โพสต์นี่น่าจะจุดประกายให้นำไปต่อยอดเพื่อการแจ้งเตือนในรูปแบบอื่นๆได้
สำหรับการส่งด้วย email ขอยกยอดไปในโพสต์ต่อๆไป เนื่องจากมีข้อยุ่งยากพอควร

เพิ่มเติมโค๊ดที่ใช้สร้าง node ใน Node-RED
Copy ทั้งหมดในตารางด้านล่าง ไปที่ Node-RED editor จากนั้นสร้าง Sheet เลือกเมนู import –> Clipboard
แล้วจัดการวางข้อมูลในช่องที่ปรากฏ หลังจากกด OK
จะปรากฏ node ทั้งหมด Flow นี้ได้ปรับเพิ่มให้ส่งวันที่เวลาไปด้วย

แต่ในส่วนของ tweeter จะเห็นสามเหลี่ยมสีแดง หมายถึงต้องทำการติดตั้ง
ย้อนไปดูเนื้อหาได้ครับ
[{"id":"14bca2f8.eb435d","type":"inject","name":"","topic":"","payload":"100","payloadType":"string","repeat":"","crontab":"","once":false,"x":312.8957977294922,"y":173.88888931274414,"z":"91b85e7a.6e47a","wires":[["ef86e229.10792"]]},{"id":"78df8d03.872074","type":"inject","name":"","topic":"","payload":"500","payloadType":"string","repeat":"","crontab":"","once":false,"x":307.895751953125,"y":295.8888740539551,"z":"91b85e7a.6e47a","wires":[["ef86e229.10792"]]},{"id":"ef86e229.10792","type":"switch","name":"","property":"payload","rules":[{"t":"gt","v":"100"},{"t":"lte","v":"100"}],"checkall":"true","outputs":2,"x":475.89573669433594,"y":241.88888931274414,"z":"91b85e7a.6e47a","wires":[["f4f4b7dc.0b0b48"],["af9e2d9d.5061d"]]},{"id":"235ce332.dca31c","type":"template","name":"เตรียมข้อมูล","field":"payload","format":"handlebars","template":"แจ้งเตือนไปที่ tweeter:\n{{payload}}","x":818.8958206176758,"y":458.5555419921875,"z":"91b85e7a.6e47a","wires":[["af9e2d9d.5061d","681c80c2.97e38"]]},{"id":"681c80c2.97e38","type":"twitter out","twitter":"","name":"Tweet","x":948.8957595825195,"y":599.5555419921875,"z":"91b85e7a.6e47a","wires":[]},{"id":"af9e2d9d.5061d","type":"debug","name":"","active":true,"console":"false","complete":"false","x":974.7847366333008,"y":247.111083984375,"z":"91b85e7a.6e47a","wires":[]},{"id":"f4f4b7dc.0b0b48","type":"function","name":"","func":"var date = new Date();\nmsg.payload = \"เวลา \" + date.toISOString() + \"ค่าที่อ่าน =\" + msg.payload;\nreturn msg; ","outputs":1,"noerr":0,"x":661.7847366333008,"y":391,"z":"91b85e7a.6e47a","wires":[["235ce332.dca31c"]]}]




ไม่มีความคิดเห็น:

แสดงความคิดเห็น