การเขียนโปรแกรมภาษา Python เพื่อส่งข้อมูลไปยัง NETPIE - mrolarik/simple-iot GitHub Wiki
การเขียนโปรแกรมด้วยภาษา Python เพื่อส่งข้อมูลไปยัง NETPIE นั้นจะต้องติดตั้งไลบรารี่ (Library) ที่ชื่อว่า Microgear
สามารถอ่านข้อมูลเพิ่มเติมได้จากลิงก์ Microgear-python โดยวิธีการติดตั้งสามารถทำได้ดังนี้
- สำหรับการติดตั้งไลบรารี่ของ
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
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
จากตัวอย่างโปรแกรมข้างต้น จะประยุกต์โดยการสุ่ม (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_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