Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Python 2 script to monitor cpu load, cpu temperature and free space,
- # on a Raspberry Pi computer and publish the data to a MQTT server.
- from __future__ import division
- import subprocess, time, socket, os
- import paho.mqtt.client as paho
- #get device host name - used in mqtt topic
- hostname = socket.gethostname()
- #mqtt server configuration
- mqtt_host = "mqtt_host"
- mqtt_user = "mqtt_user"
- mqtt_password = "mqtt_password"
- mqtt_port = "1883"
- def check_used_space(path):
- st = os.statvfs(path)
- free_space = st.f_bavail * st.f_frsize
- total_space = st.f_blocks * st.f_frsize
- used_space = int(100 - ((free_space / total_space) * 100))
- return used_space
- def check_cpu_load():
- #bash command to get cpu load from uptime command
- p = subprocess.Popen("uptime", shell=True, stdout=subprocess.PIPE).communicate()[0]
- cpu_load = p.split("average:")[1].split(",")[0].replace(' ', '')
- return cpu_load
- def check_cpu_temp():
- #bash command to get rpi cpu temp
- full_cmd = "/opt/vc/bin/vcgencmd measure_temp"
- p = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE).communicate()[0]
- cpu_temp = p.replace('\n', ' ').replace('\r', '').split("=")[1].split("'")[0]
- return cpu_temp
- if __name__ == '__main__':
- #check cpu load
- cpu_load = check_cpu_load()
- #check cpu temp
- cpu_temp = check_cpu_temp()
- #check used space
- used_space = check_used_space('/')
- #connect to mqtt server
- client = paho.Client()
- client.username_pw_set(mqtt_user, mqtt_password)
- client.connect(mqtt_host, mqtt_port)
- #publish cpu load mqtt message
- client.publish(hostname+"/cpuload", cpu_load, qos=1)
- time.sleep(1)
- #publish cpu temperature mqtt message
- client.publish(hostname+"/cputemp", cpu_temp, qos=1)
- time.sleep(1)
- #publish used space mqtt message
- client.publish(hostname+"/diskusage", used_space, qos=1)
- #disconect from mqtt server
- client.disconnect()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement