Beiträge von grassh0pper

    Danke. Ja, sehr cool.


    Zu deinen Fragen:

    1. Die beiden Konstanten können auch zu Beginn deklariert werden. Da sie nicht verändert werden ist das die stimmiger!

    2. Ich finde es einfach schlüssiger direkt jeden Impuls zu erfassen und mit Hilfe der vergangenen Zeit dann die Leistung in dieser Zeit zu berechnen. Geht aber natürlich auch indem man die Pulse zählt und dann weiter berechnet. Dann muss man sich aber irgendwie auch die Gesamtanzahl der Pulse irgendwo merken...

    Moin, ich habs hinbekommen.

    Läuft seit gestern stabil. Allerdings war der "GET" Request der richtige und nicht der "POST" Request.


    Die Pulse werden hier Interrupt gesteuert abgefangen. Für JEDEN Puls wird Millisekunden genau die Leistung berechnet und an die Middleware gesendet.


    Im Frontend ist der Kanal als "El. Energie (Leistungswerte)" mit einer Auflösung von "1" definiert.

    Der S0 Eingang hat Hardwaremäßig einen 4,7k Ohm Widerstand.


    Zu beachten ist, dass in diesem Fall bei maximaler Leistung (Balkonkraftwerk mit 600W, S0 Zähler mit 1600 Impulse / kWh) alle 3700ms ein Puls gesendet wird.


    Hier mein Programm:

    Vielen Dank für die Tipps. Ich werde morgen weiter ausprobieren.


    Ich denke, ich habe unabhängig davon noch einen Fehler gefunden:

    Der Wemos D1 mini hat einen Software watchdog, der nach ca. 3 sec. rebootet und einen Hardware watchdog, der nach dem Abschalten vom Software watchdog nach ca. 8 sec. rebootet. Diesen kann man nicht abschalten. Wenn ich jetzt per Interrupt auf die Pulse warte und es nicht gerade Hochsommer ist, lässt ein Puls bei einer Anlage mit 600W max. Leistung ("Balkonkraftwerk") und einem Zähler mit 1600 Impulsen pro kWh natürlich auf sich warten. Ich habe auch beobachtet, dass die onboard Led regelmäßig aufblinkt. Ich denke das war der reboot und das Programm kam gar nicht so weit einen HTTP Request zu senden...

    Guten Abend,


    kann mir jemand bei der korrekten Syntax für ein HTTP Push Request vom Wemos D1 mini ESP 8266 zum Volkszähler helfen?

    Ich programmiere mit der Arduino IDE und den dazugehörigen libraries. wie funktioniert speziell der Aufbau des HTTP Push Request mit den zur Verfügung stehenden Libs?


    als "serverName" hab ich

    const char* serverName = "http://192.168.2.150:80/middleware.php/data";


    Ich habe momentan keine Möglich das direkt zu testen. Daher meine Frage ob das so funktioniert?! Oder wie muss der "serverName" und der httpRequestData String aussehen?

    Da darf nur "Impulse" stehen.

    Warum? Laut wiki darf beim protocol s0 der Wert "Impulse" oder "Impulse_neg" sein. Der eigentliche Impuls ist ja auch negativ wenn der Sensor am "Viertelmond" vorbei läuft sieht der Raspberry Pi am Eingang für 0,02m³ 0V.


    Und du hast ausgerchnet einen der GPIO gewählt die auf den Erweiterungen als Ausgang genutzt wurden und im Image (rc.local) schon entsprechend vorkonfiguriert ist...

    Ich habe die entsprechenden Textzeilen auskommentiert und so ergänzt:

    Code
    echo 24 > /sys/class/gpio/export     #exportiere Pin
    echo "in" > /sys/class/gpio/gpio24/direction     #als Eingang
    echo "falling" > /sys/class/gpio/gpio24/edge     #fallende Flanke
    echo "1" > /sys/class/gpio/gpio24/active_low     # 0V wird als Impuls erkannt

    Das funktioniert auch. Wenn ich mir nach dem Systemstart die Dateien anschaue stehen da auch die Werte drin.


    Aggregation würde ich erstmal noch raus nehmen, das passt auf deinen Anwendungsfall vermutlich weniger.

    Das hab ich extra drin gelassen damit man direkt unterscheiden kann ob wirklich kein Verbauch da war oder ob der Raspberry stromlos war / der vzlogger nicht funktioniert hat etc. Laut wiki kann man dann mit aggtime den Abstand zwischen zwei gesendeten Datenpunkten festlegen. Oder stört diese Einstellung dann auch wenn Impulse kommen?


    Es kommt mit der letzten Version von Raspian leider gelegentlich vor das rc.local, und damit der Export der GPIOs, noch nicht vollständig abgearbeitet ist wenn vzlogger startet.

    Ich habe das jetzt so umgangen, dass der vzlogger daemon erst 30s nach systemstart losläuft.

    In /etc/systemd/system die Datei vzlogger.service als sudo mit nano bearbeitet und folgende Zeile bei [Service] eingefügt: ExecStartPre=/bin/sleep 30Das hat gut funktioniert.


    Das eigentlich Problem besteht aber weiterhin. Ich bekomme keine Daten im Frontend. Woran kann es noch liegen bzw. wie kann ich noch auf Fehlersuche gehen? Mit dem Multimeter gemessen bekomme ich jedenfalls die Signale am entsprechenden Pin...

    Guten Morgen,


    leider funktioniert das Auslesen des Sensors nicht.

    Der Kanal im Frontend ist als Gas (S0-Impulse) mit einer Auflösung von 100 eingerichtet.

    Meine vzlogger.conf sieht so aus:


    Ich habe alternativ auch schon versucht "configureGPIO" auf false zu setzen und dann den Eingang am Raspberry manuell zu setzen. Ich habe dafür in der /boot/config.txt den Einrag gpio=24=ip,pn hinzugefügt. Also den GPIO24 als Eingang und ohne Pull-Up / Pull-Down Widerstand konfiguriert.


    Des weiteren habe ich in der /etc/rc.local folgendes eingetragen:

    Code
    echo 24 > /sys/class/gpio/export     #exportiere Pin
    echo "in" > /sys/class/gpio/gpio24/direction     #als Eingang
    echo "falling" > /sys/class/gpio/gpio24/edge     #fallende Flanke
    echo "1" > /sys/class/gpio/gpio24/active_low     # 0V wird als Impuls erkannt

    Leider hat dies auch nichts genutzt. Nach dem ganzen Testen ist leider gestern Abend noch ein Fehler dazu gekommen: Nach einem Neustart des Raspberry startet der vzlogger nicht mehr automatisch. "sudo service vzlogger status" meldet einen Fehler. Ohne Änderungen vorzunehmen startet vzlogger nach Eingabe von "sudo service vzlogger start" ohne Fehler und läuft. Woran liegt das?


    Viele Grüße

    grassh0pper

    Hallo, ich habe o.g. Gaszähler mittels Induktivem Näherungssensor an den Raspberry Pi angeschlossen. Der Sensor bekommt seine 12V Betriebsspannung von einem Step-Up Modul. Den Ausgang teile ich über einen Spannungsteiler wieder runter auf 3,3V. Der Sensor geht auf 0V wenn der metallische "Viertelmond" des Gaszählers bei x,x4m^3 ankommt und geht wieder auf 3,3V wenn der Gaszähler über x,x6m^3 läuft.


    0V für 0,02m^3 und

    3,3V für 0,08m^3 .


    Ich habe dazu 3 Fragen:


    1. Wie konfiguriere ich die vzlogger.conf für s0 für diesen Fall?


    2. Was passiert, wenn der Gaszähler z.b. auf x,x5m^3 stehen bleibt?


    3. Wie lange darf der negative Puls bei s0 sein damit dieser korrekt erkannt wird. Im Sommer wenn Gas nur für Warmwasser genutzt wird kann dieser Zustand beispielsweise stundenlang bestehen bleiben...


    Viele Grüße