Seite 1 von 2
Rule für Dämmerung
Verfasst: 3. Dez 2021 10:58
von hulda
Problem:
wie kann ich es lösen wenn der Hauptschalter"automatik_sd03" geschalten ist und der
Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert "
die Steckdose Sd_03_EZ01_2OG geschalten wird.
Ansonsten soll dann einfach alles aus gehen.
Später soll nach der eingestellten Uhrzeit "uhrzeit_schalten_sd03" alles aus geschalten werden.(dafür habe ich noch gar keinen Plan)
Gruß Dirk
Items
Code: Alles auswählen
Number uhrzeit_schalten_sd03
Switch Sd_03_EZ01_2OG
Number Daemmerungswerteinstellen_sd03
Number Daemmerungswert
Switch automatik_sd03
rule
Code: Alles auswählen
rule "Dämmerungsschalter Fenster Esszimmer"
when
Item Daemmerungswert received update
then
if (automatik_sd03.state != ON)
{
if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number)
Sd_03_EZ01_2OG.postUpdate(ON)
else{
Sd_03_EZ01_2OG.postUpdate(OFF)
}
}
else{
Sd_03_EZ01_2OG.postUpdate(OFF)
}
end
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 11:58
von int5749
hulda hat geschrieben: ↑3. Dez 2021 10:58
Problem:
wie kann ich es lösen wenn der Hauptschalter"automatik_sd03" geschalten ist und der
Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert "
die Steckdose Sd_03_EZ01_2OG geschalten wird.
Ansonsten soll dann einfach alles aus gehen.
Später soll nach der eingestellten Uhrzeit "uhrzeit_schalten_sd03" alles aus geschalten werden.(dafür habe ich noch gar keinen Plan)
Also ich fange mal mit meinem Problem an, denn ich habe die Anforderung mit der Rule noch nicht verstanden.
1) Du möchtest etwas ausführen, wenn ein Schalter = ON ist. Fragst aber
!= ON
ab, was ein
nicht ON ist
2) Du schreibst
Daemmerungswerteinstellen_sd03 Wert kleiner als der" Daemmerungswert " fragst dies aber anders herum ab. Hier passt -mein Verständnis - Anforderung und Umsetzung nicht. Da aber der Wert
Daemmerungswert wäre es sogar richtig umgesetzt
3) Zudem hattest Du noch einen Code-Fehler, es fehlen einige Klammern.
4) Ich habe den Code mit etwas Formatierung/Einrücken der Bausteine eine - zumindest für mich - übersichtliche Formatierung erstellt.
Versuch einmal wie folgt
Code: Alles auswählen
rule "Dämmerungsschalter Fenster Esszimmer"
when
Item Daemmerungswert received update
then
if (automatik_sd03.state == ON) {
if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) {
Sd_03_EZ01_2OG.postUpdate(ON)
} else {
Sd_03_EZ01_2OG.postUpdate(OFF)
}
} else {
Sd_03_EZ01_2OG.postUpdate(OFF)
}
end
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 13:18
von peter-pan
Hab auch nicht alles verstanden, aber könnte es sein, das die Regel, dann eingesetzt werden soll, wenn die Automatik nicht läuft ???
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 14:18
von hulda
so passt es...
Code: Alles auswählen
rule "Dämmerungsschalter Fenster Esszimmer"
when
Item Daemmerungswert received update or //wenn eins von beiden ausgelöst
Item automatik_sd03 received update
then
if (automatik_sd03.state == ON) { //wenn der Schalter auf ein steht
if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) { //wenn der Daemmerungswert kleiner ist als Daemmerungswerteinstellen_sd03
Sd_03_EZ01_2OG.postUpdate(ON) //dann Steckdose ein
} else {
Sd_03_EZ01_2OG.postUpdate(OFF) //ansonsten Steckdose aus
}
}
end
wie kann man die Steckdose Sd_03_EZ01_2OG
nach dieser eingestellten Zeit "uhrzeit_schalten_sd03" ausschalten?
oder ist es viel einfacher es mit einer weiteren Rule einfach so zu machen?
Code: Alles auswählen
rule "Dämmerungsschalter Fenster Esszimmer aus"
when
Time cron "0 0 21 * * ?" // täglich um 21 Uhr
then
Sd_03_EZ01_2OG.postUpdate(OFF)
end
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 14:49
von int5749
Kleiner Tipp, Du solltest sendCommand() nutzen, anstatt postUpdate. Denn nur das sendet (wie das wort sagt) ein Kommando und forciert so einen Statuswechsel. In vielen Fällen funktioniert zwar ein postUpdate() aber ein Command ist sicherer für den Status.
Auch könntest Du den Status abfragen bevor Du unnötigerweise ein erneutes Kommando sendest.
Beispiel aus Deiner Rule
Code: Alles auswählen
} else {
if (Sd_03_EZ01_2OG == ON)
Sd_03_EZ01_2OG.sendCommand(OFF) //ansonsten Steckdose aus
}
Dies sendet ein OFF nur, wenn die Lampe/Steckdose eingeschaltet ist.
PS: Geht natürlich auch anders herum für das einschalten.
Ob Du nun mit einem Timer in der Rule arbeitest oder eine separate Rule nutzen möchtest um dies unabhängig zu schalten, obliegt Deinen Anforderungen. Wenn Du das item auch ausserhalb der Rule schalten kannst, ist eine separate Rule ggfs sicherer um das item zum gewünschtem Zeitpunkt immer auszuschalten. Wenn das Item nur und ausschließlich in der Rule geschaltet würde, könnte man mit einem Timer arbeiten.
Viele Grüße
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 19:41
von hulda
peter-pan hat geschrieben: ↑3. Dez 2021 13:18
Hab auch nicht alles verstanden, aber könnte es sein, das die Regel, dann eingesetzt werden soll, wenn die Automatik nicht läuft ???
nein umgedreht.. wenn automatik dann soll die Regel eingesetzt werden.
Also wie ein Hauptschalter
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 20:36
von peter-pan
Dann passt das ja, was @int5749 vorschlägt.
Re: Rule für Dämmerung
Verfasst: 3. Dez 2021 21:34
von int5749
Eine Idee für eine Abschaltung um 21 Uhr wäre
Code: Alles auswählen
var Timer tLightsDusk = null // dies muss nach ganz oben in der Rules Datei
rule "Dämmerungsschalter Fenster Esszimmer"
when
Item Daemmerungswert received update or //wenn eins von beiden ausgelöst
Item automatik_sd03 received update
then
if ((automatik_sd03.state == ON) && (Sd_03_EZ01_2OG.state == OFF)) { //wenn der Schalter auf ein steht und die Steckdose noch aus ist
if (Daemmerungswert.state <= Daemmerungswerteinstellen_sd03.state as Number) { //wenn der Daemmerungswert kleiner ist als Daemmerungswerteinstellen_sd03
Sd_03_EZ01_2OG.sendCommand(ON) //dann Steckdose ein
tLightsDusk?.cancel
tLightsDusk = createTimer(now.plusMinutes(Duration.between(LocalTime.now, LocalTime.now.withHour(21).withMinute(0)).toMinutes()),[|
Sd_03_EZ01_2OG.sendCommand(OFF) //ansonsten Steckdose aus
])
}
}
end
Aber dies ist ungetestet und nur ein Weg nach Rom.
Re: Rule für Dämmerung
Verfasst: 7. Dez 2021 08:29
von hulda
Hallo,
erst einmal vielen Dank für deine Mühen...
ich habe es mal ausprobiert. Aber irgendwie verstehe ich das nicht.
Muß nicht noch eine Zeit rein ab wann die Steckdose überhaupt wieder eingeschaltet werden darf? z.B 10 uhr oder wenn es wieder Hell geworden ist?
Gruß Dirk
Re: Rule für Dämmerung
Verfasst: 7. Dez 2021 08:36
von int5749
hulda hat geschrieben: ↑7. Dez 2021 08:29
ich habe es mal ausprobiert. Aber irgendwie verstehe ich das nicht.
Hat es denn funktioniert??
hulda hat geschrieben: ↑7. Dez 2021 08:29
Muß nicht noch eine Zeit rein ab wann die Steckdose überhaupt wieder eingeschaltet werden darf? z.B 10 uhr oder wenn es wieder Hell geworden ist?
Müssen muß es nicht und war von Dir auch ncht angegeben. Du kannst die Steckdose quasi direkt wieder einschalten, wenn Du magst.
Es wird ja "nur" geschaltet, nichts gesperrt.
Viele Grüße und einen guten Start in den Tag.