Fazit HMCCU -> Dimmer

Begonnen von rabehd, 08 Februar 2025, 13:46:50

Vorheriges Thema - Nächstes Thema

zap

Aktuell fehlt in der HMCCUConf.pm die Definition der Rolle "VIRTUAL_DIMMER". Die werde ich ergänzen.
Aber(!): HMCCU unterstützt nicht mehrere Control-Datenpunkte. D.h. Set-Befehle wie z.B. "set pct" können sich im selben FHEM-Device nur auf einen von 2 identischen Kanälen beziehen (in diesem Fall Kanal 2 oder 3).

Es gibt 2 Möglichkeiten:

1) Aktuell, wenn solange HMCCUConf.pm noch nicht angepasst wurde:

Ein HMCCUDEV anlegen:

define FHEM-Device HMCCUDEV Adresse forceDev

Eigentlich sollte dabei automatisch statedatapoint und controldatapoint auf 1.LEVEL zeigen (kann man mit einem "List" prüfen). D.h. Set-Befehle beziehen sich auf 1.LEVEL (was Du nicht möchtest, wenn ich es richtig verstehe, was aber valide ist, wenn jemand die Verknüpfungslogik nicht benötigt).

Du kannst aber trotzdem LEVEL in den den beiden virtuellen Kanälen 2+3 ändern mit:

set FHEM-Device datapoint 2.LEVEL Wert
set FHEM-Device datapoint 3.LEVEL Wert

Mit dem Attribut eventMap (FHEM Standard) kannst Du Dir dafür auch Shortcuts definieren, z.B.

set FHEM-Device pct2 Wert
set FHEM-Device pct3 Wert

2) Nach Anpassung der HMCCUConf.pm

Dann wird "get createDev" 3 HMCCUCHN Devices anlegen. Dann ist die Steuerung der Kanäle sauber getrennt, aber eben mit 3 Devices.

2xCCU3 mit ca. 100 Aktoren, Sensoren
Entwicklung: FHEM auf Proxmox Debian VM
Produktiv inzwischen auf Home Assistant gewechselt.
Maintainer: HMCCU, (Fully, AndroidDB)

rabehd

Zitat von: zap am 25 Februar 2025, 10:01:162) Nach Anpassung der HMCCUConf.pm

Dann wird "get createDev" 3 HMCCUCHN Devices anlegen. Dann ist die Steuerung der Kanäle sauber getrennt, aber eben mit 3 Devices.

Bei Cul_HM sind es 4 Device.
Einmal das "Master"-Device mit den 3 Channels. Da läßt sich beim Dimmer nichts einstellen.
Die 3 Channels als eigene Device sind wie eigene Dimmer, was ich auch erwarte.

Für mich die beste Lösung.

Auch funktionierende Lösungen kann man hinterfragen.

rabehd

Zitat von: zap am 25 Februar 2025, 10:01:16define FHEM-Device HMCCUDEV Adresse forceDev

Eigentlich sollte dabei automatisch statedatapoint und controldatapoint auf 1.LEVEL zeigen (kann man mit einem "List" prüfen). D.h. Set-Befehle beziehen sich auf 1.LEVEL (was Du nicht möchtest, wenn ich es richtig verstehe, was aber valide ist, wenn jemand die Verknüpfungslogik nicht benötigt).

Du kannst aber trotzdem LEVEL in den den beiden virtuellen Kanälen 2+3 ändern mit:

set FHEM-Device datapoint 2.LEVEL Wert
set FHEM-Device datapoint 3.LEVEL Wert

Das klappt ganz gut. Alle Channels in einem Device ist übersichtlich.

Man müßte da aber aktuell mit userreadings arbeiten, denn die Radings pct, level und state zeigen nicht die realen Wert des gesamten Dimmers, sondern des Channel 1. Ich hätte hier den Wert aus LEVEL_REAL erwartet.

bei den Set-Befehlen such ich noch. Die Ramp-Zeit geht wohl verloren. Da war wohl auch mal so bei CUL_HM.

