Vielen Dank, das hat mir schon mal ein grosses Stück weiter geholfen.

Der Time cron Ansatz funktioniert also nicht.
Mit now.getMonth funktioniert es bei mir allerdings auch nicht, ich muss now.getMonthOfYear schreiben, dann geht es.
Gibt es eigentlich einen Unterschied zwischen <3 und <= 2? In den meisten Beispielen ist jedenfalls <n+1 benutzt statt <=n.
Zum ersten Punkt: Sehe ich ein. Die Time cron Formulierung wäre in dem Sinne auch kein Event sondern ein Zeitraum von 4 Monaten.
Zum zweiten Punkt: Ein Switch ist für mich etwas das ich aktiv schalten kann, Contact habe ich für Sensorwerte benutzt, wie z.B. Fenstersensoren, Windalarme oder eben Dämmerung aktiv/inaktiv. Sollte aber ja ausser, dass man OPEN statt ON schreiben muss keinen Unterschied machen, oder? Angezeigt in der Sitemap wird bei mir eine Sonne wegen <sun>.
Code: Alles auswählen
Contact dawn2 "Dämmerung 2 [MAP(alarm.map):%s]" <sun> (WG_Wiga,TE_Garage,TE_Wiga,Aussen) { knx = "<5/3/0" }
Zum dritten Punkt: Stimmt schon, aber da bisher alles auch mit dem knx1 Binding funktioniert inkl. HueEmulation und Sprachsteuerung mit Alexa und ich doch einige items habe, hatte ich noch keine Motivation und Zeit das alles auf Things umzuschreiben. Aktuell nutze ich OpenHAB 2.3.0.005 auf einer Synology Diskstation.
Zum vierten Punkt: Triggern auf received command statt changed to habe ich genommen, weil ich dawn2 zyklisch alle 10 Minuten senden lasse und ich eigentlich will, dass jedes Mal das ON bzw. OFF Kommando gesendet wird und nicht nur einmal Abends und einmal Morgens. Hintergrund, falls jemand am Schalter die Steckdose ein- oder ausschaltet, soll das wieder rückgängig gemacht werden und noch wichtiger, wenn wir das Haus verlassen und auf abwesend drücken, geht automatisch die Steckdose auch aus, soll dann aber kurz danach, wenn die Weihnachtsbeleuchtung dran hängt wieder an gehen. Von März bis September soll sie dann aber aus bleiben, daher möchte ich das nicht in der knx Programmierung ändern. Von daher wäre es aber auch nicht so schlimm, wenn dawn2.state erst verzögert aktualisiert wird, dann geht es halt erst 10 Minuten später an oder aus.
Könnte ich das dann so machen?:
Code: Alles auswählen
rule "Weihnachtsbeleuchtung Ein"
when
Item dawn2 received command
then
if (dawn2.state == OPEN && (now.getMonthOfYear < 3 || now.getMonthOfYear > 10))
{
TE_Garage_Steckdose.sendCommand(ON)
}
end
Brauch es die { und }?
sendCommand (xy, ON) funktioniert in meinen anderen rules eigentlich bisher zuverlässig, aber xy.sendCommand (ON) kann ich natürlich auch nehmen, wenn das robuster ist.
Dein Code mit changed to funktioniert auch mit einem Contact, meiner mit received command bisher leider nicht.

Habe das mal testweise mit einem Fenstersensor statt mit dawn2 gemacht, damit ich das aktiv beeinflussen kann. Damit geht immer beim Öffnen des bodentiefen Fensters / der Türe das Licht an und beim Schliessen wieder aus:
Code: Alles auswählen
rule "Weihnachtsbeleuchtung Ein Test Tuere"
when
Item Fenster_GF_Kueche_Ost changed to OPEN // Türe offen (Dämmerung aktiv)
then
if(now.getMonthOfYear < 3 || now.getMonthOfYear > 10)
TE_Garage_Steckdose.sendCommand(ON)
end
rule "Weihnachtsbeleuchtung Aus Test Tuere"
when
Item Fenster_GF_Kueche_Ost changed to CLOSED // Türe zu (Dämmerung inaktiv)
then
if(now.getMonthOfYear < 3 || now.getMonthOfYear > 10)
TE_Garage_Steckdose.sendCommand(OFF)
end