+class ReadsensorError(RuntimeError):
+ pass
+
+
+def readsensor(sensor_id):
+ sensorfile = "/sys/bus/w1/devices/28-{}/w1_slave".format(sensor_id)
+ file = open(sensorfile)
+
+ # Inhalt des Sensors:
+ # 64 01 4b 46 7f ff 0c 10 01 : crc=01 YES
+ # 64 01 4b 46 7f ff 0c 10 01 t=22250
+
+ # Suche nach YES
+ linecrc = file.readline()
+ match = re.search(": crc=[0-9a-f]{2} (YES|NO)",linecrc)
+
+ yesno = match.group(1)
+ if yesno != "YES":
+ raise ReadsensorError('Could not evaluate sensorfile "{}"'.format(sensorfile))
+
+ # Temperatur raus
+ linetemp = file.readline()
+ match = re.search(" t=([-0-9]+)",linetemp)
+
+ temp_raw = match.group(1)
+ temp = float(temp_raw)/1000
+
+ file.close()
+ jetzt = datetime.datetime.now()
+
+ return jetzt, temp_raw, temp
+
+
+def writesensordatacsv(config, sensor_id, sensor_name, timestamp, value_type, value_raw, value):
+ # Schreiben des csv-files
+ file = open(config.get("csv", "filename"), "a", newline = "")
+ writer = csv.writer(file, dialect = "excel")
+ writer.writerow([timestamp.strftime("%Y-%m-%d %H:%M"), sensor_id, sensor_name, "{:.1f}".format(value)])