Added temperature_reporter.py
This commit is contained in:
56
temperature_reporter.py
Normal file
56
temperature_reporter.py
Normal file
@@ -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)
|
||||||
Reference in New Issue
Block a user