Hallo,
ich habe eine wahrscheinlich einfach zu lösende Frage. Meine FritzBox 7590 habe ich erfolgreich in fhem integriert. Mit fhem kann ich Dect200 Steckdosen schalten. Diese haben auch einen Temperatursensor und diesen möchte ich verwenden um die Dose bei 10 Grad einzuschalten und bei 15 Grad auszuschalten. Geht das und wenn ja wie?
Hallo an alle,
ich habe jetzt nach langem suchen und viel probieren eine Lösung gefunden. Ein notify mit diesem Inhalt:
Gewaechshaus:temperature:.* { my $gwhtemp = ReadingsVal("Gewaechshaus","temperature","") ; $gwhtemp =~ m/(\d+)(\.)(\d*)/ ; $gwhtemp = "$1.$3" ; if($gwhtemp < 12) { fhem("set Gewaechshaus on") } ; if($gwhtemp > 13) { fhem("set Gewaechshaus off") }}
Gewaechshaus ist meine Fritz Dect200. Und so funktioniert das ganze wunderbar.
Ich wünsche allen einen guten Rutsch und ein erfolgreiches und vor allem gesundes neues Jahr.
Hallo hdosw,
du kennst diese Funktion?
ReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.
Damit kannst Du direkt den Wert aus einem Reading auslesen.
Viele Grüße
Jürgen
Hallo hdosw,
du kannst auch mit $EVENTPARTX arbeiten. In diesem Fall wären das:
$EVNTPART0: temperature
$EVNTPART1: <die gemessenen Temperatur>
$EVNTPART2: C
$EVNTPART3: (measured)
Der Code würde dann ungefähr so ausehen:
Gewaechshaus:temperature:.* {
if ($EVTPART1 <= 10.0) {
if ((ReadingsVal("Gewaechshaus", "state", "")) eq "off") {
fhem("set Gewaechshaus on")
}
}
elsif ($EVTPART1 >= 15.0) {
if ((ReadingsVal("Gewaechshaus", "state", "")) eq "on") {
fhem("set Gewaechshaus off")
}
}
}
Die zusätzlichen If-Bedigungen habe ich eingefügt um nur zu schalten wenn auch geschaltet werden muss. Geht allerdings auch gleich als UND-Bedingung (&&) im Ursprünglichen If und Elsif.
Hallo Riscberry V,
Deine Lösung gefällt mir sehr und werde diese mal testen. Melde mich wieder wenn ich es geschafft habe.
Zitat von: juemuc am 29 Dezember 2022, 14:42:21
Hallo hdosw,
du kennst diese Funktion?
ReadingsNum(<devicename>,<reading>, <defaultvalue>,<round>)
Gibt die erste Zahl aus dem Readingswert zurück. Falls <round> spezifiziert ist, wird sie auf diese Anzahl von Dezimalstellen gerundet und ggf. mit 0 aufgefüllt, wenn <round> größer ist als die Anzahl der Dezimalstellen.
Damit kannst Du direkt den Wert aus einem Reading auslesen.
Hallo Jürgen,
kannte ich nicht und ich danke dir dafür.
Gruß
Dieter
Zitat von: Riscberry V am 30 Dezember 2022, 11:57:58
du kannst auch mit $EVENTPARTX arbeiten. In diesem Fall wären das:
$EVNTPART0: temperature
$EVNTPART1: <die gemessenen Temperatur>
$EVNTPART2: C
$EVNTPART3: (measured)
Der Code würde dann ungefähr so ausehen:
Gewaechshaus:temperature:.* {
if ($EVTPART1 <= 10.0) {
if ((ReadingsVal("Gewaechshaus", "state", "")) eq "off") {
fhem("set Gewaechshaus on")
}
}
elsif ($EVTPART1 >= 15.0) {
if ((ReadingsVal("Gewaechshaus", "state", "")) eq "on") {
fhem("set Gewaechshaus off")
}
}
}
Hallo Riscberry V,
habe es getestet und funktioniert wunderbar. Ganz herzlichen Dank dafür.
Gutes neues Jahr wünsch ich.
Gruß
Dieter
Dir ist bewusst, dass du bei jedem Event deiner Temperatur deine Steckdose schaltest!?
Zitat von: hdosw am 30 Dezember 2022, 16:27:58
Hallo Riscberry V,
habe es getestet und funktioniert wunderbar. Ganz herzlichen Dank dafür.
Gutes neues Jahr wünsch ich.
Gruß
Dieter
Das freut mich!
Wünsche dir auch ein schönes neues Jahr.
Gruß
Marcel
Zitat von: Damian am 30 Dezember 2022, 16:38:06
Dir ist bewusst, dass du bei jedem Event deiner Temperatur deine Steckdose schaltest!?
Hallo Damian,
bei jedem Event der Temperatur wird das Notify getriggert, das stimmt. Aber schalten sollte es nicht immer. Das sollte ja hierdurch verhindert werden: (?)
if ((ReadingsVal("Gewaechshaus", "state", "")) eq "off") {
fhem("set Gewaechshaus on")
}
Es sollte also nur anschlten wenn Gewaechshaus noch "off" ist, aber nicht wenn es schon "on" ist. Das Gleiche umgekehrt mit ausschalten.
Um das Notify nicht bei jeder Temperaturabfrage zu triggern, sondern nur bei Änderungen, könnte man im Device Gewaechshaus noch das Attribute event-on-change-reading für temperature setzen.
ja du hast Recht, durch die if-Abfrage wird das wiederholte Schalten unterbunden. So etwas kann man auch als Einzeiler definieren.