Rss

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 😉

Verwandte Beiträge

 

 

Kommentare (8)

  1. efuchs

    Das Thema ist gut !
    das Bild ist schon heftig!
    Es hat schon einen Grund warum die Kabel / Adern verschiedene Farbcodes haben ! Das was Ihr da macht ist (auch wenn es nur zum eigengebrauch ist – LEBENSGEFÄHRLICH !) an Gelb/Grün darf NIEMALS Spannung liegen !!!

    • Meik Wienert

      Hi,
      ist sicherlich richtig, dass am Schutzleiter keine Phase liegen darf, allerdings handelte es sich hier nur um einen Testaufbau und sollte so natürlich nicht dauerhaft in die Praxis umgesetzt werden.

  2. Lars

    Hi,
    völlig egal ob Testaufbau oder nicht!
    So etwas macht man nicht, egal ob nur zum testen oder nicht.

  3. Tobi

    Hi, an welche Schnittstelle vom Zähler habt ihr den Raspi angeschlossen?
    Ist das die normale S0-Schnittstelle vom Zähler oder modifiziert? oder ganz wo anders?

    • Meik W.

      Hi, der Raspi wird an die normale S0 Schnittstelle angeschlossen.
      In der Regel ist der S0 Ausgang nichts anderes als der Ausgang eines Optokopplers.
      Das heisst: Emitter auf GND und Collector über einen Pull-Up Widerstand auf 3.3V.
      Zwischen dem Collector und deinem PullUp greifst du dann das S0 Signal ab. Das oben erwähnte Skript ist allerdings dazu gedacht, das S0 Signal mithilfe des RTS Pins an einem USB UART Adapter auszulesen.

  4. micha

    Hallo,
    hat jemand Erfahrung mit einem DRT428m? Ich versuche vergeblich das Teil über modbus auszulesen. Der SDM 120 lässt sich leicht ansprechen. Kann mir hier jemand weiterhelfen?

    mein Beispiel für den SDM120
    import serial
    import minimalmodbus

    instrument = minimalmodbus.Instrument(‚/dev/ttyUSB0‘, 2, minimalmodbus.MODE_RTU)

    instrument.serial.baudrate = 9600 # Baud
    instrument.serial.bytesize = 8
    instrument.serial.parity = serial.PARITY_NONE
    instrument.serial.stopbits = 1
    instrument.serial.timeout = 0.1 # seconds
    instrument.debug = False

    print(instrument.read_float(0, 4, 2))

    Das liefert 231V

    Was ist bei dem DRT428 anders?

  5. foo

    Hallo Micha, habe gerade dasseleb Problem .mit dem DRT428M.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert