Komm nicht weiter
- Snatsch
- Beiträge: 455
- Registriert: 9. Jan 2021 22:55
Re: Komm nicht weiter
Wenn ich in einer Rule die nur in der Nacht von 1 bis 6 Uhr triggern soll " if(now.getHour<1 || now.getHour > 6) return;" wird sie bis um 7 Uhr getriggert, Habe ich einen Denkfehler ?
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Komm nicht weiter
Die If-Anweisung ist kein Trigger !!! Wie sieht denn die Rule aus ?
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
- Snatsch
- Beiträge: 455
- Registriert: 9. Jan 2021 22:55
Re: Komm nicht weiter
Sie hier........
var Timer TuerNachtPartyraum = null
rule "Nacht Türe Partyraum geöffnet"
when Item AussentuerePartyraum_TurFensterstatus changed
then
(if (AussentuerePartyraum_TurFensterstatus.state == OPEN){
if(now.getHour <1 || now.getHour >6) return;
MeldungTelegran.sendpostUpdate ("Die Außentüre im Partyraum ist geöffnet wurden")
LEDLeisteTreppenhaus_Schalter.sendCommand (ON)
LEDLeisteKuche_Schalter.sendCommand (ON)
StehleuchteWohnzimmer_Schalter.sendCommand (ON)
}
)
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
if(now.getHour <1 || now.getHour >6) return;
TuerNachtPartyraum = createTimer(ZonedDateTime.now.plusMinutes(10),[|
LEDLeisteTreppenhaus_Schalter.sendCommand (OFF)
LEDLeisteKuche_Schalter.sendCommand (OFF)
StehleuchteWohnzimmer_Schalter.sendCommand (OFF)
])
}
end
var Timer TuerNachtPartyraum = null
rule "Nacht Türe Partyraum geöffnet"
when Item AussentuerePartyraum_TurFensterstatus changed
then
(if (AussentuerePartyraum_TurFensterstatus.state == OPEN){
if(now.getHour <1 || now.getHour >6) return;
MeldungTelegran.sendpostUpdate ("Die Außentüre im Partyraum ist geöffnet wurden")
LEDLeisteTreppenhaus_Schalter.sendCommand (ON)
LEDLeisteKuche_Schalter.sendCommand (ON)
StehleuchteWohnzimmer_Schalter.sendCommand (ON)
}
)
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
if(now.getHour <1 || now.getHour >6) return;
TuerNachtPartyraum = createTimer(ZonedDateTime.now.plusMinutes(10),[|
LEDLeisteTreppenhaus_Schalter.sendCommand (OFF)
LEDLeisteKuche_Schalter.sendCommand (OFF)
StehleuchteWohnzimmer_Schalter.sendCommand (OFF)
])
}
end
openhab4.3.1 auf Pi 5 8GB im Docker Portainer&Frontail /Grafana&InfluxDB und mosquitto auf Pi 3 in Docker Portainer/Pi 3 mit Docker zur Datensicherung / Pi 4 4GB Portainer & Deconz
- peter-pan
- Beiträge: 2758
- Registriert: 28. Nov 2018 12:03
- Wohnort: Schwäbisch Gmünd
Re: Komm nicht weiter
Bitte Code immer in Code-Fenster, das ist einfach besser lesbar:
Also, ohne den Code eingehender untersucht zu haben, fällt mir die (komplette) Klammerung der ersten IF-Anweisung auf. Außerdem fragst du 2-mal den Zeitraum ab. Das sollte eigentlich einmal, und zwar direkt nach "then" reichen.
Der Trigger/Auslöser für die Regel ist hier die Statusänderung des Items AussentuerePartyraum_TurFensterstatus
Code: Alles auswählen
var Timer TuerNachtPartyraum = null
rule "Nacht Türe Partyraum geöffnet"
when Item AussentuerePartyraum_TurFensterstatus changed
then
(if (AussentuerePartyraum_TurFensterstatus.state == OPEN){
if(now.getHour <1 || now.getHour >6) return;
MeldungTelegran.sendpostUpdate ("Die Außentüre im Partyraum ist geöffnet wurden")
LEDLeisteTreppenhaus_Schalter.sendCommand (ON)
LEDLeisteKuche_Schalter.sendCommand (ON)
StehleuchteWohnzimmer_Schalter.sendCommand (ON)
}
)
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
if(now.getHour <1 || now.getHour >6) return;
TuerNachtPartyraum = createTimer(ZonedDateTime.now.plusMinutes(10),[|
LEDLeisteTreppenhaus_Schalter.sendCommand (OFF)
LEDLeisteKuche_Schalter.sendCommand (OFF)
StehleuchteWohnzimmer_Schalter.sendCommand (OFF)
])
}
end
Code: Alles auswählen
var Timer TuerNachtPartyraum = null
rule "Nacht Türe Partyraum geöffnet"
when
Item AussentuerePartyraum_TurFensterstatus changed
then
if(now.getHour <1 || now.getHour >6) return;
if (AussentuerePartyraum_TurFensterstatus.state == OPEN){
MeldungTelegran.sendpostUpdate ("Die Außentüre im Partyraum ist geöffnet worden")
LEDLeisteTreppenhaus_Schalter.sendCommand (ON)
LEDLeisteKuche_Schalter.sendCommand (ON)
StehleuchteWohnzimmer_Schalter.sendCommand (ON)
}
if (AussentuerePartyraum_TurFensterstatus.state == CLOSED){
TuerNachtPartyraum = createTimer(ZonedDateTime.now.plusMinutes(10),[|
LEDLeisteTreppenhaus_Schalter.sendCommand (OFF)
LEDLeisteKuche_Schalter.sendCommand (OFF)
StehleuchteWohnzimmer_Schalter.sendCommand (OFF)
])
}
end
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian
- udo1toni
- Beiträge: 15249
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Komm nicht weiter
Ja, Du hast einen Denkfehler. Die Grenze soll 6 Uhr sein, also um 6 Uhr nicht mehr ausführen, aber um 05:59:59 soll noch ausgeführt werden. Die zweite Abbruchbedingung muss also >5 heißen, now.getHour liefert einen Integer Wert, das ist exakt die Zahl vor dem ersten Doppelpunkt (um 05:59:59 also eine 5, um 06:00:00 eine 6)
Ansonsten hat peter-pan es ja schon erläutert...
Im ersten Teil hast Du außerdem ein sendpostUpdate drin stehen, das gibt es natürlich nicht. Sauber (und um unnötige Teile erleichtert) sieht die Rule so aus:
Achte bitte auch auf die Leerzeichen. Es mag an einigen Stellen keine Auswirkungen haben, hilft aber dabei, die Zusammenhänge zu verstehen.
Die Sache mit den Klammern...
eine bedingte Verzweigung wirkt nur auf den nächsten Befehl. Damit mehrere Befehle bedingt ausgeführt werden, muss man sie also "gruppieren", das geschieht mit den geschweiften Klammern. Alles von { bis } wird also als Block betrachtet. Der else-Teil wirkt ebenfalls nur auf den ersten Befehl. Dieser Befehl ist aber das createTimer(). Der Codeblock ist ein Parameter von createTimer, für else spielt dieser Teil also keine Rolle.
Ansonsten hat peter-pan es ja schon erläutert...
Im ersten Teil hast Du außerdem ein sendpostUpdate drin stehen, das gibt es natürlich nicht. Sauber (und um unnötige Teile erleichtert) sieht die Rule so aus:
Code: Alles auswählen
var Timer TuerNachtPartyraum = null
rule "Nacht Türe Partyraum geöffnet"
when
Item AussentuerePartyraum_TurFensterstatus changed
then
if(now.getHour == 0 || now.getHour > 5) return; // Abbruch vor 1 Uhr und nach 6 Uhr
TuerNachtPartyraum?.cancel // Falls ein Timer läuft: Abbruch
if(AussentuerePartyraum_TurFensterstatus.state == OPEN) { // Kontakt offen:
MeldungTelegran.postUpdate("Die Außentüre im Partyraum ist geöffnet worden")
LEDLeisteTreppenhaus_Schalter.sendCommand(ON)
LEDLeisteKuche_Schalter.sendCommand(ON)
StehleuchteWohnzimmer_Schalter.sendCommand(ON)
} else // Kontakt nicht offen (also geschlossen):
TuerNachtPartyraum = createTimer(ZonedDateTime.now.plusMinutes(10), [|
LEDLeisteTreppenhaus_Schalter.sendCommand(OFF)
LEDLeisteKuche_Schalter.sendCommand(OFF)
StehleuchteWohnzimmer_Schalter.sendCommand(OFF)
])
end
Die Sache mit den Klammern...
eine bedingte Verzweigung wirkt nur auf den nächsten Befehl. Damit mehrere Befehle bedingt ausgeführt werden, muss man sie also "gruppieren", das geschieht mit den geschweiften Klammern. Alles von { bis } wird also als Block betrachtet. Der else-Teil wirkt ebenfalls nur auf den ersten Befehl. Dieser Befehl ist aber das createTimer(). Der Codeblock ist ein Parameter von createTimer, für else spielt dieser Teil also keine Rolle.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet
-
- Beiträge: 26
- Registriert: 31. Okt 2020 10:45
Re: Komm nicht weiter
Hallo,
ich lesen und lerne hier im Forum begeistert mit! Wirklich klasse
Bei diesen Szenario hier komme ich leider nicht weiter. Ich arbeite mit VC Code und lege dort eine Rule für den Callmebot an. VS meckert bei "import java.net.URLEncoder". Missing EOF. Ich habe keine Ahnung und keinen Ansatz, wo das Problem liegt. Könnt ihr mir vielleicht einen Tipp geben?
ich lesen und lerne hier im Forum begeistert mit! Wirklich klasse

