var und val
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: var und val
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
- Boxana
- Beiträge: 125
- Registriert: 19. Feb 2020 16:24
Re: var und val
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?
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
Gruß
Christian
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: var und val
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
- Boxana
- Beiträge: 125
- Registriert: 19. Feb 2020 16:24
Re: var und val
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.
Die regel um den timer zu starten/stopen habe ich jetzt so angelegt:
weiter wie "logInfo("d_Garage", "Timer Case")" geht es nicht.
den wert für "var Number var_AUTOSwitch" setze ich in den betreffenden abschnitten der einzelnen rule's
ein auschnitt der Rule's
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
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
fehler kommen auch keine.2020-03-20 11:59:03.594 [INFO ] [ipse.smarthome.model.script.d_Garage] - Timer Case
==> 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
Gruß
Christian
- Boxana
- Beiträge: 125
- Registriert: 19. Feb 2020 16:24
Re: var und val
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
Gruß
Christian