สวัสดีผู้อ่านทุกท่านครับ ทาง NECTEC ได้เปิดตัว NETPIE เมื่อปีก่อน เป็นบริการ IoT platform ใช้โพรโทคอล MQTT ในการสื่อสารกับอุปกรณ์ โดยรองรับทั้งภาษา Python , C# , JAVA , HTML5 Javascript , androidstudio รวมถึง arduino
วิดีโอแนะนำ NETPIE
[embed]https://www.youtube.com/watch?v=T_kpTnvqJ1E[/embed]
บทความนี้จะพาผู้อ่านไปใช้ NETPIE กับภาษา Python กันครับ
ไลบรารี NETPIE ในภาษา Python คือ microgear รองรับทั้ง Python 2 และ Python 3
ติดตั้งได้ด้วยคำสั่ง :
$ pip install microgear
ก่อนอื่นให้เข้าที่ https://netpie.io/
ทำการลงทะเบียนผู้ใช้งาน เสร็จแล้ว Login เข้าสู่ระบบ แล้วไปที่ RESOURCES -> APPLICATIONS
จะพบการหน้าเว็บ APPLICATIONS หน้านี้สามารถจัดการสร้างหรือลบแอพ และสามารถบอกจำนวนแอพและจำนวนอุกปกรณ์ที่ใช้งาน
ให้ทำการคิด + สร้าง APPLICATIONS ในที่นี้ตั้งชื่อ "testpython"
เข้าไปยังแอพ "testpython"
แล้วทำการสร้าง KEY สำหรับเข้าใช้งานระบบ ในที่นี้ตั้งชื่อ "py1" เลือก Device key (ใช้กับอุปกรณ์) ส่วน Session Key ใช้สำหรับ HTML5
เสร็จแล้ว คลิกไปที่ Key แล้วทำการโชว์คีย์ (คีย์ที่โชว์ในหน้าเว็บนี้เป็นตัวอย่างและถูกลบไปแล้ว)
ต่อไปเรามาลองมือเขียนโค้ดส่งข้อมูลง่าย ๆ กันครับ
ส่วนรับข้อมูล ผมตั้งชื่อให้ว่า "one" บนช่องทาง "/test"
[python]
import microgear.client as client
gearkey = 'key' # key
gearsecret = 'secret' # secret
appid = 'testpython' # ชื่อแอพของเรา
client.create(gearkey,gearsecret,appid,{'debugmode': True}) # สร้างข้อมูลสำหรับใช้เชื่อมต่อ
client.setalias("one") # ตั้งชื่้อ
def callback_connect() :
print ("Now I am connected with netpie")
client.on_connect = callback_connect # แสดงข้อความเมื่อเชื่อมต่อกับ netpie สำเร็จ
def callback_message(topic, message) :
print (topic, ": ", message)
client.on_message= callback_message # ให้ทำการแสดงข้อความที่ส่งมาให้
def callback_error(msg) :
print(msg)
client.on_error = callback_error # หากมีข้อผิดพลาดให้แสดง
client.subscribe("/test") # ชื่อช่องทางส่งข้อมูล ต้องมี / นำหน้า และต้องใช้ช่องทางเดียวกันจึงจะรับส่งข้อมูลระหว่างกันได้
client.connect(True) # เชื่อมต่อ ถ้าใช้ True เป็นการค้างการเชื่อมต่อ
[/python]
และส่วนส่งข้อมูล ชื่อ "two" ส่งข้อมูลไปหา "one" บนช่องทาง "/test"
[python]
import microgear.client as client
import time # ใช้ในการหน่วงเวลา
gearkey = 'key' # key
gearsecret = 'secret' # secret
appid = 'testpython' # ชื่อแอพของเรา
client.create(gearkey,gearsecret,appid,{'debugmode': True}) # สร้างข้อมูลสำหรับใช้เชื่อมต่อ
client.setalias("two") # ตั้งชื่้อ
def callback_connect() :
print ("Now I am connected with netpie")
client.on_connect = callback_connect # แสดงข้อความเมื่อเชื่อมต่อกับ netpie สำเร็จ
def callback_message(topic, message) :
print (topic, ": ", message)
client.on_message= callback_message # ให้ทำการแสดงข้อความที่ส่งมาให้
def callback_error(msg) :
print(msg)
client.on_error = callback_error # หากมีข้อผิดพลาดให้แสดง
client.subscribe("/test") # ชื่อช่องทางส่งข้อมูล ต้องมี / นำหน้า และต้องใช้ช่องทางเดียวกันจึงจะรับส่งข้อมูลระหว่างกันได้
client.connect(False) # เชื่อมต่อ ถ้าใช้ False ไม่ค้างการเชื่อมต่อ
i=0
while i<10:
client.chat("one","hello from two") # ส่งข้อมูลไปให้ one
time.sleep(3) # หน่วงเวลาการส่งข้อมูล 3 วินาที
i+=1
print("ok")
[/python]
เมื่อรันโค้ด ให้ทำการรัน "one" ก่อน พอเชื่อมต่อสำเร็จค่อยรัน "two"
ผลลัพธ์
หากเราดูที่หน้าเว็บ "testpython" จะมีการแสดงชื่ออุปกรณ์ จำนวนอุปกรณ์ที่เชื่อมต่ออยู่ และ สถานะของอุปกรณ์ด้วย
อ่านเอกสารการใช้งานเพิ่มเติมได้ที่ https://github.com/netpieio/microgear-python และ https://netpie.io/tutorials
คะแนนความพึงพอใจ NETPIE ได้ 4 / 5 คะแนน
ที่ขาด 1 คะแนน เพราะขาดช่องทางอย่างเป็นทางการในการติดต่อนักพัฒนา NETPIE และ ไม่สามารถใช้งานมากกว่า 100 อุปกรณ์พร้อมกันได้ (และไม่มีรายละเอียดเพิ่มเติมส่วนนี้) รวมทั้งเอกสารในหน้าเว็บ ไม่ถูกปรับปรุงเท่าทันกับเอกสารใน GitHub (ผมพบ API บางตัวที่ถูกประกาศยกเลิก ยังคงปรากฎในหน้าเว็บของ NETPIE)
ที่ได้ 4 คะแนน เพราะถือว่าเป็นบริการที่ดีจาก NECTEC ทำให้นักพัฒนาไทยไม่จำเป็นต้องลงทุนระบบเองทั้งหมด และบริการนี้อยู่ในไทย ทำให้สามารถเชื่อมต่อได้อย่างรวดเร็วกว่าบริการที่อยู่ต่างประเทศ นอกจากนั้นยังมีบริการ NETPIE Feed และ FREEBOARD พร้อมใช้งาน และสุดท้าย คือ เอกสาร หน้าเว็บมีภาษาไทย
กลุ่มผู้ใช้ NETPIE บน Facebook : > https://www.facebook.com/groups/netpie/
เขียนโดย นาย วรรณพงษ์ ภัททิยไพบูลย์ ที่ https://python3.wannaphong.com/ - โลกภาษา Python
0 ความคิดเห็น:
แสดงความคิดเห็น
แสดงความคิดเห็นได้ครับ :)