Rule läuft manchmal nicht !

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
udo1toni
Beiträge: 15264
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Rule läuft manchmal nicht !

Beitrag von udo1toni »

Baumtasche hat geschrieben: 2. Okt 2020 19:44

Code: Alles auswählen

rule  "Aktuelle Helligkeit fällt unter 10" //"React on Aktuelle Helligkeit (Lichtsensor_1_CurrentIllumination) change/update"
when
   Item Lichtsensor_Aussen changed 
then
    if((Lichtsensor_Aussen.state as Number)  < 30 && (ItemRollo_Geschlossen== CLOSED)) {  // ACHTUNG!
            Rollo_Bad_Level.sendCommand(100)
[...]
            if(DrehTerrasse_State == CLOSED)                        // ACHTUNG!
                Rollo_Terrasse_Level.sendCommand(32)       
      
            ItemRollo_Geschlossen.postUpdate(ON)
        }
end
In den beiden if-Statements hast Du einen Fehler. Du darfst nicht das Item vergleichen, sondern musst dessen Status vergleichen, also jeweils ein .state anhängen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
udo1toni
Beiträge: 15264
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Rule läuft manchmal nicht !

Beitrag von udo1toni »

Baumtasche hat geschrieben: 2. Okt 2020 21:57 Hallo Udo1toni,

kannst du bitte noch Mal auf folgende Passage von dir schauen?

Code: Alles auswählen

            sendCommand("Rollo_" + lShutter(iShutter) + "_Level",lShutterClose(iShutter).intValue)           
            tShutter.reschedule(now.plusSeconds(lShutterTime(iShutter).intValue))                            
            iShutter = iShutter + 1                                                                          
        ])
VSCode meldet, dass lShutter --> invalid number of arguments. The field lShutter is not applicable for the arguments (Integer), dass gleiche bei lShutterClose
Ja, Käse... da fehlt noch jeweils ein .get...

Code: Alles auswählen

// globale Variablen zu Beginn der Datei definieren!
var Timer tShutter = null
var Integer iShutter = 0

val lShutter      = newArrayList('Bad', 'SchlafzKleider', 'SchlafzGarage', 'SchlafzBalkon')
val lShutterClose = newArrayList(100, 100, 100, 32)
val lShutterTime  = newArrayList(15, 7, 2, 3)


rule "Rollläden schließen"
when
    Item Lichtsensor_Aussen changed
then
    if(tShutter !== null) {                                                                                  // Timer läuft schon
        logInfo("shutter","Rule getriggert, aber Timer bereits aktiv. Abbruch!")
        return;
    }
    if(!(Lichtsensor_Aussen.state instanceof Number)) {                                                      // ist der Status eine Zahl?
        logWarn("shutter","Lichtsensor liefert ungültigen Status ({}). Abbruch!",Lichtsensor_Aussen.state)
        return;
    }
    val Number nPrev = if(previousState instanceof Number) (previousState as Number).floatValue else 20      // alten Wert auslesen
    if((Lichtsensor_Aussen.state as Number).floatValue < 10 && nPrev > 10) {                                 // Falls Schwellwert unterschritten und vorher nicht unterschritten
        iShutter = 0                                                                                         // Zähler zurücksetzen
        tShutter = createTimer(now.plusMillis(10),[|                                                         // Timer anlegen und starten
            if(lShutter.size >= iShutter) {
                tShutter = 0
                return;
            }
            sendCommand("Rollo_" + lShutter.get(iShutter) + "_Level",lShutterClose.get(iShutter).intValue)   // Shutternamen aus Liste berechnen und mit passendem Wert ansteuern
            tShutter.reschedule(now.plusSeconds(lShutterTime.get(iShutter).intValue))                        // Timer erneut planen
            iShutter = iShutter + 1                                                                          // Zähler erhöhen
        ])
    }
end
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Baumtasche
Beiträge: 82
Registriert: 14. Sep 2020 21:52
Answers: 0

Re: Rule läuft manchmal nicht !

Beitrag von Baumtasche »

Danke für den Hinweis mit ".state" in den If - Anweisungen. Im Skript habe ich es richtig gehabt. War ein Copy - Paste Fehler. Hatte es nachträglich hier ergänzt und falsch gemacht :oops:

Antworten