Bei diesen Szenario hier komme ich leider nicht weiter. Ich arbeite mit VC Code und lege dort eine Rule für den Callmebot an. VS meckert bei "import java.net.URLEncoder". Missing EOF. Ich habe keine Ahnung und keinen Ansatz, wo das Problem liegt. Könnt ihr mir vielleicht einen Tipp geben?
-
- Beiträge: 1173
- Registriert: 4. Nov 2019 22:08
Re: Komm nicht weiter
Hallo und willkommen.udi hat geschrieben: ↑13. Mär 2022 18:44 Hallo,
ich lesen und lerne hier im Forum begeistert mit! Wirklich klasse![]()
Bei diesen Szenario hier komme ich leider nicht weiter. Ich arbeite mit VC Code und lege dort eine Rule für den Callmebot an. VS meckert bei "import java.net.URLEncoder". Missing EOF. Ich habe keine Ahnung und keinen Ansatz, wo das Problem liegt. Könnt ihr mir vielleicht einen Tipp geben?
Ein anderes Thema zu anektieren ist meist nicht so optimal, gerade wenn der Titel so allgemein gültig ist.
Evtl. machst Du einen neuen Thread auf, und beschreibst in Titel und Text Dein Problem??
z.B. auch warum Du eine Java Libary importieren möchtest?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 26
- Registriert: 31. Okt 2020 10:45
Re: Komm nicht weiter
dsa gebe ich dir auch Recht. Da die Ausgangssituation für diesen Thread genau meiner entsprache, dachte ich aber ich klinke mich mal eben ein
Ich konnte das Problem heute Nacht nun nach 10 Stunden suchen und probieren selber lösen. Meine rules Datei beinhaltet eine Vielzahl an Regeln. Die betroffene Regel steht am Ende (zuletzt hinzugefügt). Die Zeile import java... darf nicht direkt über der betroffenen Regel stehen, sondern muss an den Anfang der Datei. Ich hoffe, ich bin der Einzige, der damit so viel Zeit verschwendet hat

Ich konnte das Problem heute Nacht nun nach 10 Stunden suchen und probieren selber lösen. Meine rules Datei beinhaltet eine Vielzahl an Regeln. Die betroffene Regel steht am Ende (zuletzt hinzugefügt). Die Zeile import java... darf nicht direkt über der betroffenen Regel stehen, sondern muss an den Anfang der Datei. Ich hoffe, ich bin der Einzige, der damit so viel Zeit verschwendet hat

-
- Beiträge: 1173
- Registriert: 4. Nov 2019 22:08
Re: Komm nicht weiter
Genau, und ebenso globale Variblen

openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3
-
- Beiträge: 26
- Registriert: 31. Okt 2020 10:45
Re: Komm nicht weiter
Danke acuh für den Tipp! Ich stelle alle rules gerade um auf Anlage per Text Datei. Durch die Erstellung im Frontend von OH hat man ja nicht wirklich viel mit Java zu tun. Ich hoffe, ich quäle mich da erfolgreich durch 
