diff --git a/temperature_reporter.py b/temperature_reporter.py new file mode 100644 index 0000000..626f1b7 --- /dev/null +++ b/temperature_reporter.py @@ -0,0 +1,56 @@ +#! /usr/bin/env python3 + +import os +import subprocess +from influxdb import InfluxDBClient + + +# Hardcoded path and dict of device names +w1_path = "/sys/bus/w1/devices" +device_names = {"28-000000000000":"Sensor_Name"} +device_blacklist = ["w1_bus_master1", "00-600000000000"] + + +# Influx server data +INFLUX_IP = "" +INFLUX_PORT = 8086 +INFLUX_DB = "" +INFLUX_USER = "" +INFLUX_PASS = "" + +# Iterate all i2c temperature sensors and +for device in os.listdir(w1_path): + if device not in device_blacklist: + device_name = device if not device_names[device] else device_names[device] + with open(f"{w1_path}/{device}/temperature") as t: + temp = float(t.readline()[:-1])/1000 + print(f"Device = {device_name} Temperature = {temp}") + + #prepare json of temperature data + temp_data = [ + { + "measurement" : "temperature", + "tags" : { + "host": f"{device_names[device]}" + }, + "fields" : { + "temperature": temp + } + } + ] + + # Report sensor data to server + client = InfluxDBClient(INFLUX_IP, INFLUX_PORT, INFLUX_DB, INFLUX_USER, INFLUX_PASS) + client.write_points(temp_data) + + +# Report CPU temperature data to server +temp = float(subprocess.check_output(["vcgencmd", "measure_temp"]).decode("utf-8")[:-3].split("=")[1]) + +temp_data = [{"measurement" : "temperature", + "tags" : {"host": "Raspberry_cpu"}, + "fields" : { "temperature": temp } + }] + +client = InfluxDBClient(INFLUX_IP, INFLUX_PORT, INFLUX_DB, INFLUX_USER, INFLUX_PASS) +client.write_points(temp_data)