Ankündigung

Einklappen
Keine Ankündigung bisher.

LBS 19000337 Betriebsstundenzähler

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

    LBS 19000337 Betriebsstundenzähler

    Mir ist aufgefallen seitdem ich diesen LBS nutze, dass die LBS RUN im Minimum der Anzahl der Betriebsstundenzähler entspricht.
    Deshalb habe ich den Code mal genauer betrachtet und *räusper* einen Bug gefunden.

    Code:
    ###[DEF]###
    [name        =Betriebsstundenzähler modifiziert    ]
    
    [e#1        =Eingangssignal ]
    [e#2        =Frequenz Ausgabe Zähler in Sekunden #init=60 ]
    [e#3        =Maximumwert der als AUS interpretiert wird #init=0]
    [e#4        =akuteller Stand (remanent) ]
    
    [a#1        =aktueller Zählerstand in Stunden ]
    
    [v#1        =letze Signalauswertung high        ]
    
    ###[/DEF]###
    
    
    ###[HELP]###
    
    Dieser Baustein ermöglich es die Betriebsstunden eines Geräte mitzuloggen
    
    Eingang 1:     Wert der anzeigt ob Gerät in Betrieb ist
    Eingang 2:     Frequenz der überprüfung und remanenten Ablage des Zählers
    Eingang 3:     Maximumwert, der für Gerät im Aus-Zustand steht
    Eingang 4:     aktueller Stand remanent (da keine Remanenten Bausteine in EDOMI)
    
    Ausgang 1:  Ausgabe aktueller Zählerstand bei Veränderungen
    
    Der Baustein wird durch die Zeitschleife immer neu getriggert, Zählt aber auch anhand der eintreffenden Signale an Eingang 1 weiter.
    Unbedingt Ausgang 1 über ein remanentes KO mit Eingang 4 verbinden !
    
    ###[/HELP]###
    
    
    ###[LBS]###
    <?
    function LB_LBSID($id) {
        if (($E=logic_getInputs($id)) && ($V=logic_getVars($id))) {
        if ($E[1]['value']>0) {
            if (logic_getState($id)==0) {  // Baustein ist nicht gelaufen, Start der Schleife
                logic_setState($id,1,$E[2]['value']*1000,true);    //Baustein automatisch nach e#2 Sekunden erneut aufrufen
    //            if ($debug) writeToCustomLog('LBS19000337 Betriebsstundenzähler',1,'Start Zähler');
            }
    // wenn refresh von e#2 bis e#4 ausgeht, raus aus dem LBS
            if ($E[2]['refresh'] || $E[3]['refresh'] || $E[4]['refresh']) return;
            $betriebsstunden = $E[4]['value'];
    // folgendes machen wir immer, egal ob Trigger e#1 oder Loop
            if ($V[1] > 0) { //Nachdem der Startwert gesetzt ist, muss die verstrichene Zeit als aktiv bewertet werden
                $betriebsstunden = $betriebsstunden + ((time()-$V[1]) / 3600 );
            }
            if ($E[1]['value'] > $E[3]['value']) { // Verbraucher aktiv
                logic_setVar($id,1,time());
            }
    //        else { //Verbraucher inaktiv
    //            logic_setVar($id,1,0);
    //            logic_setState($id,0);
    //        }
            if ($betriebsstunden != $E[4]['value']) {logic_setOutput($id,1,$betriebsstunden);}
        }else if ($E[1]['value']==0) {
            if (logic_getState($id)==1) {
                logic_setVar($id,1,0);
                logic_setState($id,0);
            }
        }
        }
    }
    
    
    ?>
    ###[/LBS]###
    
    
    ###[EXEC]###
    <?
    
    ?>
    ###[/EXEC]###
    Das Spannende ist das Ende (else if ($E[1]['value']==0) - habe ich dazu gedichtet.
    Das Problem war, die gestartete Schleife hat sich nie beendet/beenden können, wenn $E1=0 wird. Der Stopp der Schleife war nämlich in if ($E[1]['value']>0) und da war kein drankommen mehr.
    In der Folge ist der LBS munter in seiner Schleife weitergelaufen. War auch ersichtlich in der Live-Ansicht im Logikeditor.
    Vielleicht kannst Du (weiss grad nicht wer den LBS geschrieben hat) das prüfen und nach Deinem Gusto ändern.
    >>Smelly One<<
    >> BURLI <<
    Grüße Armin

    #2
    Würde sagen, ist Winni
    Gruß Andreas

    -----------------------------------------------------------
    Immer wieder benötigt: KNX-Grundlagen PDF Englisch, PDF Deutsch oder
    Deutsche Version im KNX-Support.

    Kommentar


      #3
      Danke und Gruß an Winni.
      >>Smelly One<<
      >> BURLI <<
      Grüße Armin

      Kommentar


        #4
        das hier taucht im Log beim Edomi Start auf: liegt am LBS oder ?
        2018-12-26 23:23:05 146064 ? 24710 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19000337.php | Fehlercode: 8 | Zeile: 6 | Undefined variable: debug ERROR
        2018-12-26 23:35:41 687742 ? 25261 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19000337.php | Fehlercode: 8 | Zeile: 6 | Undefined variable: debug ERROR
        2018-12-26 23:45:48 813985 ? 25661 Datei: /usr/local/edomi/www/data/liveproject/lbs/LBS19000337.php | Fehlercode: 8 | Zeile: 6 | Undefined variable: debug

        Kommentar


          #5
          Hm.... ich habe hier bei mir die Version 0.3, ich hab sie mal hochgeladen. Wird bei mir nur in einer sehr nebensächlichen Logik verwendet und kann aktuell nicht sagen ob der Baustein immer sauber funktioniert..... Hab' ihn auch noch nicht auf intern remanente Variablen umgestrickt.

          Kommentar


            #6
            vielen dank Winni jetzt ist der Fehler weg ! super Service !!!

            ich nutze den Baustein um die Betriebsstunden meiner Warmwasser-Zirkulationspumpe zu zählern - der Zennio Regler/Aktor der die Temp-Regelung dafür macht hat leider keinen Betriebsstundenzähler für den Pumpenausgang drinnen - is aber nicht so uninteressant weil ich die Zirkulations-Pumpe über diverse Präsenzmelder anfordere und aktuell noch keinen Plan habe wieviel die jetzt wirklich am Tag Läuft

            Kommentar

            Lädt...
            X