Swissnox Zähler per S0 an Raspberyy Pi

  • Hallo Zusammen,
    ich weiß, dass der volkszähler nix für Anfänger ist, aber als solchen würde ich mich eigentlich auch nicht bezeichnen. Bin eigentlich in der IT zuhause, habe aber zugegebener Maßen wenig mit Linux zu tun...
    Jetzt würde ich aber gerne mal meinen derzeitigen Verbrauch über den Tagesverlauf loggen um meine neue PV Anlage besser auslegen zu können.
    Einen Zähler von Swissnox mit S0 Schnittstelle habe ich noch hier liegen und wollte den dafür nutzen.
    Also habe ich mir das Image vom volkszähler auf den Raspberry Pi und habe soweit es mir möglich war die Anleitung im HowTo Bereich durchgearbeitet. Ich habe es auch geschafft den Kanal übers Frontend anzulegen und ich meine eigentlich auch die vzlogger.conf richtig konfiguriert zu haben. Leider sehe ich aber nach Anschluss des Swissnox (Pin20/S0+ an GPIO15/Pin10 und PIN21/S0- an GND/Pin9). Kann sich mal jemand die config anschauen oder mir einen Tip geben, wie ich evtl auf der Konsole testen kann, ob am Pi etwas ankommt?
    Vielen Dank schon mal!


  • Also erstmal via putty auf RaspberryPi einloggen (ssh)
    Login: pi
    Passwd: raspberry


    dann werden wir erstmal richtig Admininstrator, UPS der heisst ja "root"
    sudo -s (verlassen mit exit)


    In der Eingabeshell erscheint links ein #
    --------------------------


    Schau mer mal welche Version Du hast
    vzlogger -V


    Was ist in der /etc/rc.local dinnen ?
    cat /etc/rc.local


    Ist unter uuid in der /etc/vzlogger.conf der exakt gleiche Eintrag wie unter Weboberfläche Cannel eingetragen ?
    (uuid="xxx) ???


    läuft der vzlogger ?
    ps ax | grep vzlogger

  • vzlogger Version ist 0.4.2


    rc.local


    Die uuid habe ich in der config richtig drin, habe das xxx nur hier so rein geschrieben.


    Und das letzte:
    root@raspberrypi:/home/pi# ps ax | grep vzlogger
    3099 pts/0 S+ 0:00 grep vzlogger


    Keine Ahnung was das nun heißt... Habe so den Eindruck, ohne wirklich Ahnung von Linux kann man da nicht wirklich viel machen, oder?


    Habe jetzt auch nochmal nachgelesen wegen dieser ALT 3 Geschichte, aber wenn ich das richtig verstanden habe braucht man das nur, wenn man über GPIO 17 senden will, oder? Ich will ja eigentlich nur über GPIO 15 empfangen, das sollte ja Standard sein.

  • Zitat von Heavendenied

    vzlogger Version ist 0.4.2


    Bei der Version 0.4.0 hat sich der vzlogger Prozess klangheimlich verkrümelt. Ich habe daher auf die Version 0.4.3 upgedatet,
    bei der dann die Kommunikation mittes D0 funktionierte. Anleitung in README hier:
    https://github.com/volkszaehler/vzlogger


    Zitat von Heavendenied


    Die uuid habe ich in der config richtig drin, habe das xxx nur hier so rein geschrieben.


    Das sollte dann so OK sein.


    Zitat von Heavendenied


    Und das letzte:
    root@raspberrypi:/home/pi# ps ax | grep vzlogger
    3099 pts/0 S+ 0:00 grep vzlogger


    ps gibt die Prozessliste aus, und über die Pipe ( | ) wird dessen Output dem grep (greifer) mit dem Suchbegriff vzlogger übergeben.
    Und ganz links steht dann die Prozessnummer.
    Stünde da nichts, gäbe es keinen Prozess vzlogger, was schlecht wäre. siehe Version 0.4.0


    Zitat von Heavendenied


    Keine Ahnung was das nun heißt... Habe so den Eindruck, ohne wirklich Ahnung von Linux kann man da nicht wirklich viel machen, oder?


    Fast zu jedem Kommando gibt es eine installierte Bedienungsanleitung.
    man KOMMANDO (Leerzeichen weitere Seite/ q für Verlassen / STRG b für Seite zurück )
    oder KOMAMANDO /? ergeben neudeutsche Anleitungen.


    Zitat von Heavendenied


    Habe jetzt auch nochmal nachgelesen wegen dieser ALT 3 Geschichte, aber wenn ich das richtig verstanden habe braucht man das nur, wenn man über GPIO 17 senden will, oder? Ich will ja eigentlich nur über GPIO 15 empfangen, das sollte ja Standard sein.


    Aber auch Eingangskanäle müssen zuerst als solche deffiniert werden (/etc/rc.local) und vor allem ein PullUP Widerstand z.B. 3,3kOhm gegen 3,3V Versorgungsspannung geklemmt werden. Der Potentialfreie Kontakt (Zähler muss dann gegen GND schalten.
    Halt wie bei TTL üblich.

  • Hmm,
    Wo zu dient der Serielle Schnittstellen Eintrag
    "device": "/dev/ttyAMA0",
    in der /etc/vzlogger.conf ?


    Ich dachte, es soll S0 über einen GPIO Pin gefahren werden ?


    "localhost" kann durch "127.0.0.1" ersetzt werden. (Dann muss nicht ständig der Name aufgelöst werden, was auch noch scheitert.


    Prüfe ob in der /etc/hosts ein Eintrag mit "127.0.1.1" drinnen ist, das wäre falsch und durch "127.0.0.1" zu ersetzen.


    Welche HW Version des RasperryPI ist im Gebrauch ?


    Werde die Tage mal selbst versuchen S0 über die GPIO Pins zu aktivieren und je einem Channel zu zu weisen.


    Evtl. meldet sich auch Udo mal zu Wort.

  • Also ich hatte versucht mir die nötigen Informationen aus allerlei Anleitungen zusammen zu suchen. Wie es aussieht, habe ich da dann so einiges durcheinander gebracht...
    Also bezüglich der Schnittstelle ttyAMA0, das hatte ich von hier:
    http://wiki.volkszaehler.org/h…e/controllers/s0-an-rs232
    Ich hatte das so verstanden, dass man nur so ohne Zusatzhardware direkt den S0 des Zählers anschließen kann.
    Das mit den 3,3V klingt zwar logisch, aber auch da hatte ich dann wohl verschiedene Anleitungen durcheinander gebracht. Wenn ich an GPIO 15 gehe muss ich das mit dem Pull-Up Widerstand selbst machen. Aber in anderen (externen) Anleitungen wird auch beschrieben, dass ein S0 Zähler direkt über GPIO 3 angeschlossen, da fällt das wohl weg weil der Pi da selbst schon diesen Pullup Widerstand verbaut hat, oder? Nur kann ich das jetzt auch in Verbindung mit vzlogger machen? Dann müsste ich in der config das Feld device einfach leer lassen (oder -1) und bei gpio 3 eintragen...


    Es handelt sich um einen Raspberry Pi Model B und wenn ich das richtig sehe scheint das eine Revision 2 zu sein. Mit der Abfrage cat /proc/cpuinfo bekomme ich als Revision 000e angezeigt...


    Vielen Dank auf jeden Fall mal für deine Hilfe, aber ich fürchte da muss ich einfach sehr viel mehr Zeit in die Grundlagen investieren als ich mir das gedacht hatte. Mal schauen ob ich heute Mittag nochmal ein paar Stunden Zeit zum testen finde.

  • So, jetzt habe ich nochmal etwas nachgelesen und nun auch noch einige Veränderungen (hoffentlich zum besseren) durchgeführt:
    Den S0 zum Zähler habe ich jetzt am GPIO3 angeschlossen, da sollte ja der Pulldown Widerstand schon drin sein. Das habe ich natürlich in der config geändert und außerdem den Eintrag ttyAMA0 rausgeworfen. Ausserdem ist mir aufgefallen, dass die config irgendwann doppelt war (also einfach meine ganze config stand zweimal untereinander in der vzlogger-conf drin), das hatte wohl auch zu nem Fehler beim Startversuch des vzlogger geführt.
    Die vorgeschlagene Änderung von localhost zu 127.0.0.1 habe ich auch gemacht. Die etc/hosts habe ich überprüft und da steht für localhost auch die 127.0.0.1 drin, es gibt aber auch nen Eintrag 127.0.1.1 mit "raspberrypi". Muss der geändert werden?


    Also der vzlogger startet jetzt wie gesagt zumindest mal ohne Fehlermeldung, aber es scheinen nach wie vor keine Daten anzukommen. Leider kann ich nicht erkennen, ob schon der vzlogger keine Daten bekommt oder ob die nur nicht in der middleware ankommen. Gibt es keine Möglichkeit zu sehen, ob der vzlogger was vom GPIO3 bekommt?


    Hier nochmal die aktuelle config:


    Was mir da auch nach wie vor nicht klar ist, was es mit so einigen Einträgen dabei auf sich hat. Zum Beispiel INtervall, aggtime etc. Da ist in der Beispielconfig überall -1 drin, aber da steht auch bei "enabled" ein false drin, ich gehe also nicht davon aus, dass die Beispielconfig eine wirklich funktionierende config darstellt, oder?


    EDIT:
    Wenn ich das richtig verstanden habe muss ich in der rc.local noch dafür sorgen, dass mein GPIO3 auch aktiviert wird, oder?
    Das habe ich jetzt glaube ich geschafft. Was ich nicht kapiert habe ist, dass der vzlogger doch eigentlich durch das auskommentieren in der rc.local gar nicht gestartet wurde, aber warum sehe ich dann den Prozess?


    Also hier die aktuelle rc.local:

  • So, jetzt habe ich nochmal eine Weile getestet. Als erstes habe ich mal getestet, ob am Pi überhaupt Impulse ankommen. Da ich absolut nicht rausfinden konnte, wie ich das mit zlogger machen kann habe ich mir ne zweite SD Karte mit nem reinen Rasbian erstellt und darauf nach einer Anleitung im iNet mithilfe von WiringPi mal die Impulse gezählt, die ankommen. Das hat einwandfrei geklappt mit dem GPIO3.
    Also nochmal die SD mit der volkszaehler Installation drauf und die config auch nochmal komplett neu erstellt, mit der Beispielconfig neben dran als Vorlage für die Einträge. Aber leider bekomme ich im Frontend nach wie vor keine Daten angezeigt. Irgendwo muss also wohl doch noch ein Fehler in der config sein. Was ich auch überhaupt nicht kapiere ist das mit dem push. Muss ich da was eintragen oder werden die Daten über den channels Eintrag an die middleware übergeben (so hatte ich das eigentlich verstanden).
    Hier nochmal die aktuelle Version:

  • Also ich bin langsam echt am verzweifeln. Ich habe heute nochmal ein paar Stunden damit zugebracht das ganze anders zu lösen, aber da bin ich dann auch irgendwann mit meinen Linux Kenntnissen gescheitert...
    Also seit ein paar Stunden wieder am testen mit volkszaehler.
    Ich bin mir mittlerweile sehr sicher, dass schon auf "unterster Ebene", also im vzlogger irgendwas nicht stimmt. Ich habe das loglevel auf 15 gesetzt und den vzlogger nochmal neu gestartet. Leider erscheint im Log Verzeichnis (bei mir /var/log/vzlogger.log) noch nicht einmal eine Datei. Der Prozess läuft aber einwandfrei...
    Das kann ja dann eigentlich auch nichts mit der eigentlichen Schnittstelle zu tun haben, sondern es muss ja was so quer hängen, dass der vzlogger zwar läuft aber noch nicht mal sein log schreibt...
    Habe jetzt auch schon zwei mal den ganzen raspberry neu installiert, aber immer mit dem selben Ergebnis...

  • So, jetzt habe ich es doch noch (mehr oder weniger) geschafft.
    Ich habe den Raspberry Pi nochmal neu installiert und dann nochmal ganz von vorn angefangen mit der config. Diesmal habe ich die vzlogger.conf nicht mit dem Editor des HowTos erstellt sondern die Datei genommen die schon vorhanden war und einfach alles überflüssige gelöscht. Dann habe ich erstmal trotzdem keine vzlogger.log Datei gehabt. Als ich den vzlogger dann aber nochmal per sudo vzlogger gestartet habe hat er plötztlich angefangen die Log Datei zu schreiben.
    Jetzt habe ich aber das Problem, dass der Prozess vzlogger jetzt immer zweimal läuft, weil ich ich nach dem Neustart des Raspberry Pi immer per Hand nochmal starten muss, obwohl er laut ps ax | grep vzlogger bereits einmal läuft.... Weiß jemand wo da der Fehler liegen kann?
    Das zweite Problem, was eigentlich viel schlimmer für mich ist, ist dass die Daten völlig falsch angezeigt werden. Und zwar zeigt die grafische Auswertung im Frontend immer extrem schwankend Werte zwischen knapp 700W (was wohl passen könnte) und 50kW!
    Die Anzahl der Impulse habe ich eigentlich sowohl in der vzlogger.conf als auch im Kanal auf dem Frontend mit 800 (meiner Meinung nach) richtig angegeben. Die Impulslänge liegt bei 90ms. Kann das ein Problem sein? Ich habe versuchsweise mal das debounce-delay in der vzlogger.conf auf 90 gestellt, aber das hat nichts verändert.


    Vielen Dank für die bisherigen Hinweise und es wäre wirklich toll, wenn mir da jemand weiterhelfen könnte.


    Hier nochmal die aktuelle vzlogger.conf


    EDIT:
    Jetzt wo ich das Loglevel auf 5 gestellt habe sehe ich auf der Konsole mehr. Da kommt jetzt wohl mit jedem Impuls der rein kommt eine Meldung, nur dummerweise kommt die Meldung fast immer doppelt:


    [Sep 15 21:36:58][chn0] Adding reading to queue (value=1.00 ts=1442345818024)
    [Sep 15 21:36:58][chn0] Adding reading to queue (value=1.00 ts=1442345818175)
    [Sep 15 21:37:04][chn0] Adding reading to queue (value=1.00 ts=1442345824835)
    [Sep 15 21:37:11][chn0] Adding reading to queue (value=1.00 ts=1442345831453)
    [Sep 15 21:37:11][chn0] Adding reading to queue (value=1.00 ts=1442345831604)
    [Sep 15 21:37:18][chn0] Adding reading to queue (value=1.00 ts=1442345838208)
    [Sep 15 21:37:18][chn0] Adding reading to queue (value=1.00 ts=1442345838359)
    [Sep 15 21:37:25][chn0] Adding reading to queue (value=1.00 ts=1442345845085)
    [Sep 15 21:37:31][chn0] Adding reading to queue (value=1.00 ts=1442345851631)
    [Sep 15 21:37:31][chn0] Adding reading to queue (value=1.00 ts=1442345851782)
    [Sep 15 21:37:38][chn0] Adding reading to queue (value=1.00 ts=1442345858286)
    [Sep 15 21:37:38][chn0] Adding reading to queue (value=1.00 ts=1442345858437)
    [Sep 15 21:37:44][chn0] Adding reading to queue (value=1.00 ts=1442345864951)
    [Sep 15 21:37:45][chn0] Adding reading to queue (value=1.00 ts=1442345865102)
    [Sep 15 21:37:51][chn0] Adding reading to queue (value=1.00 ts=1442345871676)
    [Sep 15 21:37:51][chn0] Adding reading to queue (value=1.00 ts=1442345871827)


    Ich vermute das ist das Problem, das dazu führt, dass auch die Anzeige im Frontend so falsch ist. Nur woran kann das liegen?