FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: hdosw am 26 Dezember 2022, 13:26:46

Titel: Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: hdosw am 26 Dezember 2022, 13:26:46
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?

Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: hdosw am 29 Dezember 2022, 14:27:00
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.
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag 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.

Viele Grüße
Jürgen
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: Riscberry V am 30 Dezember 2022, 11:57:58
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.
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: hdosw am 30 Dezember 2022, 12:31:36
Hallo Riscberry V,

Deine Lösung gefällt mir sehr und werde diese mal testen. Melde mich wieder wenn ich es geschafft habe.
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: hdosw am 30 Dezember 2022, 12:44:03
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
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: hdosw am 30 Dezember 2022, 16:27:58
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
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: Damian am 30 Dezember 2022, 16:38:06
Dir ist bewusst, dass du bei jedem Event deiner Temperatur deine Steckdose schaltest!?
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: Riscberry V am 30 Dezember 2022, 17:39:43
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.
Titel: Antw:Fritz!Dect 200 Reading Temperatur auswerten
Beitrag von: Damian am 30 Dezember 2022, 22:57:44
ja du hast Recht, durch die if-Abfrage wird das wiederholte Schalten unterbunden. So etwas kann man auch als Einzeiler definieren.