Seite 3 von 3
Re: Fehler in Rule
Verfasst: 6. Nov 2020 21:01
von udo1toni
Puh. Auf Anhieb sehe ich jetzt keinen Fehler. Du könntest versuchen, die Fehlerursache etwas einzukreisen, z.B. indem Du nicht now.withDate() verwendest, sondern new DateTime.withDate(). Notfalls könntest Du diesen Faktor in eine Konstante auslagern, also so:
Code: Alles auswählen
val nAdvStart = new DateTime.withDate(now.year,11,26).getDayOfYear
Natürlich innerhalb der Rule, also als lokale Konstante.
Du könntest natürlich auch direkt das DateTime Objekt füllen:
Code: Alles auswählen
val nAdvStart = new DateTime(now.year,11,26,0,0).getDayOfYear
Die beiden letzten Werte sind dann für Stunde und Minute.
Re: Fehler in Rule
Verfasst: 6. Nov 2020 23:24
von peter-pan
SaschaQ hat geschrieben: ↑6. Nov 2020 18:47
Woran liegt das?
Ich hatte grad etwas Zeit

...
Warscheinlich meinst du:
bzw. die ganze Rule:
Code: Alles auswählen
rule "Weihnachtsbeleuchtung Anfang November bis Mitte Januar"
when
Item ws_daemmerung changed
then
if((now.getDayOfYear > now.withDate(now.getYear,11,26).getDayOfYear || now.getDayOfYear < 16)) {
if(ws_daemmerung.state == OPEN) {
au_terrasse_st.sendCommand(ON)
au_eingang_st.sendCommand(ON)
au_garten_brightness.sendCommand(70)
au_vorgarten_brightness.sendCommand(70)
} else {
au_eingang_st.sendCommand(OFF)
au_terrasse_st.sendCommand(OFF)
}
}
end
Re: Fehler in Rule
Verfasst: 7. Nov 2020 12:06
von udo1toni
Sollte eigentlich beides gehen. Unter OH3 sieht das anders aus, wie ich gestern gelesen habe - ausprobiert habe ich noch nicht... unter OH3 gibt es eh kein joda...
Re: Fehler in Rule
Verfasst: 7. Nov 2020 13:08
von peter-pan
udo1toni hat geschrieben: ↑7. Nov 2020 12:06
Sollte eigentlich beides gehen
Hab's mit einer kleinen Rule ausprobiert. Aber irgendwie will's nicht klappen.
Rule:
Code: Alles auswählen
rule "Weihnachtsbeleuchtung Anfang November bis Mitte Januar test if-Bedingung"
when
Item Dummy_4 changed to ON
then
var vDayOfYear = now.getDayOfYear
var vYear1 = now.year() // auch ohne Klammern das gleiche Ergebnis
var vYear2 = now.withDate(now.getYear,11,26).getDayOfYear //.toString("yy.mm.dd")
logInfo("datumtest1", "day of the year is {} - vYear2 {} ", vDayOfYear, vYear2)
logInfo("datumtest1", "day of the year is vYear1 {} ", vYear1)
end
Das Ergebnis im Logger:
Code: Alles auswählen
2020-11-07 12:59:10.887 [INFO ] [se.smarthome.model.script.datumtest1] - day of the year is 312 - vYear2 331
2020-11-07 12:59:10.890 [INFO ] [se.smarthome.model.script.datumtest1] - day of the year is vYear1 Property[year]
Die Variable "vYear1 bringt als Ergebnis "Property[year]". gibt's da noch etwas, was man machen muss ?
Da ich ja Dank deiner Hilfe auch mal in OH3 reingeschnuppert habe und auch eine kleine Rule zum Umwandeln eines Datums erstellt habe, habe ich das auch feststellen dürfen, dass es keine Joda-Time mehr gibt. Aber mehr dazu (vor allem Fragen) an anderer Stelle.