Ankündigung

Einklappen
Keine Ankündigung bisher.

Zwei Werte (Items) in einer Zeile darstellen

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

    Zwei Werte (Items) in einer Zeile darstellen

    Gibt es in OpenHAB eigentlich die Möglichkeit zwei Werte (z. B. Temp_Min und Temp_Max) in einer Zeile darzustellen?

    Also z. B. statt
    "Temperatur min 15 °C"
    "Temperatur max 30 °C"

    sollte das so aussehen:
    "Temperatur (min/max) 15 °C / 30 °C"

    Stehe gerade irgendwie auf der Leitung ...

    Gruß
    Germansailor

    #2
    Nimm ein String-Item und setze den Text zusammen:
    Code:
    .items:
    
    String TempMinMax "Temperatur (min/max) [%s]" <temperature> //und kein Binding :)
    Number TempMin "" {...bla}
    Number TempMax "" {...bla}
    
    
    .rules:
    
    rule "update TempMinMax"
    when
        Item TempMin received update or
        Item TempMax received update
    then
        TempMinMax.postUpdate(TempMin.state.toString+" °C / "+TempMax.state.toString+" °C")
    end
    Das ist erstmal ins blaue... vermutlich wird es hässliche Nachkommastellen geben, da gibt's glaube ich auch eine Funktion...
    Kann auch sein, dass man noch was nachbasteln muss, wenn das System startet, könnte einer der beiden Parameter uninitialized sein, während der andere schon gesetzt ist.

    Kommentar


      #3
      Vielen Dank!
      Das ist genau das was ich gesucht habe. Jetzt weiß ich wie ich vorgehen muss

      Gruß Germansailor

      Kommentar


        #4
        Also: Kurze Rückmeldung.

        Ich habe gemäß deinem Vorschlag alles umgesetzt. Klappt auch prima! Vielen Dank!

        Wie du aber auch schon erwartet hast, ergibt sich die kleine "Unschönheit" bezüglich der Nachkommastellen.
        Jetzt suche ich eine Funktion, mit der man entweder die Nachkommastellen wegbekommt (das Binding liefert nun mal 2 Nachkommastellen) - oder eine Substring-Funktion, mit der ich aus dem String "23.00" ein "23" mache.

        Gruß
        Germansailor

        Kommentar


          #5
          Lösung gefunden:

          Code:
          rule "Temperaturvorhersage"
               when
                    Item Temp_Vorschau_Min received update or
                    Item Temp_Vorschau_Max received update or
                    System started
               then
                    var int Temp_Feldlaenge = Temp_Vorschau_Min.state.toString.length
                    var String Temp_Min = Temp_Vorschau_Min.state.toString.mid(0, Temp_Feldlaenge - 3)
                    Temp_Feldlaenge = Temp_Vorschau_Max.state.toString.length
                    var String Temp_Max = Temp_Vorschau_Max.state.toString.mid(0, Temp_Feldlaenge - 3)
                    Temp_Min_Max.postUpdate(Temp_Min + " °C / " + Temp_Max + " °C")
               end
          Gruß
          Germansailor

          Kommentar


            #6
            hab auch nochmal geschaut geht auch so:
            TempMinMax.postUpdate(TempMin.state.format("%.0f") +" °C / "+TempMax.state.format("%.0f")+" °C")
            Die Schreibweise für das Zahlenformat ist wie bei der Item-Definition, also %.0f für null Nachkommastellen. Die Zeichen beim String abzuschneiden setzt voraus, dass immer die gleiche Anzahl Nachkommastellen ausgegeben werden (das ist nicht sicher, zumindest hab ich schon mal Rundungsfehler gesehen, da gab's dann 10 Nachkommastellen...)

            Kommentar


              #7
              Du willst also sagen, dass meine 5 Zeilen Code durch diese einzige ersetzt werden können?
              Dir ist schon klar, dass ich jetzt gefrustet bin?

              Ich werde mir das gleich mal anschauen und versuchen einzubauen ... Danke schonmal!

              Kommentar


                #8
                OK - funktioniert!

                Kommentar


                  #9
                  Zitat von Germansailor Beitrag anzeigen
                  [...]Dir ist schon klar, dass ich jetzt gefrustet bin?[...]
                  Hihi, dann trifft's mal jemand anderen und nicht immer mich aber ich schrub ja schon im 1. Posting, dass es dafür bestimmt eine Funktion gibt...

                  Kommentar

                  Lädt...
                  X