Things Control

ThingsControl – control anything as you want.

ผมเริ่มหัดเขียน php, c เพื่อคุยกับ netpie เมื่อประมาณต้นเดือนมิถุนายน และหัดเขียน app inventor เมื่อราวราว 30 พฤษภาคม 2560

จนวันนี้ ใช้เวลาประมาณ 1 เดือนเต็มเต็ม งานที่ทำอยู่ก็สำเร็จในเบื้องต้น รวมเวลาสั่งของ (hardware) มาลองด้วย

แรงบันดาลใจก็มาจาก sonoff หรือ smart switch ที่บริษัท จีนทำขายไปทั่วโลกในราคาไม่แพง นอกเหนือจากนั้นอีกแรงขับหนึ่งก็คือ ความหวงวิชาของหน่วยงานรัฐ หรือแม้แต่คนในวงการเดียวกันเอง ถึงตอนนี้ ผมก็ยังคิดว่า ทำไมจะต้องมาเสียเวลาไป 1 เดือนเพื่อทำในสิ่งที่ คนอื่นก็ทำกันอยู่แล้ว และต้องมาทำซ้ำซ้ำกัน จริงอยู่นะ ว่า พอมาทำจริงจริงมันก็ไม่ได้ง่ายนัก ถ้าจะทำเพื่อให้ใช้งานได้จริง ไม่ใช่ทำแค่ ปิด เปิด หลอดไฟได้ แบบที่ ก็ทำกันมาหลายปี เวลาหัดทำ หัดใช้งาน ใหม่ใหม่ มันก็มีความยากอยู่พอสมควร แต่ถ้าจะคิดในมุม เรื่องพื้นฐานแบบนี้ ถ้าเผยแพร่ได้ มันจะช่วยให้วงการมันพัฒนาไปได้อีกมาก เพราะสาระของเรื่องนี้ มันไม่ได้อยู่ตรงนี้แล้ว มันต้องต่อยอดออกไปอีก ไม่ว่าจะเป็นเรื่อง big data หรือ machine learning ลำพังแค่จะทำตัวสร้างข้อมูลยังจะหวงกัน ก็ไม่ต้องไปถึงไหนกัน

ครับ ถ้าท่านหลงมาเจอ ก็ลองไปดูที่นี่ เผื่อจะสนใจ https://github.com/kaebmoo/thingscontrol

มันคืออุปกรณ์เปิด ปิด อุปกรณ์ไฟฟ้า ที่สั่งงานผ่าน smart phone (android) สั่งผ่าน internet โดยสามารถตั้งเวลาควบคุมการ เปิด ปิด หรือระยะเวลาที่ให้ทำงาน ได้

 

Advertisements

อ่าน/เขียน ข้อมูลไปยัง netpie ด้วย app inventor

screen_read_write_netpie_appinventor

 

blocks(1)

ใช้ผ่าน web component ที่อยู่ในหมวด connectivity ซึ่งใช้เรียก REST API ของ netpie โดยกำหนด uri คือ https://api.netpie.io/topic/ชื่อแอพที่สร้างในnetpie/ชื่อtopic?retain&authen=key:secret

เช่น https://api.netpie.io/topic/sControl/sensor/light?retain&auth=key:secret

ตรง key และ secret ใส่ key และ secret ที่ได้จากการสร้างแอพพลิเคชั่นจาก netpie

application_netpie

ลองส่งข้อมูลขึ้นด้วยการใส่ค่าใน textbox แล้วกดปุ่ม [post to netpie] โปรแกรมจะเรียก web method PUT Text เพื่อส่งค่า

ลองอ่านค่าจาก netpie ด้วยการกดปุ่ม [get value from netpie] โปรแกรมจะเรียก web method GET

ค่าที่ได้จาก netpie จะหน้าตาประมาณนี้

[{“topic”:”/sControl/sensor/light”,”payload”:”ํYES”,”lastUpdated”:1498810051,”retain”:true}]

จากนั้นจะมีการตรวจค่าใน Event GotText ก็ทำการตรวจสอบว่าสามารถอ่านค่าได้หรือไม่ (responseCode = 200) แล้วก็ทำการอ่านค่าโดยแปลงจาก json มาใส่ใน List (item) เพื่อใช้ค้นหา key ที่เราสนใจ ซึ่งในที่นี้จะอยู่ใน key ชื่อ payload

 

ตรง if else ที่ตรวจสอบค่าว่าเป็น PUT, หรือ GET เพื่อไม่ให้เกิด error เนื่องจากเวลา PUT netpie จะส่งค่า JSON กลับมาไม่เหมือนกับตอน GET จะได้แสดงผลถูก

ในตัวอย่างนี้มีการใช้ clock ทุก 5 วินาที (อย่าลืมตั้งค่า TimerInterval = 5000) เพื่ออ่านค่า ดังนั้นก็ไม่จำเป็นต้องกดปุ่ม [get value from netpie] ก็ได้ เพราะโปรแกรมจะอ่านค่าจาก netpie มาทุกทุก 5 วินาที เพื่อมาแสดงผล

ส่วนถ้าจะยัด microgear ลงไปใน component ของ app inventor นี่ อันนี้ขอผ่าน ฝีมือยังไม่ถึง รอเซียนทั้งหลายเขาทำมาละกัน 😛

download code

more information

ปล. app inventor มีออกชุดพัฒนาสำหรับ iot แล้วนะ ลองดูที่นี่ http://iot.appinventor.mit.edu