(gelöst) HMCCU: Hmip-BROLL invertieren

Begonnen von jhohmann, 25 Januar 2022, 15:01:51

Vorheriges Thema - Nächstes Thema

jhohmann

Hallo,
ich habe mich nun endlich auch getraut, mein FHEM nach längerer Zeit mal wieder zu aktualisieren und habe nun auch all meine HM-Geräte neu eingerichtet.
Das funktioniert soweit sehr gut.
Was ich vor dem Update aber auch schon gerne gehabt hätte:
Ich habe bereits einige Rolladenaktoren von EnOcean, die auch weiterhin funktionieren.
Nun habe ich an zwei Fenstern die Hmip-BROLL eingebaut, weil die in Summe günster und auch verfügbar waren.
Mir zeigen die EnOcean Aktoren aber den Wert 0 an, wenn sie komplett geöffnet sind und bei den beiden HM-Geräten bedeutet 100 komplett geöffnet.
Da EnOcean von der Menge her gewinnt :):
Kann ich die Positionsangaben der HM-Geräte invertieren, so dass ich auch hier 0 für komplett geöffnet angezeigt bekomme?
open und close sollen weiterhin das tun, was der Name so sagt.
Internals:
   DEF        00111D89953B8A
   FUUID      616edeab-f33f-98e0-e42f-e5592a5a01f49da2
   IODev      ccu
   NAME       ArbeitszimmerRolladen
   NR         429
   STATE      100
   TYPE       HMCCUDEV
   ccuaddr    00111D89953B8A
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    ArbeitszimmerRolladen
   ccurolectrl SHUTTER_VIRTUAL_RECEIVER
   ccurolestate SHUTTER_TRANSMITTER
   ccusubtype BROLL
   ccutype    HmIP-BROLL
   firmware   1.6.2
   readonly   no
   READINGS:
     2022-01-25 14:43:09   3.ACTIVITY_STATE STABLE
     2022-01-25 14:43:09   3.LEVEL         open
     2022-01-25 14:43:09   3.LEVEL_STATUS  NORMAL
     2022-01-25 11:24:33   3.SELF_CALIBRATION_RESULT false
     2022-01-25 14:43:09   4.ACTIVITY_STATE STABLE
     2022-01-25 14:43:09   5.ACTIVITY_STATE STABLE
     2022-01-25 14:43:09   6.ACTIVITY_STATE STABLE
     2022-01-25 11:23:52   IODev           ccu
     2022-01-25 14:43:09   activity        alive
     2022-01-25 14:43:09   control         open
     2022-01-25 14:43:09   devstate        ok
     2022-01-25 14:43:09   hmstate         open
     2022-01-25 14:43:09   level           open
     2022-01-25 14:43:09   pct             100
     2022-01-25 14:43:09   rssidevice      -75
     2022-01-25 11:24:33   rssipeer        -81
     2022-01-25 14:43:09   state           open
     2022-01-25 11:24:33   voltage         0.0
   hmccu:
     channels   8
     detect     5
     devspec    00111D89953B8A
     forcedev   0
     nodefaults 1
     role       0:MAINTENANCE,1:KEY_TRANSCEIVER,2:KEY_TRANSCEIVER,3:SHUTTER_TRANSMITTER,4:SHUTTER_VIRTUAL_RECEIVER,5:SHUTTER_VIRTUAL_RECEIVER,6:SHUTTER_VIRTUAL_RECEIVER,7:BLIND_WEEK_PROFILE
     setDefaults 0
     cmdlist:
       get       
       set        close:noArg pct up down open:noArg oldLevel:noArg stop:noArg toggle:noArg
     control:
       chn        4
       dpt        LEVEL
     dp:
       0.ACTUAL_TEMPERATURE:
         VALUES:
           NVAL       19.0
           ONVAL      20.0
           OSVAL      20.0
           OVAL       20.0
           SVAL       19.0
           VAL        19.0
       0.ACTUAL_TEMPERATURE_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.DUTY_CYCLE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.ERROR_CODE:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.ERROR_OVERHEAT:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.INSTALL_TEST:
         VALUES:
           NVAL       true
           ONVAL      true
           OSVAL      true
           OVAL       true
           SVAL       true
           VAL        true
       0.OPERATING_VOLTAGE:
         VALUES:
           NVAL       0.000000
           ONVAL      0.000000
           OSVAL      0.0
           OVAL       0.000000
           SVAL       0.0
           VAL        0.000000
       0.OPERATING_VOLTAGE_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -75
           ONVAL      -75
           OSVAL      -75
           OVAL       -75
           SVAL       -75
           VAL        -75
       0.RSSI_PEER:
         VALUES:
           NVAL       -81
           ONVAL      -81
           OSVAL      -81
           OVAL       175
           SVAL       -81
           VAL        175
       0.UNREACH:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      alive
           OVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       false
           ONVAL      false
           OSVAL      false
           OVAL       false
           SVAL       false
           VAL        false
       3.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       3.LEVEL:
         VALUES:
           NVAL       100
           ONVAL      100
           OSVAL      open
           OVAL       1.0
           SVAL       open
           VAL        1.0
       3.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       3.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       3.SECTION:
         VALUES:
           NVAL       15
           ONVAL      15
           OSVAL      15
           OVAL       15
           SVAL       15
           VAL        15
       3.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       3.SELF_CALIBRATION_RESULT:
         VALUES:
           NVAL       false
           ONVAL      false
           OSVAL      false
           OVAL       false
           SVAL       false
           VAL        false
       4.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       4.LEVEL:
         VALUES:
           NVAL       100
           ONVAL      100
           OSVAL      open
           OVAL       1.0
           SVAL       open
           VAL        1.0
       4.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       4.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       4.SECTION:
         VALUES:
           NVAL       4
           ONVAL      4
           OSVAL      4
           OVAL       4
           SVAL       4
           VAL        4
       4.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       5.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       5.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      closed
           OVAL       0.0
           SVAL       closed
           VAL        0.0
       5.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       5.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       5.SECTION:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       5.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       6.ACTIVITY_STATE:
         VALUES:
           NVAL       3
           ONVAL      3
           OSVAL      STABLE
           OVAL       3
           SVAL       STABLE
           VAL        3
       6.LEVEL:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      closed
           OVAL       0.0
           SVAL       closed
           VAL        0.0
       6.LEVEL_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       6.PROCESS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      STABLE
           OVAL       0
           SVAL       STABLE
           VAL        0
       6.SECTION:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       6.SECTION_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       7.WEEK_PROGRAM_CHANNEL_LOCKS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
     roleCmds:
       get:
       set:
         close:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:0
           usage      close
           subcmd:
             000:
               args       0
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         down:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?delta=-20
           usage      down [delta]
           subcmd:
             000:
               args       -20
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               unit       100%
         oldLevel:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:100.5
           usage      oldLevel
           subcmd:
             000:
               args       100.5
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         open:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:100
           usage      open
           subcmd:
             000:
               args       100
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    LEVEL
               partype    3
               ps         VALUES
               scn        000
               unit       100%
         pct:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?level
           usage      pct level
           subcmd:
             000:
               args       
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    level
               partype    2
               ps         VALUES
               scn        000
               unit       100%
         stop:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:STOP:1
           usage      stop
           subcmd:
             000:
               args       1
               dpt        STOP
               fnc       
               max        1
               min        0
               parname    STOP
               partype    3
               ps         VALUES
               scn        000
               unit       
         up:
           channel    4
           role       SHUTTER_VIRTUAL_RECEIVER
           subcount   1
           syntax     V:LEVEL:?delta=+20
           usage      up [delta]
           subcmd:
             000:
               args       +20
               dpt        LEVEL
               fnc       
               max        1.01
               min        0.0
               parname    delta
               partype    2
               ps         VALUES
               scn        000
               unit       100%
     state:
       chn        3
       dpt        LEVEL
