การเขียนโปรแกรม Python ส่งสถานะของเครื่อง Server ไปยังเซิร์ฟเวอร์ NETPIE - mrolarik/simple-iot GitHub Wiki
สำหรับการเริ่มต้นใช้งาน NETPIE เช่นการสมัครสมาชิก การสร้าง dashboard และการส่งข้อมูลไปยัง NETPIE สามารถอ่านรายละเอียดเพิ่มเติมได้ที่
- สร้าง Application (APPID) เพื่อใช้กับอุปกรณ์ IoT
- สร้าง Freeboards สำหรับแสดงผลแบบ dashboard
- การเขียนโปรแกรมภาษา Python เพื่อส่งข้อมูลไปยัง NETPIE
- การสร้าง dashboard เพื่อแสดงข้อมูล
จากบทความ การเขียนโปรแกรม Python เพื่อตรวจสอบสถานะของเครื่อง Server เราได้เตรียมความพร้อมในการเขียนโปรแกรม Python เพื่อดึงข้อมูลสถานะของเครื่องเซิร์ฟเวอร์เป็นที่เรียบร้อย จากนั้นจะส่งข้อมูลสถานะเช่น memory
, running process
และ uptime
ไปยังเซิร์ฟเวอร์ NETPIE
ตัวอย่างของโปรแกรมภาษา Python ที่ใช้ส่งสถานะของ Server ไปยัง NETPIE แสดงดังต่อไปนี้
#------------------netpie_server_status.py----------------------------
import microgear.client as netpie
import base64, zlib, time
import random
import datetime
import subprocess
key = 'netpie/key'
secret = 'netpie/secret'
app = 'your/netpie/application'
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()
def total_memory():
total_mem = subprocess.Popen("free -m | grep Mem | awk '{print $2}'", shell=True, stdout=subprocess.PIPE)
total_mem = int(total_mem.stdout.read())/1024
return total_mem
def used_memory():
used_mem = subprocess.Popen("free -m | grep Mem | awk '{print $3}'", shell=True, stdout=subprocess.PIPE)
used_mem = int(used_mem.stdout.read())/1024
return used_mem
def running_process():
run_process = subprocess.Popen("ps aux | wc -l", shell=True, stdout=subprocess.PIPE)
run_process = run_process.stdout.read()
return run_process
def up_time():
up_t = subprocess.Popen("uptime", shell=True, stdout=subprocess.PIPE)
up_t = up_t.stdout.read()
up_t = map(str.strip, up_t.split(','))
up_t = '-'.join(up_t)
return up_t
while True:
usage_cpu = subprocess.Popen('./cpu_usage.sh', stdout=subprocess.PIPE)
output_usage_cpu = usage_cpu.stdout.read()
total_mem = total_memory()
used_mem = used_memory()
run_process = running_process()
up_t = up_time()
server_message = output_usage_cpu.split('\n')[0] + "," + str(total_mem) + "," + str(used_mem) + "," + \
str(run_process).split('\n')[0] + "," + str(up_t).split('\n')[0]
netpie.chat("smartFarm",server_message)
time.sleep(3)
จากตัวอย่างข้างต้น ได้เพิ่มข้อมูลในส่วนของการตรวจสอบสถานะของ CPU ดังต่อไปนี้
usage_cpu = subprocess.Popen('./cpu_usage.sh', stdout=subprocess.PIPE)
output_usage_cpu = usage_cpu.stdout.read()
โดยในคำสั่งได้เรียกใช้ไฟล์ชื่อ cpu_usage.sh
ดังนั้นสามารถดาวน์โหลดไฟล์ ได้จากลิงก์ต่อไปนี้ https://github.com/mrolarik/simple-iot/blob/master/program/cpu_usage.sh
- จากนั้นให้เปิดโปรแกรม Terminal และพิมพ์คำสั่งต่อไปนี้เพื่อสั่งให้โปรแกรมทำงานและส่งข้อมูลสถานะของ Server ไปยัง NETPIE
$ python netpie_server_status.py
หากไม่มีข้อผิดพลาดใด ๆ โปรแกรมจะส่งข้อมูลดังต่อไปนี้ไปยัง NETPIE
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/#
/olarikRPi/gearname/smartFarm 0,15,3,226,14:38:35 up 17 days-14:07-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:39 up 17 days-14:07-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:43 up 17 days-14:07-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:47 up 17 days-14:07-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:51 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:55 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:38:59 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:39:03 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:39:07 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:39:11 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,224,14:39:15 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00
/olarikRPi/gearname/smartFarm 0,15,3,226,14:39:19 up 17 days-14:08-0 users-load average: 0.00-0.00-0.00