Ankündigung

Einklappen
Keine Ankündigung bisher.

OH2 Rule wird bei Startup nicht verarbeitet

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

    OH2 Rule wird bei Startup nicht verarbeitet

    Die ist echt eine Sisyphusarbeit mit dem Umstieg und ich hoffe, dass meine "Probleme" anderen beim Umstieg helfen

    Ich habe folgende Regel zur Festlegung diverser Werte für meine Sonnenschutzautomatik.
    Diese wurde in OH1 ohne Probleme beim Neustart von OH abgearbeitet, oder eben nach dem speichern einer Änderung.

    OH2 führt diese Regel nur nach Änderung/speichern aus?!
    Code:
    rule SetWeather
    when
        Time cron "0 0 3 * * ?" or
        System started
    then
     tempmax = (Weather_Temp_Max_0.state as DecimalType).intValue
    
     switch (tempmax) {
      case (tempmax >= 20 && tempmax <=26): {hoehe1 = 85 hoehe2 = 75 hoehe3 = 65 hoehe4 =  0 hoehe5 =  0}  // Höhe des Rollos je nach Temperatur
      case (tempmax >= 27 && tempmax <=31): {hoehe1 = 100 hoehe2 = 90 hoehe3 = 80 hoehe4 = 40 hoehe5 = 20} // Höhe des Rollos je nach Temperatur
      case (tempmax >= 32 && tempmax <=45): {hoehe1 = 100 hoehe2 = 90 hoehe3 = 80 hoehe4 = 70 hoehe5 = 60}
      default:          {hoehe1 =  0 hoehe2 =  0 hoehe3 =  0 hoehe4 =  0 hoehe5 =  0}     
     } 
    end

    #2
    switch case arbeitet nicht mit Wertebereichen. Beim Systemstart ist Weather_Temp_Max_0 eventuell nocht nicht initialisiert.
    Warum die Rule dennoch (einmal) ausgeführt wird, ist die interessante Frage...

    Kommentar


      #3
      Wird zufällig nur dein default switch ausgeführt?

      Gruß Carsten

      Kommentar


        #4
        Zitat von m3Sa Beitrag anzeigen
        Wird zufällig nur dein default switch ausgeführt?

        Gruß Carsten
        Hi nein,
        ich vermute es liegt tatsächlich am fehlenden Wert für Temp_max, da die Regel schon durch ist, bevor das Wetter Binding die Werte liefert.
        Wenn ich die Regel anschliessend laufen lasse, geht alles.

        udo1toni Auch der Switch Case arbeitet bisher einwandfrei

        Kommentar


          #5
          Ich hab grad noch mal nachgeschaut, und Du hast recht, an dieser Stelle verhält sich xtend komplett anders als von Java gewohnt.
          Wenn der Case-Ausdruck vom Typ Boolean ist, wird der teil ausgeführt, sobald der Ausdruck wahr ist.

          Kommentar

          Lädt...
          X