Stromzähler realisieren mit Drehstromzähler B+G etech

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo,
    ich plane in meinem Haus den Stromverbrauch mittels einen Rasberry und einem Drehstromzähler zu erfassen.
    Ziel ist, den Verbrauch pro Tag (pro Stunde/Woche/...) zu erfrassen und abfragen zu können.
    Auch eine Art tägliche Verbrauchsmail schwebt mir vor ;)

    Als Drehstromzähler habe ich den DRT751DE von B+G etech im Auge, kostet nur 50 Euro, ist sogar geeicht und hat einen S0 Ausgang. Oder der DRT428DC-V3 (oder ein ganz anderer Stromzähler?)
    Den Stromzähler der Stadtwerke kann ich nicht direkt abfragen, der ist 30m weit weg und kein Kabel oder WLAN Verbindung möglich!

    Den Einbau des Stromzählers würde eine geprüfter Elektriker vornehmen, keine Angst!

    Hat jemand Erfahrung mit Stromzählern von B+G etech?

    Bin zwar PC und Linux erfahren, ist aber mein erster Raspberry ...
    Habe mir den B+ bestellt.
    Gibt es Tipps bzgl. einem Image und Software zur Erfassung des Verbrauchs?
    Den S0 Ausgang des Drehstromzählers sollte der GPIO des Raspberry ja "auslesen" können, oder?

    Danke für alle konstruktiven Anregungen und Tipps!

    Martin

  • Stromzähler realisieren mit Drehstromzähler B+G etech? Schau mal ob du hier fündig wirst!


  • ...
    Den S0 Ausgang des Drehstromzählers sollte der GPIO des Raspberry ja "auslesen" können, oder?
    ...


    Hi Martin,

    das ist relativ einfach. Ich habe das mal mit einer Mysql-Datenbank realisiert. Jeder Puls der S0 Schnittstelle wird als timestamp in der Db gespeichert. Über diese Einträge können dann beliebige Berechnungen gemacht werden. Wenn es zu komplizierte Berechnungen sind, kann man per Netzwerk auf die DB und die Auswertungen auf z.B. einem Laptop machen.
    Als Ausgabe für die grafische Anzeige hatte ich seinerzeit jpgraph verwendet.

    cu,
    -ds-

  • Hallo,

    Zitat

    Jeder Puls der S0 Schnittstelle wird als timestamp in der Db gespeichert.


    Das habe ich jetzt schon öfters gelesen, scheint "standard" zu sein.

    Mir ist unklar, welche Zusatzsoftware/Config ich beötige, damit der am S0 anliegende Impuls erkannt wird und einen Eintrag (Timestamp) in die DB schreibt.
    Geht dies ohne Zusatzhardware, stimmt der Pegel des S0 das er direkt am GPIO erkannt wird?

    Gibt es für so einen Anwendungsfall eine Art "best practice" mit Hinweisen zur Config und notwendigen Zusatzpaketen ?


    Danke!

  • Hi,


    ...
    Mir ist unklar, welche Zusatzsoftware/Config ich beötige, damit der am S0 anliegende Impuls erkannt wird und einen Eintrag (Timestamp) in die DB schreibt.
    ...


    Zusatzsoftware?
    naja, die Datenbank (es sei denn Du greifst nur remote auf sie zu) und die clients dazu (Anleitung steht im Tutorial-Subforum).
    Ausserdem eine Lib, die Dir den Zugriff auf die GPIOs ermöglicht. Ich bevorzuge da pigpio ...


    ...
    Geht dies ohne Zusatzhardware, stimmt der Pegel des S0 das er direkt am GPIO erkannt wird?
    ...


    Einen Spannungsteiler wirst Du wohl noch brauchen ( oder einen Levelshifter ) wenn Dein S0 Signal TTL Pegel hat ( 5V ). Muss in der Doku stehen.


    ...
    Gibt es für so einen Anwendungsfall eine Art "best practice" mit Hinweisen zur Config und notwendigen Zusatzpaketen ?
    ...


    Afaik nicht, aber sicher einige mitdokumentierte Vorgehensweisen hier im Forum ...

    cu,
    -ds-

  • dir ist klar das du nicht in der "plug and pray" Welt von Windows bist oder ??
    du musst dich schon ein wenig mit dem PI und der Programmierung bzw. anbindung an GPIO Ports beschäftigen..

    ergo

    Lesen Lesen Lesen


  • dir ist klar das du nicht in der "plug and pray" Welt von Windows bist oder ??
    du musst dich schon ein wenig mit dem PI und der Programmierung bzw. anbindung an GPIO Ports beschäftigen..

    ergo

    Lesen Lesen Lesen

    Ist mir klar, nur möchte ich natürlich das Rad nicht neu erfinden; wenn es zu meinem Anwendungsfall schon Erfahrungen gibt, wollte/will ich die natürlich nutzen ....

    Weitere Tipps sind weiterhin willkommen ;)

  • Hallo,
    um die Werte in die zu installierende mySQl DB zu schreiben habe ich hier ein (Shell)Script gefunden, welches ich dann entsprechend anpasen werde:
    Shell-Script

    Shell-Erfahrung habe ich, daher tendiere ich zur bash ....

    Grob (muss noch angepasst werden!!):
    ...
    # WERTE in Datenbank eintragen
    INSERT="INSERT INTO $mySQLdatabase.$mySQLtable (unixtimestamp,luftfeuchtigkeit,temperatur) VALUES (\"$(date +%s)\",\"$LUFT\",\"$TEMP\");"
    echo $INSERT | mysql -h $mySQLserver -P $mySQLport -u $mySQLuser -p"$mySQLpass" $mySQLdatabase
    ...

    Habe mal durchgerechnet, das bei meinem Zähler (2000 Impulse/KWh) etwa alles 3s ein Impuls generiert weird, der dann mit Timestamp in die DB geschrieben wird (aktuelle Planung).
    Per Script könnte ich ja auch nur alle 10 Impule einen Eintrag reinschreiben lassen,, mal schauen (V1)

    Anderer Ansatz (V2):
    Ich ermittle jede Minute die Anzahl der eingegangen Impulse und schreibe diesen Wert (oder den Wert direkt umgerechnet in KWh) in die DB incl. Timestamp, in der Art:
    2014-30-10_12-10 : 27

    Hmmm, was meint ihr, welcher Ansatz ist besser bzw. läßt sich für spätere Verarbeitung und graphische Aufbereitung besser nutzen?
    Oder die beste "Auflösung" (V1) nehmen, da läßt sich V2 ja softwartechnisch erzeugen ...

    Einmal editiert, zuletzt von topsurfer (30. Oktober 2014 um 12:45)

  • Hi,


    ...
    Habe mal durchgerechnet, das bei meinem Zähler (2000 Impulse/KWh) etwa alles 3s ein Impuls generiert ...
    ...

    hmm ... sicher?
    Du hast 2000 Pulse in 3600 Sekunden - das sind pro kWh 20 in 36 Sekunden also ganz grob ca. alle 2 Sekunden einer.
    Das gilt aber nur für eine Leistung von 1 kWh.
    Backofen (2kW) + Herdplatte (1 kW) + Föhn (1 kW) + ... ergibt aber schnell mal 10 kW und mehr.
    Dann bist Du bei 200 Pulsen in 36 Sekunden ... also grob alle 0,2 Sekunden einer.

    cu,
    -ds-

  • Wir haben beide recht ;)

    Ich bin vereinfacht von einem Jahresverbrauch von 5000KWh ausgegangen, gleichmäßig über den Tag verteilt macht 13kWh/Tag .... das macht dann "im Schnitt" alle 3s ein Impuls.
    Peaks eben mit 5 Impulse/s, Nachts eben alle 10s ein Impuls ....

    Was ist mit dem Shell-Script und den Vairanten 1 und 2?
    Ideen?

  • Ich denke mal, das ist erst mal relativ Banane ...
    Allerdings gilt es zu beachten, dass der Unix-Timestamp dazu nicht geeignet ist, weil der in Sekunden zählt ... d.h. mehr Auflösung als ein Puls pro Sekunde ist da nicht realisierbar. Ausserdem fallen die Nachkommastellen weg ... noch ein Manko, das sich bei Berechnungen erheblich auswirken kann, wenn Du z.B. für einen relativ kurzen Zeitraum den Verbrauch wissen willst.
    Deshalb habe ich das damals in C gelöst und zwei DB-Felder ( Sekunden und Nanosekunden) als BIGINT verwendet, in die ich die entsprechenden Werte einfüge.
    Das Programm selbst ist relativ easy ... ich kann gerne einen Source von damals mal hier posten.

    Das mit den Minuten ginge auch ... allerdings leidet da vermutlich ebenfalls die Genauigkeit darunter.

    cu,
    -ds-

  • Zitat


    Einen Spannungsteiler wirst Du wohl noch brauchen ( oder einen Levelshifter ) wenn Dein S0 Signal TTL Pegel hat ( 5V ). Muss in der Doku stehen.

    In einem anderen Forum meinte jemand, das ein einfacher Spannungsteiler nicht ausreichend ist.
    In der Doku des Stromzählers steht nur "s0" Anschluss, aber keine weiteren Details.

    Ist die Verbindung zwischen einem s0 Bus und dem Raspberry GIO so "selten", das ich darüber im WWW kaum was finde?

    Oder muss ich doch diese Platine bestellen?
    Pi-Erweiterung
    Hat viel mehr Features/Anschlüsse als ich eigentlich benötige ....

    Einmal editiert, zuletzt von topsurfer (31. Oktober 2014 um 11:20)

  • Update:
    Mittlerweile ist die Hardware fertig, der Zähler zählt und überträgt die Impulse auf den Raspi!

    Den Optokopplerausgang des Zählers habe ich einfach über die 3.3V vom Raspberry und den GPIO9 angeschlossen, Vorwiederstand 4.7k

    Per Shell-Script (Endlosschleife) frage ich die Impulse ab und schreibe den Zeitpunkt des empfangenen Impulses in ein Logfile (ebenso den aktuellen Stromverbrauch, der sich ja auch den Zeitintervallen ausrechnen läßt). Habe mal eine Last von 8kWh erzeugt, alle Impulse wurden korrekt erkannt und weggeschrieben (siehe Bsp-Logfile)

    Das ganze soll natürlich letztendlich in eine mysql DB rein. Geht dies einfach per entsprechender Zeile im Shellscript?
    Ebenso fehlt noch eine graphische Aufbereitungsmöglichkeit.

    Tipps, wie eine graphische Aufbereitung (einfach) möglich ist, wären toll. Ein Webseerver (ebenso wie mysql) ist auch schon installiert, aber meine Erfahrung diesbezüglich ... :-((

    Danke!

  • Einfach mal Geil !!

    Ob du auf dem raspi wirklich eine MySQL betreiben möchtest? Hmmm ... würde ich mir überlegen.

    Wenn du generell noch keine Preferencen / Erfahrung hast solltest du dir als erstes mal Graphite anschauen ... wenn du das hin bekommst hast du am Ende die schönsten Statistiken.

    :)

    ... ach und bash ist absolut ok. Liegt mir auch mehr ... daher gleich mal ein nettes Beispiel im Netz ...

    http://grantheffernan.wordpress.com/2011/06/01/sen…hite-example-2/

    Auch meine ganz billigen Komponenten aus China laufen ... aber nach 4 Wochen auf hoher See hat mein 1602 Display wohl etwas an Kontrast verloren.

  • Hi,
    schön gemacht ... ;)

    Aus der bash in die DB - da muss ich leider passen. Da wirst Du mal einen Blick in die Doku werfen müssen, inwieweit das Kommando "mysql" scriptfähig ist. Sollte aber gehen. Aus PHP oder C - da könnte ich Dir weiterhelfen.

    Ich hatte damals, wie schon -> hier <- erwähnt, jpgraph genutzt. Ist aber mit PHP Schnittstelle ...

    cu,
    -ds-

  • Klar kann man direkt von der shell nach MySQL schreiben. Ich verwende für mein Projekt eine SQLite Datenbank. Das sollte bei dir auch ausreichen. Vorteil: kein Server sondern nur einfache Datei. Das macht auch das Backup sehr einfach.

  • Ok.

    Also wenn ich über mein gelaber mal intensiver nachdenke ist folgendes wahrscheinlich die bessere / Beste / performanteste Lösung.

    Du pfeist erstmal alles in einen doofen dummen file. Dann schreibst du dir ein script das aus dem file mit hilfe von gnuplot (http://www.gnuplot.info/) dir eine hässliche Grafik erstellt.

    Das Bild kannst du dir per mail schicken lassen, oder was auch immer.

    :bravo2:

    Erster Erfolg.

    Jetzt willst du es aber sicher schöner und toller und vielleichtauf einem webserver und dann auf dem smartphone den Freunden zeigen, etc. ... oder du willste es selber einfach schöner und flexibler.

    Dann bebastelst dein bash script so, das es alles in einer postgres DB auf dem raspi direkt ablegt.

    Leichter für den Anfang ist SQ-Lite Variante oben erwähnt.

    MySQL auf dem raspi würde ich persönlich nur machen wenn man mich zwingt. Nur zum anfahren frist die einem die Haare vom Kopf. Ist auch schön schnell, aber das ist ja hier nicht der Knackpunkt.

    Wie du jetzt schöne Bildchen daraus machst liegt vollkommen an dir. Du mußt eine Waffen selber wählen.

    Am Ende wird es wohl auf ein Webserver rauslaufen ... relativ einfach zu bedienen und schön sind folgende zwei JavaScript Libraries finde ich.

    http://raphaeljs.com/
    http://www.jqplot.com/

    ... alles leider kein HowTo in 5 Minuten, aber ich denke damit hastdu erstmal ein paar Antworten und ein paar Erfolge auf dem Weg zur perfekten Grafik.

    :danke_ATDE:

    Auch meine ganz billigen Komponenten aus China laufen ... aber nach 4 Wochen auf hoher See hat mein 1602 Display wohl etwas an Kontrast verloren.

  • Da ist mir noch eingefallen ... wenn du ja eh der bash typ bist:

    http://www.gnuplot.info/

    ... warum ich da nicht gleich drauf gekommen bin.

    Von der Bedienbarkeit etwas anstrengend, aber das solltest du gewohnt sein. Vorteil ist das du es einfach installieren kannst und direkt von der Konsole bedienen ohne irgendwelche zwischen Dings und hast am Endeein Bild. Fertig.

    Auch meine ganz billigen Komponenten aus China laufen ... aber nach 4 Wochen auf hoher See hat mein 1602 Display wohl etwas an Kontrast verloren.

  • Habe mir noch nicht all die empfohlenen Tools genauer angeschaut, aber was ich suche ist letztendlich ein (Linux) Tool, welchem ich als Input ein Logfile gebe (Datum/Uhrzeit und Wert (kWh), und dieses Tool soll dann eine Grafik wegspeichern.

    Welches Linux Tool/Programm bietet denn so was an? Keine 3D, keine großen Optionen; einfach eine X/Y Grafik ...

    Grob:
    # tail -n 100 Datenfile.txt | GRAFIK-Tool -date=Spalte1 -time=Spalte2-Value=Spalte3 -output=Bild.jpg

    ;)

    Die Webseite steht (allerdings nur ASCII ;) ). dank DynDNS von überall abrufbar.
    Sind ja auch nur 55 Zeilen Shellscript ....
    Siehe Anhang.


    So sehen die im Minuten-Takt ermittelten und weggeschriebenen Minutendurchschnittswerte aus (die ich weiter nutzen will):
    ...
    20141107 2306 0.780
    20141107 2307 0.780
    20141107 2308 0.810
    20141107 2309 0.810
    20141107 2310 0.810
    20141107 2311 0.780
    20141107 2312 0.720
    20141107 2313 0.690
    ...

    Und so sehen die protokollierten live-Daten aus
    (jeder Impuls, genauere Daten sind nicht vorhanden):

    ....
    07.11.2014 23:19:29.541763921 0.719
    07.11.2014 23:19:31.763375691 0.810
    07.11.2014 23:19:33.917183442 0.835
    07.11.2014 23:19:36.433195935 0.715
    07.11.2014 23:19:38.995153757 0.703
    07.11.2014 23:19:41.522833074 0.711
    ...

  • Wenn du es dir etwas einfach machen möchtest, kannst du auch einfach ein PiFace über die digitalen Eingänge verwenden, das ist dann plug and play. Falls du größeres Interesse hast, ich hab darüber meine Bachelorthesis geschrieben, also wie man mit dem Pi Energiezähler im Haushalt auslesen kann. Dokument gibts auf PN.

    Gruß
    mobby

  • Inwieweit soll mir ein Piface die Arbeit erleichtern? Die Impuse werden doch bereits "verarbeitet" und weggeschrieben ...
    Mir geht es doch darum, die ermittelten Werte in einer Webseite (zumindest etwas) graphisch darzzustellen ...

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!