gelesen hab ich schon reichlich in diesem Forum geschrieben jetzt zum 1. mal. wie so eineige andere auch hab ich mir ein script gebastelt und codeschnippsel verwendet.
Als Vorhaben möchte ich gern (mit dem PI) Messwerte von 1wire in eine Datenbank schreiben. ich möchte nicht wie viele anderen jeden Wert in eine separate Spalte sondern alles schön klassisch untereinander.
ID // Datum // HardwareID // Messwert
so kann ich es später mit einem kleinen Webinterface besser auswerten.
Mein Script läuft gut.... naja, für mich sieht es gut aus. Ich möchte es Euch hier gern mal zeigen und wünsche mir Kritik. Bin mir sicher Verbesserungspotential ist vorhanden und lernbereitschaft sowieso.
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Import sys module
import sys
import MySQLdb
import datetime
import time
# Open 1-wire slaves list for reading
file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
# Read 1-wire slaves list
w1_slaves = file.readlines()
# Close 1-wire slaves list
file.close()
#Open Mysql connection
mysql = MySQLdb.connect(host="localhost",user="USER",passwd="PASS",db="TESTDATENBANK")
# Repeat following steps with each temperature sensor
for line in w1_slaves:
# Extract 1-wire slave
w1_slave = line.split("\n")[0]
# Open 1-wire slave file
file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
# Read content from 1-wire slave file
filecontent = file.read()
# Close 1-wire slave file
file.close()
# Extract temperature string
stringvalue = filecontent.split("\n")[1].split(" ")[9]
# Convert temperature value
temperature = float(stringvalue[2:]) / 1000
# Formate Date
datum = time.strftime("%Y-%m-%d %H:%M:%S")
# write into database
cur = mysql.cursor()
cur.execute("INSERT INTO `TESTDATENBANK`.`sensors_data` (`timestamp`, `sensor_id`, `value`) VALUES ('%s', '%s', '%f')" % (datum, w1_slave, temperature))
mysql.commit()
# Quit python script
sys.exit(0)
Wo ich mir absulut nicht sicher bin ist die formatierung des Datums. hier muss es doch einen einfacherern Weg geben. Hab da schon einige zeit rumprobiert. Meine Mysql Tabelle kann es nur so lesen und die Formatierung der Spalte ist "varchar".......
nunja, vlt. gebt Ihr mir ein paar Tips um die Gechsichte zu optimieren.
LG Hugo