Haus-Stromzähler (EasyMeter Q3DA) auslesen und in Datenbank speichern

  • Hallo,


    bezugnehmend auf folgenden Post programm-beendet-sich-selbst-runlevel-ueberwachen hier eines meiner "Projekte" das schon seit Ende 2011 läuft (seit Mitte 2012 auf einem RPi). Wahrscheinlich gibt es den hier benutzten Stromzähler schon überhaupt nicht mehr auf dem Markt.


    Idee:
    Der "neue" Stromzähler, den unsere Stadtwerke eingebaut haben, sendet alle seine Werte (Aktueller Verbrauch, Gesamt Verbrauch, gesamt Eingespeist) über eine IR-Diode alle 2 Sekunden an die Außenwelt.
    Die Kodierung des IR-Signals ist denkbar einfach: Seriell 9600, 7E1.


    Umsetzung:
    Also kurzerhand selber eine Phototransistor drauf geschoben ...

    ... und an das Serielle-Interface angeschlossen. Da ich eh nur kopieren kann :blush: - hier der Beitrag mit der Verschaltung aus dem Mikrocontroller Forum: http://www.mikrocontroller.net/topic/194180


    Kurz ein kleines Progrämmchen zusammen gehackt/kopiert - und schon zeichnet der RPi meine Verbrauchsdaten auf ....


    MfG
    Werner



    PS: Ich hab die Forensuche bemüht und keinen Beitrag zum EasyMeter Q3 gefunden. Falls es doch einen Thread dazu gibt bitte ich dies zu entschuldigen ....

  • Danke für den Code. Sehr lehrreich für mich. Auch was das Speichern in MySql betrifft. :)


    Auch ich habe über diese Seite bei mikrocontroller.net gebastelt.


    Da ich mich erst seit etwa vier Wochen in C einlese, ist der angehängte Code zusammenkopiert, versuch mit try und error, und wird vermutlich von einem C-Kenner nur mit Kopfschütteln gelesen. :blush:


    Egal, funktioniert meistens, kann somit als schlechtes Beispiel dienen. :D


    Falls ich noch den Schaltplan im häuslichen Chaos finde, hänge ich auch noch dran.


    //Nachtrag:
    Dein Code hat mir schon sehr geholfen!
    Mit "strtod(buf+16, &end);" kann ich sehr viel, von den von mir verzapften Mist um die kwh's aus "1-0:1.8.0*255(00014927.8646919*kWh)" zu extrahieren, rauswerfen. :thumbs1:

  • ... also mein Code und helfen :blush:


    Ich hab "ihn" mir nach langer Zeit angeschaut bevor ich ihn hier gepostet habe. Da hätte man gut & gerne noch Code in Funktionen auslagern können, alles modularer aufbauen, Objektorientierung, unsoweiterundsofort.....:geek: .


    Aber wie Du sagst: Egal das Ding tut was es soll! Und zumindest als schlechtes Bsp. kann er ja auch dienen.


    Die Befestigung deines Fototransistors sieht ein wenig "unstabil" aus - könnte es sein, dass da ggf. die "falschen" Werte herkommen? Ich hab mir aus einem Stück Plastik eine Rechteck gesägt, die Kanten abgeflacht, damit sie sich in die dahinter liegende Nut stramm rein schieben lässt. Danach das Loch für den Sensor ausgemessen und gebohrt - hält richtig stabil!


    PS:
    Was ich auch toll finde: dein Zähler hat an den gleichen Stellen so komische schwarze Rechtecke wie meiner :lol::lol::lol:

  • Hallo


    Habe seit gestern auch ein EasyMeter. Da ich einen Raspberry Pi rumliegen hatte, wollte ich dann auch mal das Teil auslesen.


    Die IR-Diode sendet auch. Ich kann mit einer Photodiode SFH309FA (wie im Mikrocotroller Forum beschrieben) auch ein Signal bekommen. Wenn ich allerdings testweise eine normale LED dahinter anschließe Leuchtet sie relativ schwach. Ich vermute das ich daher kein Signal in den Raspberry bekomme. Die Spannung ist zu klein.


    Da ich Elektrotechnisch absolut keine Ahnung habe und gerademal nach Anleitung eine Schaltung zusammenbauen kann, brauche ich eure Hilfe.


    Wie sieht eure Konrekte Schaltung für den Raspberry aus? Oder ist meine Photodiode im Eimer? Habt ihr noch einen Verstärker dahinter gebaut?


    Ich hoffe das liest noch einer nach all den Jahre.


    Danke und Gruß,
    Thomas

  • Nach all den Jahre.tz, tzt, tz 28.12.2014, 20:33


    Du darf keine Photodiode nehmen sondern einen Phototransistor!


    Photodiode macht aus Licht Strom (Ähnlich einem Solarpanel). Das könnte man Verstärken etc ...
    Phototransistor schaltet bei Licht entsprechend (IR-Licht) "An" oder "Aus" ....

  • Na prächtig... ich dachte ich könnte mich daran halten und bin auf der sicheren Seite... Ich hab doch keine Ahnung :s


    Mist... Hast du auch eine Konkrete Bauteile Empfehlung?


    EDIT: Ich sehe gerade, dass der SFH 309 FA ein Fototransistor ist... ich bin verwirrt...


    Danke!

    Edited once, last by twu ().

  • Sorry - ich hab nur Photodiode gelesen und nicht die Bauteilbezeichnung überprüft.



    Quote

    Wenn ich allerdings testweise eine normale LED dahinter anschließe Leuchtet sie relativ schwach. Ich vermute das ich daher kein Signal in den Raspberry bekomme. Die Spannung ist zu klein


    Hmm. Also was Du überprüfen kannst: Phototransistor abdunkeln => LED aus. Phototransistor hell => LED "an". Wobei Du bedenken musst: Über den 10KOhm Widerstand fließt kaum Strom => die LED müsste bestenfalls "glimmen".


    Hier geht es auch nicht um große Ströme - sondern um "Spg" die anliegen oder nicht.


    Was geht denn nicht? Wichtig: Du musst die LED an den tty-Anschluss (Rx) verbinden:
    PIN 10 , RXD0 , GPIO15.


    Ebenso wichtig:

    Code
    /etc/inittab
    
    
    # T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100


    Die Zeile mit ttyAMA0 auskommentieren (#) sonst kann man sich nicht auf das Devbice verbinden....


  • Hmm. Also was Du überprüfen kannst: Phototransistor abdunkeln => LED aus. Phototransistor hell => LED "an". Wobei Du bedenken musst: Über den 10KOhm Widerstand fließt kaum Strom => die LED müsste bestenfalls "glimmen".


    Also wenn ich eine kleine Schaltung zusammenhänge (5V -> Phototransistor -> LED -> GND) und den Transistor mit einer Fernbedienung (oder der Easymeter IR LED) anblinke, blinkt die LED mit. Allerdings ziemlich dunkel und abhängig von der Ausrichtung des Transistors heller oder dunkler.




    Das ist auskommentiert. Das habe ich nach dieser Anleitung gemacht. Leider habe ich die Schaltung erst heute gefunden. Sonst hätte ich das mit den Teilen versucht. Aber dadurch das ich wirklich keine Ahnung habe, weiß ich nicht ob es einen Unterschied machen würde.

  • Was geht denn nicht?
    [hr]
    da fällt mir noch ein: Es gibt 2 Schaltungen. Welche ich damals gebastelt habe weiß ich allerdings nicht mehr.
    Hast Du die andere von


    Autor: Stefan S. (kami)
    Datum: 19.10.2010 11:17
    Angehängte Dateien:


    auch ausprobiert?

    Edited once, last by WernerPI ().

  • Ja...


    Die Schaltung hatte ich auch mal probiert. Allerdings (und ich sage das immer wieder gerne) habe ich ja keine Ahnung :s. Daher konnte ich die Transferleistung im Kopf nicht vollständig durchführen ;)


    Ich habe also die 5V über den Widerstand am den Transistor geklemmt und den dann mit GND. Zwischen Widerstand und Transistor habe ich den RxD vom GPIO angeschlossen...
    Ähnliches Ergebnis...


    Was ich jetzt zwischenzeitlich gemacht habe ist, dass ich nicht auf den RxD gehe, sondern auf einen GPIO um zu schauen ob da überhaupt was geschaltet wird.
    Wenn ich den Phototransistor nun mit einer Fernbedienung anblinke (ziemlich dicht dran), dann sehe ich auch Signale auf dem GPIO. Das klappt mit dem Easymeter nicht.


    Ist mein Transistor scheiße? Gibts da bessere? Muss ich lediglich den Strom den der Transistor schaltet verstärken? Wenn ja, was ist da die einfachste/kostengünstigste Lösung?


    Wie gesagt... Elektrotechnisch bin ich wirklich unterste Schublade... komme mehr aus der Software-Ecke :helpnew:


    Danke für die Mühe...

  • Erstmal weg von 5 Volt - nimm 3.3 Volt Plus sonst ist dein PI schnell kaputt.


    Was kommt wenn Du


    cat /dev/ttyAMA0


    eingibst? Irgend welche unsinniger output?

  • Nicht mal das... Da kommt nichts an... Dewegen hatte ich ja den GPIO Test gemacht.


    Ich habe da noch einen Verdacht. Wie schwer ist es den "Empfänger" über dem Easymeter auszurichten... Im Moment halte ich den Transistor "genau" drüber... Wie "genau" muss dieses "genau" sein?

  • Also ich fand "ziemlich" genau. Wichtig: oben ist die IR-Diode. Nicht das blinkende Ding vorne. Die Ausgabe ist außerdem "nur" jede 2 Sekunden => bei jeder Position ein klein wenig warten.


    Mit welchem Prg. testest Du denn ob was raus kommt?
    [hr]
    Was Du noch versuchen kannst - ich hatte mein Oszi damals mitlaufen lassen.
    Ggf. Nimmst Du einen kleineren Widerstand (ca. 150Ohm bei 3Volt Spg) und statt des RPi eine LED. Die sollte dann ja Blinken/Flackern wenn Du die richtige Stelle erwischt hast ...

    Edited once, last by WernerPI ().

  • Hallo


    Ich habe heute dann auch endlich Signale über die serielle Schnittstelle bekommen.
    EINMAL sogar eine halbe sinnvolle Zeile.


    Ich denke, ich habe jetzt die richtige Schaltung (habe heute noch Conrad geplündert)...
    Jetzt muss ich nur den Empfänger richtig ausrichten. Das scheint gar nicht so einfach zu sein :(


    Gibt es da nicht eine schicke Schablone??


    Die Schaltung die ich jetzt habe ist diese.


    Das Programm mit dem ich getestet habe ob irgendwas zuckt habe ich selber in Python geschrieben und hat mir lediglich einen "." ausgegeben, wenn das Signal am GPIO auf HIGH gesprungen ist. Was ja passiert, wenn der Empfänger Licht abbekommt.


    Aber nun ist alles soweit in Ordnung und ich muss die richtige Stelle finden...


    Denke ich :denker:

  • Nur so als Update:


    Habe zwei Tage versucht den Phototransistor auszurichten.
    Ob von Hand oder mit Papp-Schablone, ich habe noch nichts verwertbares gesehen. Hin und wieder kann ich kleine Fragmente erkennen wie ein "ESY" oder die "1:" ... das alles kann aber auch nur normaler Datenmüll sein.


    Ich hätte schon längst aufgegeben, wenn ich nicht einmal eine halbe echte Zeile gesehen hätte... Aber das habe ich nie wieder hinbekommen....


    Irgendwelche Tipps? Ich mag auch nicht so lange im Keller stehen... das ist mir zu kalt da ;)

  • Also, ich hab damals die Oberseite meines Stromzähler "untersucht". Dabei ist mir dieser "nicht mattierte Bereich" aufgefallen. Dort gab es 2 runde Bereiche.


    So gerade im Keller gewesen und den unverbastelten Stromzähler der Photovoltaikanlage angeschaut.


    Beim Handy-foto machen leuchtete im Handy der "interessante" Bereich schon in der Vorschau entgegen: Hat sogar mit Foto geklappt....


    Edited once, last by WernerPI ().

  • Soweit war ich auch.... habe den Empfänger auch direkt über der IR-LED im Gerät angebracht. Aber mehr als Blödsinn kommt da nicht auf dem UART an :(


    Ich bin schon knapp davor mir einen kommerziellen Leser zu kaufen .... :wallbash:

  • Na also - endlich weiß ich wo Du stehst! "Blödsinn" - Endlich mal ein Wort! :D
    Jetzt gibt es *meiner* Meinung nach nur noch 2 Fehlermöglichkeiten!!


    1.) Entweder hast Du die falsche Einstellung der seriellen Schnittstelle.
    2.) Oder die "Ein/Aus"-Schaltlogik ist vertauscht.


    Zu 1.)
    Ggf. schaust Du mein Progrämmchen mal an und entfernst alles was mit SQL zu tun hat. Zumindest weiß ich, dass mein Prg. die Schnittstelle richtig setzt ;) Und die Debgu Info einschalten - so mal hier gemacht:



    2.) D.h. die Schaltung ändern....

    Edited once, last by WernerPI ().

  • ICH HABE ERFOLG ZU VERMELDEN!!


    :bravo2::thumbs1:


    Tipp Nr. 2 war genau der richtige... und dieser Post hat die richtige Schaltung.


    Der Grund wieso das nicht geklappt hat war lediglich meine völlige Unwissenheit in Sachen Elektrotechnik... Ich hatte das was verpolt :(


    Egal. Nun läufts und ich kann die Daten auswerten.


    Danke für deine Geduld mit mir :danke_ATDE: