Hallo zusammen,
ich versuche gerade mir das reading pct zu erstellen, damit meine Rolloaktoren (über HMCCUDEV) mit den 73_AutoShuttersControl funktionieren.
Ich habe es mit dem attr userReadings "pct{ReadingsNum($name,'control',0)}" versucht. Aber das bleibt beim update auf 0. Was mache ich da falsch?
Viele Grüße
Tim
bitte ein list vom Device erstellen.
Zitat von: zap am 25 Februar 2019, 11:42:35
bitte ein list vom Device erstellen.
Klar:
Internals:
DEF PEQ0182164 defaults
FUUID 5c729017-f33f-fb86-db0c-34e869eef480babe
IODev d_ccu
NAME HM_RO_Kinderzimmer
NR 124
STATE 100 %
TYPE HMCCUDEV
ccuaddr PEQ0182164
ccudevstate active
ccuif BidCos-RF
ccuname HM_RO_Kinderzimmer
ccutype HM-LC-Bl1PBU-FM
channels 2
firmware 2.11
statevals devstate
READINGS:
2019-02-24 13:38:02 0.AES_KEY 0
2019-02-24 13:38:02 0.CONFIG_PENDING false
2019-02-24 13:38:02 0.DEVICE_IN_BOOTLOADER false
2019-02-24 13:38:02 0.DUTYCYCLE false
2019-02-24 13:38:02 0.RSSI_DEVICE 173
2019-02-24 13:38:02 0.RSSI_PEER 178
2019-02-24 13:38:02 0.STICKY_UNREACH false
2019-02-24 13:38:02 0.UNREACH false
2019-02-24 13:38:02 0.UPDATE_PENDING false
2019-02-25 11:30:18 1.DIRECTION none
2019-02-25 11:30:18 1.INHIBIT 0
2019-02-25 11:30:18 1.LEVEL open
2019-02-25 11:30:18 1.WORKING no
2019-02-25 06:28:43 ASC_ShuttersLastDrive manual
2019-02-25 09:25:27 ASC_Time_DriveDown 25.02.2019 - 18:00
2019-02-25 09:25:27 ASC_Time_DriveUp 26.02.2019 - 07:00
2019-02-25 11:30:18 control 100
2019-02-25 11:30:18 hmstate open
2019-02-25 09:42:17 pct 0
2019-02-25 11:30:18 state open
hmccu:
devspec PEQ0182164
dp:
0.AES_KEY:
OVAL 0
VAL 0
0.CONFIG_PENDING:
OVAL false
VAL false
0.DEVICE_IN_BOOTLOADER:
OVAL false
VAL false
0.DUTYCYCLE:
OVAL false
VAL false
0.RSSI_DEVICE:
OVAL 173
VAL 173
0.RSSI_PEER:
OVAL 178
VAL 178
0.STICKY_UNREACH:
OVAL false
VAL false
0.UNREACH:
OVAL false
VAL false
0.UPDATE_PENDING:
OVAL false
VAL false
1.DIRECTION:
OSVAL none
OVAL 0
SVAL none
VAL 0
1.INHIBIT:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
1.LEVEL:
OSVAL open
OVAL 1.000000
SVAL open
VAL 1.000000
1.WORKING:
OSVAL no
OVAL 0
SVAL no
VAL 0
Attributes:
ASC 2
ASC_Antifreeze off
ASC_Antifreeze_Pos 15
ASC_AutoAstroModeEvening none
ASC_AutoAstroModeEveningHorizon none
ASC_AutoAstroModeMorning none
ASC_AutoAstroModeMorningHorizon none
ASC_BlockingTime_afterManual 1200
ASC_BlockingTime_beforDayOpen 3600
ASC_BlockingTime_beforNightClose 3600
ASC_BrightnessMaxVal -1
ASC_BrightnessMinVal -1
ASC_Brightness_Reading brightness
ASC_Brightness_Sensor none
ASC_Closed_Pos 0
ASC_ComfortOpen_Pos 80
ASC_Down astro
ASC_Drive_Offset -1
ASC_Drive_OffsetStart -1
ASC_GuestRoom none
ASC_LockOut off
ASC_LockOut_Cmd none
ASC_Mode_Down always
ASC_Mode_Up always
ASC_Open_Pos 100
ASC_Partymode off
ASC_Pos_Reading control
ASC_PrivacyDownTime_beforNightClose -1
ASC_PrivacyDown_Pos 50
ASC_Roommate_Device none
ASC_Roommate_Reading state
ASC_Self_Defense_Exclude off
ASC_Shading_Angle_Left 75
ASC_Shading_Angle_Right 75
ASC_Shading_Direction 180
ASC_Shading_Min_Elevation 25
ASC_Shading_Min_OutsideTemperature 18
ASC_Shading_Mode off
ASC_Shading_Pos 20
ASC_Shading_StateChange_Cloudy 20000
ASC_Shading_StateChange_Sunny 35000
ASC_Shading_WaitingPeriod 1200
ASC_ShuttersPlace window
ASC_Time_Down_Early 16:30
ASC_Time_Down_Late 22:00
ASC_Time_Up_Early 06:00
ASC_Time_Up_Late 07:00
ASC_Time_Up_WE_Holiday 08:30
ASC_Up astro
ASC_Ventilate_Pos 30
ASC_Ventilate_Window_Open on
ASC_WiggleValue 5
ASC_WindowRec none
ASC_WindowRec_subType twostate
IODev d_ccu
ccureadingfilter (LEVEL|INHIBIT|DIRECTION|WORKING)
ccuscaleval LEVEL:0:1:0:100
cmdIcon up:fts_shutter_up stop:fts_shutter_manual down:fts_shutter_down
controldatapoint 1.LEVEL
eventMap /datapoint 1.STOP true:stop/datapoint 1.LEVEL 0:down/datapoint 1.LEVEL 100:up/
room ASC
stateFormat { my $l = ReadingsVal ($name, "control", "na"); sprintf "%s", $l =~ /^(open|closed|na)$/ ? "$l" : "$l %"; }
statedatapoint 1.LEVEL
stripnumber 1
substexcl control
substitute LEVEL!#0-0:closed,#100-100:open;DIRECTION!0:none,1:up,2:down,3:undefined;WORKING!(0|false):no,(1|true):yes
userReadings pct{ReadingsNum($name,'control',0)}
userattr ASC_Antifreeze:off,soft,hard,am,pm ASC_Antifreeze_Pos:5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 ASC_AutoAstroModeEvening:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeEveningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_AutoAstroModeMorning:REAL,CIVIL,NAUTIC,ASTRONOMIC,HORIZON ASC_AutoAstroModeMorningHorizon:-9,-8,-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7,8,9 ASC_BlockingTime_afterManual ASC_BlockingTime_beforDayOpen ASC_BlockingTime_beforNightClose ASC_BrightnessMaxVal ASC_BrightnessMinVal ASC_Brightness_Reading ASC_Brightness_Sensor ASC_Closed_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_ComfortOpen_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Down:time,astro,brightness ASC_Drive_Offset ASC_Drive_OffsetStart ASC_GuestRoom:on,off ASC_LockOut:soft,hard,off ASC_LockOut_Cmd:inhibit,blocked,protection ASC_Mode_Down:absent,always,off,home ASC_Mode_Up:absent,always,off,home ASC_Open_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_Partymode:on,off ASC_Pos_Reading ASC_PrivacyDownTime_beforNightClose ASC_PrivacyDown_Pos ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_Exclude:on,off ASC_Shading_Angle_Left ASC_Shading_Angle_Right ASC_Shading_Direction ASC_Shading_Min_Elevation ASC_Shading_Min_OutsideTemperature ASC_Shading_Mode:absent,always,off,home ASC_Shading_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Shading_StateChange_Cloudy ASC_Shading_StateChange_Sunny ASC_Shading_WaitingPeriod ASC_ShuttersPlace:window,terrace ASC_Time_Down_Early ASC_Time_Down_Late ASC_Time_Up_Early ASC_Time_Up_Late ASC_Time_Up_WE_Holiday ASC_Up:time,astro,brightness ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindowRec ASC_WindowRec_subType:twostate,threestate
webCmd control:up:stop:down
widgetOverride control:slider,0,10,100
mach doch sowas wie
ccureadingname control:+pct
Zitat von: kjmEjfu am 25 Februar 2019, 12:57:47
mach doch sowas wie
ccureadingname control:+pct
Das geht auch nicht :-( irgendwas muss ich falsch machen!
Das userreading löschen.
Dann:
ccureadingname 1.LEVEL:+pct
substexcl control|pct
Das userreading hatte ich schon gelöscht.
Danke dir zap, so funktioniert das jetzt!
Hi,
ich habe so ziemlich das gleiche Anliegen und das gleiche Problem, aber kann es leider nicht lösen. Bzw. nur so halb, was mich eigentlich noch mehr wurmt. Denn es funktioniert tatsächlich manchmal...
Vielleicht hat jemand noch eine Idee? Im Grunde habe ich die "defaults" benutzt um einen Homematic IP (HmIP-BROLL) Unterputz Rolladen einzurichten. pct wurde dabei nie gesetzt (war immer 0).
Geändert habe ich nun ccureadingname von "LEVEL:+pct" auf "3.LEVEL:+pct" und nun wird pct manchmal gesetzt.
Ich habe auch mal ein notify (HM_RL_AZ_Rollade_Ankleidezimmer:.*) mit einem Log mit laufen lassen, da sieht man, dass pct erst richtig gesetzt wird und dann wieder auf 0. Irgendwer muss das wieder ersetzen, aber ich verstehe nicht, wann und warum. Würde es aber gerne verstehen :)
Kann mir jemand einen Tipp geben?
Viele Grüße
Chris
2019.03.02 18:43:47 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT control 20
2019.03.02 18:43:48 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 4.ACTIVITY_STATE: up
2019.03.02 18:43:49 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 3.LEVEL: 13
2019.03.02 18:43:49 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT pct: 13
2019.03.02 18:43:49 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 3.ACTIVITY_STATE: up
2019.03.02 18:43:49 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT pct: 0
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 3.LEVEL: 20
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT pct: 20
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 3.ACTIVITY_STATE: stop
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT pct: 0
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 4.LEVEL: 20
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT control: 20
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT state: 20
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT 4.ACTIVITY_STATE: stop
2019.03.02 18:43:51 1: _debugEvent HM_RL_AZ_Rollade_Ankleidezimmer with EVENT hmstate: 20
Internals:
CHANGED
DEF HM_RL_AZ_Rollade_Ankleidezimmer
FUUID 5c754ec6-f33f-ed53-df67-9e3064f5f18729bb
IODev ccu3
NAME HM_RL_AZ_Rollade_Ankleidezimmer
NR 566
STATE 20
TYPE HMCCUDEV
ccuaddr 001118A99517F2
ccudevstate active
ccuif HmIP-RF
ccuname HM_RL_AZ_Rollade_Ankleidezimmer
ccutype HmIP-BROLL
channels 8
firmware 1.6.2
statevals devstate
READINGS:
2019-03-02 18:17:29 0.ACTUAL_TEMPERATURE 25.0
2019-03-02 18:17:29 0.ACTUAL_TEMPERATURE_STATUS normal
2019-03-02 18:17:29 0.ERROR_CODE 0
2019-03-02 18:17:29 0.ERROR_OVERHEAT no
2019-03-02 18:43:51 3.ACTIVITY_STATE stop
2019-03-02 18:43:51 3.LEVEL 20
2019-03-02 18:43:51 3.LEVEL_STATUS 0
2019-02-27 08:37:09 3.SELF_CALIBRATION_RESULT failed
2019-03-02 18:43:51 4.ACTIVITY_STATE stop
2019-03-02 18:43:51 4.LEVEL 20
2019-03-02 18:43:51 4.LEVEL_STATUS 0
2019-03-02 18:43:51 5.ACTIVITY_STATE stop
2019-03-02 18:43:51 5.LEVEL closed
2019-03-02 18:43:51 5.LEVEL_STATUS 0
2019-03-02 18:43:51 6.ACTIVITY_STATE stop
2019-03-02 18:43:51 6.LEVEL closed
2019-03-02 18:43:51 6.LEVEL_STATUS 0
2019-03-02 18:43:51 activity alive
2019-03-02 18:43:51 control 20
2019-03-02 18:43:51 hmstate 20
2019-03-02 18:43:51 pct 0
2019-03-02 18:43:51 state 20
hmccu:
devspec HM_RL_AZ_Rollade_Ankleidezimmer
dp:
0.ACTUAL_TEMPERATURE:
OSVAL 25.0
OVAL 25.0
SVAL 25.0
VAL 25.0
0.ACTUAL_TEMPERATURE_STATUS:
OSVAL normal
OVAL 0
SVAL normal
VAL 0
0.CONFIG_PENDING:
OVAL 0
VAL 0
0.DUTY_CYCLE:
OVAL 0
VAL 0
0.ERROR_CODE:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
0.ERROR_OVERHEAT:
OSVAL no
OVAL 0
SVAL no
VAL 0
0.INSTALL_TEST:
OVAL true
VAL true
0.OPERATING_VOLTAGE:
OVAL 0.000000
VAL 0.000000
0.OPERATING_VOLTAGE_STATUS:
OVAL 0
VAL 0
0.RSSI_DEVICE:
OVAL -75
VAL -74
0.RSSI_PEER:
OVAL -71
VAL -72
0.UNREACH:
OSVAL alive
OVAL 0
SVAL alive
VAL 0
0.UPDATE_PENDING:
OVAL false
VAL false
3.ACTIVITY_STATE:
OSVAL up
OVAL 1
SVAL stop
VAL 3
3.LEVEL:
OSVAL 13
OVAL 0.13
SVAL 20
VAL 0.2
3.LEVEL_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
3.PROCESS:
OVAL 1
VAL 0
3.SECTION:
OVAL 15
VAL 15
3.SECTION_STATUS:
OVAL 0
VAL 0
3.SELF_CALIBRATION_RESULT:
OSVAL failed
OVAL false
SVAL failed
VAL false
4.ACTIVITY_STATE:
OSVAL up
OVAL 1
SVAL stop
VAL 3
4.LEVEL:
OSVAL 10
OVAL 0.1
SVAL 20
VAL 0.2
4.LEVEL_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
4.PROCESS:
OVAL 1
VAL 0
4.SECTION:
OVAL 3
VAL 4
4.SECTION_STATUS:
OVAL 0
VAL 0
5.ACTIVITY_STATE:
OSVAL stop
OVAL 3
SVAL stop
VAL 3
5.LEVEL:
OSVAL closed
OVAL 0.0
SVAL closed
VAL 0.0
5.LEVEL_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
5.PROCESS:
OVAL 0
VAL 0
5.SECTION:
OVAL 0
VAL 0
5.SECTION_STATUS:
OVAL 0
VAL 0
6.ACTIVITY_STATE:
OSVAL stop
OVAL 3
SVAL stop
VAL 3
6.LEVEL:
OSVAL closed
OVAL 0.0
SVAL closed
VAL 0.0
6.LEVEL_STATUS:
OSVAL 0
OVAL 0
SVAL 0
VAL 0
6.PROCESS:
OVAL 0
VAL 0
6.SECTION:
OVAL 0
VAL 0
6.SECTION_STATUS:
OVAL 0
VAL 0
7.WEEK_PROGRAM_CHANNEL_LOCKS:
OVAL 0
VAL 0
Attributes:
IODev ccu3
ccureadingfilter (ERROR_CODE|ERROR_OVERHEAT|ACTUAL_TEMPERATURE|LEVEL|ACTIVITY_STATE|SELF_CALIBRATION_RESULT)
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/datapoint 3.SELF_CALIBRATION 0:stopCalibration/datapoint 3.SELF_CALIBRATION 1:startCalibration/
group Rolladen
hmstatevals ACTUAL_TEMPERATURE_STATUS!2:tempOverflow,3:tempUnderflow;ERROR_OVERHEAT!(1|true):overheat
icon fts_shutter
room Ankleidezimmer,Homematic
statedatapoint 4.LEVEL
stripnumber 1
substexcl control|pct
substitute LEVEL!#0-0:closed,#100-100:open;ACTIVITY_STATE!0:unknown,1:up,2:down,3:stop;ERROR_OVERHEAT!(0|false):no,(1|true):yes;ACTUAL_TEMPERATURE_STATUS!0:normal,1:unknown,2:overflow,3:underflow;SELF_CALIBRATION_RESULT!(0|false):failed,(1|true):ok
webCmd control:up:stop:down
widgetOverride control:slider,0,10,100
Das Problem: Du hast sowohl bei ccureadingfilter als auch bei ccureadingname "LEVEL" angegeben. Das sind jeweils reguläre Ausdrücke. Die matchen nicht nur bei LEVEL sondern auch bei LEVEL_STATUS. Effekt: LEVEL_STATUS überschreibt Dir pct mit 0.
2 Möglichkeiten:
Du setzt ccureadingname auf 3.LEVEL$:+pct
Du nimmst LEVEL_STATUS aus dem Readingfilter:
ccureadingfilter ^(ERROR_CODE|ERROR_OVERHEAT|ACTUAL_TEMPERATURE|LEVEL|ACTIVITY_STATE|SELF_CALIBRATION_RESULT)$
Verstehe, ganz vielen Dank. Jetzt funktioniert es.
Könnten wir das nicht bei den defaults mit aufnehmen, damit andere nicht auch in die Falle laufen? Ich habe mich aus Performancegründen für die Möglichkeit entschieden ccureadingfilter anzupassen.
Viele Grüße
Chris
Ich habe dasselbe Problem.
Bei dieser Lösung hier ist mir aufgefallen, dass sie etwas wackelig zu sein scheint.
Beispielsweise funktioniert die Lösung scheinbar nicht, wenn man am HMCCU Device bereits ccudef-ccureadingfilter gesetzt hat.
Auch wird pct nun zwar als Reading richtig geführt, dafür ist aber control manchmal einfach 0. Ich habe aber nicht herausfinden können wieso.
Ein komplettes Beispiel (list vom Device + Inhalt von ccudef-readingfilter) wäre hilfreich. Die Einführung von ccudef-readingfilter fällt leider in die Kategorie "gut gemeint, nicht gut gemacht"