Ankündigung

Einklappen
Keine Ankündigung bisher.

Anfänger

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

    Anfänger

    Hallo,

    Ich has Problem das es mir nicht möglich ist die Teperatur Max und Min Werte mit Uhrzeit aufzuzeichnen.
    Code:
    rule "Update_max_und_min_Temperaturen"
    
    when
        Item Aussentemperatur changed or
        System started
    then    
            var Number Min
            var Number Max
            var String tmpMin
            var String tmpMax
            var SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss" ) 
            
         df = new SimpleDateFormat( "HH:mm:ss" ) 
         Min = Aussentemperatur.minimumSince(now.toDateMidnight, "rrd4j").state as DecimalType
         tmpMin = Min + " °C (" + df.format(Aussentemperatur.minimumSince(now.toDateMidnight, "rrd4j").timestamp) + " )"
        
        postUpdate(Aussentemperatur_Min, tmpMin)
        
         Max = Aussentemperatur.maximumSince(now.toDateMidnight, "rrd4j").state as DecimalType
         tmpMax = Max + " °C (" + df.format(Aussentemperatur.maximumSince(now.toDateMidnight, "rrd4j").timestamp) + " )"
        
        postUpdate(Aussentemperatur_Max, tmpMax)
    end
    Ich habe sicher einen Denkfehler... :-(

    Weiters habe Ich das Problem das in der Visu alle messwerte alle nach unten verschoben dargestellt werden. gibs dafür eine lösung?

    danke

    #2
    Hi,

    was genau geht denn nicht? Wie sind die entsprechenden Items definiert?

    Zitat von tiego Beitrag anzeigen
    Weiters habe Ich das Problem das in der Visu alle messwerte alle nach unten verschoben dargestellt werden. gibs dafür eine lösung?
    Ja, einen "richtigen" Browser nehmen, also einen Webkit kompatiblen (wie Safari, Chrome) ;-)

    Gruß,

    Thomas E.-E.
    Visualisierung, Rule/Logic-Engine, Integrationsplattform mit openhab (Supportforum)

    Kommentar


      #3
      Hallo,

      danke für die Rückantwort.

      was genau geht denn nicht? Wie sind die entsprechenden Items definiert?
      Items:
      Code:
      /*Temperaturen */
      
      Number Aussentemperatur_raw                     "Aussentemperatur_raw [%d]"                        (Temperaturen_raw)                {modbus="slave2:0"}
      Number Aussentemperatur                         "Aussentemperatur [%.1f °C]"    <temperature>    (Temperaturen, Dachboden)    
      
      String Aussentemperatur_Max                     "Heutiges Maximum [%s]" <temperature> (Temperaturen)
      String Aussentemperatur_Min                     "Heutiges Minimum [%s]" <temperature> (Temperaturen)
      
      Number Zeitraum_Diagramm                        "Zeitraum_Diagramm"
      DateTime letzte_aenderung_Aussentemperatur        "letzte änderung der Aussentemperatur um: [%1$tT %1$tA %1$td.%1$tm.%1$tY]"    <clock>
      es werden nicht die Richtigen Min und Max Werte dargestellt.
      z.B wenn als max wert 30 ,0°C um 11:00 war wird in der visu 28,75 dargestellt.
      Ich übertrage nur eine komastelle. deswegen ist der wert für mich unrealistisch und nicht nachvollziebar.

      Eine weitere frage ist wie besteht die möglichkeit andere zeiträume für die min und max auswertung zu definieren. welche Zeiträume stehen zur verfügung?

      Code:
      .minimumSince(now.toxxxx

      Kommentar


        #4
        Guten Morgen,
        kann mir bei den Min und Max werten keiner helfen?

        danke

        Kommentar


          #5
          Guten Morgen,

          leider habe Ich das Problem mit den min und max werten immer noch.
          kann mir jemand sagen wo der Fehler darin liegt?

          rrd4j
          Code:
          // persistence strategies have a name and a definition and are referred to in the "Items" section
          Strategies {
              // for rrd charts, we need a cron strategy
              everyMinute : "0 * * * * ?"
          }
          
          Items {
              // let's only store temperature values in rrd
              Aussentemperatur:                     strategy = everyMinute, restoreOnStartup
          
          }
          rules
          Code:
          rule "ModbusRegisterKonvertirung_Aussentemperatur"
              when 
                  Item Aussentemperatur_raw received update or Item Aussentemperatur_raw changed
              then 
                  {
                      var temp001=Aussentemperatur_raw.state as DecimalType
                      if (Aussentemperatur_raw.state > 32767) {
                          Aussentemperatur.postUpdate((temp001.floatValue-65536) / 10)
                      } 
                      else {
                          Aussentemperatur.postUpdate(temp001.floatValue / 10)
                      }
                  }
          end
          
          rule "Update_max_und_min_Temperaturen Tag"
          
          when
              Item Aussentemperatur changed or
              System started
          then    
                  var Number Min
                  var Number Max
                  var String tmpMin
                  var String tmpMax
                  var SimpleDateFormat df = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
                  
               df = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
               Min = (Aussentemperatur.minimumSince(now.toDateMidnight, "rrd4j").state as DecimalType)
               tmpMin = (Min + " °C (" + df.format(Aussentemperatur.minimumSince(now.toDateMidnight, "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Min_Tag, tmpMin)
              
               Max = (Aussentemperatur.maximumSince(now.toDateMidnight, "rrd4j").state as DecimalType)
               tmpMax = (Max + " °C (" + df.format(Aussentemperatur.maximumSince(now.toDateMidnight, "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Max_Tag, tmpMax)
          end
          
          rule "Update_max_und_min_Temperaturen Monat"
          
          when
              Item Aussentemperatur changed or
              System started
          then    
                  var Number Min1
                  var Number Max1
                  var String tmpMin1
                  var String tmpMax1
                  var SimpleDateFormat df1 = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
                  
               df1 = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
               Min1 = (Aussentemperatur.minimumSince(now.toDateMidnight.withDayOfMonth(1), "rrd4j").state as DecimalType)
               tmpMin1 = (Min1 + " °C (" + df1.format(Aussentemperatur.minimumSince(now.toDateMidnight.withDayOfMonth(1), "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Min_Monat, tmpMin1)
              
               Max1 = (Aussentemperatur.maximumSince(now.toDateMidnight.withDayOfMonth(1), "rrd4j").state as DecimalType)
               tmpMax1 = (Max1 + " °C (" + df1.format(Aussentemperatur.maximumSince(now.toDateMidnight.withDayOfMonth(1), "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Max_Monat, tmpMax1)
          end
          
          rule "Update_max_und_min_Temperaturen Jahr"
          
          when
              Item Aussentemperatur changed or
              System started
          then    
                  var Number Min2
                  var Number Max2
                  var String tmpMin2
                  var String tmpMax2
                  var SimpleDateFormat df2 = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
                  
               df2 = new SimpleDateFormat( "HH:mm:ss E dd.MM.y" ) 
               Min2 = (Aussentemperatur.minimumSince(now.toDateMidnight.withDayOfMonth(1).withMonthOfYear(1), "rrd4j").state as DecimalType)
               tmpMin2 = (Min2 + " °C (" + df2.format(Aussentemperatur.minimumSince(now.toDateMidnight.withDayOfMonth(1).withMonthOfYear(1), "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Min_Jahr, tmpMin2)
              
               Max2 = (Aussentemperatur.maximumSince(now.toDateMidnight.withDayOfMonth(1).withMonthOfYear(1), "rrd4j").state as DecimalType)
               tmpMax2 = (Max2 + " °C (" + df2.format(Aussentemperatur.maximumSince(now.toDateMidnight.withDayOfMonth(1).withMonthOfYear(1), "rrd4j").timestamp) + " )")
              
              postUpdate(Aussentemperatur_Max_Jahr, tmpMax2)
          end
          items
          Code:
          /*Temperaturen */
          
          Number Aussentemperatur_raw                     "Aussentemperatur_raw [%d]"                        (Temperaturen_raw)                {modbus="slave2:0"}
          Number Aussentemperatur                         "Aussentemperatur [%.1f °C]"    <temperature>    (Temperaturen, Dachboden)    
          
          String Aussentemperatur_Max_Tag                     "Heutiges Maximum [%s]" <temperature> (Temperaturen)
          String Aussentemperatur_Min_Tag                     "Heutiges Minimum [%s]" <temperature> (Temperaturen)
          
          String Aussentemperatur_Max_Monat                     "Maximum des letzten Monats [%s]" <temperature> (Temperaturen)
          String Aussentemperatur_Min_Monat                     "Minimum des letzten Monats [%s]" <temperature> (Temperaturen)
          
          String Aussentemperatur_Max_Jahr                    "Maximum des letzten Jahres [%s]" <temperature> (Temperaturen)
          String Aussentemperatur_Min_Jahr                    "Minimum des letzten Jahres [%s]" <temperature> (Temperaturen)

          Kommentar


            #6
            Könnte mir jemadn bitte helfen?
            Komme nicht weiter...

            Kommentar


              #7
              z.B wenn als max wert 30 ,0°C um 11:00 war wird in der visu 28,75 dargestellt.
              Woher weisst Du denn das die Werte falsch sind, wie ermittelst Du den Vergleichswert?

              Kommentar


                #8
                Hallo,

                danke für die Antwort,

                Ich schreibe die Werte mit der Sps zu testzwecken alle sec von -30 bis +30 und später wieder abfallend.

                schreibe nur 1°C werte und keine komastellen.
                deswegen weiss ich nicht wie diese werte zu satnde kommen.

                grüsse

                Kommentar


                  #9
                  Naja, das klingt mir so, als wäre die 28,75 ein gerundeter Wert. rrd4j speichert die Werte ja nicht sekundengenau, wenn Du also sekündlich andere Werte schreibst, wird openhab/rrd4j vermutlich die Werte mitteln.

                  Kommentar

                  Lädt...
                  X