Hallo zusammen,
folgendes Device:
Internals:
.eventMapCmd manu:noArg auto:noArg boost:noArg off:noArg on:noArg
CFGFN
DEF MEQ0048788:2
FUUID 5f9b1922-f33f-0f53-7433-cb0999680aa01afb
IODev general.interfaces.homematic.ccu3
NAME house.groundfloor.bath.heating.control.channel.0
NR 8438
STATE 12.0
TYPE HMCCUCHN
ccuaddr MEQ0048788:2
ccudevstate active
ccuif BidCos-RF
ccuname HM-TC-IT-WM-W-EU MEQ0048788:2
ccutype HM-TC-IT-WM-W-EU
channels 1
statevals devstate
.attraggr:
.attrminint:
Helper:
DBLOG:
2.ACTUAL_HUMIDITY:
general.system.log.db:
TIME 1604000350.91501
VALUE 45.000000
2.ACTUAL_TEMPERATURE:
general.system.log.db:
TIME 1604000350.91501
VALUE 23.100000
2.BOOST_STATE:
general.system.log.db:
TIME 1604003326.85179
VALUE 0
2.CONTROL_MODE:
general.system.log.db:
TIME 1604003259.10822
VALUE manu
2.SET_TEMPERATURE:
general.system.log.db:
TIME 1604000350.91501
VALUE 20.000000
2.WINDOW_OPEN_REPORTING:
general.system.log.db:
TIME 1604000315.48407
VALUE 0
2.control_mode:
general.system.log.db:
TIME 1604003294.19775
VALUE 1
activity:
general.system.log.db:
TIME 1604003816.51413
VALUE alive
battery:
general.system.log.db:
TIME 1604003816.51413
VALUE ok
boost_state:
general.system.log.db:
TIME 1604003816.51413
VALUE 0
control:
general.system.log.db:
TIME 1604003816.51413
VALUE 12.0
control_mode:
general.system.log.db:
TIME 1604003816.51413
VALUE 1
control_mode_hr:
general.system.log.db:
TIME 1604003193.15824
VALUE Manuell
desired-temp:
general.system.log.db:
TIME 1604003816.51413
VALUE 12.0
hmstate:
general.system.log.db:
TIME 1604003816.51413
VALUE 12.0
humidity:
general.system.log.db:
TIME 1604003816.51413
VALUE 44.0
measured-temp:
general.system.log.db:
TIME 1604003816.51413
VALUE 22.8
rssi_device:
general.system.log.db:
TIME 1604003816.51413
VALUE 1
rssi_peer:
general.system.log.db:
TIME 1604003816.51413
VALUE 201
state:
general.system.log.db:
TIME 1604003816.51413
VALUE 12.0
window_open_reporting:
general.system.log.db:
TIME 1604003006.48864
VALUE open
windows:
general.system.log.db:
TIME 1604003816.51413
VALUE open
windows_hr:
general.system.log.db:
TIME 1604003719.64881
VALUE Geoeffnet
READINGS:
2020-10-29 21:36:56 activity alive
2020-10-29 21:36:56 battery ok
2020-10-29 21:36:56 boost_state 0
2020-10-29 21:36:56 control 12.0
2020-10-29 21:36:56 control_mode 1
2020-10-29 21:36:56 desired-temp 12.0
2020-10-29 21:36:56 hmstate 12.0
2020-10-29 21:36:56 humidity 44.0
2020-10-29 21:36:56 measured-temp 22.8
2020-10-29 21:36:56 rssi_device 1
2020-10-29 21:36:56 rssi_peer 201
2020-10-29 21:36:56 state 12.0
2020-10-29 21:36:56 windows open
hmccu:
devspec MEQ0048788:2
dp:
0.AES_KEY:
OVAL 1
VAL 1
0.CONFIG_PENDING:
OVAL false
VAL false
0.DEVICE_IN_BOOTLOADER:
OVAL false
VAL false
0.INHIBIT:
OVAL false
VAL false
0.LOWBAT:
OSVAL ok
OVAL false
SVAL ok
VAL false
0.RSSI_DEVICE:
OSVAL 1
OVAL 1
SVAL 1
VAL 1
0.RSSI_PEER:
OSVAL 201
OVAL 201
SVAL 201
VAL 201
0.STICKY_UNREACH:
OVAL false
VAL false
0.UNREACH:
OSVAL alive
OVAL false
SVAL alive
VAL false
0.UPDATE_PENDING:
OVAL false
VAL false
2.ACTUAL_HUMIDITY:
OSVAL 44.0
OVAL 44.000000
SVAL 44.0
VAL 44.000000
2.ACTUAL_TEMPERATURE:
OSVAL 22.8
OVAL 22.800000
SVAL 22.8
VAL 22.800000
2.BATTERY_STATE:
OVAL 2.900000
VAL 2.900000
2.BOOST_STATE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
2.COMMUNICATION_REPORTING:
OVAL false
VAL false
2.CONTROL_MODE:
OSVAL manu
OVAL 1
SVAL manu
VAL 1
2.LOWBAT_REPORTING:
OVAL false
VAL false
2.PARTY_START_DAY:
OVAL 1
VAL 1
2.PARTY_START_MONTH:
OVAL 1
VAL 1
2.PARTY_START_TIME:
OVAL 0
VAL 0
2.PARTY_START_YEAR:
OVAL 0
VAL 0
2.PARTY_STOP_DAY:
OVAL 1
VAL 1
2.PARTY_STOP_MONTH:
OVAL 1
VAL 1
2.PARTY_STOP_TIME:
OVAL 0
VAL 0
2.PARTY_STOP_YEAR:
OVAL 0
VAL 0
2.PARTY_TEMPERATURE:
OVAL 5.000000
VAL 5.000000
2.SET_TEMPERATURE:
OSVAL 12.0
OVAL 12.000000
SVAL 12.0
VAL 12.000000
2.WINDOW_OPEN_REPORTING:
OSVAL open
OVAL true
SVAL open
VAL true
Attributes:
IODev general.interfaces.homematic.ccu3
alias Temperatursteuerung
ccureadingfilter 2.WINDOW_OPEN_REPORTING;2.SET_TEMPERATURE;2.ACTUAL_TEMPERATURE;2.ACTUAL_HUMIDITY;2.CONTROL_MODE;2.BOOST_STATE
ccureadingname 2.WINDOW_OPEN_REPORTING:windows;2.SET_TEMPERATURE:desired-temp;2.ACTUAL_TEMPERATURE:measured-temp;2.ACTUAL_HUMIDITY:humidity;2.CONTROL_MODE:control_mode;2.BOOST_STATE:boost_state
cmdIcon auto:sani_heating_automatic@black manu:sani_heating_manual@black boost:sani_heating_boost@black on:general_an@black off:general_aus@black
controldatapoint 2.SET_TEMPERATURE
eventMap /datapoint 2.MANU_MODE 20.0:manu/datapoint 2.AUTO_MODE 1:auto/datapoint 2.BOOST_MODE 1:boost/datapoint 2.MANU_MODE 4.5:off/datapoint 2.MANU_MODE 30.5:on/
group Heizung
icon temp_control@black
room EG->Bad
statedatapoint 2.SET_TEMPERATURE
stripnumber 1
substexcl control
substitute CONTROL_MODE!0:auto,1:manu,2:party,3:boost;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;2.SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
webCmd control:auto:manu:boost:on:off
widgetOverride control:slider,4.5,0.5,30.5,1
Zwei Sachen sind mir aufgefallen.
Erstens: Die Zahl in control_mode sollte doch durch auto, manu, party oder boost ersetzt werden. Bei WINDOW_OPEN_REPORTING/windows funktioniert das auch, aber nicht bei CONTROL_MODE?!
Zweitens: Wenn ich
set house.groundfloor.bath.heating.control.channel.0 datapoint 2.MANU_MODE 20.0
aufrufe, sollte der manuelle Modus unf 20 Grad C gesetz werden, statt dessen meldet FHEM/HMCCU:
HMCCUCHN: house.groundfloor.bath.heating.control.channel.0 Invalid datapoint
Im HMCCUDEV auf MEQ0048788 (quasi das "Hauptdevice") funktioniert das aber, mit gleicher Konfiguration. Warum hier nicht?
Nachtrag:
devicelist/update general.interfaces.homematic.ccu3 habe ich (mehrfach) ausgeführt, keine Änderung.
Nachtrag:
Gelöst markiert
Wo kommen die Attribute her? Hast Du die von einem HMCCUDEV kopiert?
Die Attribute in einem HMCCUCHN dürfen keine Kanalnummer enthalten. Also überall "2." entfernen oder vielleicht nochmal set defaults aufrufen (sofern die Defaults korrekt sind).
Zitat von: zap am 30 Oktober 2020, 10:40:03
Wo kommen die Attribute her? Hast Du die von einem HMCCUDEV kopiert?
Ja.
Ich hab die mal entfernt und set manu etc. funktioniert nun. Vielen Dank soweit.
Das substitute macht aus CONTROL_MODE nach wie vor eine Zahl anstatt es durch manu, etc. zu ersetzen:
Internals:
.eventMapCmd manu:noArg auto:noArg boost:noArg off:noArg on:noArg
CFGFN
DEF MEQ0048788:2
FUUID 5f9b1922-f33f-0f53-7433-cb0999680aa01afb
IODev general.interfaces.homematic.ccu3
NAME house.groundfloor.bath.heating.control.channel.0
NR 8438
STATE 21.0
TYPE HMCCUCHN
ccuaddr MEQ0048788:2
ccudevstate active
ccuif BidCos-RF
ccuname HM-TC-IT-WM-W-EU MEQ0048788:2
ccutype HM-TC-IT-WM-W-EU
channels 1
statevals devstate
.attraggr:
.attrminint:
READINGS:
2020-10-30 10:43:40 2.ACTUAL_HUMIDITY 50.0
2020-10-30 10:43:40 2.ACTUAL_TEMPERATURE 23.4
2020-10-30 10:43:40 2.BOOST_STATE 0
2020-10-30 10:43:40 2.CONTROL_MODE manu
2020-10-30 10:43:40 2.SET_TEMPERATURE 12.0
2020-10-30 11:12:23 2.boost_state 0
2020-10-30 11:12:23 2.control_mode 0
2020-10-30 11:29:43 2.desired-temp 21.0
2020-10-30 11:29:43 2.humidity 50.0
2020-10-30 11:29:43 2.measured-temp 23.5
2020-10-30 11:12:23 2.windows closed
2020-10-30 10:43:40 activity alive
2020-10-30 10:43:40 battery ok
2020-10-30 11:29:43 control 21.0
2020-10-30 11:30:03 hmstate 21.0
2020-10-30 10:43:40 rssi_device 1
2020-10-30 10:43:40 rssi_peer 201
2020-10-30 11:29:43 state 21.0
hmccu:
devspec MEQ0048788:2
dp:
0.AES_KEY:
OVAL 1
VAL 1
0.CONFIG_PENDING:
OVAL false
VAL false
0.DEVICE_IN_BOOTLOADER:
OVAL false
VAL false
0.INHIBIT:
OVAL false
VAL false
0.LOWBAT:
OSVAL ok
OVAL false
SVAL ok
VAL false
0.RSSI_DEVICE:
OSVAL 1
OVAL 1
SVAL 1
VAL 1
0.RSSI_PEER:
OSVAL 201
OVAL 201
SVAL 201
VAL 201
0.STICKY_UNREACH:
OVAL false
VAL false
0.UNREACH:
OSVAL alive
OVAL false
SVAL alive
VAL false
0.UPDATE_PENDING:
OVAL false
VAL false
2.ACTUAL_HUMIDITY:
OSVAL 50.0
OVAL 50.000000
SVAL 50.0
VAL 50.000000
2.ACTUAL_TEMPERATURE:
OSVAL 23.5
OVAL 23.500000
SVAL 23.5
VAL 23.500000
2.BATTERY_STATE:
OVAL 2.900000
VAL 2.900000
2.BOOST_STATE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
2.COMMUNICATION_REPORTING:
OVAL 0
VAL 0
2.CONTROL_MODE:
OSVAL auto
OVAL 0
SVAL auto
VAL 0
2.LOWBAT_REPORTING:
OVAL 0
VAL 0
2.PARTY_START_DAY:
OVAL 1
VAL 1
2.PARTY_START_MONTH:
OVAL 1
VAL 1
2.PARTY_START_TIME:
OVAL 0
VAL 0
2.PARTY_START_YEAR:
OVAL 0
VAL 0
2.PARTY_STOP_DAY:
OVAL 1
VAL 1
2.PARTY_STOP_MONTH:
OVAL 1
VAL 1
2.PARTY_STOP_TIME:
OVAL 0
VAL 0
2.PARTY_STOP_YEAR:
OVAL 0
VAL 0
2.PARTY_TEMPERATURE:
OVAL 5.000000
VAL 5.000000
2.SET_TEMPERATURE:
OSVAL 21.0
OVAL 21.000000
SVAL 21.0
VAL 21.000000
2.WINDOW_OPEN_REPORTING:
OSVAL closed
OVAL 0
SVAL closed
VAL 0
Attributes:
IODev general.interfaces.homematic.ccu3
alias Temperatursteuerung
ccureadingfilter WINDOW_OPEN_REPORTING;SET_TEMPERATURE;ACTUAL_TEMPERATURE;ACTUAL_HUMIDITY;CONTROL_MODE;BOOST_STATE
ccureadingname WINDOW_OPEN_REPORTING:windows;SET_TEMPERATURE:desired-temp;ACTUAL_TEMPERATURE:measured-temp;ACTUAL_HUMIDITY:humidity;CONTROL_MODE:control_mode;BOOST_STATE:boost_state
cmdIcon auto:sani_heating_automatic@black manu:sani_heating_manual@black boost:sani_heating_boost@black on:general_an@black off:general_aus@black
controldatapoint SET_TEMPERATURE
eventMap /datapoint MANU_MODE 20.0:manu/datapoint AUTO_MODE 1:auto/datapoint BOOST_MODE 1:boost/datapoint MANU_MODE 4.5:off/datapoint MANU_MODE 30.5:on/
group Heizung
icon temp_control@black
room EG->Bad
statedatapoint SET_TEMPERATURE
stripnumber 1
substexcl control
substitute CONTROL_MODE!0:auto,1:manu,2:party,3:boost;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
webCmd control:auto:manu:boost:on:off
widgetOverride control:slider,4.5,0.5,30.5,1
Zitat von: zap am 30 Oktober 2020, 10:40:03
Die Attribute in einem HMCCUCHN dürfen keine Kanalnummer enthalten. Also überall "2." entfernen oder vielleicht nochmal set defaults aufrufen (sofern die Defaults korrekt sind).
Hab ich das in der Doku überlesen?
Interessant. Im list steht SVAL=auto. Es wird also ersetzt. Mach mal ein "set clear" (Readings löschen). Und danach ein "get update"
Falls das nicht hilft, lösche das Attribut substexcl
Zitat von: zap am 30 Oktober 2020, 11:54:26
Interessant. Im list steht SVAL=auto. Es wird also ersetzt. Mach mal ein "set clear" (Readings löschen). Und danach ein "get update"
Falls das nicht hilft, lösche das Attribut substexcl
Habe ich (und hatte ich auch schon mehrfach ;-)), hat aber nicht geholfen.
ZitatFalls das nicht hilft, lösche das Attribut substexcl
Das hat geholfen.
jftr so sieht die Definition final aus:
defmod house.groundfloor.bath.heating.control.channel.0 HMCCUCHN MEQ0048788:2
attr house.groundfloor.bath.heating.control.channel.0 IODev general.interfaces.homematic.ccu3
attr house.groundfloor.bath.heating.control.channel.0 alias Temperatursteuerung
attr house.groundfloor.bath.heating.control.channel.0 ccureadingfilter 2.WINDOW_OPEN_REPORTING;;2.SET_TEMPERATURE;;2.ACTUAL_TEMPERATURE;;2.ACTUAL_HUMIDITY;;2.CONTROL_MODE;;2.BOOST_STATE
attr house.groundfloor.bath.heating.control.channel.0 ccureadingname 2.WINDOW_OPEN_REPORTING:windows;;2.SET_TEMPERATURE:desired-temp;;2.ACTUAL_TEMPERATURE:measured-temp;;2.ACTUAL_HUMIDITY:humidity;;2.CONTROL_MODE:control_mode;;2.BOOST_STATE:boost_state
attr house.groundfloor.bath.heating.control.channel.0 cmdIcon auto:sani_heating_automatic@black manu:sani_heating_manual@black boost:sani_heating_boost@black on:general_an@black off:general_aus@black
attr house.groundfloor.bath.heating.control.channel.0 controldatapoint SET_TEMPERATURE
attr house.groundfloor.bath.heating.control.channel.0 eventMap /datapoint MANU_MODE 20.0:manu/datapoint AUTO_MODE 1:auto/datapoint BOOST_MODE 1:boost/datapoint MANU_MODE 4.5:off/datapoint MANU_MODE 30.5:on/
attr house.groundfloor.bath.heating.control.channel.0 group Heizung
attr house.groundfloor.bath.heating.control.channel.0 icon temp_control@black
attr house.groundfloor.bath.heating.control.channel.0 room EG->Bad
attr house.groundfloor.bath.heating.control.channel.0 sortby 1000
attr house.groundfloor.bath.heating.control.channel.0 stateFormat <table>\
<tr>\
<th style="text-align: left;;">Ist</th>\
<td>[$name:measured-temp:d2] °C</td>\
</tr>\
<tr>\
<th style="text-align: left;;">Soll</th>\
<td>[$name:desired-temp:d2] °C</td>\
</tr>\
<tr>\
<th style="text-align: left;;">Luftfeuchte</th>\
<td>[$name:humidity:d2]% φ</td>\
</tr>\
<tr>\
<th style="text-align: left;;">Steuerung</th>\
<td>[$name:control_mode_hr]</td>\
</tr>\
<tr>\
<th style="text-align: left;;">Fenster</th>\
<td>[$name:windows_hr]</td>\
</tr>\
</table>
attr house.groundfloor.bath.heating.control.channel.0 statedatapoint SET_TEMPERATURE
attr house.groundfloor.bath.heating.control.channel.0 stripnumber 1
attr house.groundfloor.bath.heating.control.channel.0 substitute CONTROL_MODE!0:auto,1:manu,2:party,3:boost;;WINDOW_OPEN_REPORTING!(true|1):open,(false|0):closed;;SET_TEMPERATURE!#0-3.5:off,#30.5-40:on
attr house.groundfloor.bath.heating.control.channel.0 userReadings windows_hr:windows:.* {\
return (ReadingsVal($name, q(windows), undef) eq q(open))\
? q(Geöffnet)\
: q(Geschlossen)\
},\
control_mode_hr:control_mode:.* {\
my %control_modes = (\
boost => q(Boost),\
manu => q(Manuell),\
auto => q(Automatik),\
party => q(Party),\
unknown => q(Unbekannt),\
);;\
my $mode = ::ReadingsVal($name, q(control_mode), q(unknown));;\
return $control_modes{$mode};;\
}
attr house.groundfloor.bath.heating.control.channel.0 webCmd control:auto:manu:boost:on:off
attr house.groundfloor.bath.heating.control.channel.0 widgetOverride control:slider,4.5,0.5,30.5,1