Heizungs-Monitoring

Heute habe ich bei uns im Heizungsraum mein Temperatur-Datenerfassungssystem etwas angepasst.

Ich hatte vor einer Weile mal auf Basis eines Edimax BR-6104KP Routers mit einer Midge Linux Firmware ein Temperaturlogging via 1-Wire Sensoren aufgebaut. Die Abfrage der Sensoren erfolgte über meinen Server und die erfassten Werte wurden in eine MySQL Datenbank geschrieben. Das funktionierte leider nur unzuverlässig, da der Router nach ca. 30 Tagen Betriebszeit dann abgestürzt ist und nur durch einen kompletten Neustart wiederzubeleben war. Auch ein täglicher Reboot via cronjob hat daran nichts verändert.

Um das ganze jetzt mal in den Griff zu kriegen, habe ich mir nun einen 1-wire to Ethernet Busmaster von Embedded Data Systems (EDS) bei Fuchs Elektronik bestellt und den heute eingebaut. Praktischerweise läuft das Gerät mit 6-16V, sodass ich das bereits verbaute Netzteil weiternutzen konnte. Ich musste lediglich das Kabel, welches die Sensoren mit dem Busmaster verbindet tauschen, da der alte USB-Adapter einen RJ-45 Anschluss besass und ich nun einen RJ-12 Anschluss benötige.

Schliesslich war noch ein Update der owfs-Installation auf meinem Server, mit dem ich auf das Gerät zugreife notwendig. Die aktuelle Version war im Gentoo Portage nicht enthalten, sodass ich die Software manuell installieren musste, was allerdings problemlos funktionierte. Inzwischen protokolliert mein Python-Script auch schon wieder die aktuellen Temperaturdaten in die Datenbank.

Das Script ist recht simpel aufgebaut, es fragt nacheinander die vier angeschlossenen Sensoren ab:

#!/usr/bin/python
import re
import ow
import MySQLdb

sensors = ['10.D034F9010800', '10.2C7AF9010800', '10.1353F9010800', '10.2F90F9010800']

mysql_opts = {
  'host': "HOSTNAME",
  'user': "USERNAME",
  'pass': "PASSWORD",
  'db':   "DATABASE",
  'dbtablevalues': 'sensor_values',
  'dbtablesensors': 'sensor_names'
}

mysql = MySQLdb.connect(mysql_opts['host'], mysql_opts['user'], mysql_opts['pass'], mysql_opts['db'])
mysql.apilevel = "2.0"
mysql.threadsafety = 2
mysql.paramstyle = "format"

for sensor in sensors:
  cursor = mysql.cursor()
  ow.init("--enet=IP:PORT")
  temp = re.sub(r'\s', '', str(ow.Sensor("/"+sensor).temperature))
  print "%s: %s" % (sensor, temp)
  sql="INSERT INTO %s (sensor_id, sensor_value, sensor_time, cuser) VALUES ((SELECT sensor_id FROM %s WHERE sensor_owid='%s'), %s, CURRENT_TIMESTAMP, 'auto')" % (mysql_opts['dbtablevalues'], mysql_opts['dbtablesensors'], sensor, temp);
  cursor.execute(sql)
mysql.close()

Ich bin gespannt, ob das jetzt zuverlässig läuft… :-)

Bilanz vom Wochenende

Soo, nun hab ich mal ein bischen Zeit was über meine Wochenendbeschäftigung zu schreiben. Ich hab den ganzen Samstag und Sonntag damit zugebracht, die Telefonverteilung zu Hause endlich neuzumachen, was auch mal dringend nötig war.

Zuerst mussten alle Leitungen erstmal in einen Kanal gelegt werden, da die Rohre an der Wand mitlerweile richtig voll waren. Dann gabs eine neue Zuleitung für die Anlage, NTBA und Splitter sind mal ordentlich aufgehängt wurden und schliesslich hab ich Sonntag dann die einzelnen Leitungen – die ich zum Glück schonmal identifiziert hatte – auf die Verteilung gelegt.

Sieht jetzt, wie ich finde, ganz ordentlich aus :)

tk1.jpg

tk2.jpg

Nächstes Projekt

Heute hab ich dann mal mit meinem nächsten Projekt hier angefangen (Naja, bzw. angestossen durch meinen Zimmer-Umbau) – Die Telefonverteilung ordentlich machen, dokumentieren, sortieren und umbauen. Hauptsächlich deshalb, weil ich meine neuen ISDN Dosen da anschliessen wollte und über die Jahre das ganze recht unüberschaubar geworden ist.

Nachdem ich dann heute alle zur Zeit aktiven Telefone identifiziert hatte, hab ich dann alles auf eine neue provisorische Verteilung (natürlich viel zu klein, aber vorerst ausreichend)  umgeklemmt und kann dann in Ruhe alles andere umbauen, was ich dann nächstes Wochenende denk ich mal anfangen werde.

vt_prov_neu.jpg