Attributes:
   IODev      ccu
   ccureadingfilter 3.LEVEL;(ERROR_CODE|ERROR_OVERHEAT|ACTUAL_TEMPERATURE|ACTIVITY_STATE|SELF_CALIBRATION_RESULT)
   cmdIcon    open:fts_shutter_up stop:fts_shutter_manual close:fts_shutter_down
   genericDeviceType blind
   group      Rolladen
   hmstatevals ACTUAL_TEMPERATURE_STATUS!2:tempOverflow,3:tempUnderflow
   icon       fts_shutter_automatic
   room       Arbeitszimmer,Homekit
   stateFormat pct
   stripnumber 1
   substexcl  pct
   webCmd     open:close:stop:pct
   widgetOverride pct:slider,0,10,100
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

Otto123

Hi,

Zitat... angezeigt bekomme?
FHEM like würde ich sagen:
attr ArbeitszimmerRolladen stateFormat {100-ReadingsNum($name,'pct',0)}
Aber jetzt kommst Du bestimmt mit deinem slider :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

jhohmann

Die reine Anzeige ist der erste Schritt. Aber die Bedienung, also der Slider, sollte dazu passen  :D.
Und das möglichst mit passendem homebridheMapping  ;D.
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

jhohmann

#3
Habe vermutlich selbst eine Lösung gefunden.
Zusätzlich habe ich dann für mich noch eingebaut, dass neben den Kommandos "open" und "close" auch die Kommandos meiner EnOcean Devices funktionieren würden.
Wobei ein Langzeittest noch aussteht  :).

Hier die Erweiterung als Auszug:
defmod ArbeitszimmerRolladen HMCCUDEV .....
attr ArbeitszimmerRolladen eventMap { usr=>{'opens'=>'open', 'closes'=>'close', '^position ([0-9]|[1-9][0-9]|[1][0][0])$' => '".sprintf("pct %d",(100-$1))."'} }
attr ArbeitszimmerRolladen stateFormat position
attr ArbeitszimmerRolladen userReadings position {100-ReadingsNum($name,'pct',0)}
attr ArbeitszimmerRolladen webCmd open:close:stop:position
attr ArbeitszimmerRolladen widgetOverride position:slider,0,10,100
attr ArbeitszimmerRolladen homebridgeMapping clear\
CurrentPosition=pct,minValue=0,maxValue=100,minStep=1 \
TargetPosition=pct,minValue=0,maxValue=100,minStep=1,cmd=pct

Mit dem userReading wird ein abgeleitetes Reading "position" erzeugt, dessen Wert auch für das stateFormat herangezogen wird.
Weiterhin wird nun "position" anstelle von "pct" bei webCmd und widgetOverride genutzt.
Und mit dem eventMap werden die zusätzlichen Kommandos "opens", "closes" und "position XY" auf die bestehenden Befehle "open", "close" und "pct (100-XY))" umgewandelt.
Vermutlich bekommt man die regex, um die Zahl 0-100 abzugreifen, auch eleganter hin, aber so passt es für mich.
Das homebridgeMapping musste ich anpassen. Eine bestimmte Position anfahren ging auch ohne besondere Angaben, aber ganz schließen hat so nicht funktioniert.
Aber mit oben ergänzter Angabe geht nun auch das.
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna

jhohmann

homebridgeMapping im vorherigen Post ergänzt. Thema auf gelöst gesetzt.
Raspberry Pi 4 - bookworm / EnOcean - Rollo+Licht, deCONZ - Licht+Sensoren, ZWave - CO Messung, HMCCU mit piVCCU - Heizung+Rollo
plus dovecot, minidlna