Ankündigung

Einklappen
Keine Ankündigung bisher.

Zählerstand Gasverbrauch monatlich per Email

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zählerstand Gasverbrauch monatlich per Email

    Hallo zusammen,

    mit einem Reedkontakt am Gaszähler und einem Binäreingang zähle ich die Umdrehungen der Uhr.
    Mit einer kleinen Logik Anfangswert + Anzahl Umdrehungen x 10 lasse ich mir den Zählerstand als 14byte Wert auf die GA 12.0.7 senden.

    Ziel des ganzen ist es
    a) aktueller Zählerstand ausgeben
    b) am Monatsersten den Zwischenzähler auf 0 setzen
    c) Gasverbrauch letzter Monat im m3 / kWh / und Euro Betrag ausgeben
    d) diese Werte am Monatsersten per Email senden

    Nun bekomme ich den Wert der GA allerdings nicht in eine Email gepackt.
    Folgenden Code habe ich geschrieben (mtime ist nur für die Testphase drin und wird nachher durch den Monatsersten ersetzt)

    FRAGE: Ist covert der Falsche Befehl, oder habe ich die Argumente falsch gesetzt???
    Vielen Dank vorab!!!

    email=$mail@xxx$
    betreff=$Zählerstand Gas$
    nachricht=$aktueller Zählerstand Gas: $+convert('12/0/7',c14)
    if mtime(58,00) then sendmail(email, betreff, nachricht) endif

    #2
    "lasse ich mir den Zählerstand als 14byte Wert auf die GA 12.0.7 senden..." - wenn dir der Wert ja schon intern als Variable vorliegt - warum liest du ihn dann noch mal von 12.0.7? Pack doch den Wert der Variablen in die Mail...

    Kommentar


      #3
      ... wie mache ich das denn?
      So geht es ja nicht:
      nachricht=$aktueller Zählerstand Gas: $+('12/0/7',c14)

      Kommentar


        #4
        So wie ich die Stringbeschreibungen verstanden habe, haben in "nachricht" nur 25 Zeichen Platz, da bei der Stringkonkatenation nur die Anzahl der Zeichen des größten der zusammen zu fügenden Strings als Ergebnispuffer genehmigt. Der konstante String "$aktueller Zählerstand Gas: $" bestimmt, wieviel Speicher für "nachricht" reserviert wird.

        Versuch mal:
        nachricht = $$c50
        if auslöser then nachricht = $aktueller Zählerstand Gas: $+convert('12/0/7',c14)

        Kommentar


          #5
          gerade getestet ... funktioniert nicht.
          Brauche ich tatsächlich den convert Befehl?

          Kommentar


            #6
            Zitat von Marcus78 Beitrag anzeigen
            gerade getestet ... funktioniert nicht.
            Brauche ich tatsächlich den convert Befehl?
            Jein, der "stringformat(...)" führt auch zum Ziel. Eins von beiden wirst Du vermutlich brauchen.

            Mit Aussagen wie "funktioniert nicht" hilfst Du Dir hier im Forum nicht recht weiter. Was funktioniert nicht? Das Compilieren, oder das, was Dein Programm auf dem EibPC veranstaltet?

            Kommentar


              #7
              OK, dann beschreibe ich den aktuellen Stand etwas konkreter:

              Nach vielen Versuchen bin ich nun bei folgendem Code:

              //Wert='9/7/0's32

              email=$mail@xxx.de$
              betreff=$Zählerstand Gas$

              //nachricht=convert('9/7/0's32,$$)
              nachricht=stringformat('9/7/0's32,3,8,12,12)
              if stime(30) then sendmail(email, betreff, nachricht) endif

              Folgende Konfiguration
              auf GA 9/7/0 sendet der Binäreingang den aktuellen Zähler bei Veränderung.
              aktueller Zähler = Anzahl der Umdrehungen des Gaszählers.
              Datentyp: 32Bit mit Vorzeichen

              Aktuelles Ergebnis:
              Das Programm läuft auf dem EibPC.
              alle 30sek bekomme ich eine Email
              Inhalt ist: "000000000000"

              D.h. der Wert der GA 9/7/0 wird nicht ausgegeben.
              Lese ich die GA über die ETS5 aus, ist der Wert bei ca. 3.000

              Kommentar


                #8
                Zitat von Marcus78 Beitrag anzeigen
                OK, dann beschreibe ich den aktuellen Stand etwas konkreter:

                ...
                Lese ich die GA über die ETS5 aus, ist der Wert bei ca. 3.000
                Um sicher zu gehen, solltest Du den Wert der GA mal im Debugger des EibStudio prüfen.

                Machst Du beim Start ein Initga für die GA? Ich kann jetzt nicht einschätzen, wie oft eine Wertänderung anliegt...

                Kommentar


                  #9
                  Initga habe ich jetzt in dem Programm nicht gemacht, binde ich am Wochenende mal ein ...

                  Schönen Tag, Gruß

                  Marcus

                  Kommentar


                    #10
                    Gelöst!
                    Der Binäreingang hat das KO "Zählerstand anfordern". Damit sendet er den aktuellen Zählerstand auf den BUS.
                    Daher setze ich ein
                    if (systemstart()) then write('9/7/1'b01,EIN) endif
                    an den Programmstart.

                    Ich bekomme jetzt folgende Email:

                    aktueller Stand Gaszähler: 002890m3
                    (aktueller Zählerstand HZ Binäreingang: 003686)

                    aktueller Stand Zwischenzähler seit letztem Reset: 000361m3
                    Kosten seit letztem Reset: 218.44€
                    Hinweis: mtl. Grundpreis von 15,58€ berücksichtigt
                    (aktueller Zählerstand ZZ Binäreingang: 003617)

                    --
                    Enertex EibPC
                    Fri, 13 Nov 2015 11:52:30 +0100

                    Kommentar


                      #11
                      Na, ist doch schön!

                      Kommentar

                      Lädt...
                      X