From d348bdd7ae969f5c6b772f15dbe493797ec1b3de Mon Sep 17 00:00:00 2001 From: "klaus.schauer" Date: Sun, 20 Jul 2025 19:27:21 +0000 Subject: [PATCH] 10_EnOcean: add setPointTempRefDev to subType roomSensorControl.05 git-svn-id: https://svn.fhem.de/fhem/trunk@30140 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_EnOcean.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/10_EnOcean.pm b/fhem/FHEM/10_EnOcean.pm index 08e5e22af..fa0cf8b06 100755 --- a/fhem/FHEM/10_EnOcean.pm +++ b/fhem/FHEM/10_EnOcean.pm @@ -12345,6 +12345,7 @@ sub EnOcean_Parse($$) { my @blockState = ('unlocked', 'locked', 'unknown', 'reserved'); push @event, "1:blockState:" . $blockState[$blockState]; my $reply = sprintf "%02X", 0x80 | (ReadingsVal($name, 'block', 'unlock') eq 'lock' ? 0 : 1); + #my $reply = sprintf "%02X", 0x00 | (ReadingsVal($name, 'block', 'unlock') eq 'lock' ? 0 : 1); # Unlock-Reply Message EnOcean_SndRadio(undef, $hash, $packetType, 'D2', $reply, AttrVal($name, "subDef", "0" x 8), '00', $hash->{DEF}) if ($db[0] & 1); # forward handle position (RPS telegam) @@ -15701,6 +15702,12 @@ sub EnOcean_Notify(@) { EnOcean_Set($hash, @setCmd); #Log3 $name, 2, "EnOcean $name $devName $s"; } + } elsif (AttrVal($name, "subType", '') eq 'roomSensorControl.05' && AttrVal($name, "manufID", '') eq '00D') { + if (ReadingsVal($name, "setpointTemp", 0) != $parts[1]) { + my @setCmd = ($name, "setpointTemp", $parts[1]); + EnOcean_Set($hash, @setCmd); + #Log3 $name, 2, "EnOcean $name $devName $s"; + } } } @@ -18921,6 +18928,7 @@ sub EnOcean_sec_createTeachIn($$$$$$$$$$$) { $pskData =~ /^(.*)(.{32})$/; $pKey = $2; $rlc = $1; + Log3 $hash->{NAME}, 3, "EnOcean $hash->{NAME} decrypt RLC: $attr{$name}{rlcSnd} > $rlc and PK: $attr{$name}{keySnd} > $pKey"; } # secure teach-in chaining, first data length max. 11 bytes # bisher wurden x byte rlc und fest 10 bytes pKey1 gesendet! @@ -18944,7 +18952,7 @@ sub EnOcean_sec_createTeachIn($$$$$$$$$$$) { $data = "40" . $pKey2; EnOcean_SndCdm(undef, $hash, 1, "35", $data, $subDef, "00", $destinationID); #EnOcean_SndCdm <> EnOcean_SndRadio - +####* #get and update RLC #$rlc = EnOcean_sec_getRLC($hash, "rlcSnd", 0, undef); #Log3 $name, 3, "EnOcean $name EnOcean_sec_createTeachIn current rlcSnd: $rlc incremented"; @@ -20005,13 +20013,14 @@ sub EnOcean_Delete($$) {
  • nightReduction [t/K [lock|unlock]]
    Set night reduction
  • setpointTemp [t/°C [lock|unlock]]
    - Set the desired temperature
  • + Set the desired temperature. The temperature setpoint can also be set by the + setpointTempRefDev device if it is set.
    The actual temperature will be taken from the temperature reported by a temperature reference device temperatureRefDev primarily or from the attribute actualTemp if it is set.
    If the attribute setCmdTrigger is set to "refDev", a setpointTemp - command is sent when the reference device is updated.
    + command is sent when the reading temperature of the reference device is updated.
    This profil can be used with a further Room Sensor and Control Unit Eltako FTR55* to control a heating/cooling relay FHK12, FHK14 or FHK61. If Fhem and FTR55* is teached in, the temperature control of the FTR55* can be either blocked @@ -20048,7 +20057,7 @@ sub EnOcean_Delete($$) { a humidity reference device humidityRefDev primarily or from the attribute humidity if it is set.
    If the attribute setCmdTrigger is set to "refDev", a setpoint - command is sent when the reference device is updated.
    + command is sent when the attribute temperature or humidity of the reference device is updated.
    The scaling of the setpoint adjustment is device- and vendor-specific. Set the attributes scaleMax, scaleMin and scaleDecimals for the additional scaled setting