Digitaler Stromzähler für Zuhause

Hier ein kurzer Codeschnipsel für einen SmartMeter (einen Digitalen Stromzähler zum Abschätzen des Stromverbrauches, z.B: aus dem Titelbild: DRT428B, Ebay aktuell ca. 42 € das Stück),  der nützlich ist wenn man es über einen Seriellen Port an den Rechner (Raspberry Pi eignet sich z.B. sehr gut dafür) klemmt (nach jeder Verbrauchten Wattstunde sendet genanntes einen elektrischen Impuls über den Seriellen Port). Diese Schnittstelle wurde bei unserem Versuch vom eingesetzten Volkszähler Projekt bzw. dessen Komponente zum Zählen (Stichwort vzlogger) nicht ordentlich unterstützt, deshalb auch diese kurze Eigenkreation. Ein weiterer Schritt in Richtung „smart Home“.

Um dieses Python Script zu betreiben reicht es dieses in eine Datei zu kopieren und mit Python auszuführen. Das Python Modul serial muss installiert sein. Passt dann einfach noch die Variablen oben an eure Bedürfnisse und Settings an und fertig ist der Brei.

smartmeter_sw

 

Volkszaehler frontend

 

Hier das Python Skript:

#!/usr/bin/python
import serial
import httplib
import time
import string
import signal
import sys

# ENTER DATA HERE
uuid = "<enter UUID here>" # UUID
value = 6 # smoothing value
device = "/dev/ttyUSB0" # input device for s0 pules
path = "/middleware.php/data/" # path to file
# STOP EDITING HERE

def signal_handler(signal, frame):
	print '\nexit...'
	sys.exit(0)

signal.signal(signal.SIGINT, signal_handler)

ser = serial.Serial(device, 50)
ser.rtscts = 1
print "Listening ..."

i=1

while 1:
	ser.read()
	edtime = time.time()
	if i == value:
		i = 1
		hi = httplib.HTTPConnection('localhost', 8080)
		hi.request("GET", path + uuid + ".json?operation=add&amp;value=" + str(value))
		hi.close()
		req = time.time()
		print "request made (time for request: " + str(round(req-edtime,1)) + ")"
	i += 1

Falls Ihr weitere Fragen habt oder mehr zur Umsetzung erfahren wollt, dann lasst es uns in den Kommentaren wissen 😉