Ankündigung

Einklappen
Keine Ankündigung bisher.

Variable in Sitemap anzeigen

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

    Variable in Sitemap anzeigen

    Hi,

    gibt es eigendlich eine Möglichkeit, den Inhalt einer Variablen per Sitemap anzuzeigen. Ich habe es hinbekommen eine Temperatur aus einem KNX-Schalter anzuzeigen...
    Number KNX_tG " Gästezimmer [%.2f]" (gTemperatur) {knx="5/10"}

    soweit, sogut. Aber was muss ich tun, um den Wert eines Integer-Zählers anzuzeigen? Die Formatangabe sollte wohl ein [%d] sein, aber wie bekomme ich den Wert dazu?

    Gruß
    Peter

    #2
    Du musst den Inhalt der Variable in ein Item übergeben. Den Wert des Items kannst du dann ausgeben lassen.

    Gruß!

    Kommentar


      #3
      Hi,

      im Prinzip ist mir das klar, aber wie ist die Syntax dafür:

      Number VorratCounter "Vorrat [%d]" (gSettings) {und hier sollte doch Variable hin}

      Aber so funktioniert es nicht. Oder bin ich auf einem ganz falschen Weg?

      Gruß
      Peter

      Kommentar


        #4
        Zitat von pschauder Beitrag anzeigen
        Aber so funktioniert es nicht. Oder bin ich auf einem ganz falschen Weg?
        Ja, da bist du auf dem falschen Weg. Dazu brauchst du eine Rule oder ein Script. Wo überhaupt setzt du denn die Variable - also den von dir genannten Integer-Zähler?

        Gruß,
        thoern

        Kommentar


          #5
          Ok, dann mal die Beschreibung, was ich machen will und wie ich es mir vorstelle.
          Fernziel: gezieltes Ausschalten des Kellerlichts, wenn z.B. in der letzten Ecke das Licht brennt, ohne das in den dafür notwendigen Zugängen noch Licht an ist (das typische 'ausmachen vergessen')

          Dazu möchte ich erstmal die Einschaltzeit bestimmen, und das hab ich so versucht umzusetzen:

          import org.openhab.core.library.types.DecimalType
          var Number VorratCnt = 0


          rule "Kellerlicht-test"
          when
          Time cron "0 * * * * ?"
          then
          if (KNX_Licht_KG_Status_Vorrat.state == ON) {
          VorratCnt = VorratCnt + 1
          }
          else {
          VorratCnt = 1
          }

          Das sollte dann bei eingeschaltetem Licht jede Minute einen Zähler hochzählen, wenn ausgeschalten auf 1 zurücksetzten. Und diesen Zähler möchte ich zu Kontrollzwecken (und weil ich wissen will, wie sowas geht) in der aktuellen Sitemap anzeigen.

          Ich hoffe, das hilft für eine Hilfestellung weiter:-)

          Gruß
          Peter

          Kommentar


            #6
            Hi,

            im Items-File ein Item für den Counter definieren, z.B.
            Code:
            Number ItemVorratCnt  ......
            Am Ende deiner Rule eine Zeile hinzufügen:
            Code:
            import org.openhab.core.library.types.DecimalType
            var Number VorratCnt = 0
            
            rule "Kellerlicht-test"
            when
              Time cron "0 * * * * ?"
            then
              if (KNX_Licht_KG_Status_Vorrat.state == ON) {
                  VorratCnt = VorratCnt + 1
              }
              else { 
                  VorratCnt = 1
              }
            ItemVorratCnt.postUpdate(VorratCnt)
            Ungetestet, sollte aber so funktionieren.

            Das ItemVorratCnt dann über die Sitemap ausgeben lassen.

            Gruß,
            thoern

            Kommentar


              #7
              Hallo,
              ich mach sowas gern über Rückwärtszähler:

              in einer minütliche rule die noch andere Zähler bedient:
              (Pseudocode)
              Code:
              rule "minuetliche rule"
              when
                Time cron "0 * * * * ?"
              then
              
              // diese Einträge triggern den Zähler
              if (licht_kellergang1.State == ON)  VorratCnt = 10 // 10 Minuten
              if (licht_kellergang2.State == ON)  VorratCnt = 10 // 10 Minuten
              
              
              if (VorratCnt > 0) {
                VorratCnt = VorratCnt -1
                if (VorratCnt == 0)  -->Licht ausschalten
              }
                
              ...
              
              end
              Holger

              Kommentar


                #8
                Zitat von HolgerW Beitrag anzeigen
                Hallo,
                ich mach sowas gern über Rückwärtszähler
                ....
                Ich mach sowas mittels Aktor (Treppenhausfunktion). Dann funktionierts auch ohne OpenHAB

                Gruß,
                thoern

                Kommentar


                  #9
                  Ok, so funktioniert es. Wenn ich es richtig verstanden habe, kann ich in der Sitemap nur auf Items zugreifen, die nicht mit Variablen zu verwechseln sind (auch wenn sie typemäßig identisch sind?).

                  Was mir jetzt noch nicht ganz klar ist, ist die Funktion von postUpdate. Wenn ich es richtig verstehe, wird damit die Kopplung zwischen dem Item und der Variable hergestellt, bzw der Variableninhalt in das (oder den) Item rübergeschoben,oder ?

                  Gruß
                  Peter

                  Kommentar


                    #10
                    Hi,

                    Zitat von pschauder Beitrag anzeigen
                    Was mir jetzt noch nicht ganz klar ist, ist die Funktion von postUpdate. Wenn ich es richtig verstehe, wird damit die Kopplung zwischen dem Item und der Variable hergestellt, bzw der Variableninhalt in das (oder den) Item rübergeschoben,oder ?
                    Du bist hier objektorientiert unterwegs. Das Item ist ein Objekt und hat als solches verschiedene Eigenschaften (wie z.B. "state") und verschiedene Methoden (wie z.B. postUpdate()).

                    Mit

                    MeinItem.postUpdate(Variable)

                    wird neben anderen Dingen unter anderem die Eigenschaft "state" von MeinItem auf den Wert von Variable gesetzt.

                    Du kannst auch Folgendes schreiben:

                    MeinItem.postUpdate(55)

                    das setzt den "state" von MeinItem auf 55.

                    PS: Items und Variablen sind völlig verschieden Dinge. Im Frontend zeigt OpenHab nur den Status von Items (keine Variablen) an.

                    Gruß,
                    thoern

                    Kommentar

                    Lädt...
                    X