Hallo Ihr Lieben, ich sehe denn Wald vor Bäumen nicht.

Begonnen von xhabit, 15 Februar 2015, 09:12:14

Vorheriges Thema - Nächstes Thema

xhabit

Hallo Zusammen,

vor einiger Zeit habe ich Fhem für mich entdeckt und seit dem ich stöbere ich mich nun fast jeden Abend durch das Fhem Universum.
Und an einer Sache komme ich irgendwie nicht weiter, vielleicht sieht ja jemand denn Fehler sofort.

Zur Gegebenheit: Wir haben eine Aussentoilette welche wir Hauptsächlich im Sommer nutzen und der ganze Besuch nicht immer durch die
ganze Wohnung trampeln muss. Im Winter möchte ich sie Forstfrei halten. Ich habe einen OWFS AussenFühler und Aktor im KaltenBad.

und hier die Regel für Fhem:


AussenT5cm.temperature:.* { if (ReadingsVal("AussenT5cm","temperature:",0.5) > 2)
{ fhem("set KaltBadHeizen off") if (Value("KaltBadHeizen") eq "on")}
else { fhem("set KaltBadHeizen on") if (Value("KaltBadHeizen") eq "off")}}



Aber es wird nicht Korrekt geschaltet. Weiss jemand warum??

Lieber Gruß,
xhabit

 

marvin78

Zum einen wäre ein ein besserer Titel ganz gut.

Außerdem habe ich mal ein wenig Ordnung in dein notify gebracht:

AussenT5cm.temperature:.* {
  if (ReadingsVal("AussenT5cm","temperature:",0.5) > 2) {
    fhem("set KaltBadHeizen off") if (Value("KaltBadHeizen") eq "on");

else {
   fhem("set KaltBadHeizen on") if (Value("KaltBadHeizen") eq "off")
  }
}


Dann kannst du das ganze auch so schreiben:


AussenT5cm.temperature:.* {
  if (ReadingsVal("AussenT5cm","temperature:",0.5) > 2) {
    fhem("set KaltBadHeizen:FILTER=STATE=on off");

else {
   fhem("set KaltBadHeizen:FILTER=STATE!=on on");
  }
}


Aber auch das ist noch zu kompliziert. Du musst schauen, wie dein Event aussieht. Ich denke nicht, dass das wirklich "temperature:" mit Doppelpunkt heißt. Außerdem musst du nicht noch einmal das ReadingsVal auslesen, wenn doch der Wert schon im EVENT für das notify steht. Wie das Event aber wirklich aussieht, musst du herausfinden (vermutlich steht die Temperatur in $EVTPART1). Ist das der Fall, sieht das ganze eher so aus:

AussenT5cm.temperature:.* {
  if ($EVTPART1 > 2) {
    fhem("set KaltBadHeizen:FILTER=STATE=on off");

else {
   fhem("set KaltBadHeizen:FILTER=STATE!=on on");
  }
}

Romoker

Hallo xhabit,

marvin87 war inzwischen schneller mit der Antwort.

Ich kann ergänzen: Deine Objektbezeichnung AussenT5cm.temperature ist falsch.

So müsste es funktionieren:
AussenT5cm:temperature.* {....}

Gruß Romoker
BeagleBoneBlack & Raspberry Pi 4; FB7490; div. Homematic Komponenten; CUL433: CUL_TX, Conbee II, SOMFY, 1-Wire, Z-Wave, Zigbee, SmartPlugs von Sonoff und Shelly mit MQTT

marvin78

Naja. Man kann nicht wirklich wissen, wie das Event wirklich aussieht. Aber ob da nun ein . oder ein Doppelpunkt steht, ist egal, da der Punkt als Regex auch den Doppelpunkt darstellt. Trotzdem muss er schauen, wie sein Event aussieht. Je nach Device kommt an der Stelle auch noch ein Leerzeichen hinzu. Auf den zweiten Doppelpunkt habe ich ja schon hingewiesen.

Icinger

Wäre genau für solche Fälle ja nicht eigentlich das THRESHOLD angebrachter?

define FrostschutzKaltBad THRESHOLD AussenT5cm:temperature:0.5:2 KaltBadHeizen|set @ on|set @ off

Hält zB dein AussenWC immer auf 2°C mit einer Hysterese von 0.5°

lg, Ici
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

xhabit

Hallo Ihr Lieben,

vielen Dank für die Antwort. Mit TH konnte ich die Aufgabe lösen. Funktioniert gut. Aber auf TH bin ich nicht gekommen, diese Möglichkeit zu nutzen.

Also, lieben Dank!

xhabit