Skip to content

NETPIE กับภาษา Python - IoT platform โดยคนไทย

NETPIE กับภาษา Python - IoT platform โดยคนไทย

สวัสดีผู้อ่านทุกท่านครับ ทาง NECTEC ได้เปิดตัว NETPIE เมื่อปีก่อน เป็นบริการ IoT platform ใช้โพรโทคอล MQTT ในการสื่อสารกับอุปกรณ์ โดยรองรับทั้งภาษา Python , C# , JAVA , HTML5 Javascript , androidstudio รวมถึง arduino


วิดีโอแนะนำ NETPIE

บทความนี้จะพาผู้อ่านไปใช้ 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"

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 เป็นการค้างการเชื่อมต่อ

และส่วนส่งข้อมูล ชื่อ "two" ส่งข้อมูลไปหา "one" บนช่องทาง "/test"

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")

เมื่อรันโค้ด ให้ทำการรัน "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

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *