Hi,
ich bräuchte da nochmal einen Schubser in die richtige Richtung.
Meine HM-LC-Bl1-FM sind mit den Defaults hinterlegt, im substitute also
LEVEL!#0-0:closed,#100-100:open;DIRECTION!0:none,1:up,2:down,3:undefined;WORKING!(0|false):no,(1|true):yes;
Das führt dazu, dass sowohl im State als auch im reading pct jeweils ebenfalls für 0 das closed und für open die 100 ersetzt werden.
Ich bräuchte aber im pct stattdessen 0 bzw. 100. Ich könnte daher den entsprechenden Teil zum Level im substitute löschen, aber dann würde ich LEVEL und state ja auch verändern, dass will ich aber nicht.
Mit welchem Attribut müsste ich denn hier agieren?
Oder müsste ich den Teil
^(.+\.)?LEVEL$:+pct;
aus dem ccudef-readingname rausnehmen und das Reading anders synchron halten?
DANke schon mal
Hat sich erledigt, bin über substexcl gestolpert.
ich würde mich über Deine RAW Definition freuen ;)
set defaults
@zap
Auch für die HmIP-FROLL? :-X
3.LEVEL Würde bei mir stimmen
Nein, für die nicht. Mach mal ein "get deviceinfo" und poste die Ausgabe.
CHN 001158A98xxxxx:0 HmIP-FROLL 001158A98xxxxx:0
DPT {f} HmIP-RF.001158A98xxxxx:0.ACTUAL_TEMPERATURE = 37.000000 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:0.CONFIG_PENDING = false [RE]
DPT {b} HmIP-RF.001158A98xxxxx:0.DUTY_CYCLE = false [RE]
DPT {n} HmIP-RF.001158A98xxxxx:0.ERROR_CODE = 0 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:0.ERROR_OVERHEAT = false [RE]
DPT {f} HmIP-RF.001158A98xxxxx:0.OPERATING_VOLTAGE = 0.000000 [RE]
DPT {n} HmIP-RF.001158A98xxxxx:0.RSSI_DEVICE = 187 [RE]
DPT {n} HmIP-RF.001158A98xxxxx:0.RSSI_PEER = 184 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:0.UNREACH = false [RE]
DPT {b} HmIP-RF.001158A98xxxxx:0.UPDATE_PENDING = false [RE]
CHN 001158A98xxxxx:1 HmIP-FROLL 001158A98xxxxx:1
DPT {b} HmIP-RF.001158A98xxxxx:1.PRESS_LONG = [E]
DPT {b} HmIP-RF.001158A98xxxxx:1.PRESS_SHORT = [E]
CHN 001158A98xxxxx:2 HmIP-FROLL 001158A98xxxxx:2
DPT {b} HmIP-RF.001158A98xxxxx:2.PRESS_LONG = [E]
DPT {b} HmIP-RF.001158A98xxxxx:2.PRESS_SHORT = [E]
CHN 001158A98xxxxx:3 HmIP-FROLL 001158A98xxxxx:3
DPT {f} HmIP-RF.001158A98xxxxx:3.LEVEL = 0.150000 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:3.PROCESS = 0 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:3.SECTION = 15 [RE]
CHN 001158A98xxxxx:4 HmIP-FROLL 001158A98xxxxx:4
DPT {f} HmIP-RF.001158A98xxxxx:4.LEVEL = 0.000000 [RWE]
DPT {i} HmIP-RF.001158A98xxxxx:4.PROCESS = 0 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:4.SECTION = 0 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:4.STOP = [W]
CHN 001158A98xxxxx:5 HmIP-FROLL 001158A98xxxxx:5
DPT {f} HmIP-RF.001158A98xxxxx:5.LEVEL = 0.000000 [RWE]
DPT {i} HmIP-RF.001158A98xxxxx:5.PROCESS = 0 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:5.SECTION = 0 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:5.STOP = [W]
CHN 001158A98xxxxx:6 HmIP-FROLL 001158A98xxxxx:6
DPT {f} HmIP-RF.001158A98xxxxx:6.LEVEL = 0.000000 [RWE]
DPT {i} HmIP-RF.001158A98xxxxx:6.PROCESS = 0 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:6.SECTION = 0 [RE]
DPT {b} HmIP-RF.001158A98xxxxx:6.STOP = [W]
CHN 001158A98xxxxx:7 HmIP-FROLL 001158A98xxxxx:7
DPT {i} HmIP-RF.001158A98xxxxx:7.WEEK_PROGRAM_CHANNEL_LOCKS = 0 [RE]
DPT {i} HmIP-RF.001158A98xxxxx:7.WEEK_PROGRAM_TARGET_CHANNEL_LOCK = [W]
DPT {i} HmIP-RF.001158A98xxxxx:7.WEEK_PROGRAM_TARGET_CHANNEL_LOCKS = [W]
Probiere es mal mit folgenden Attributen (HMCCUDEV):
ccureadingfilter = (LEVEL|PROCESS|SECTION|PRESS)
ccureadingname = 3.LEVEL:+pct
ccuscaleval = LEVEL:0:1:0:100
cmdIcon = up:fts_shutter_up stop:fts_shutter_manual down:fts_shutter_down
controldatapoint = 3.LEVEL
eventMap = /datapoint 4.STOP true:stop/datapoint 3.LEVEL 0:down/datapoint 3.LEVEL 100:up/"
statedatapoint = 3.LEVEL
stripnumber = 1
substexcl = control|pct
substitute = LEVEL!#0-0:closed,#100-100:open
webCmd = control:up:stop:down
widgetOverride = control:slider,0,10,100
Bei STOP musst Du mal rumprobieren, da es das in mehreren Kanälen gibt. Eins davon wird funktionieren. Die Bedeutung von SECTION und PROCESS ist mir nicht klar. Sollte in der Doku stehen. Dann ggf. noch substitute ergänzen.
Berichte mal, welches STOP funktioniert. Dann übernehme ich das in die Defaults.
Hallo Zap,
habs mal probiert.
3.LEVEL zu lesen klappt soweit. Schreiben ist jedoch nicht möglich [RE].
- HMCCUDEV: RA_Buero Invalid datapoint
Demnach klappts auch mit dem eventMap nicht, bzw es gibt nun Schönheitsfehler.
Beim Betätigen von den Icons fts_shutter_up bzw. fts_shutter_down springt der Slider auf 100 bzw 0%.
Beim direkten betätigen des Sliders bleibt der Sollwert angezeigt.
Ich nehme an, das EventMap keine aktuellen werte zurückbekommt.
Zu dem reading .PROCESS kann ich sagen, das dort eine "1" steht, solang der Motor Angesteuert wird.
Das reading .SECTION ändert sich je nach eingestelltem Behang.
Die Kanäle 4,5,6 sind in der CCU2 parametrierbar. Es lassen sich auch Kanäle abschalten.
Wofür diese dann wohl sind?
hier mal ein list RA_Buero ohne ccureadingfilter = (LEVEL|PROCESS|SECTION|PRESS)
Internals:
CHANGED
DEF 001158A98xxxxx
IODev DIN_W93_ccu2
NAME RA_Buero
NR 698
STATE 49.5 %
TYPE HMCCUDEV
ccuaddr 001158A98xxxxx
ccudevstate active
ccuif HmIP-RF
ccuname RA_Buero
ccutype HmIP-FROLL
channels 8
firmware 1.2.0
statevals devstate
READINGS:
2018-04-22 08:47:08 0.ACTUAL_TEMPERATURE 26.0
2018-04-22 08:47:08 0.CONFIG_PENDING false
2018-04-22 08:51:52 0.DUTY_CYCLE 0
2018-04-22 08:47:08 0.ERROR_CODE 0
2018-04-22 08:47:08 0.ERROR_OVERHEAT false
2018-04-22 08:47:08 0.OPERATING_VOLTAGE 0.0
2018-04-22 08:51:52 0.RSSI_DEVICE -52
2018-04-22 08:51:51 0.RSSI_PEER -54
2018-04-22 08:51:52 0.UNREACH 0
2018-04-22 08:47:08 0.UPDATE_PENDING false
2018-04-22 08:51:52 3.LEVEL 49.5
2018-04-22 08:51:52 3.PROCESS 0
2018-04-22 08:51:52 3.SECTION 15
2018-04-22 08:51:52 4.LEVEL open
2018-04-22 08:51:52 4.PROCESS 0
2018-04-22 08:51:52 4.SECTION 4
2018-04-22 08:51:53 5.LEVEL closed
2018-04-22 08:51:53 5.PROCESS 0
2018-04-22 08:51:53 5.SECTION 0
2018-04-22 08:51:53 6.LEVEL closed
2018-04-22 08:51:53 6.PROCESS 0
2018-04-22 08:51:53 6.SECTION 0
2018-04-22 08:47:08 7.WEEK_PROGRAM_CHANNEL_LOCKS 0
2018-04-22 08:51:52 control 100
2018-04-22 08:51:53 hmstate 49.5
2018-04-22 08:51:52 pct 49.5
2018-04-22 08:51:52 state 49.5
hmccu:
dp:
0.ACTUAL_TEMPERATURE:
OSVAL 26.0
OVAL 26.000000
SVAL 26.0
VAL 26.000000
0.CONFIG_PENDING:
OSVAL false
OVAL false
SVAL false
VAL false
0.DUTY_CYCLE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.ERROR_CODE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.ERROR_OVERHEAT:
OSVAL false
OVAL false
SVAL false
VAL false
0.OPERATING_VOLTAGE:
OSVAL 0.0
OVAL 0.000000
SVAL 0.0
VAL 0.000000
0.RSSI_DEVICE:
OSVAL -52
OVAL -52
SVAL -52
VAL -52
0.RSSI_PEER:
OSVAL -56
OVAL -56
SVAL -54
VAL -54
0.UNREACH:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.UPDATE_PENDING:
OSVAL false
OVAL false
SVAL false
VAL false
3.LEVEL:
OSVAL 25
OVAL 0.25
SVAL 49.5
VAL 0.495
3.PROCESS:
OSVAL 1
OVAL 1
SVAL 0
VAL 0
3.SECTION:
OSVAL 15
OVAL 15
SVAL 15
VAL 15
4.LEVEL:
OSVAL open
OVAL 1.0
SVAL open
VAL 1.0
4.PROCESS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
4.SECTION:
OSVAL 4
OVAL 4
SVAL 4
VAL 4
5.LEVEL:
OSVAL closed
OVAL 0.0
SVAL closed
VAL 0.0
5.PROCESS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
5.SECTION:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
6.LEVEL:
OSVAL closed
OVAL 0.0
SVAL closed
VAL 0.0
6.PROCESS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
6.SECTION:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
7.WEEK_PROGRAM_CHANNEL_LOCKS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
Attributes:
IODev DIN_W93_ccu2
alexaName Büro
ccureadingname 3.LEVEL:+pct
ccuscaleval LEVEL:0:1:0:100
cmdIcon up:fts_shutter_up stop:fts_shutter_manual down:fts_shutter_down
controldatapoint 4.LEVEL
event-on-change-reading .*
eventMap /datapoint 4.STOP true:stop/datapoint 4.LEVEL 0:down/datapoint 4.LEVEL 100:up/
genericDeviceType blind
icon fts_shutter
room Homematic,alexa
stateFormat { my $l = ReadingsVal ($name, "3.LEVEL", "na"); sprintf "%s", $l =~ /^(open|closed|na)$/ ? "$l" : "$l %"; }
statedatapoint 3.LEVEL
stripnumber 1
substexcl control|pct
substitute LEVEL!#0-0:closed,#100-100:open
webCmd control:up:stop:down
widgetOverride control:slider,0,5,100