การเขียนโปรแกรม Python ส่งสถานะของเครื่อง Server ไปยังเซิร์ฟเวอร์ NETPIE - mrolarik/simple-iot GitHub Wiki

สำหรับการเริ่มต้นใช้งาน NETPIE เช่นการสมัครสมาชิก การสร้าง dashboard และการส่งข้อมูลไปยัง NETPIE สามารถอ่านรายละเอียดเพิ่มเติมได้ที่

จากบทความ การเขียนโปรแกรม 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