Seite 1 von 1

OH3 Problem mit Rule aus OH2

Verfasst: 3. Aug 2021 11:14
von Hoggle
Hallo.
Kurze, und wahrscheinlich für viele, eine einfache Frage:

Ich habe eine Rule aus OH2.5 nach OH3 kopiert und jetzt löst die Rule nicht aus
Folgende konfiguration:
1. Items:

LokaleSonnendaten_Azimut als Number:Angle vom Astro-Binding
LUX_Sued_Zeit und LUX_West_Zeit als einfacher Dummy Switch


Im "then"-Teil setze ich 2 Items auf ON oder OFF, je nach Sonnenstand, um meine Rollläden für den Sonnenschutz nur zu bestimmten Zeiten zu nutzen, nämlich nur, wenn die Sonne auch auf der Seite steht. In einer weiteren Rule frage ich noch die Aussentemperatur meines HM-Thermometers und die LUX-Zahl meines HM-Sonnensensorsab (Der Teil funktioniert).

Hier die Rule, die als DSL-Script direkt in der UI eingegeben (aus OH2 kopiert ;) ) wurde:

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: LokaleSonnendaten_Azimut
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: |-
        if (LokaleSonnendaten_Azimut.state > 88)
                     {
        				 if (LokaleSonnendaten_Azimut.state < 265)
        				 	{
                     			if (LUX_Sued_Zeit.state.toString != "ON")
        				 			{
        						 		LUX_Sued_Zeit.sendCommand(ON)
        							}
        					 }
        		     }
        		
        		if (LokaleSonnendaten_Azimut.state > 265)
                     {	
        				if (LUX_Sued_Zeit.state.toString != "OFF")
        				 	{		
                     			LUX_Sued_Zeit.sendCommand(OFF)
        					}
        		     }

        		if (LokaleSonnendaten_Azimut.state > 175)
                     {
        				 if (LokaleSonnendaten_Azimut.state < 305)
        				 	{
        						 if (LUX_West_Zeit.state.toString != "ON")
        				 			{
        						 		LUX_West_Zeit.sendCommand(ON)
        							}
        					}
        		     }
        		
        		if (LokaleSonnendaten_Azimut.state > 305)
                     {	
                     	if (LUX_West_Zeit.state.toString != "OFF")
        				 			{
        						 		LUX_West_Zeit.sendCommand(OFF)
        							}
        							
        		     }
    type: script.ScriptAction
Soeben wurde der Azumut wieder aktualisiert:

Code: Alles auswählen

2021-08-03 11:04:45.787 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'LokaleSonnendaten_Azimut' changed from 124.37725241558229 ° to 125.8000548185285 °
Leider bleibt "LUX_Sued_Zeit.state" weiterhin "OFF", obwohl lt Definition der Wert von 125.... größer als 88 und kleiner als 265 ist.

Kann mir jemand weiterhelfen?

Re: OH3 Problem mit Rule aus OH2

Verfasst: 3. Aug 2021 17:24
von peter-pan
Warum lässt du Regel nicht einfach so weiter laufen wie vorher unter OH2(in Textform).

Re: OH3 Problem mit Rule aus OH2

Verfasst: 4. Aug 2021 01:36
von udo1toni
Die Rule kann schon unter OH2 nicht funktioniert haben (jedenfalls nicht so, wie Du sie hier postest).
Das Astro Binding nutzt UoM, und das war auch in openHAB2 schon der Fall. Sinnvoller wäre es in diesem Fall aber eh, eine lokale Variable zu verwenden.

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: LokaleSonnendaten_Azimut
    type: core.ItemStateChangeTrigger
conditions: []
actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: |-
        val nAzimut = (LokaleSonnendaten_Azimut.state as Number).floatValue
        if (nAzimut > 88 && nAzimut < 265) 
            if (LUX_Sued_Zeit.state != ON) LUX_Sued_Zeit.sendCommand(ON)
        if (nAzimut > 265) 
            if(LUX_Sued_Zeit.state != OFF) LUX_Sued_Zeit.sendCommand(OFF)
        if(nAzimut > 175 && nAzimut < 305) 
             if(LUX_West_Zeit.state != ON) LUX_West_Zeit.sendCommand(ON)
        if(nAzimut > 305) 
            if(LUX_West_Zeit.state != OFF) LUX_West_Zeit.sendCommand(OFF)
    type: script.ScriptAction
Die Klammern {} sind in diesme Fall unnötig, denn es wird jeweils nur ein Befehl bedingt ausgeführt (auch wenn man die doppelten Bedingungen vereinzelt, was aber hier nicht sinnvoll ist (durch die Schreibweise mit logischem AND wird deutlich, dass es um einen Bereich geht).

Re: OH3 Problem mit Rule aus OH2

Verfasst: 4. Aug 2021 10:42
von Hoggle
@Peter-Pan: Ich möchte gerne, wenn möglich, alles in die UI integrieren, da ich viel mit meinem Tablett mache und dort kein vernünftiger Editor für die Dateien vorhanden ist (Oder kennt jemand einen, der unter Android vernünftig die OH Dateien bearbeiten kann?)

@udo1Toni: Wie würde meine Oma gesagt haben: "Kind, muss du nich irgendwann auch mal schlafen? - Egal, aber dank deiner nächtlichen Unterstützung geht die Rule. Ich muß aber dann doch noch einmal das alte System hoch fahren, denn die Schalter wurden definitiv geschaltet, aber vielleicht hatte ich auch eine alte Rule kopiert. Egal, jetzt kann der Urlaub kommen, denn mein Haus weiss, was es zu tun hat.