Hallo zusammen,
ich würde gerne die Temperatur meines Fibaro Smoke Sensor FGSD002 nutzen, um sie meinem Homematic Heizungsthermostat HM-CC-RT-DN zur Verfügung zu stellen.
Ich bin bisher wie im Wiki beschrieben vorgegangen:
https://wiki.fhem.de/wiki/HM-CC-RT-DN_Funk-Heizk%C3%B6rperthermostat#Simulation_von_Fensterkontakten_und_externen_Temperatursensoren
Bis zu Schritt 4 habe ich alles hinbekommen. Schritt 5 verstehe ich nicht ganz. Bin mir nicht sicher, wie ich hier testen muss. Das Heizungsthermostat heißt bei mir "thermostat_keller_flur". Die Eingabe von set thermostat_keller_flur peerXref
liefert bei mir eine Fehlermeldung:
Unknown argument peerXref, choose one of assignHmKey burstXmit clear deviceRename fwUpdate getConfig getRegRaw inhibit raw regBulk regSet reset sysTime unpair
Ich gehe aber davon aus, dass das peering funktioniert hat. Siehe List:
Internals:
DEF 512E0A01
NAME thermostat_keller_flur_weather
NOTIFYDEV global
NR 167
STATE 18.6
TYPE CUL_HM
chanNo 01
device thermostat_keller_flur
peerList virtual_temp_sensor_keller_flur_Sensor1,
Helper:
Dblog:
Measured-temp:
Dblog:
TIME 1486829083.71643
VALUE 18.6
State:
Dblog:
TIME 1486829083.71643
VALUE 18.6
Readings:
2017-01-20 20:42:27 R-sign off
2017-02-11 16:25:04 RegL_01. 08:00 00:00
2017-02-11 17:04:43 measured-temp 18.6
2017-02-11 16:25:03 peerList virtual_temp_sensor_keller_flur_Sensor1,
2017-02-11 17:04:43 state 18.6
Helper:
peerIDsRaw ,00000201,00000000
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
Shadowreg:
Attributes:
group Heizung
model HM-CC-RT-DN
peerIDs 00000000,00000201,
Mein Problem liegt jetzt darin, die gemessene Temperatur des Rauchmelders an das Thermostat zu übergeben. Ich habe folgendes at definiert:
Internals:
CFGFN
COMMAND { my $T=(ReadingsVal("smokesensor_keller_flur","temperature",20.0)); fhem "set virtual_temp_sensor_keller_flur_Sensor1 virtTemp $T" }
DEF +*00:01 { my $T=(ReadingsVal("smokesensor_keller_flur","temperature",20.0)); fhem "set virtual_temp_sensor_keller_flur_Sensor1 virtTemp $T" }
NAME at_virtual_temp_sensor_keller_flur
NR 560
NTM 17:07:47
PERIODIC yes
RELATIVE yes
REP -1
STATE Next: 17:07:47
TIMESPEC 00:01
TRIGGERTIME 1486829267.65162
TRIGGERTIME_FMT 2017-02-11 17:07:47
TYPE at
Helper:
Dblog:
Next:
Dblog:
TIME 1486829207.65632
VALUE 17:07:47
Readings:
2017-02-11 17:06:47 state Next: 17:07:47
Attributes:
Das funktioniert aber nicht. Im Log stehen die folgenden Meldungen:
2017.02.11 17:06:47 3: set virtual_temp_sensor_keller_flur_Sensor1 virtTemp 19.0 C : virtTemp requires parameter: [off|-20.0..50.0]
2017.02.11 17:06:47 3: at_virtual_temp_sensor_keller_flur: virtTemp requires parameter: [off|-20.0..50.0]
Kann es etwas damit zu tun haben, dass das Reading "temperature" einen String zurückliefert, der nicht richtig verarbeitet werden kann? Wer kann mir den entscheidenden Tip geben?
Bei mir liefert der Rauchmelder folgendes:
temperature 20.3 C
D.h. das passt nat. nicht zu [off|-20.0..50.0]...
Du musst das 'C' wegmachen...
Statt ReadingsVal mal ReadingsNum probieren...
EDIT: allerdings weiß ich nicht wie oft der Rauchmelder die Temperatur meldet... Könnte etwas träge werden oder zu "Überschwingern" führen... Öftere TempMeldung geht dann wohl auf die Batterielebensdauer...
Gruß, Joachim
@MadMax
Danke für den Tip!
Wo finde ich eigentlich eine gute Beschreibung zu ReadingsVal und ReadingsNum? Google ist da eher enthaltsam.
Ich habe das at jetzt wie folgt geändert:
+*00:01 { my $T=(ReadingsNum("smokesensor_keller_flur","temperature",20.0)); fhem "set virtual_temp_sensor_keller_flur_Sensor1 virtTemp $T" }
Das scheint zu funktionieren, da im Log jetzt folgendes auftaucht:
2017.02.11 21:15:49 3: CUL_HM set virtual_temp_sensor_keller_flur_Sensor1 virtTemp 18.0
Allerdings scheint es das Thermostat nicht sonderlich zu interessieren. Das Reading "measured-temp" wird nicht auf 18.0°C gesetzt. Woran kann das liegen? Fehlt noch etwas?
List thermostat_keller_flur
Internals:
DEF 512E0A01
NAME thermostat_keller_flur_weather
NOTIFYDEV global
NR 167
STATE 17.6
TYPE CUL_HM
chanNo 01
device thermostat_keller_flur
peerList virtual_temp_sensor_keller_flur_Sensor1,
Helper:
Dblog:
Measured-temp:
Dblog:
TIME 1486844900.80499
VALUE 17.6
State:
Dblog:
TIME 1486844900.80499
VALUE 17.6
Readings:
2017-01-20 20:42:27 R-sign off
2017-02-11 16:25:04 RegL_01. 08:00 00:00
2017-02-11 21:28:20 measured-temp 17.6
2017-02-11 16:25:03 peerList virtual_temp_sensor_keller_flur_Sensor1,
2017-02-11 21:28:20 state 17.6
Helper:
peerIDsRaw ,00000201,00000000
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
Shadowreg:
Attributes:
group Heizung
model HM-CC-RT-DN
peerIDs 00000000,00000201,
Ich habe noch nicht wirklich mit virtuellen Sensoren gearbeitet...
Es sollte aber im Forum schon so einiges diskutiert worden sein...
Evtl. mal im Homematic Unterforum suchen...
EDIT: vielleicht hilft das weiter https://forum.fhem.de/index.php/topic,19686.0/topicseen.html
Gibt es beim virtuellen Sensor auch eine Peerlist? Steht da der Weather Kanal des Thermostaten drin?
Evtl. braucht es noch was damit der Thermostat auch die Temp bekommt bzw. der virtuelle Sensor diese überträgt...
Sorry, Joachim
Ja, im Virtual Sensor steht eine peer list, in der auch der Weather Channel des entsprechenden Thermostats eingetragen ist. Umgekehrt ist im Weather Channel der Virtual Sensor eingetragen. Aber wie zu sehen ist, ist der Temp Wert vom virtuellen Sensor (17.5°C) nicht als "measured-temp" beim Thermostat angekommen. Hier steht 17.0°C.
Internals:
DEF 00000301
NAME virtualTempSensor_keller_sz_sensor1
NOTIFYDEV global
NR 189
STATE set_virtTemp 17.5
TYPE CUL_HM
chanNo 01
device virtualTempSensor_keller_sz
peerList thermostat_keller_sz_weather,
Helper:
Dblog:
State:
Dblog:
TIME 1486935570.22221
VALUE set_virtTemp 17.5
Temperature:
Dblog:
TIME 1486935570.21693
VALUE 17.5
Readings:
2017-02-12 22:29:36 peerList thermostat_keller_sz_weather,
2017-02-12 22:39:30 state set_virtTemp 17.5
2017-02-12 22:39:30 temperature 17.5
Helper:
fkt virtThSens
virtTC 00
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
vrt 1
Vd:
cmd 8470000003000000
idh 0
idl 768
msgCnt 5
msgRed 0
next 1486935718.55178
nextM 1486935718.55178
typ 2
val 00AF
vin 17.5
Attributes:
model virtual_1
peerIDs 4ED1EA01,
webCmd press short:press long
Internals:
DEF 4ED1EA01
NAME thermostat_keller_sz_weather
NOTIFYDEV global
NR 174
STATE 17.0
TYPE CUL_HM
chanNo 01
device thermostat_keller_sz
peerList virtualTempSensor_keller_sz_sensor1,
Helper:
Dblog:
Measured-temp:
Dblog:
TIME 1486935668.23319
VALUE 17.0
State:
Dblog:
TIME 1486935668.23319
VALUE 17.0
Readings:
2016-11-26 20:23:57 R-sign off
2016-11-26 22:15:09 RegL_01. 08:00 00:00
2017-02-12 22:41:08 measured-temp 17.0
2017-02-12 22:29:35 peerList virtualTempSensor_keller_sz_sensor1,
2017-02-12 22:41:08 state 17.0
Helper:
Expert:
def 1
det 0
raw 1
tpl 0
Role:
chn 1
Attributes:
group Heizung
model HM-CC-RT-DN
peerIDs 00000000,00000301,
Ich werde mir den anderen Beitrag mal anschauen, der ist ja etwas länger. Danke für den Link.
Gut, dann ist ja schon mal richtig "verbunden"...
Allerdings denke ich fehlt noch etwas dass der virtuelle TempSensor seine Daten auch "zeitgerecht" zum Thermostaten überträgt...
Ich glaube das ist etwas "tricky" wenn ich den anderen Link/Thread noch so im Kopf hab (bin aber nur grob drüber geflogen).
Ich weiß nur, dass das Thermostat so alle ca. 3min "aufwacht" und dann die Werte erwartet.
Wenn dann nichts kommt, dann geht er wieder schlafen und arbeitet mit seinem internen Sensor...
Wie allerdings das "zeitgerechte" Senden geht weiß ich leider nicht...
Viel Erfolg, Joachim
Aktueller Thread zu dem Thema:
https://forum.fhem.de/index.php/topic,45735.msg582875.html#new
Es gibt eine neue Option, mit der das ganze wesentlich stabiler wird - sofern's am Timing der Übertragung liegt.
Martin
Hallo Martin,
habe mir den anderen Thread durchgelesen. Ist ja ein richtig großes Thema. Ich habe mal ein bisschen mit dem cyclicMsgOffset Parameter innerhalb des Channels des virtuellen Sensors herum gespielt und Werte zwischen 100 und 500 ms ausprobiert. Ich kann nicht feststellen, dass das irgendwas gebracht hat. Ich habe auch nicht den Eindruck, dass jemals eine Temperatur erfolgreich vom virtuellen Sensor zum Thermostat übertragen wurde. Measured-temp und die Temperatur beim virtuellen Sensor stimmen bei acht Devices nicht überein.
Ich habe das Gefühl, dass ich irgendwas Grundlegendes falsch mache.