Seite 1 von 2

FritzDECT200

Verfasst: 5. Aug 2019 22:27
von Tom
Hallo, bin neu hier und openhab2 Beginner.
Ich habe gerade eine FritzDECT200 erfolgreich in OH2 eingebunden. Items und sitemap erstellt. Nun möchte ich die Steckdose mit dem eingebauten TempSensor kombinieren, also eine rule erstellen.
folgendes habe ich probiert:

rule "Frostschutz_Stall"

when
Item FRITZDECT200_CurrentTemperature < 30
then
FRITZDECT200_Outlet.sendCommand(OFF);
end

Leider ist das wohl nicht richtig so. Was ist daran falsch und wie muss es richtig lauten

Re: FritzDECT200

Verfasst: 6. Aug 2019 13:23
von udo1toni
So sieht es richtig aus:

Code: Alles auswählen

rule "Frostschutz_Stall"
when
    Item FRITZDECT200_CurrentTemperature changed
then
    if(previousState >= 30 && FRITZDECT200_CurrentTemperature.state < 30 )
        FRITZDECT200_Outlet.sendCommand(OFF)
end
Der when-Teil der Rule beschreibt Trigger. Es können mehrere Trigger angegeben werden, aber keine Bedingungen, die erfüllt sein müssen. Stattdessen muss man solche Bedingungen innerhalb des Execute-Teils abhandeln. Im vorliegenden Fall lautet die Bedingung, dass die Temperatur unter den Grenzwert 30 Grad gesunken ist. Damit die Rule nun nicht pausenlos ausgeführt wird, muss man zwei Bedingungen kombinieren, nämlich alte Temperatur >= 30 und aktuelle Temperatur < 30. previousState ist ist eine implizite Variable, die von openHAB zur Verfügung gestellt wird, wenn der Trigger changed heißt.
Ein Semikolon ist nur bei einer Anweisung notwendig, das ist return(); Damit bricht man die Rule vorzeitig ab.

Re: FritzDECT200

Verfasst: 6. Aug 2019 18:29
von Tom
ich probiere das mal aus und erwärme die DECT mit dem Fön auf 35 Grad, dann warte ich mal ab, aber schon mal vielen Dank für die Erklärung und den Code

Re: FritzDECT200

Verfasst: 6. Aug 2019 18:32
von Tom
schade, hat leider nicht geklappt.

Re: FritzDECT200

Verfasst: 7. Aug 2019 09:36
von Tom
hast Du noch eine Idee Udo? oder wer anders? Das muss es doch schon lange geben. Für Gewächshäuser, etc

Re: FritzDECT200

Verfasst: 7. Aug 2019 16:13
von peter-pan
Wann soll sich denn die Steckdose wieder anschalten ?

Re: FritzDECT200

Verfasst: 7. Aug 2019 17:07
von Thorvald
Oft ist es Hilfreich in die Rules Log infos zu schreiben
Das hilft sehr beim Debugen.

Code: Alles auswählen

rule "Frostschutz_Stall"
when
    Item FRITZDECT200_CurrentTemperature changed
then
     logInfo("Frostschutz_Stall", "Temperatur hat gewechselt")
    if(previousState >= 30 && FRITZDECT200_CurrentTemperature.state < 30 ){
             logInfo("Frostschutz_Stall", "Comando senden")
            FRITZDECT200_Outlet.sendCommand(OFF)
         }
end
mithilfe der Loginfos kann man sehen an welcher Stelle es hängt

Grüße aus dem Norden

Re: FritzDECT200

Verfasst: 7. Aug 2019 18:31
von peter-pan
Hallo Tom,
ich denke, das Problem ist die If-Abfrage. Du verwendest, wie ich, sicherlich das UoM-System, welches im Fritz-Binding Standard ist. Dann sollte deine Regel etwa so aussehen:

Code: Alles auswählen

rule "Frostschutz_Stall"
when
    Item Socket_Fritz_02_Temp changed
then
        logInfo("Frostschutz_Stall", "Commando senden" +  Socket_Fritz_02 + " Temp.: " + Socket_Fritz_02_Temp + " previous State : " + previousState)  // Test
        if( (Socket_Fritz_02_Temp.state as Number).floatValue < 25 && (previousState as Number).floatValue >= 25) {
              logInfo("Frostschutz_Stall", "Comando senden" +  Socket_Fritz_02)
              Socket_Fritz_02.sendCommand(OFF)
	}
end
/*
Alternativ:
    if(Socket_Fritz_02_Temp.state < 24.6 | °C)
*/

Re: FritzDECT200

Verfasst: 7. Aug 2019 19:10
von Tom
super und vielen dank, probier ich gleich aus.
letzlich soll die Stchdose bei weniger als 5 Grad angehen, ist abergerade schwer auszuprobieren. deshalb hslte ich einen Fön davor und dann sollte sie beim abkühlen ausgehen

Re: FritzDECT200

Verfasst: 7. Aug 2019 19:19
von Tom
achso, in der sitemap wird der aktuelle Temperaturwert richtig angezeigt