Seite 1 von 1

Openhab3 Rules für Sonnenlichtsteuerung

Verfasst: 17. Mai 2021 21:42
von Hoggle
Hallo zusammen.
Ich bin im Moment dabei, die Rules aus OH2 nach OH3 zu übertragen.
Erst dachte ich mir, einfach die Dateien rüber kopiert und fertig.

Eigentlich einfach, ABER, da ich nicht von zuhause arbeite, sondern Gott-sei-Dank, auch in Pandemiezeiten noch ins Büro darf, habe ich mich bei myopenhab.org angemeldet (VPN nach Hause klappt leider momentan nicht, weil ich so grelle auf Glasfaser war und leider keine öffentliche IP4 Adresse bekomme habe (Deutsche Glasfaser). Bin leider nicht so fit, das ich das mit IPv6 hin bekomme, obwohl es tolle Erklärungen im Netz gibt - Ich kann auch nur Beiträge hier posten, wenn ich mich per VPN bei mir in der Firma anmelde, denn dann bekomme ich ein IP, die nicht gesperrt ist).

Zurück zum Thema
also, wenn ich die Rules-Engine in OH3 nutzen möchte, dann muß ich die einzelnen Rules händisch in der Rules Engine eingeben.
Also:
1.png
2.png
3.png
Und der Code, den ich dann in das DSL-Scriptfenster kopiert habe:

Code: Alles auswählen

if (SonnensensorTerrasse_Lux.state < 300) //Es ist Dunkel
             {
				 if (LUX_Wert_Dunkel.state.toString =="OFF") //Vorher war es Hell
				 {
			         LUX_Wert_Dunkel.sendCommand(ON)
				 }
			 }
		if (SonnensensorTerrasse_Lux.state > 500)  //Es wird hell
             {
				 if (LUX_Wert_Dunkel.state.toString =="ON") /Vorher war es Dunkel
				 {
             		LUX_Wert_Dunkel.sendCommand(OFF)
		         }
			 }
		if (SonnensensorTerrasse_Lux.state > 80000) //Volle Sonne
             {
				 if (LUX_Wert_Hell.state.toString =="OFF")
				 {
             		LUX_Wert_Hell.sendCommand(ON)
				 }
		     }
		if (SonnensensorTerrasse_Lux.state < 1000) //Weniger Sonne
             {
				 if (LUX_Wert_Hell.state.toString =="ON")
				 {
             		LUX_Wert_Hell.sendCommand(OFF)
				 }
		     }
		if (SonnensensorTerrasse_Lux.state < 500)
             {
				 if (LUX_Wert_TV.state.toString == "OFF")
				 	{
             			LUX_Wert_TV.sendCommand(ON)
					 }
		     }

		if (SonnensensorTerrasse_Lux.state > 2000)
             {
				 if (LUX_Wert_TV.state.toString == "ON")
				 	{
             			LUX_Wert_TV.sendCommand(OFF)
					 }
		     }
Die Items "LUX_Wert_Dunkel, ...Hell, ...TV sind allesamt als Switch angelegt, die ich "per Hand" auch auf ON und OFF schalten kann.
Was habe ich falsch gemacht?
Die Rule schießt nicht.

Re: Openhab3 Rules für Sonnenlichtsteuerung

Verfasst: 18. Mai 2021 11:01
von Hoggle
Habe noch ein bisschen gelesen.
Kann es daran liegen, das ich bei dem Sonnensensor kein "normales" Number-Item habe, sondern ein Number:Illumin...?-Item?
Habe das irgendwo gestern gelesen, bin mir jetzt aber nicht mehr sicher, ob das ein Grund für das Nicht-auslösen der Rule sein könnte.

Re: Openhab3 Rules für Sonnenlichtsteuerung

Verfasst: 18. Mai 2021 17:10
von geos
Wenn das so ist, musst du bei der Abfrage wahrscheinlich die Einheit mit angeben.
Meines Wissens in der Art "300|Lux" (keine Gewähr)
Siehst du Einträge im Log, wenn die Rule ausgelöst wird?

Re: Openhab3 Rules für Sonnenlichtsteuerung

Verfasst: 19. Mai 2021 00:19
von udo1toni
Number:Illuminance ist ein UoM Item (Units of Measurement), das bedeutet, der Status beinhaltet auch die Einheit, in der gemessen wird. Vorteil: Man kann openHAB anweisen, den Wert in einer bestimmten Einheit auszugeben, ein Messwert in Meter kann in Kilometer oder Millimeter ausgegeben werden, genauso wie in Inch oder Feet (wobei ich bei imperial Units nicht sicher bin, was geht, aber es geht eine Menge)
Nachteil: Ein Vergleich mit anderen Werten kann immer nur erfolgen, wenn beide Werte zueinander passen. Entweder, Du ergänzt die notwendige Einheit beim Vergleichswert (so: if(SonnensensorTerrasse_Lux.state > 500 | lx) ), oder Du entfernst die Einheit beim Messwert (so: if((SonnensensorTerrasse_Lux.state as Number).intValue > 500) ), beide Varianten sind möglich.

Re: Openhab3 Rules für Sonnenlichtsteuerung

Verfasst: 20. Mai 2021 16:31
von Hoggle
@alle: Wie immer einen sehr großen Dank für eure Unterstützung. Probiere ich schnellst möglich aus.