การเขียนโปรแกรมภาษา Python เพื่อส่งข้อมูลไปยัง NETPIE - mrolarik/simple-iot GitHub Wiki

เขียนโปรแกรม Python เพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ของ NETPIE

การเขียนโปรแกรมด้วยภาษา Python เพื่อส่งข้อมูลไปยัง NETPIE นั้นจะต้องติดตั้งไลบรารี่ (Library) ที่ชื่อว่า Microgear สามารถอ่านข้อมูลเพิ่มเติมได้จากลิงก์ Microgear-python โดยวิธีการติดตั้งสามารถทำได้ดังนี้

ติดตั้งโปรแกรม Microgear

  • สำหรับการติดตั้งไลบรารี่ของ Microgear สามารถทำได้โดยเปิด Terminal เพื่อพิมพ์คำสั่ง ดังต่อไปนี้
$ sudo pip install microgear

จากนั้นไลบรารี่จะถูกติดตั้งลงเครื่องคอมพิวเตอร์ มีผลลัพธ์การติดตั้งดังนี้

Collecting microgear
  Downloading microgear-1.1.3.zip
Collecting paho-mqtt (from microgear)
  Downloading paho-mqtt-1.1.tar.gz (41kB)
    100% |████████████████████████████████| 45kB 274kB/s 
Collecting oauth2 (from microgear)
  Downloading oauth2-1.9.0.post1-py2.py3-none-any.whl
Collecting requests (from microgear)
  Downloading requests-2.7.0-py2.py3-none-any.whl (470kB)
    100% |████████████████████████████████| 471kB 231kB/s 
Collecting httplib2 (from oauth2->microgear)
  Downloading httplib2-0.9.2.tar.gz (205kB)
    100% |████████████████████████████████| 208kB 332kB/s 
Installing collected packages: paho-mqtt, httplib2, oauth2, requests, microgear
  Running setup.py install for paho-mqtt
  Running setup.py install for httplib2
  Running setup.py install for microgear
Successfully installed httplib2-0.9.2 microgear-1.1.3 oauth2-1.9.0.post1 paho-mqtt-1.1 requests-2.7.0
  • โดยไลบรารี่ที่ถูกติดตั้งมาพร้อมกับ microgear ประกอบด้วย paho-mqtt, httplib2, oauth2, requests, microgear

ตัวอย่างโปรแกรม

ตัวอย่างของโปรแกรมที่ใช้สำหรับส่งข้อมูลไปยัง NETPIE สามารถเข้าไปดูได้จากลิงก์ https://github.com/netpieio/microgear-python/blob/master/examples/basic.py
example

import microgear.client as microgear
import time
import logging

appid = <appid>
gearkey = <gearkey>
gearsecret =  <gearsecret>

microgear.create(gearkey,gearsecret,appid,{'debugmode': True})

def connection():
    logging.info("Now I am connected with netpie")

def subscription(topic,message):
    logging.info(topic+" "+message)

def disconnect():
    logging.debug("disconnect is work")

microgear.setalias("doraemon")
microgear.on_connect = connection
microgear.on_message = subscription
microgear.on_disconnect = disconnect
microgear.subscribe("/mails")
microgear.connect(False)

while True:
	if(microgear.connected):
		microgear.chat("doraemon","Hello world."+str(int(time.time())))
time.sleep(3)
  • สิ่งที่สำคัญที่จะทำให้ NETPIE รับและแสดงผลข้อมูลในส่วนของ Freeboards ได้ถูกต้องคือ
appid = <appid>
gearkey = <gearkey>
gearsecret =  <gearsecret>
  • โดย appid, gearkey, gearsecret ดูได้จากในส่วนของ applications โดยเปิดเว็บไซต์ NETPIE และเลือกที่เมนู RESOURCES>APPLICATIONS จากนั้นเลือก Application ที่ต้องการใช้งาน และคลิกที่ key ที่กำหนดไว้
  • สามารถอ่านรายละเอียดเพิ่มเติมได้จากลิงก์ สร้าง Application (APPID) เพื่อใช้กับอุปกรณ์ IoT

