Raspberry Pi: Stromzähler Modul

Im August 2016 habe ich begonnen ein Stromzähler-Modul zu erstellen für den Raspberry Pi. Die Idee entstand im Solartechnik-Unterricht. Wir haben die Aufgabe bekommen den Stromzähler Täglich abzulesen, bereits zu diesem Zeitpunkt wusste ich das es auch anders geht.
Als ich mich im Internet informiert habe, bin ich auf ein Designe vom volkszaehler gestoßen. An diesem habe ich orientiert und den Schaltplan sowie die Platine entworfen.

stromzaehler_modul_blured

Mit Hilfe eines optischen Sensors (Reflexlichtschranke), die Helligkeitsunterschiede auf der rotierenden Alu-Scheibe eines Energiezählers erfasst werden können.Dadurch wird der Unterschied der roten und silbernen Fläche des Ferraris-Zählers erkannt. Diese Daten (Wechsel von „0“ und „1“) können dann über die GPIO-Pins des Raspberry Pis ausgelesen werden.

Schaltplan:

schaltplan

 

 

 

 

 

 

 

 

 

WICHTIG! Hier ist ein TLC270CP verbaut, dies ist ein Different Verstärker und ein Compartor. Hier gilt wenn Eingang A ein kleines bisschen größer ist als Eingang B gibt es einen Output!

Die Platine wurde geätzt und in ein Gehäuse eingebaut. Für die Platine hat ein 50x35x20mm ABS Gehäuse gereicht.

Probleme:

Hier sind ein paar Probleme aufgelistet auf die ich während der Installation, Programmierung und beim bauen des Moduls gestoßen bin:

  • :exclamation:Es gab nur eine Reflexion
  • :exclamation: Der Differenz Verstärker wurde heiß -> Falsche Polung
  • :exclamation: Der TLC 271 CP macht nicht das was er soll -> Falscher Baustein
  • :exclamation: Langsamer Output -> Falscher GPIO benutzt (Kein I2C Schnittstelle verwenden!)

Platine:

Stromzähler Back

Stromzähler Front

 

 

 

 

 

 

 

 

Backend:

Das Backend ist in Python geschrieben. Grundlegend gibt es ein Script (pull.py) welches den Wechselnden Zustand ausliest und die Werte alle 15 Minuten in eine MySQL Datenbank schreibt.
Code ausschnitt:

try:
  while True:
    if GPIO.input(PIN) == TRIGGER_IF:
      if not changed:
        changed = True
        current_turn += 1
        logging.debug(" => " + str(current_turn))
      else :
        changed = False
    if time.time() >= until_time:
      insert_data(until_time, current_turn)
      logging.debug("In 15 Minutes => " + str(current_turn) + "t")
      time.sleep(1)
      until_time = get_next_15_min(datetime.datetime.now())
      logging.debug("Next counting till => " + datetime.datetime.fromtimestamp(until_time).strftime("%Y-%m-%d %H:%M:%S") + "(" + str(until_time) + ")")
      current_turn = 0
    time.sleep(INTERRUPT)

Alles weitere findet man auf GitHub.

https://github.com/Gurkengewuerz/smartmeter/tree/master/backend

 

Frontend:

Das Frontend ist mit Hilfe von Bootstrap und jQuery Dynamisch gestaltet worden.

https://github.com/Gurkengewuerz/smartmeter/tree/master/frontend

 

Installation:

  1. Modul auf dem Stromzähler installieren (erfordert Geduld- Tipp: Panzerband ist dein bester Freund!)
  2. RaspberryPi mit NGINX/Apache, PHP, MySQL und Python 3 aufsetzten
  3. SQL File installieren
  4. Python Script laufen lassen

 

TODO:

  • Ausführliche Beschreibung

Schreiben Sie einen Kommentar

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