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
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
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.
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.
homebridgeMapping im vorherigen Post ergänzt. Thema auf gelöst gesetzt.