ทดสอบเขียนโปรแกรมเพื่อใช้ส่งข้อมูลไป NETPIE

จากตัวอย่างโปรแกรมข้างต้น จะประยุกต์โดยการสุ่ม (Random) ข้อมูลจำนวน 2 ค่า และส่งขึ้นไปยัง NETPIE ดังนั้น จะปรับปรุงโปรแกรมดังต่อไปนี้

#----------netpie_message.py----------------
import microgear.client as netpie
import base64, zlib, time
import random
import datetime

key = '<your/key>'
secret = '<your/secret/number>'
app = '<your/application/id>'

netpie.create(key,secret,app,{'debugmode': True})

def connection():
	print "Now I am connected with netpie"

def subscription(topic,message):
	print topic+" "+message

netpie.setname("smartFarm")
netpie.on_connect = connection
netpie.on_message = subscription
netpie.subscribe("/mails")

netpie.connect()

while True:
	T1 = random.randint(0,100)		
	H1 = random.randint(0,100)
	smartFarm_message = str(T1) + "," + str(H1)
	print(smartFarm_message)
				
	netpie.chat("smartFarm",smartFarm_message)
	time.sleep(5)
  • จากตัวอย่างได้สุ่มข้อมูลจำนวน 2 ค่าคือ T1 และ H1 โดย T คือ Temperature และ H คือ Humidity
  • ซึ่งข้อความที่จะส่งขึ้น NETPIE จะส่งในรูปแบบของ string ดังนั้นจึงต้องใช้ฟังก์ชัน str() เพื่อแปลงจาก int เป็น string
  • โดยในภาษา Python การนำ string มาต่อกันหรือ concatenate สามารถทำได้โดยใช้เครื่องหมาย + คำสั่งต่อไปนี้จึงเป็นการนำข้อความมาต่อกันและคั่นด้วยเครื่องหมายคอมม่า ,
smartFarm_message = str(T1) + "," + str(H1)

ดังนั้น ผลลัพธ์ที่ได้คือ 25,30

  • เมื่อส่งข้อมูลไปยัง NETPIE ทางฝั่ง NETPIE จะต้องเขียน script เพื่อตัดข้อความและเลือกข้อมูลไปแสดงผลต่อไป

การรันโปรแกรมเพื่อส่งข้อมูลไปยังเซิร์ฟเวอร์ของ NETPIE

จากตัวอย่างโปรแกรมข้างต้นกำหนดให้ชื่อ netpie_message.py ดังนั้นในการสั่งให้โปรแกรมทำงานเพื่อส่งข้อมูลสามารถทำได้โดยพิมพ์คำสั่งดังต่อไปนี้

$ python netpie_message.py

ผลลัพธ์ที่ได้จากการทำงาน แสดงดังต่อไปนี้

19/08/2018 01:54:07 AM WARNING  Deprecated soon: Please consider using setalias()
19/08/2018 01:54:07 AM INFO     Check stored token.
19/08/2018 01:54:08 AM INFO     Connected with result code 0
Now I am connected with netpie
19/08/2018 01:54:08 AM INFO     Auto subscribe /SFM/gearname/smartFarm
19/08/2018 01:54:08 AM INFO     Auto subscribe /SFM/mails
19/08/2018 01:54:08 AM INFO     Auto subscribe /&id/uOyBbeWxp22nyGgE/#
/SFM/gearname/smartFarm 64,53
/SFM/gearname/smartFarm 35,47
/SFM/gearname/smartFarm 30,61
/SFM/gearname/smartFarm 32,84

หากต้องการหยุดการทำงานของโปรแกรมให้กดปุ่ม ctrl+c

⚠️ **GitHub.com Fallback** ⚠️