Ankündigung

Einklappen
Keine Ankündigung bisher.

Wert abfragen, umwandeln und in ein Archiv eintragen

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

    HS/FS Wert abfragen, umwandeln und in ein Archiv eintragen

    Hallo,

    nachdem ich jetzt endlich meinen Gaszähler auslesen kann, würde ich den Gaszählerstand nun gerne mit in mein Brennerstartarchiv eintragen. Im Prinzip verwende ich dazu meine bisherige Logikseite, bei der mehrere Binärauslöser (für die eintreffenden Ereignisse "Brenner ein/aus", "Warmwassererwärmung ein/aus" etc.) einen Archiveintrag erzeugen. Aaaber: Jetzt muß ja vor dem Archiveintrag noch der Gaszählerstand abgefragt werden. Nun wird so eine Ausgangsbox im graphischen Logikeditor zwar von oben nach unten abgearbeitet, aber nach dem Abfragen soll man ja drei Sekunden warten - ein "Warten" gibts in so einer Ausgangsbox aber nicht. Außerdem muß der abgefragte 14-Byte-Text vorher auch noch durch den "StrToFloat"-Logikbaustein. Und überhaupt klappt das Abfragen manchmal auch nicht - aber eine Rückmeldung vom HS, ob der Befehl "Kommunikationsobjekt abfragen" überhaupt einen Wert zurückgemeldet bekommen hat, gibts ja so direkt auch nicht, oder?

    So für "Nummer Sicher" fällt mir momentan nur eine (oder mehrere) Sequenz(en) ein, ähnlich dieser hier:
    1. Binärauslöser von Brenner/Wasser ein/aus startet Sequenz
    2. Internes Objekt "Wert konnte gelesen werden" auf 0 setzen
    3. Abfrage des Zählers machen
    4. Binärauslöser durch eintreffendes KO triggern -> "Wert konnte gelesen werden" setzen
    5. ggf. Abfrage nach N Sekunden wiederholen, bis Wert gelesen werden konnte
    6. durch den eintreffenden Wert wird auch StrToFloat gesetzt und der Wert steht im Fließkommaformat zur Verfügung
    7. Archiv-Eintrag durchführen

    Fragt sich nur, wie man das "wiederhole bis" am besten macht - evtl. eine Sequenz, die sich am Schluß selber wieder startet, und der Binärauslöser des eintreffenden Wertes macht "Sequenz abbrechen" (und macht den Archiveintrag, aber das darf dann auch wieder nicht passieren, bevor nicht StrToFloat den neuen Wert gesetzt hat...)? Oder einen Taktgeber, der alle N Sekunden den Wert abfragt, bis ein eintreffender Wert über einen Binärauslöser den Taktgeber wieder sperrt?

    Grmpf. Irgendwie hab' ich da momentan noch einen Knoten im Hirn bezüglich der zeitlichen Abläufe... (und überhaupt kommt mir das da oben eh alles wie "Kanonen auf Spatzen" vor). Sowas ist doch bestimmt eine Standardanwendung, die man mit zwei bis drei simplen Logikbausteinen "erschlagen" kann?!

    Danke & Gruß Matthias.

    #2
    normalerweise sollte die Abfrage doch immer funktionieren, wenn in der Anlage alles stimmt.
    Daher kannst du doch den Zählerstand abfragen und die Aufzeichnung mit dem Baustein Telegrammverzögerung verzögert abfragen.
    So sollte es funktionieren.
    ____________

    Gruss Norbe

    Kommentar


      #3
      Ah, ja, Telegrammverzögerung... gute Idee - öfter mal was neues, den hab ich bisher noch nicht verwendet

      Ja, "normal" sollte das Lesen schon gehen, klar. Aber bei meinen manuellen Tests mit der ETS-Inbetriebnahme kam halt gelegentlich eben mal keine Antwort zurück, also werde ich wohl damit rechnen müssen, daß das ab und zu passiert. Der Zähler hat ja so eine "langjährige" Batterie drin und ist auch sonst extrem auf Stromsparen ausgelegt; vielleicht geht die Schnittstelle ja in einen "Stromsparmodus", wenn man längere Zeit nix abfragt und muß dann erst wieder aufgeweckt werden, so daß das erste Lesen noch nicht klappt... oder so. Falls das tatsächlich so ist, könnte man ja auch einfach zwei Leseanforderungen hinschicken?!
      Naja, ich fang dann mal das Basteln an... irgendwie...
      Gruß Matthias.

      Kommentar


        #4
        Frag doch zyklisch ab (alle 15/30/60 Minuten) und archiviere zu einem Zeitpunkt X den letzten dir bekannten Wert. Der daraus resultierende geringe Fehler dürfte für Auswertungen keine große Rolle spielen.
        Noch besser wäre natürlich, wenn dein Gaszähler zyklisch senden könnte.
        openHAB 4.2

        Kommentar


          #5
          Zitat von Tokamak Beitrag anzeigen
          Frag doch zyklisch ab (alle 15/30/60 Minuten) und archiviere zu einem Zeitpunkt X den letzten dir bekannten Wert. Der daraus resultierende geringe Fehler dürfte für Auswertungen keine große Rolle spielen.
          Meinst Du? Hmmm... nehmen wir mal den Abend des 10. Januar:
          Code:
          "DatumUhrzeit";EinAus;Ist;Soll;LfdNr;Aussen;Warmwasser
          "10.01.2010 17:35:50";1;24,5;28,5;23;-1,0;0
          "10.01.2010 17:38:16";0;33,5;28,5;23;-1,0;0
          
          "10.01.2010 18:01:03";1;25,0;28,5;24;-1,0;0
          "10.01.2010 18:02:53";0;31,0;28,5;24;-1,0;0
          
          "10.01.2010 18:57:47";1;24,0;30,5;25;-1,0;0
          "10.01.2010 19:00:10";0;31,0;30,5;25;-1,0;0
          
          "10.01.2010 19:14:12";1;27,0;30,5;26;-1,0;0
          "10.01.2010 19:16:03";0;30,5;30,5;26;-1,0;0
          
          "10.01.2010 19:39:04";1;24,5;32,0;27;-1,0;0
          "10.01.2010 19:40:53";0;33,0;32,0;27;-1,0;0
          
          "10.01.2010 19:57:29";1;24,0;33,5;28;-1,0;0
          "10.01.2010 19:59:15";0;37,5;33,5;28;-1,0;0
          
          "10.01.2010 20:21:29";1;28,0;33,5;29;-1,0;0
          "10.01.2010 20:23:52";0;39,5;33,5;29;-1,0;0
          
          "10.01.2010 21:55:09";1;26,5;30,5;30;-2,0;0
          "10.01.2010 21:57:33";0;31,0;30,5;30;-2,0;0
          
          "10.01.2010 22:13:59";1;28,5;30,5;31;-2,0;0
          "10.01.2010 22:15:46";0;37,5;30,5;31;-2,0;0
          
          "10.01.2010 22:38:11";1;25,5;32,0;32;-2,0;0
          "10.01.2010 22:40:32";0;40,0;32,0;32;-2,0;0
          
          "10.01.2010 22:54:54";1;28,0;32,0;33;-2,0;0
          "10.01.2010 22:57:16";0;30,5;32,0;33;-2,0;0
          
          "10.01.2010 22:59:07";1;26,0;32,0;34;-2,0;0
          "10.01.2010 23:01:31";0;36,0;32,0;34;-2,0;0
          
          "10.01.2010 23:15:52";1;28,0;32,0;35;-2,0;0
          "10.01.2010 23:17:40";0;37,5;32,0;35;-2,0;0
          Meistens würde ein viertelstündiger Abruf also reichen, aber manchmal eben auch nicht (z.B. bei der Brenndauer von 22.54-22.57 und dann gleich wieder von 22.59-23.01 Uhr). Und wenn der Brenner eh schon sagt, wann er EIN und AUS geht...
          Zitat von Tokamak Beitrag anzeigen
          Noch besser wäre natürlich, wenn dein Gaszähler zyklisch senden könnte.
          Kann er (naja, nicht selber, aber ins EIB-MBUS-Gateway kann man eine zyklische Abfrage programmieren). Ich erinnere mich nur in einem Datenblatt gelesen zu haben, daß so eine Abfrage dem Prozessor im Zähler etwas Strom abverlangt - und ich will die Batterie halt möglichst wenig leerlutschen und deshalb eben nur abfragen, wenn ichs auch wirklich wissen will. Nicht daß ich dann schon vorzeitig einen neuen Zähler kriege, möglicherweise ohne Bus-Anschluß (denn daß der jetzige einen hat, hat auch nur auf dem "kleinen Dienstweg" geklappt - offiziell ist das nämlich, wie mir gesagt wurde, "vertragstechnisch nicht abbildbar").

          Gruß Matthias.

          Kommentar


            #6
            Interessante Rahmenbedingungen... Du willst also jedes Mal, nachdem der Brenner aus geht, die Gasmenge messen und beide Werte (Zeitpunkt "Brenner aus", aktuelle Gasmenge) zusammen protokollieren. Das Problem ist aber, dass die Abfrage nicht immer klappt.
            Habe ich das richtig dargestellt?

            Mein Ansatz wäre: "Brenner aus" triggert z.B. über "Flankendetektor fallend" einen Telegrammgenerator, der alle 10 bis 15 Sekunden die Gasmenge abfragt. Trifft dann der Wert ein (iKO wird gesetzt), schaltet das Ändern des iKO den Telegrammgenerator wieder aus und lässt beide Werte "Ausschaltzeitpunkt, Gasmenge" ins Archiv schreiben.
            openHAB 4.2

            Kommentar


              #7
              Zitat von Tokamak Beitrag anzeigen
              Interessante Rahmenbedingungen... Du willst also jedes Mal, nachdem der Brenner aus geht, die Gasmenge messen und beide Werte (Zeitpunkt "Brenner aus", aktuelle Gasmenge) zusammen protokollieren. Das Problem ist aber, dass die Abfrage nicht immer klappt.
              Habe ich das richtig dargestellt?
              Exakt!
              Es spielt allerdings noch ein anderes Zeitverhalten rein, das ich noch nicht erwähnt habe: Da der EIB-Anschluß der Heizung f***ing lahm ist, kriege ich die Brenner-EIN/AUS-Meldungen vermutlich immer ein bißchen zu spät. Beim Ausschalten macht das ja nix (da bleibt der Zähler ja eh stehen), nur beim Einschalten habe ich wohl schon ein paar Liter Gas "verpaßt". Aber da könnte ich dann ja auf den Zählerstand vom vorherigen Ausschalten zurückgreifen. Ich will mir das jetzt erst mal ein paar Tage alles in ein Logfile schreiben, damit ich ein Gefühl dafür kriege...
              Zitat von Tokamak Beitrag anzeigen
              Mein Ansatz wäre: "Brenner aus" triggert z.B. über "Flankendetektor fallend" einen Telegrammgenerator, der alle 10 bis 15 Sekunden die Gasmenge abfragt. Trifft dann der Wert ein (iKO wird gesetzt), schaltet das Ändern des iKO den Telegrammgenerator wieder aus und lässt beide Werte "Ausschaltzeitpunkt, Gasmenge" ins Archiv schreiben.
              Genau so hab ich das jetzt auch mal begonnen, ja. (Bei "Brenner ein" übrigens auch, aber aus den obigen Erwägungen ist der Zählerstand da vermutlich eh falsch und überflüssig - spart wieder Batterie)
              Mal sehen, was da in den nächsten Tagen so rauskommt...

              Gruß Matthias.

              Kommentar


                #8
                Ich probiers jetzt mal damit.

                Das Ergebnis kann man dann unter http://homeserver.hanft.de/hslist?ls...&user=ro&pw=ro abrufen

                Gruß Matthias.
                Angehängte Dateien

                Kommentar


                  #9
                  Jo, so ähnlich hätte ich es auch gemacht. Gespart hätte ich mir das iKO zum Warten und hätte dafür den Telegrammgenerator direkt gestartet oder gestoppt, aber das ist sicher Geschmacksache.
                  Das alles funktioniert dann gut, wenn du mit einigen wenigen Abfragen die Gasmenge erhältst. Wenn die Antwort des Gasmengenzählers längere Zeit fehlt, läufst der Telegrammgenerator ggf. in den nächsten Brennerzyklus rein.

                  Allerdings würde ich wirklich nur den Brennerstopp als Auslöser nehmen. Das iKO für den Gaszähler ist beim Brennerstart der Wert, der nach dem Stopp empfangen wurde. D.h. beim Brennerstart würde ich lediglich archivieren.
                  openHAB 4.2

                  Kommentar


                    #10
                    Zitat von Tokamak Beitrag anzeigen
                    Das alles funktioniert dann gut, wenn du mit einigen wenigen Abfragen die Gasmenge erhältst. Wenn die Antwort des Gasmengenzählers längere Zeit fehlt, läufst der Telegrammgenerator ggf. in den nächsten Brennerzyklus rein.
                    Das stimmt. In letzter Zeit antwortet er aber "ganz gut" - also daß keine Antwort kommt, ist anscheinend doch nur ein Ausnahmefall (den man halt berücksichtigen muß, der aber in der Praxis nur höchst selten vorkommt).

                    Zitat von Tokamak Beitrag anzeigen
                    Allerdings würde ich wirklich nur den Brennerstopp als Auslöser nehmen. Das iKO für den Gaszähler ist beim Brennerstart der Wert, der nach dem Stopp empfangen wurde. D.h. beim Brennerstart würde ich lediglich archivieren.
                    Ja, werde ich vermutlich noch umstellen. Aber jetzt laß ichs mal 24 Stunden laufen zum Zugucken - heute wird anscheinend eh nicht mehr geheizt, ist inzwischen schon zu warm geworden (den 316m³-Wert ganz oben in der Liste habe ich von Hand eingetragen, indem ich das interne "Warten"-Objekt per Menüseite von Hand auf 1 gesetzt habe - so kann man auch gleich testen, ob das Zählerauslesen funktioniert).

                    Morgen dann mehr in diesem Theater...

                    Gruß Matthias.

                    Kommentar

                    Lädt...
                    X