ZitatInternals:
   CFGFN     
   DEF        LEQ0878063 forceDev
   FUUID      67bd9eec-f33f-294e-d189-2e3de0c5567ee37c
   IODev      RaspberryMatic
   NAME       LD_blau_2.Mond
   NR         317
   STATE      95
   TYPE       HMCCUDEV
   ccuaddr    LEQ0878063
   ccudevstate active
   ccuif      BidCos-RF
   ccuname    HM-LC-Dim1PWM-CV LEQ0878063
   ccurolectrl DIMMER
   ccurolestate DIMMER
   ccusubtype HM-LC-Dim1PWM-CV
   ccutype    HM-LC-Dim1PWM-CV
   eventCount 39
   firmware   2.9
   readonly   no
   OLDREADINGS:
   READINGS:
     2025-02-25 11:56:47   1.DIRECTION     none
     2025-02-25 11:56:47   1.ERROR_OVERHEAT false
     2025-02-25 11:56:47   1.ERROR_REDUCED false
     2025-02-25 11:43:56   1.INHIBIT       false
     2025-02-25 11:56:47   1.LEVEL         95
     2025-02-25 11:56:47   1.LEVEL_REAL    10
     2025-02-25 11:56:47   1.WORKING       no
     2025-02-25 11:51:35   2.DIRECTION     NONE
     2025-02-25 11:51:35   2.ERROR_OVERHEAT false
     2025-02-25 11:51:35   2.ERROR_REDUCED false
     2025-02-25 11:43:56   2.INHIBIT       false
     2025-02-25 11:51:35   2.LEVEL         88
     2025-02-25 11:56:47   2.LEVEL_REAL    10
     2025-02-25 11:51:35   2.WORKING       false
     2025-02-25 11:46:22   3.DIRECTION     NONE
     2025-02-25 11:46:22   3.ERROR_OVERHEAT false
     2025-02-25 11:46:22   3.ERROR_REDUCED false
     2025-02-25 11:43:56   3.INHIBIT       false
     2025-02-25 11:46:22   3.LEVEL         90
     2025-02-25 11:56:47   3.LEVEL_REAL    10
     2025-02-25 11:46:22   3.WORKING       false
     2025-02-25 11:43:56   activity        alive
     2025-02-25 11:56:47   control         95
     2025-02-25 11:56:47   devstate        ok
     2025-02-25 11:56:47   hmstate         95
     2025-02-25 11:56:47   level           95
     2025-02-25 11:56:47   pct             95
     2025-02-25 11:43:56   rssidevice      N/A
     2025-02-25 11:43:56   rssipeer        N/A
     2025-02-25 11:43:56   sign            off
     2025-02-25 11:56:47   state           95
   hmccu:
     channels   4
     detect     1
     devspec    LEQ0878063
     forcedev   1
     nodefaults 0
     role       0:MAINTENANCE,1:DIMMER,2:VIRTUAL_DIMMER,3:VIRTUAL_DIMMER
     setDefaults 0
     cmdlist:
       get       
       set        toggle:noArg stop:noArg on-for-timer on-till up on:noArg down pct off:noArg level
     control:
       chn        1
       dpt        LEVEL
     dp:
       0.AES_KEY:
         VALUES:
           NVAL       0
           SVAL       off
           VAL        0
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.DEVICE_IN_BOOTLOADER:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.DUTYCYCLE:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       N/A
           SVAL       N/A
           VAL        -65535
       0.RSSI_PEER:
         VALUES:
           NVAL       N/A
           SVAL       N/A
           VAL        -65535
       0.STICKY_UNREACH:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       0.UNREACH:
         VALUES:
           NVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       1.DIRECTION:
         VALUES:
           NVAL       0
           ONVAL      2
           OSVAL      down
           OVAL       2
           SVAL       none
           VAL        0
       1.ERROR_OVERHEAT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       1.ERROR_REDUCED:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       1.INHIBIT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       1.LEVEL:
         VALUES:
           NVAL       95
           ONVAL      95.5
           OSVAL      96
           OVAL       0.955000
           SVAL       95
           VAL        0.950000
       1.LEVEL_REAL:
         VALUES:
           NVAL       10
           ONVAL      34
           OSVAL      34
           OVAL       0.340000
           SVAL       10
           VAL        0.100000
       1.WORKING:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      yes
           OVAL       1
           SVAL       no
           VAL        0
       2.DIRECTION:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      UP
           OVAL       1
           SVAL       NONE
           VAL        0
       2.ERROR_OVERHEAT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       2.ERROR_REDUCED:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       2.INHIBIT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       2.LEVEL:
         VALUES:
           NVAL       88
           ONVAL      20.5
           OSVAL      20
           OVAL       0.205000
           SVAL       88
           VAL        0.880000
       2.LEVEL_REAL:
         VALUES:
           NVAL       10
           ONVAL      34
           OSVAL      34
           OVAL       0.340000
           SVAL       10
           VAL        0.100000
       2.WORKING:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      true
           OVAL       1
           SVAL       false
           VAL        0
       3.DIRECTION:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      UP
           OVAL       1
           SVAL       NONE
           VAL        0
       3.ERROR_OVERHEAT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       3.ERROR_REDUCED:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       3.INHIBIT:
         VALUES:
           NVAL       0
           SVAL       false
           VAL        0
       3.LEVEL:
         VALUES:
           NVAL       90
           ONVAL      67.5
           OSVAL      67
           OVAL       0.675000
           SVAL       90
           VAL        0.900000
       3.LEVEL_REAL:
         VALUES:
           NVAL       10
           ONVAL      34
           OSVAL      34
           OVAL       0.340000
           SVAL       10
           VAL        0.100000
       3.WORKING:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      true
           OVAL       1
           SVAL       false
           VAL        0
     roleChannels:
       DIMMER     1
       MAINTENANCE 0
       VIRTUAL_DIMMER 2,3
     roleCmds:
       get:
       set:
         down:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:?delta=-10
           usage      down [delta]
           subcmd:
             000:
               args       -10
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
         level:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:?level
           usage      level level
           subcmd:
             000:
               args       
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    level
               partype    2
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
         off:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:0
           usage      off
           subcmd:
             000:
               args       0
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
         on:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:100
           usage      on
           subcmd:
             000:
               args       100
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
         on-for-timer:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   2
           syntax     V:ON_TIME:?duration V:LEVEL:100
           usage      on-for-timer duration
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    duration
               partype    2
               ps         VALUES
               scn        000
               type       FLOAT
               unit       s
             001:
               args       100
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        001
               type       FLOAT
               unit       100%
         on-till:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   2
           syntax     V:ON_TIME:?time V:LEVEL:100
           usage      on-till time
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    time
               partype    2
               ps         VALUES
               scn        000
               type       FLOAT
               unit       s
             001:
               args       100
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        001
               type       FLOAT
               unit       100%
         pct:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   3
           syntax     3:V:LEVEL:?level 1:V:ON_TIME:?time=0.0 2:V:RAMP_TIME:?ramp=0.5
           usage      pct level [time] [ramp]
           subcmd:
             000:
               args       
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    level
               partype    2
               ps         VALUES
               scn        003
               type       FLOAT
               unit       100%
             001:
               args       0.0
               dpt        ON_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    time
               partype    2
               ps         VALUES
               scn        001
               type       FLOAT
               unit       s
             002:
               args       0.5
               dpt        RAMP_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    ramp
               partype    2
               ps         VALUES
               scn        002
               type       FLOAT
               unit       s
         stop:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:RAMP_STOP:1
           usage      stop
           subcmd:
             000:
               args       1
               dpt        RAMP_STOP
               fnc       
               max        1
               min        0
               parname    RAMP_STOP
               partype    3
               ps         VALUES
               scn        000
               type       ACTION
               unit       
         toggle:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:0,100
           usage      toggle
           subcmd:
             000:
               args       0,100
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
         up:
           channel    1
           ps         VALUES
           role       DIMMER
           rpc        0
           subcount   1
           syntax     V:LEVEL:?delta=+10
           usage      up [delta]
           subcmd:
             000:
               args       +10
               dpt        LEVEL
               fnc       
               max        1.000000
               min        0.000000
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               type       FLOAT
               unit       100%
     state:
       chn        1
       dpt        LEVEL
Attributes:
   cmdIcon    on:general_an off:general_aus
   substexcl  pct|level
   webCmd     level:on:off
   widgetOverride level:slider,0,10,100

Auch funktionierende Lösungen kann man hinterfragen.