ISKRA MT174 mit Schreib-Lese-Kopf Eigenbau

  • Ich habe mitterweile einiges an Zeit gebraucht, um die Schnittstelle eines ISKRA MT174 auszulesen. Dabei bin ich über einige Dinge gestolpert und immer noch nicht am Ziel. Erstmal eine kurze Bestandsaufnahme:

    Genutzt wird ein Raspi 3B+, dort sollen die GPIO-Pins genutzt werden.

    Ich hatte erst nach der Beschreibung im Volkszähler den IR-Schreib-Lesekopfes für Raspberry Pi (low cost) nachgebaut. Da erstmal gar nix funktionierte, bin ich mit dem Oszi zu folgendem Ergebnis gekommen

    1. Nach der dargestellten Verdrahtung ist ein Widerstand von 50kOhm (in meinem Fall mit Raspi 3B+ und Osram SFH 309 FA) besser geeignet, damit überhaupt Pegel erkannt werden. Mit 1kOhm liefert die Photodiode Spannungen von 2,7V bis 3,1V und damit immer "HIGH". Mit 50kOhm sind Werte von 0,3V-3,1V drin, somit funktioniert HIGH und LOW.

    2. Wenn man eine Sendediode auf die Empfangsdiode hält, müsste man ja ein Zeichen senden können und das Gleiche zurück erhalten. Ist NICHT so :cursing:

    Die Schaltung sorgt dafür, dass gesendete Bits invertiert wieder eingelesen werden. Wenn also ein LOW gesendet wird, empfängt der Raspi ein HIGH. Man sendet also z.B. über minicom einen Buchstaben und erhält nur Müll zurück. Im Anhang kann man dank Echo nach der "9" jeweils den Buchstaben sehen, welcher gesendet wurde. Der Quatsch danach war die Interpretation der Photodiode.

    3. Die Schaltung müsste aussehen wie im Anhang, dann kommt auf dem Empfängerpin auch tatsächlich das an, was gesendet wurde. An der Position scheint ein Widerstand mit 10kOhm besser zu sein (Pegel 0,5V-2,0V low-high).


    Mein aktuelles Problem ist nun, dass vzlogger "0 new readings" bekommt, wenn die Initialisierung gesendet wird. Meine etc/vzlogger.conf beinhaltet das hier:

    {

    "retry": 0,

    "daemon": false,

    "verbosity": 15,

    "log": "/var/log/vzlogger.log",

    "local": {

    "enabled": false,

    "port": 8080,

    "index": false,

    "timeout": 0,

    "buffer": 0

    },

    "meters": [

    {

    "enabled": true,

    "allowskip": false,

    "protocol": "d0",

    "device": "/dev/ttyAMA0",

    "dump_file": "/var/log/d0dump.txt",

    "pullseq": "2F3F210D0A",

    "ackseq": "auto",

    "baudrate": 300,

    "parity": "7e1"

    }

    ]

    }


    Kann mir jemand einen Hinweis geben, was das Problem sein könnte? Die Sende-und Empfangsdioden habe ich mittels 3D-Druck befestigt, Sendediode links und Empfangsdiode rechts (beim MT171 gibt es dazu eine Info im volkszaehler-wiki und ich hoffe, die gilt auch für MT174).

  • Die Schaltung funktioniert eigentlich, ich weiß von mindestens einem Nachbau.

    Aufpassen muss man das man den richtigen Fototransistor verwendet. Ist es kein "FA" könnte das den falschen Pegel erklären.



    mfg JAU

    No Shift - No Service

  • Die Photodiode hatte ich nicht rumliegen und Conrad hat mir die als "FA" geliefert.

    Zur Schaltung im vzlogger-wiki:

    Nach meinem Verständnis sperrt die Diode, wenn von der anderen Seite kein Licht kommt. Damit läuft Pin10 hoch auf die Spannung von Pin1, der Port wird "HIGH". Und das, obwohl das Gegenüber nix=LOW sendet.

    Und andersrum schaltet die Diode durch, wenn sie angeleuchtet wird. Dann wird der Pegel an Pin10 gegen Masse gezogen, weil mehr Stromschweine abwandern können als neue durch den Widerstand aus der 3,3V-Quelle nachströmen. Der Port wird "LOW", obwohl das Gegenüber leuchtet und damit HIGH sendet.

    Oder habe ich hier einen Denkfehler?


    Mein Problem besteht aber aktuell im nächsten Schritt. vzlogger bzw. der Zähler selbst meldet einfach keine Antwort.

    Die Sendediode habe ich aus einer alten Fernbedienung ausgebaut und die Empfangsdiode versteht sich auch prächtig mit ihr. Daher VERMUTE ich, dass diese nicht das Problem ist?!?


    vzlogger meldet übrigens "nur" das hier:

    [Dec 13 20:40:31][main] vzlogger v0.8.0 based on heads/master-0-gc5bcd3296a from Sat, 25 Jul 2020 08:54:47 +0200 started.

    [Dec 13 20:40:31][mtr0] Creating new meter with protocol d0.

    [Dec 13 20:40:31][d0] pullseq len:5 found

    [Dec 13 20:40:31][d0] using autoack

    [Dec 13 20:40:31][mtr0] Meter configured, enabled.

    [Dec 13 20:40:31] New meter initialized (protocol=d0)

    [Dec 13 20:40:31] Have 1 meters.

    [Dec 13 20:40:31][main] log level is 15

    [Dec 13 20:40:31][main] daemon=0, local=0

    [Dec 13 20:40:31] Process not daemonized...

    [Dec 13 20:40:31] Opened logfile /var/log/vzlogger.log

    [Dec 13 20:40:31][push] No pushDataServer defined.

    [Dec 13 20:40:31][] ===> Start meters

    [Dec 13 20:40:31][mtr0] Meter connection established

    [Dec 13 20:40:31][mtr0] Meter thread started

    [Dec 13 20:40:31][mtr0] Meter is opened. Starting channels.

    [Dec 13 20:40:31][] Startup done.

    [Dec 13 20:40:31][mtr0] Number of readers: 400

    [Dec 13 20:40:31][mtr0] Config.daemon: 0

    [Dec 13 20:40:31][mtr0] Config.local: 0

    [Dec 13 20:40:31][d0] sending pullsequenz send (len:5 is:5).

    [Dec 13 20:40:46][d0] nothing received for more than 10 seconds

    [Dec 13 20:40:46][d0] read timed out!, context: 0, bytes read: 0, last byte 0x0

    [Dec 13 20:40:46][mtr0] Got 0 new readings from meter:

    [Dec 13 20:40:46][mtr0] Stopped reading.


    ^C[Dec 13 20:40:57][] main loop indicating all mappings to quit

    [Dec 13 20:40:57][mtr0] MeterMap::cancel entered...

    [Dec 13 20:40:57][mtr0] MeterMap::cancel wait for readingthread

    [Dec 13 20:40:57][mtr0] MeterMap::cancel wait for meter::close

    [Dec 13 20:40:57][mtr0] MeterMap::cancel finished.

    [Dec 13 20:40:57][] Server stopped.

    [Dec 13 20:40:57][] Trying to delete curlSessionProvider...

    [Dec 13 20:40:57][] deleted curlSessionProvider

    ---

    Wechselrichter EASUN SMV-III-5K (PIP5048GK-Klon) mit 11x250W sowie 3x Pylontech US3000

    Refusol PV-Heater mit 3x250W+3x250W+4x200W

    beides über emoncms angebunden und mitgeloggt

  • Hast du mit Minicom auch mal an den Baudraten gespielt? Woher hast du die 300 die in der vzlogger.conf eingetragen sind? Teste mal 9600 ob das was sinnvolleres raus kommt.


    VG

    Det

    Seit 03.2012 10,64kWp: 56x IBC Monosol 195; SMA Tripower STP 10000TL-10, Einspeiseregelung Schüco Sunalyzer mit RSE; Ostausrichtung (-100°); Dachneigung 40°; openWB Standard+

  • Ok, habe den Wiki Eintrag gefunden 300 Baud scheint normal bei dem Zähler zu sein. Hast du nur eine Empfangsdiode? Wenn ich den Wiki Eintrag richtig lese, musst du den Zähler erst mit einer Sequenz (pullseq) zum reden bringen.

    https://wiki.volkszaehler.org/…/edl-ehz/iskraemeco_mt174


    VG

    Det

    Seit 03.2012 10,64kWp: 56x IBC Monosol 195; SMA Tripower STP 10000TL-10, Einspeiseregelung Schüco Sunalyzer mit RSE; Ostausrichtung (-100°); Dachneigung 40°; openWB Standard+

  • Und ist auch korrekt so. Ruhezustand der seriellen Schnittstelle ist high.

    https://de.wikipedia.org/wiki/…nous_Receiver_Transmitter



    mfg JAU

    Der Ruhezustand des Senders ist HIGH, das stimmt. Das hatte mich am Anfang auch etwas irritiert, dass meine Sendediode immer an war.

    Die Empfangsdiode aber soll ja nicht die Bits der Sendediode invertieren, sondern direkt durchgeben. Und wie gesagt, (nur) nach dem Neuaufbau nach der Schaltung oben kam als Echo über einen Spiegel auch das ausgegebene Zeichen an. Das macht mich sicher, dass zumindest eine RS232-Verbindung mit der Schaltungsvariante von der vzlogger-Seite nicht funktioniert.


    Ok, habe den Wiki Eintrag gefunden 300 Baud scheint normal bei dem Zähler zu sein. Hast du nur eine Empfangsdiode? Wenn ich den Wiki Eintrag richtig lese, musst du den Zähler erst mit einer Sequenz (pullseq) zum reden bringen.

    https://wiki.volkszaehler.org/…/edl-ehz/iskraemeco_mt174


    VG

    Det

    Ich nutze eine Sendediode, ja. Ich werde mal in einer freien Minute mit dem Oszi prüfen, ob vzlogger die Startsequenz auch tatsächlich sendet.

    ---

    Wechselrichter EASUN SMV-III-5K (PIP5048GK-Klon) mit 11x250W sowie 3x Pylontech US3000

    Refusol PV-Heater mit 3x250W+3x250W+4x200W

    beides über emoncms angebunden und mitgeloggt

  • Dec 13 20:40:31][d0] sending pullsequenz send (len:5 is:5).

    [Dec 13 20:40:46][d0] nothing received for more than 10 seconds

    [Dec 13 20:40:46][d0] read timed out!, context: 0, bytes read: 0, last byte 0x0

    Zumindest im Log zeigt er es an. 15 Sekunden wartet er und in der Zeit ist wohl nix zurück gekommen.

    Seit 03.2012 10,64kWp: 56x IBC Monosol 195; SMA Tripower STP 10000TL-10, Einspeiseregelung Schüco Sunalyzer mit RSE; Ostausrichtung (-100°); Dachneigung 40°; openWB Standard+

  • Das macht mich sicher, dass zumindest eine RS232-Verbindung mit der Schaltungsvariante von der vzlogger-Seite nicht funktioniert.

    Was meinst du damit?


    Schau dir mal die TTL-Variante an.

    Wenn da Licht kommt schaltet der Ausgang auf Low.

    Also stimmt dein Schaltbild oben nicht.


    Problem wird deine Diode sein die falschrum sendet.

    Eigentlich ist es doch kein Problem das in der Software zu negieren.

    Du kannst es aber auch umdrehen wenn du die nicht gegen Masse sondern Plus schaltest (sofern die Treiber das mitmachen)

    einiges

  • dass zumindest eine RS232-Verbindung mit der Schaltungsvariante von der vzlogger-Seite nicht funktioniert.

    Krittelst an der Schaltung rum aber kannst TTL-UART nicht von RS232 unterscheiden...



    mfg JAU

    No Shift - No Service