Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Wie Betriebsstunden einer GA zählen?

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

    - √ - Wie Betriebsstunden einer GA zählen?

    Hallo allerseits,

    rund die Hälfte meiner Schaltkanäle läuft _nicht_ in einem Strommessaktor. Wenn nun an einem solchen Kanal eine konstante Last hängt, müsste es zur Ermittlung des Langzeit-Verbrauches ja eigentlich reichen, wenn man die Einschalt-Stunden zählt (und diese mit der Leistung der Leuchte multipliziert).

    Hat jemand einen solchen Zähler realisiert? Kann jemand vielleicht ein handliches Makro oder einen Hinweis anbieten?

    Gruß,
    Jens.

    p.s.
    In der Enertex.lib habe ich das Makro "kWh" entdeckt. Das geht schon in die richtige Richtung, setzt aber einen gemessenen Stromverbrauch voraus.

    #2
    hmm.. also ob das so genau ist.. wag ich zu bezweifeln.. aber da werden sich sicher gleich ein paar Profis dazu äußern.. damit kenn ich mich zu wenig aus...

    Aber einen einfachen Betriebstundenzähler kann ich dir schon liefern:

    [highlight=epc]
    if cycle(01,00) and "Anforderung Kessel-1/3/0"==EIN then Brenner_Heiz_Timer = Brenner_Heiz_Timer+1u16 endif
    // und zum Darstellen:
    pdisplay(16,convert((Brenner_Heiz_Timer)/60u16,$$)+$std $+convert(mod(Brenner_Heiz_Timer,60u16),$$)+$min$, INFO,INACTIVE,GREEN,HeizraumID)
    [/highlight]


    Gruß Martin
    Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

    Kommentar


      #3
      Hi Martin,

      Du kannst evtl. mit der Funktion delayc arbeiten. So in der Art

      [highlight=epc]

      Laeuft = StatusGA
      counter = 0u64

      if delayc( event(StatusGA), Startwert, counter) then {
      if Laeuft then {
      Betriebszeit = Betriebszeit + (Startwert - counter);
      } endif;
      counter = Startwert;
      Laeuft = StatusGA;
      } endif

      [/highlight]

      ich habe es aber nicht ausprobiert und getestet.

      Gruß,
      Bernd

      Kommentar


        #4
        sag doch nicht immer Martin zum Jens... Mensch..
        Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

        Kommentar


          #5
          Hallo Martin und Bernd,

          danke schon mal für die Vorschläge!

          Also den Einzeiler mit dem cycle kann ich leicht verstehen.
          Das delayc hat den Vorteil, dass weniger Rechenlast entsteht, oder?

          Kommentar


            #6
            Zitat von DerRenovator Beitrag anzeigen
            Das delayc hat den Vorteil, dass weniger Rechenlast entsteht, oder?
            Delayc wird in jedem Zyklus aufgerufen, das Cycle bestenfalls alle Sekunden. Wahrscheinlich ist daher Cycle schlanker, was aber erst im Einzelfall zu beweisen wäre.
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              #7
              Hallo nochmal,

              also "cycle" führt zu weniger Code und zu weniger Rechenlast als "delayc", wenn ich das richtig verstehe. Ich würde sagen 2:0.

              Damit werde ich es probieren und kann das Ergebnis dann gerne hier mitteilen, wenn es noch jemand interessiert.

              Gruß,
              Jens.

              Kommentar


                #8
                vor allem kannst du ja sehr leicht mehrere GA's in einem Cycle zusammenfassen.. also ich denk, das ist schon schön schlank..

                Klar.. poste das Ergebnis !

                Gruß Martin
                Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                Kommentar


                  #9
                  Hallo Zusammen,

                  ich hab den Betriebsstundenzähler für eine Tischleuchte eingerichtet:

                  Code:
                  // Betriebsstundenzähler - Lampe
                      if cycle(01,00) and "Tischleuchte-1/1/13"==EIN then TischleuchteBS = TischleuchteBS+1u16 endif
                     // und zum Darstellen:
                      pdisplay(TischleuchteBSID,convert((TischleuchteBS)/60u16,$$)+$std $+convert(mod(TischleuchteBS,60u16),$$)+$min$,INFO,INACTIVE,GREEN,Buero)
                  Ich habe die TischleuchteBSID als Variable definiert - genauso auch TischleuchteBS.
                  Allerdings bekomme ich ne Fehlermeldung das TischleuchteBS

                  Laufzeitfehler:
                  ! Benutzten Sie Konvertierungsfunktionen:
                  Datentyp der Parameter nicht gleich. Kontrollieren Sie auch die Zuweisung der Funktionsrückgabe. 1-tes Argument von : >TischleuchteBS+1u16< !
                  ID:14

                  Wo ist da mein Fehler? Soll ich die Variable TischleuchteBS nicht definieren?
                  TischleuchteBS = 14 und TischleuchteBSID = 13


                  Vielen Dank euch!


                  Gruß
                  Michael

                  Kommentar


                    #10
                    Moin,

                    [highlight=epc]
                    // Betriebsstundenzähler - Lampe
                    if cycle(01,00) and "Tischleuchte-1/1/13"==EIN then TischleuchteBS = TischleuchteBS+1u16 endif
                    // und zum Darstellen:
                    if change(TischleuchteBSID) then {
                    pdisplay(TischleuchteBSID,convert((TischleuchteBS)/60u16,$$)+$std $+convert(mod(TischleuchteBS,60u16),$$)+$min$,INFO ,INACTIVE,GREEN,Buero)
                    } endif

                    [/highlight]

                    das pdisplay darf nur innerhalb von if xxx then pdisplay(...) endif stehen.

                    Gruß,
                    Bernd

                    Kommentar


                      #11
                      Guten Morgen Bernd,

                      vielen Dank für deine Hilfe!
                      Das ist auch ein Fehler stimmt... habe es jetzt korrigiert und bekomme aber immer noch den gleichen Fehler...

                      irgendwie will der die Variable TischleuchteBS nicht ?!
                      Im Beispiel von Martin ist es doch auch so - wenn auch mit anderen Namen.



                      Gruß
                      Michael

                      Kommentar


                        #12
                        Hallo,

                        Fehler ist gefunden!
                        Mußte TischleuchteBS noch definieren!

                        =>
                        TischleuchteBS = 1u16

                        und schon gehts ;-)


                        Gruß
                        Michael

                        Kommentar


                          #13
                          Moin,

                          und Du hast die irgendwo definiert mit TischleuchteBS = 0u16?

                          (das u16 ist wichtig, sonst nimmt der Comiler einen u08 an)

                          Gruß,
                          Bernd

                          Kommentar


                            #14
                            So, die Anregung von Martin habe ich nun in ein kleines handliches Makro verpackt. Zumindest erstmal die Anzeige.

                            [highlight=epc]
                            // Webelement : Anzeige von Betriebsstunden (inkl. Stromverbrauch)
                            // @date 14.01.2014
                            // @version 1
                            // @author JensM
                            :begin AnzeigeButtonBetriebsstundenMitKwh(ID, PageID, InBetriebsminuten, InLeistung)
                            :info $Eine Statusanzeige für die gegebenen Betriebsstunden mit zusätzlicher Angabe des Stromverbrauches.$ \\
                            :$Zahl zwischen 0 und 39 als ID des Elements$\\
                            :$Seiten-ID des pButtons$\\
                            :$Laufzeit des Verbrauchers in Minuten (Datentyp numerisch z.B. u32, GA)$\\
                            :$Leistung des Verbrauchers in Watt (Datentyp numerisch z.B. u16, GA oder Var, sollte konstant sein)$
                            :shortinfo $Statusanzeige für Betriebsstunden Stromverbrauch.$
                            // Wert geaendert -> Anzeige aktualisieren
                            if change(InBetriebsminuten) or after(systemstart(),5700u64) then {
                            pdisplay(ID, stringformat(convert(InBetriebsminuten,0f32)/60f32*convert(InLeistung,0f32)/1000f32,4,0,0,2)+$ kWh$ + $<br>$ + convert(InBetriebsminuten/60u32,$$)+$:$+stringformat(mod(InBetriebsminuten,6 0u32),0,3,2,2)+$ h$, INFO, C_STATE_DEFAULT, C_STYLE_DEFAULT, PageID);
                            } endif
                            :end
                            [/highlight]

                            Bei der eigentlichen Zählung ringe ich noch mit mir. Für den kleinen cycle lohnt sich ja eigentlich gar kein Makro. Werde ich aber wohl trotzdem machen, da ich die Hoffnung habe, in zukünftigen Versionen (vielleicht schon in V3?) ohne das cycle auszukommen und stattdessen mit Uhrzeiten rechnen zu können.
                            Angehängte Dateien

                            Kommentar


                              #15
                              Zitat von DerRenovator Beitrag anzeigen
                              in zukünftigen Versionen (vielleicht schon in V3?) ohne das cycle auszukommen und stattdessen mit Uhrzeiten rechnen zu können.
                              Stimmt. Die neue Version kann mit utc-Zeiten rechnen und als String darstellen.
                              offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                              Enertex Produkte kaufen

                              Kommentar

                              Lädt...
                              X