var und val

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Re: var und val

Beitrag von udo1toni »

Guck mal oben. Variablen sind nur in dem Konext gültig, in dem die definiert wurden. Wenn Du die Variable für einen Timer innerhalb der Rule definierst, existiert die Variable nach Ablauf der Rule nicht mehr, obwohl der Timer sehr wohl noch existiert.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: var und val

Beitrag von Boxana »

drum ja auch am Anfang der Datei.
Nur kann ich dann den Timer in jeder Rule dieser Datei anhalten.

und wenn ich dann den Timer in eine Variable geparkt habe, kann ich ihn dann auch in der variablen bearbeiten oder muss ich einen neuen timer in die gleiche variable packen?
Openhab auf einem Qnap NAS
Gruß
Christian

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

Re: var und val

Beitrag von udo1toni »

Du kannst einen Timer über die Variable erneut starten (.reschedule) oder aus der Liste der aktiven Timer entfernen (.cancel). Mehr geht nicht. Ein Timer, der abgelaufen ist, ist ebenfalls nicht mehr in der Liste der aktiven Timer vorhanden. Du kannst in einer anderen Rule herausfinden, ob der Timer gerade ausgeführt wird (das heißt, der Timer ist abgelaufen und der Code wurde gestartet, ist aber noch nicht zu Ende abgearbeitet), was aber in openHAB tendenziell eher nutzlos ist - gewöhnlich läuft Code nur wenige Millisekunden, die Chance ist also gering, dass man jemals den Zeitpunkt trifft. Falls eine Rule gewöhnlich wesentlich länger als einige zehn Millisekunden benötigt, kann man davon ausgehen, dass die Rule schlecht programmiert wurde.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: var und val

Beitrag von Boxana »

Variable werden nicht meine freunde.
Ich habe eine Antwort von dir als anregung genommen und dachte mir, das ist eine gute Idee.
Weit gefehlt.

https://knx-user-forum.de/forum/support ... aktivieren

Ich habe das mit den Case Anweisungen mal aufgenommen und am Anfang der Datei x.rules Diese Variablen deklariert.

Code: Alles auswählen

var Timer GA_TIMER = null
var Number var_AUTOSwitch = 0
Die regel um den timer zu starten/stopen habe ich jetzt so angelegt:

Code: Alles auswählen

rule "Automaic"
when
    Item Garage_Automatic changed or Item var_AUTOSwitch changed
then
    logInfo("d_Garage", "Timer Case")
    switch (var_AUTOSwitch) {
               case 0: {
                   if (GA_TIMER !== null){
                        GA_TIMER.cancel
                        GA_TIMER = null
                        logInfo("d_Garage","Timer abgebrochen")
                        }
               }
               case 1: {
                   if (Garage_Automatic == ON) {
                       val Integer GARAGE_OT = (garage_time_to_close.state as DecimalType).intValue
                        GA_TIMER = createTimer(now.plusMinutes(GARAGE_OT)) [
                        |sendCommand(GA_To_zu_Stop,ON)
                        logInfo("d_Garage","Timer gestartet")
                ]   }
               }
                default: {
                   logInfo("d_Garage","Timer nichts machen")

                }
    }
end 
weiter wie "logInfo("d_Garage", "Timer Case")" geht es nicht.
2020-03-20 11:59:03.594 [INFO ] [ipse.smarthome.model.script.d_Garage] - Timer Case
fehler kommen auch keine.
==> share/MD0_DATA/.qpkg/OpenHab/userdata/logs/openhab.log <==
2020-03-20 12:06:35.904 [INFO ] [ipse.smarthome.model.script.d_Garage] - Timer Case

==> share/MD0_DATA/.qpkg/OpenHab/userdata/logs/events.log <==
2020-03-20 12:06:35.900 [ome.event.ItemCommandEvent] - Item 'Garage_Automatic' received command ON
2020-03-20 12:06:35.903 [vent.ItemStateChangedEvent] - Garage_Automatic changed from OFF to ON

den wert für "var Number var_AUTOSwitch" setze ich in den betreffenden abschnitten der einzelnen rule's

ein auschnitt der Rule's

Code: Alles auswählen

rule "Garagentor != auf und zu status"
when
   Item Garagen_Tor_bewegung changed 
then
    if (Garagen_Tor_bewegung.state == ON ){
        var_AUTOSwitch = 0
        if (Garage_AUF_ZU.state as Number == 1  ){
            d_Garage_Statussmeldung.sendCommand("Das Garagentor fährt hoch!")
            Garage_Statuss_senden.sendCommand(" fährt auf.  ")
        } else {
            var_AUTOSwitch = 0
            d_Garage_Statussmeldung.sendCommand("Das Garagentor fährt runter!")
            Garage_Statuss_senden.sendCommand(" fährt zu.   ")
        }
    }
    else if   ((Garagen_Tor_bewegung.state == OFF )&&(Garagen_Tor_unten.state == OFF ) && (Garagen_Tor_oben.state == OFF )) {
        var_AUTOSwitch = 1
        d_Garage_Statussmeldung.sendCommand("Garagentor wurde angehalen!")
        Garage_Statuss_senden.sendCommand(" angehalten! ")    
    }
    
end
Openhab auf einem Qnap NAS
Gruß
Christian

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: var und val

Beitrag von Boxana »

habe gemerkt das man auf eine Variable nicht triggern kann und schon gar nicht wenn man auch noch vor eine variable fälschlicherweise item schreibt.

Code: Alles auswählen

or Item var_AUTOSwitch changed
Openhab auf einem Qnap NAS
Gruß
Christian

Antworten