[Gelöst] [HMCCUCHN] invalid datapoint und substitute unerwartetes Ergebnis

Begonnen von Christoph Morrison, 29 Oktober 2020, 21:43:48

Vorheriges Thema - Nächstes Thema

Christoph Morrison

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

zap

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).

2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Christoph Morrison

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?

zap

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
2xCCU3, Fenster, Rollläden, Themostate, Stromzähler, Steckdosen ...)
Entwicklung: FHEM auf AMD NUC (Ubuntu)
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: FULLY, Meteohub, HMCCU, AndroidDB

Christoph Morrison

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.

Christoph Morrison

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