[ASC] lüften beenden, schliesst das rollo nicht

Begonnen von frank, 18 August 2022, 14:46:20

Vorheriges Thema - Nächstes Thema

frank

scenario:
rollo ist manuell geschlossen.
nun wird fenster gekippt => rollo öffnet auf 30 => wie gewollt, alles gut
später wird fenster wieder geschlossen => rollo bleibt bei 30 => warum schliesst das rolo nicht wieder?

######################### kein rollo schliessen nach fenster schliessen

######################### rollo war manuell geschlossen. fenster wird gekippt und öffnet rollo auf position 30. ok

2022.08.18 13:35:15.999 4: CUL_Parse: cul868 A 0C 28 A441 1C1BE3 1ACE1F 01276434 -48
2022.08.18 13:35:16.001 5: cul868: dispatch A0C28A4411C1BE31ACE1F012764::-48:cul868
2022.08.18 13:35:16.022 1: ----- IODev-Change ----- => Fenster.Bad: cul868 -> no change
2022.08.18 13:35:16.035 5: cul868 sending As0A2880021ACE1F1C1BE300
2022.08.18 13:35:16.036 5: CUL 1C1BE3 dly:64ms
2022.08.18 13:35:16.101 5: DevIo_SimpleWrite cul868: As0A2880021ACE1F1C1BE300
2022.08.18 13:35:16.120 1: ----- IODev-Change ----- => Fenster.Bad: cul868 -> no change
2022.08.18 13:35:16.130 5: cul868 sending As0A2880021ACE1F1C1BE300
2022.08.18 13:35:16.132 5: CUL 1C1BE3 dly:28ms
2022.08.18 13:35:16.161 5: DevIo_SimpleWrite cul868: As0A2880021ACE1F1C1BE300

ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingWindowRec: BlindPBU01 - RECEIVED EVENT: contact: tilted (to ccu) state: tilted trigger_cnt: 39 - IDENTIFIED EVENT: tilted - STORED EVENT: tilted

ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingWindowRec: BlindPBU01 - HOMEMODE: none QueryShuttersPosWinRecTilted:1 QueryShuttersPosWinRecComfort: 1

ASC_DEBUG!!! 2022.08.18 13:35:16 - FnSetCmdFn: BlindPBU01 - Rollo wird gefahren, aktuelle Position: 0, Zielposition: 30. Grund der Fahrt: ventilate - window open
2022.08.18 13:35:16.202 3: CUL_HM set BlindPBU01 pct 30
2022.08.18 13:35:16.290 1: ----- IODev-Change ----- => BlindPBU01: cul868 -> no change
2022.08.18 13:35:16.301 5: cul868 sending As0C26A0111ACE1F31696102013C
2022.08.18 13:35:16.302 5: DevIo_SimpleWrite cul868: As0C26A0111ACE1F31696102013C

ASC_DEBUG!!! 2022.08.18 13:35:16 - FnSetDriveCmd: BlindPBU01 - NICHT versetztes fahren

ASC_DEBUG!!! 2022.08.18 13:35:16 - FnSetDriveCmd: BlindPBU01 - NoDelay: JA
2022.08.18 13:35:16.357 0: HMLAN_Parse: hmlan1 R:E1C1BE3   stat:0000 t:A07A9648 d:FF r:FFDB     m:28 A441 1C1BE3 1ACE1F 012764
2022.08.18 13:35:16.360 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A07A96CB d:FF r:FFCE     m:28 8002 1ACE1F 1C1BE3 00
2022.08.18 13:35:16.363 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A07A9706 d:FF r:FFCF     m:28 8002 1ACE1F 1C1BE3 00
2022.08.18 13:35:16.366 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A07A9795 d:FF r:FFD0     m:26 A011 1ACE1F 316961 02013C
2022.08.18 13:35:16.392 0: HMUARTLGW hmuart1 recv: 01 05 00 00 3D msg: 28 A4 41 1C1BE3 1ACE1F 012764
2022.08.18 13:35:16.395 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 28 80 02 1ACE1F 1C1BE3 00
2022.08.18 13:35:16.399 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 28 80 02 1ACE1F 1C1BE3 00
2022.08.18 13:35:16.402 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 26 A0 11 1ACE1F 316961 02013C
2022.08.18 13:35:16.459 4: CUL_Parse: cul868 A 0E 26 8002 316961 1ACE1F 010100102E3D -43.5
2022.08.18 13:35:16.460 5: cul868: dispatch A0E2680023169611ACE1F010100102E::-43.5:cul868

ASC_DEBUG!!! 2022.08.18 13:35:16 - Notify:  ASC_Pos_Reading Event vom Rollo BlindPBU01 wurde erkannt  - RECEIVED EVENT: $VAR1 = [
          'CommandAccepted: yes',
          'recentStateType: ack',
          'commState: CMDs_done',
          'deviceMsg: off (to ccu)',
          'level: 0',
          'motor: up:off',
          'pct: 0',
          'state: off',
          'timedOn: off',
          'motorErr: ok'
        ];


ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingShutters:  Fn wurde durch Notify aufgerufen da ASC_Pos_Reading Event erkannt wurde  - RECEIVED EVENT: $VAR1 = 'CommandAccepted: yes recentStateType: ack commState: CMDs_done deviceMsg: off (to ccu) level: 0 motor: up:off pct: 0 state: off timedOn: off motorErr: ok';


ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingShutters: BlindPBU01 - Event vom Rollo erkannt. Es wird nun eine etwaige manuelle Fahrt ausgewertet. Int von ::gettimeofday: 1660822516 Last Position Timestamp: 1660822516 Drive Up Max Duration: 60 Last Position: 0 aktuelle Position: 0

ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!

ASC_DEBUG!!! 2022.08.18 13:35:16 - EventProcessingShutters:  Fn wurde durlaufen und es sollten Debugausgaben gekommen sein.  !!!Wenn nicht!!! wurde der Event nicht korrekt als Nummerisch erkannt.
2022.08.18 13:35:16.577 0: HMLAN_Parse: hmlan1 R:E316961   stat:0000 t:A07A9813 d:FF r:FFDF     m:26 8002 316961 1ACE1F 010100102E
2022.08.18 13:35:16.580 0: HMUARTLGW hmuart1 recv: 01 05 00 00 28 msg: 26 80 02 316961 1ACE1F 010100102E
2022.08.18 13:35:26.684 4: CUL_Parse: cul868 A 0D 27 A410 316961 1ACE1F 06013C003F -42.5
2022.08.18 13:35:26.685 5: cul868: dispatch A0D27A4103169611ACE1F06013C00::-42.5:cul868
2022.08.18 13:35:26.704 1: ----- IODev-Change ----- => BlindPBU01: cul868 -> no change
2022.08.18 13:35:26.719 5: cul868 sending As0A2780021ACE1F31696100
2022.08.18 13:35:26.720 5: CUL 316961 dly:64ms
2022.08.18 13:35:26.786 5: DevIo_SimpleWrite cul868: As0A2780021ACE1F31696100

ASC_DEBUG!!! 2022.08.18 13:35:26 - Notify:  ASC_Pos_Reading Event vom Rollo BlindPBU01 wurde erkannt  - RECEIVED EVENT: $VAR1 = [
          'recentStateType: info',
          'commState: CMDs_done',
          'deviceMsg: 30 (to ccu)',
          'level: 30',
          'motor: stop:30',
          'pct: 30',
          'state: 30',
          'timedOn: off',
          'motorErr: ok'
        ];


ASC_DEBUG!!! 2022.08.18 13:35:26 - EventProcessingShutters:  Fn wurde durch Notify aufgerufen da ASC_Pos_Reading Event erkannt wurde  - RECEIVED EVENT: $VAR1 = 'recentStateType: info commState: CMDs_done deviceMsg: 30 (to ccu) level: 30 motor: stop:30 pct: 30 state: 30 timedOn: off motorErr: ok';


ASC_DEBUG!!! 2022.08.18 13:35:26 - EventProcessingShutters: BlindPBU01 - Event vom Rollo erkannt. Es wird nun eine etwaige manuelle Fahrt ausgewertet. Int von ::gettimeofday: 1660822526 Last Position Timestamp: 1660822516 Drive Up Max Duration: 60 Last Position: 0 aktuelle Position: 30

ASC_DEBUG!!! 2022.08.18 13:35:26 - EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!

ASC_DEBUG!!! 2022.08.18 13:35:26 - EventProcessingShutters:  Fn wurde durlaufen und es sollten Debugausgaben gekommen sein.  !!!Wenn nicht!!! wurde der Event nicht korrekt als Nummerisch erkannt.
2022.08.18 13:35:26.878 0: HMLAN_Parse: hmlan1 R:E316961   stat:0000 t:A07AC006 d:FF r:FFD8     m:27 A410 316961 1ACE1F 06013C00
2022.08.18 13:35:26.881 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A07AC089 d:FF r:FFCD     m:27 8002 1ACE1F 316961 00
2022.08.18 13:35:26.886 0: HMUARTLGW hmuart1 recv: 01 05 00 00 27 msg: 27 A4 10 316961 1ACE1F 06013C00
2022.08.18 13:35:26.889 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 27 80 02 1ACE1F 316961 00

########################## jetzt wird fenster wieder geschlossen, aber rollo bleibt bei position 30. falsch, sollte wieder geschlossen werden.

2022.08.18 13:41:52.503 4: CUL_Parse: cul868 A 0C 29 A441 1C1BE3 1ACE1F 01280028 -54
2022.08.18 13:41:52.506 5: cul868: dispatch A0C29A4411C1BE31ACE1F012800::-54:cul868
2022.08.18 13:41:52.544 1: ----- IODev-Change ----- => Fenster.Bad: cul868 -> no change
2022.08.18 13:41:52.563 5: cul868 sending As0A2980021ACE1F1C1BE300
2022.08.18 13:41:52.565 5: CUL 1C1BE3 dly:40ms
2022.08.18 13:41:52.606 5: DevIo_SimpleWrite cul868: As0A2980021ACE1F1C1BE300
2022.08.18 13:41:52.632 1: ----- IODev-Change ----- => Fenster.Bad: cul868 -> no change
2022.08.18 13:41:52.644 5: cul868 sending As0A2980021ACE1F1C1BE300
2022.08.18 13:41:52.645 5: CUL 1C1BE3 dly:19ms
2022.08.18 13:41:52.666 5: DevIo_SimpleWrite cul868: As0A2980021ACE1F1C1BE300

ASC_DEBUG!!! 2022.08.18 13:41:52 - EventProcessingWindowRec: BlindPBU01 - RECEIVED EVENT: contact: closed (to ccu) state: closed trigger_cnt: 40 - IDENTIFIED EVENT: closed - STORED EVENT: closed

ASC_DEBUG!!! 2022.08.18 13:41:52 - EventProcessingWindowRec: BlindPBU01 - HOMEMODE: none QueryShuttersPosWinRecTilted: QueryShuttersPosWinRecComfort: 1

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnIsDay: BlindPBU01 Allgemein: 1

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnIsDay: BlindPBU01 Allgemein: 1

ASC_DEBUG!!! 2022.08.18 13:41:52 - EventProcessingWindowRec: BlindPBU01 Event Closed

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnIsDay: BlindPBU01 Allgemein: 1

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnSetCmdFn: BlindPBU01 - Abbruch aktuelle Position ist gleich der Zielposition 30=30

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnSetDriveCmd: BlindPBU01 - NICHT versetztes fahren

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnSetDriveCmd: BlindPBU01 - NoDelay: JA
2022.08.18 13:41:52.727 0: HMLAN_Parse: hmlan1 R:E1C1BE3   stat:0000 t:A080A364 d:FF r:FFD4     m:29 A441 1C1BE3 1ACE1F 012800
2022.08.18 13:41:52.748 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A080A3E9 d:FF r:FFC8     m:29 8002 1ACE1F 1C1BE3 00
2022.08.18 13:41:52.752 0: HMLAN_Parse: hmlan1 R:E1ACE1F   stat:0000 t:A080A424 d:FF r:FFC9     m:29 8002 1ACE1F 1C1BE3 00
2022.08.18 13:41:52.756 0: HMUARTLGW hmuart1 recv: 01 05 00 00 33 msg: 29 A4 41 1C1BE3 1ACE1F 012800
2022.08.18 13:41:52.760 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 29 80 02 1ACE1F 1C1BE3 00
2022.08.18 13:41:52.763 0: HMUARTLGW hmuart1 recv: 01 05 00 00 1D msg: 29 80 02 1ACE1F 1C1BE3 00

#########################



list rollo
Internals:
   DEF        316961
   FUUID      626a3938-f33f-09c4-f76b-de9b449a5770af9f
   IODev      cul868
   LASTInputDev hmuart1
   MSGCNT     315
   NAME       BlindPBU01
   NR         763
   NTFY_ORDER 48-BlindPBU01
   STATE      30
   TYPE       CUL_HM
   chanNo     01
   cul868_MSGCNT 106
   cul868_RAWMSG A0D27A4103169611ACE1F06013C00::-42.5:cul868
   cul868_RSSI -42.5
   cul868_TIME 2022-08-18 13:35:26
   disableNotifyFn 1
   hmlan1_MSGCNT 103
   hmlan1_RAWMSG E316961,0000,A07AC006,FF,FFD8,27A4103169611ACE1F06013C00
   hmlan1_RSSI -40
   hmlan1_TIME 2022-08-18 13:35:26
   hmuart1_MSGCNT 106
   hmuart1_RAWMSG 0500002727A4103169611ACE1F06013C00
   hmuart1_RSSI -39
   hmuart1_TIME 2022-08-18 13:35:26
   lastMsg    No:27 - t:10 s:316961 d:1ACE1F 06013C00
   peerList   self01,self02
   protLastRcv 2022-08-18 13:35:26
   protRcv    12 last_at:2022-08-18 13:35:26
   protSnd    13 last_at:2022-08-18 13:35:26
   protState  CMDs_done
   rssi_at_cul868 cnt:106 min:-51.5 max:-41 avg:-43.75 lst:-42.5
   rssi_at_hmlan1 cnt:103 min:-59 max:-32 avg:-39.48 lst:-40
   rssi_at_hmuart1 cnt:106 min:-48 max:-38 avg:-41.59 lst:-39
   rssi_cul868 cnt:23 min:-46 max:-43 avg:-44.78 lst:-46
   CL:
     Authenticated 0
     BUF       
     FD         88
     FW_ID      153028
     LASTACCESS 1660826583.20475
     NAME       WEB_192.168.1.31_65125
     NR         153910
     PEER       192.168.1.31
     PORT       65125
     SNAME      WEB
     SSL       
     STATE      Connected
     TEMPORARY  1
     TYPE       FHEMWEB
     canAsyncOutput 1
     encoding   UTF-8
     READINGS:
       2022-08-18 14:43:03   state           Connected
   READINGS:
     2022-05-04 12:38:59   ASC_Enable      on
     2022-08-18 13:35:26   ASC_ShuttersLastDrive ventilate - window open
     2022-08-18 09:00:01   ASC_Time_DriveDown 18.08.2022 - 20:12
     2022-08-18 09:00:01   ASC_Time_DriveUp 19.08.2022 - 09:00
     2022-08-17 20:35:05   Activity        alive
     2022-08-18 13:35:16   CommandAccepted yes
     2022-06-16 13:08:37   D-firmware      2.11
     2022-06-16 13:08:37   D-serialNr      LEQ1027174
     2022-08-18 13:35:26   IODev           cul868
     2022-08-17 20:37:06   PairedTo        0x1ACE1F
     2022-04-28 08:50:42   R-confBtnTime   permanent
     2022-08-17 20:37:07   R-driveDown     30.2 s
     2022-04-28 09:03:16   R-driveTurn     0.5 s
     2022-08-17 20:37:07   R-driveUp       32.2 s
     2022-06-16 13:11:25   R-intKeyVisib   visib
     2022-04-28 08:50:42   R-localResDis   off
     2022-06-16 13:08:42   R-pairCentral   0x1ACE1F
     2022-06-16 13:08:43   R-refRunCounter 0
     2022-04-28 09:13:02   R-self01-lgActionType jmpToTarget
     2022-04-28 09:13:02   R-self01-lgBlJtDlyOff refOff
     2022-04-28 09:13:02   R-self01-lgBlJtDlyOn dlyOff
     2022-04-28 09:13:02   R-self01-lgBlJtOff dlyOff
     2022-04-28 09:13:02   R-self01-lgBlJtOn dlyOff
     2022-04-28 09:13:02   R-self01-lgBlJtRampOff rampOff
     2022-04-28 09:13:02   R-self01-lgBlJtRampOn on
     2022-04-28 09:13:02   R-self01-lgBlJtRefOff rampOff
     2022-04-28 09:13:02   R-self01-lgBlJtRefOn on
     2022-04-28 09:13:02   R-self01-lgCtDlyOff geLo
     2022-04-28 09:13:02   R-self01-lgCtDlyOn geLo
     2022-04-28 09:13:02   R-self01-lgCtOff geLo
     2022-04-28 09:13:02   R-self01-lgCtOn geLo
     2022-04-28 09:13:02   R-self01-lgCtRampOff geLo
     2022-04-28 09:13:02   R-self01-lgCtRampOn geLo
     2022-04-28 09:13:02   R-self01-lgCtRefOff geLo
     2022-04-28 09:13:02   R-self01-lgCtRefOn geLo
     2022-04-28 09:13:02   R-self01-lgCtValHi 100
     2022-04-28 09:13:02   R-self01-lgCtValLo 50
     2022-04-28 09:13:02   R-self01-lgDriveMode direct
     2022-04-28 09:13:02   R-self01-lgMaxTimeF 0.4 s
     2022-04-28 09:13:02   R-self01-lgMultiExec on
     2022-04-28 09:13:02   R-self01-lgOffDly 0 s
     2022-04-28 09:13:02   R-self01-lgOffLevel 0 %
     2022-04-28 09:13:02   R-self01-lgOffTime unused
     2022-04-28 09:13:02   R-self01-lgOffTimeMode absolut
     2022-04-28 09:13:02   R-self01-lgOnDly 0 s
     2022-04-28 09:13:02   R-self01-lgOnLevel 100 %
     2022-04-28 09:13:02   R-self01-lgOnTime unused
     2022-04-28 09:13:02   R-self01-lgOnTimeMode absolut
     2022-04-28 09:13:02   R-self01-shActionType jmpToTarget
     2022-04-28 09:13:02   R-self01-shBlJtDlyOff refOff
     2022-04-28 09:13:02   R-self01-shBlJtDlyOn dlyOff
     2022-04-28 09:13:02   R-self01-shBlJtOff dlyOff
     2022-04-28 09:13:02   R-self01-shBlJtOn dlyOff
     2022-04-28 09:13:02   R-self01-shBlJtRampOff rampOff
     2022-04-28 09:13:02   R-self01-shBlJtRampOn on
     2022-04-28 09:13:02   R-self01-shBlJtRefOff rampOff
     2022-04-28 09:13:02   R-self01-shBlJtRefOn on
     2022-04-28 09:13:02   R-self01-shCtDlyOff geLo
     2022-04-28 09:13:02   R-self01-shCtDlyOn geLo
     2022-04-28 09:13:02   R-self01-shCtOff geLo
     2022-04-28 09:13:02   R-self01-shCtOn geLo
     2022-04-28 09:13:02   R-self01-shCtRampOff geLo
     2022-04-28 09:13:02   R-self01-shCtRampOn geLo
     2022-04-28 09:13:02   R-self01-shCtRefOff geLo
     2022-04-28 09:13:02   R-self01-shCtRefOn geLo
     2022-04-28 09:13:02   R-self01-shCtValHi 100
     2022-04-28 09:13:02   R-self01-shCtValLo 50
     2022-04-28 09:13:02   R-self01-shDriveMode direct
     2022-04-28 09:13:02   R-self01-shMaxTimeF unused
     2022-04-28 09:13:02   R-self01-shMultiExec off
     2022-04-28 09:13:02   R-self01-shOffDly 0 s
     2022-04-28 09:13:02   R-self01-shOffLevel 0 %
     2022-04-28 09:13:02   R-self01-shOffTime unused
     2022-04-28 09:13:02   R-self01-shOffTimeMode absolut
     2022-04-28 09:13:02   R-self01-shOnDly 0 s
     2022-04-28 09:13:02   R-self01-shOnLevel 100 %
     2022-04-28 09:13:02   R-self01-shOnTime unused
     2022-04-28 09:13:02   R-self01-shOnTimeMode absolut
     2022-04-28 09:13:00   R-self02-lgActionType jmpToTarget
     2022-04-28 09:13:00   R-self02-lgBlJtDlyOff dlyOn
     2022-04-28 09:13:00   R-self02-lgBlJtDlyOn refOn
     2022-04-28 09:13:00   R-self02-lgBlJtOff dlyOn
     2022-04-28 09:13:00   R-self02-lgBlJtOn dlyOn
     2022-04-28 09:13:00   R-self02-lgBlJtRampOff off
     2022-04-28 09:13:00   R-self02-lgBlJtRampOn rampOn
     2022-04-28 09:13:00   R-self02-lgBlJtRefOff off
     2022-04-28 09:13:00   R-self02-lgBlJtRefOn rampOn
     2022-04-28 09:13:00   R-self02-lgCtDlyOff geLo
     2022-04-28 09:13:00   R-self02-lgCtDlyOn geLo
     2022-04-28 09:13:00   R-self02-lgCtOff geLo
     2022-04-28 09:13:00   R-self02-lgCtOn geLo
     2022-04-28 09:13:00   R-self02-lgCtRampOff geLo
     2022-04-28 09:13:00   R-self02-lgCtRampOn geLo
     2022-04-28 09:13:00   R-self02-lgCtRefOff geLo
     2022-04-28 09:13:00   R-self02-lgCtRefOn geLo
     2022-04-28 09:13:00   R-self02-lgCtValHi 100
     2022-04-28 09:13:00   R-self02-lgCtValLo 50
     2022-04-28 09:13:00   R-self02-lgDriveMode direct
     2022-04-28 09:13:00   R-self02-lgMaxTimeF 0.4 s
     2022-04-28 09:13:00   R-self02-lgMultiExec on
     2022-04-28 09:13:00   R-self02-lgOffDly 0 s
     2022-04-28 09:13:00   R-self02-lgOffLevel 0 %
     2022-04-28 09:13:00   R-self02-lgOffTime unused
     2022-04-28 09:13:00   R-self02-lgOffTimeMode absolut
     2022-04-28 09:13:00   R-self02-lgOnDly 0 s
     2022-04-28 09:13:00   R-self02-lgOnLevel 100 %
     2022-04-28 09:13:00   R-self02-lgOnTime unused
     2022-04-28 09:13:00   R-self02-lgOnTimeMode absolut
     2022-04-28 09:13:00   R-self02-shActionType jmpToTarget
     2022-04-28 09:13:00   R-self02-shBlJtDlyOff dlyOn
     2022-04-28 09:13:00   R-self02-shBlJtDlyOn refOn
     2022-04-28 09:13:00   R-self02-shBlJtOff dlyOn
     2022-04-28 09:13:00   R-self02-shBlJtOn dlyOn
     2022-04-28 09:13:00   R-self02-shBlJtRampOff off
     2022-04-28 09:13:00   R-self02-shBlJtRampOn rampOn
     2022-04-28 09:13:00   R-self02-shBlJtRefOff off
     2022-04-28 09:13:00   R-self02-shBlJtRefOn rampOn
     2022-04-28 09:13:00   R-self02-shCtDlyOff geLo
     2022-04-28 09:13:00   R-self02-shCtDlyOn geLo
     2022-04-28 09:13:00   R-self02-shCtOff geLo
     2022-04-28 09:13:00   R-self02-shCtOn geLo
     2022-04-28 09:13:00   R-self02-shCtRampOff geLo
     2022-04-28 09:13:00   R-self02-shCtRampOn geLo
     2022-04-28 09:13:00   R-self02-shCtRefOff geLo
     2022-04-28 09:13:00   R-self02-shCtRefOn geLo
     2022-04-28 09:13:00   R-self02-shCtValHi 100
     2022-04-28 09:13:00   R-self02-shCtValLo 50
     2022-04-28 09:13:00   R-self02-shDriveMode direct
     2022-04-28 09:13:00   R-self02-shMaxTimeF unused
     2022-04-28 09:13:00   R-self02-shMultiExec off
     2022-04-28 09:13:00   R-self02-shOffDly 0 s
     2022-04-28 09:13:00   R-self02-shOffLevel 0 %
     2022-04-28 09:13:00   R-self02-shOffTime unused
     2022-04-28 09:13:00   R-self02-shOffTimeMode absolut
     2022-04-28 09:13:00   R-self02-shOnDly 0 s
     2022-04-28 09:13:00   R-self02-shOnLevel 100 %
     2022-04-28 09:13:00   R-self02-shOnTime unused
     2022-04-28 09:13:00   R-self02-shOnTimeMode absolut
     2022-04-28 09:03:16   R-sign          off
     2022-06-16 13:12:54   R-statusInfoMinDly 0.5 s
     2022-06-16 13:12:54   R-statusInfoRandom 0 s
     2022-04-28 09:03:16   R-transmitTryMax 6
     2022-08-17 20:37:06   RegL_00.         00:00 02:81 0A:1A 0B:CE 0C:1F 15:FF 18:00
     2022-08-17 20:37:07   RegL_01.         00:00 08:00 09:00 0A:00 0B:01 0C:2E 0D:01 0E:42 0F:05 10:00 30:06 56:00 57:01
     2022-08-17 20:37:09   RegL_03.self01   00:00 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:44 0C:54 0D:93 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:93 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:44 8C:54 8D:93 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:93 9F:00
     2022-08-17 20:37:10   RegL_03.self02   00:00 01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:11 0C:12 0D:68 0E:00 0F:00 11:C8 12:00 13:00 14:00 15:00 16:00 17:00 18:00 19:00 1A:00 1B:00 1C:00 1D:FF 1E:68 1F:00 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:11 8C:12 8D:68 8E:00 8F:00 91:C8 92:00 93:00 94:00 95:00 96:00 97:00 98:00 99:00 9A:00 9B:00 9C:00 9D:04 9E:68 9F:00
     2022-08-12 10:06:43   associatedWith  asc
     2022-08-17 20:38:10   cfgState        ok
     2022-08-18 13:35:26   commState       CMDs_done
     2022-08-18 13:35:26   deviceMsg       30 (to ccu)
     2022-08-18 13:35:26   level           30
     2022-08-18 13:35:26   motor           stop:30
     2022-08-18 13:35:26   motorErr        ok
     2022-08-18 13:35:26   pct             30
     2022-08-17 20:37:07   peerList        self01,self02
     2022-08-17 20:33:29   powerOn         2022-08-17 20:33:29
     2022-08-18 13:35:26   recentStateType info
     2022-08-18 13:35:26   state           30
     2022-08-18 13:35:26   timedOn         off
     2022-08-18 13:35:16   trigLast        fhem:02
     2022-05-20 10:59:23   trig_rolloTasterVirtuell_Btn1 Long_4
   helper:
     HM_CMDNR   39
     PONtest    0
     cSnd       111ACE1F316961020100,111ACE1F31696102013C
     cfgChkResult No regs found for:-ret--ret-BlindPBU01 type:blindActuator - -ret-list:peer register         :value-ret-   0:      confBtnTime      :permanent-ret-   0:      intKeyVisib      :visib-ret-   0:      localResDis      :off-ret-   0:      pairCentral      :0x1ACE1F-ret-   1:      driveDown        :30.2 s-ret-   1:      driveTurn        :0.5 s-ret-   1:      driveUp          :32.2 s-ret-   1:      refRunCounter    :0-ret-   1:      sign             :off-ret-   1:      statusInfoMinDly :0.5 s-ret-   1:      statusInfoRandom :0 s-ret-   1:      transmitTryMax   :6-ret-                       self01                          self02                          -ret-                       lg              sh              lg              sh              -ret-ActionType             jmpToTarget     jmpToTarget     jmpToTarget     jmpToTarget     -ret-BlJtDlyOff             refOff          refOff          dlyOn           dlyOn           -ret-BlJtDlyOn              dlyOff          dlyOff          refOn           refOn           -ret-BlJtOff                dlyOff          dlyOff          dlyOn           dlyOn           -ret-BlJtOn                 dlyOff          dlyOff          dlyOn           dlyOn           -ret-BlJtRampOff            rampOff         rampOff         off             off             -ret-BlJtRampOn             on              on              rampOn          rampOn          -ret-BlJtRefOff             rampOff         rampOff         off             off             -ret-BlJtRefOn              on              on              rampOn          rampOn          -ret-CtDlyOff               geLo            geLo            geLo            geLo            -ret-CtDlyOn                geLo            geLo            geLo            geLo            -ret-CtOff                  geLo            geLo            geLo            geLo            -ret-CtOn                   geLo            geLo            geLo            geLo            -ret-CtRampOff              geLo            geLo            geLo            geLo            -ret-CtRampOn               geLo            geLo            geLo            geLo            -ret-CtRefOff               geLo            geLo            geLo            geLo            -ret-CtRefOn                geLo            geLo            geLo            geLo            -ret-CtValHi                100             100             100             100             -ret-CtValLo                50              50              50              50              -ret-DriveMode              direct          direct          direct          direct          -ret-MaxTimeF          [s]  0.4             unused          0.4             unused          -ret-MultiExec              on              off             on              off             -ret-OffDly            [s]  0               0               0               0               -ret-OffLevel          [%]  0               0               0               0               -ret-OffTime                unused          unused          unused          unused          -ret-OffTimeMode            absolut         absolut         absolut         absolut         -ret-OnDly             [s]  0               0               0               0               -ret-OnLevel           [%]  100             100             100             100             -ret-OnTime                 unused          unused          unused          unused          -ret-OnTimeMode             absolut         absolut         absolut         absolut         -ret-
     cfgStateUpdt 0
     dlvlCmd    ++A0111ACE1F31696102013C
     lastMsgTm  1660822526.68648
     mId        0005
     peerFriend peerSens,peerVirt
     peerIDsRaw ,31696101,31696102,00000000
     peerIDsState complete
     peerOpt    3:blindActuator
     regLst     0,1,3p
     rxType     1
     supp_Pair_Rep 0
     tmplChg    0
     ack:
     cmds:
       TmplKey    self01,self02:1660297748.56985:1660291604.52775
       TmplTs     1660291604.52775
       cmdKey     1:1:0::BlindPBU01:0005:01:self01,self02
       cmdLst:
         assignHmKey noArg
         clear      [({msgErrors}|msgEvents|rssi|attack|trigger|register|oldRegs|readings|all)]
         deviceRename -newName-
         down       'change:'[(0..100;1|{10})] [(-ontime-|{})] [(-ramptime-|{})]
         eventL     -peer- -cond-
         eventS     -peer- -cond-
         fwUpdate   -filename- [-bootTime-]
         getConfig  noArg
         getDevInfo noArg
         getRegRaw  (List0|List1|List2|List3|List4|List5|List6|List7) [-peerChn-]
         getVersion noArg
         inhibit    [(on|{off})]
         off        noArg
         on         noArg
         pair       noArg
         pct        -value- [-ontime-]
         peerBulk   -peer1,peer2,...- [({set}|unset)]
         peerIODev  [IO] -btn- [({set}|unset)] 'not for future use'
         peerSmart  -peerOpt-
         press      [(long|{short})] [(-peer-|{self01})] [(-repCount-|{0})] [(-repDelay-|{0.25})]
         pressL     [(-peer-|{self01})]
         pressS     [(-peer-|{self01})]
         raw        -data- [...]
         regBulk    -list-.-peerChn- -addr1:data1- [-addr2:data2-]...
         regSet     [(prep|{exec})] -regName- -value- [-peerChn-]
         reset      noArg
         sign       [(on|{off})]
         statusRequest noArg
         stop       noArg
         toggle     noArg
         toggleDir  noArg
         tplDel     -tplDel-
         tplSet_0   -tplChan-
         tplSet_self01 -tplPeer-
         tplSet_self02 -tplPeer-
         unpair     noArg
         up         'change:'[(0..100;1|{10})] [(-ontime-|{})] [(-ramptime-|{})]
       lst:
         condition  slider,0,1,255
         peer       self01,self02
         peerOpt    Fenster.Bad,SDTeam_Btn1,SwitchES01_SenF,SwitchES01_SenI,SwitchES01_SenPwr,SwitchES01_SenU,SwitchPBU01_Btn_01,SwitchPBU01_Btn_02,Tuer.SZ,Tuer.WZ.Terrasse,VentilControler.AZ.Nord_Btn1,VentilControler.AZ.West_Btn1,VentilControler.Bad_Btn1,VentilControler.Kueche_Btn1,VentilControler.SZ_Btn1,VentilControler.WZ_Btn1,virtAktorAlarmOff_Btn1,virt_vd_Btn1
         tplChan    ES_device,es99,sw99,test,test01,tplCheck
         tplDel     
         tplPeer    BlStopDnLg_long,BlStopDnLg_short,BlStopDnSh_long,BlStopDnSh_short,BlStopUpLg_long,BlStopUpLg_short,BlStopUpSh_long,BlStopUpSh_short,SwCondAbove_long,SwCondAbove_short,SwCondBelow_long,SwCondBelow_short,SwOnCond_long,SwOnCond_short,ignore_long,ignore_short
       rtrvLst:
         cmdList    [({short}|long)]
         deviceInfo [({short}|long)]
         list       [({normal}|full)]
         param      -param-
         reg        -addr- -list- [-peerChn-]
         regList    noArg
         regTable   noArg
         regVal     -addr- -list- [-peerChn-]
         saveConfig [-filename-]
         tplInfo    noArg
     dir:
       cur        stop
       rct        up
     expert:
       def        1
       det        1
       raw        1
       tpl        1
     io:
       flgs       0
       newChn     +316961,00,00,00
       nextSend   1660822526.84515
       rxt        0
       vccu       ccu
       p:
         316961
         00
         00
         00
       prefIO:
         cul868
     mRssi:
       mNo        27
       io:
         cul868:
           -34.5
           -34.5
         hmlan1:
           -40
           -40
         hmuart1:
           -39
           -39
     peerIDsH:
       00000000   broadcast
       31696101   self01
       31696102   self02
     prt:
       bErr       0
       sProc      0
       rspWait:
       tryMsg:
     q:
       qReqConf   
       qReqStat   
     regCollect:
     role:
       chn        1
       dev        1
       prs        1
     rpt:
       IO         cul868
       flg        A
       ts         1660822526.68648
       ack:
         HASH(0x6b01608)
         2780021ACE1F31696100
     rssi:
       at_cul868:
         avg        -43.7547169811321
         cnt        106
         lst        -42.5
         max        -41
         min        -51.5
       at_hmlan1:
         avg        -39.4854368932039
         cnt        103
         lst        -40
         max        -32
         min        -59
       at_hmuart1:
         avg        -41.5943396226415
         cnt        106
         lst        -39
         max        -38
         min        -48
       cul868:
         avg        -44.7826086956522
         cnt        23
         lst        -46
         max        -43
         min        -46
     shadowReg:
     tmpl:
   hmccu:
   nb:
     cnt        1
Attributes:
   ASC        2
   ASC_AutoAstroModeEvening HORIZON
   ASC_AutoAstroModeEveningHorizon 3
   ASC_ComfortOpen_Pos 90
   ASC_Down   astro
   ASC_Mode_Down always
   ASC_Mode_Up always
   ASC_Pos_Reading pct
   ASC_ShuttersPlace EG_window
   ASC_Time_Up_Early 09:00
   ASC_Time_Up_Late 10:00
   ASC_Up     time
   ASC_Ventilate_Pos 30
   ASC_Ventilate_Window_Open on
   ASC_WindowRec Fenster.Bad:contact
   ASC_WindowRec_PosAfterDayClosed lastManual
   ASC_WindowRec_subType threestate
   IOgrp      ccu:cul868
   actCycle   024:00
   actStatus  alive
   autoReadReg 5_readMissing
   commStInCh off
   comment    c26 ausgewechselt: 2022-04-28 08:53:32
   devStateIcon 100:fts_shutter_10@lightgreen
9\d.*:fts_shutter_10@yellow
8\d.*:fts_shutter_20@yellow
7\d.*:fts_shutter_30@yellow
6\d.*:fts_shutter_40@yellow
5\d.*:fts_shutter_50@yellow
4\d.*:fts_shutter_60@yellow
3\d.*:fts_shutter_70@yellow
2\d.*:fts_shutter_80@yellow
1\d.*:fts_shutter_90@yellow
(0\.5|[1-9]\.?5?):fts_shutter_100@yellow
0:fts_shutter_100@red
   expert     defReg,allReg,rawReg,templ
   firmware   2.11
   forceEvents 1
   model      HM-LC-BL1PBU-FM
   peerIDs    00000000,31696101,31696102
   room       02_handy,10_WZ,ASC
   serialNr   LEQ1027174
   stateFormat level
   subType    blindActuator
   userReadings motorErr:motor:.* {
  my $mot = ReadingsVal($name,"motor","");
  return ($mot =~ /err:/)? $mot: "ok";
}
   userattr   ASC_Adv:on,off 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_beforeDayOpen ASC_BlockingTime_beforeNightClose ASC_BrightnessSensor 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_CommandTemplate ASC_Down:time,astro,brightness,roommate ASC_DriveUpMaxDuration ASC_Drive_Delay ASC_Drive_DelayStart ASC_ExternalTrigger 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_PrivacyDownValue_beforeNightClose ASC_PrivacyDown_Pos ASC_PrivacyUpValue_beforeDayOpen ASC_PrivacyUp_Pos ASC_RainProtection:on,off ASC_Roommate_Device ASC_Roommate_Reading ASC_Self_Defense_AbsentDelay ASC_Self_Defense_Mode:absent,gone,off ASC_Shading_BetweenTheTime ASC_Shading_InOutAzimuth ASC_Shading_MinMax_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_SunnyCloudy ASC_Shading_WaitingPeriod ASC_Shutter_IdleDetection ASC_ShuttersPlace:window,terrace,awning,EG_window ASC_SlatPosCmd_SlatDevice ASC_Sleep_Pos:0,10,20,30,40,50,60,70,80,90,100 ASC_TempSensor 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,roommate ASC_Ventilate_Pos:10,20,30,40,50,60,70,80,90,100 ASC_Ventilate_Window_Open:on,off ASC_WiggleValue ASC_WindParameters ASC_WindProtection:on,off ASC_WindowRec ASC_WindowRec_PosAfterDayClosed:open,lastManual ASC_WindowRec_subType:twostate,threestate
   webCmd     up:down:stop


list asc
Internals:
   .FhemMetaInternals 1
   FUUID      6272570f-f33f-09c4-c69a-a624974b2a78d347
   FVERSION   73_AutoShuttersControl.pm:v0.10.23-s25934/2022-04-07
   MID        da39a3ee5e6b4b0d3255bfef95601890afd80709
   NAME       asc
   NOTIFYDEV  global,asc,BlindPBU01,BlindPBU01,Fenster.Bad
   NR         767
   NTFY_ORDER 51-asc
   STATE      ventilate - window open
   TYPE       AutoShuttersControl
   VERSION    v0.10.23
   .attraggr:
   .attrminint:
   OLDREADINGS:
   READINGS:
     2022-05-12 19:08:15   .monitoredDevs  {"Fenster.Bad":{"BlindPBU01":"ASC_WindowRec"},"BlindPBU01":{}}
     2022-08-18 13:35:26   BlindPBU01_PosValue 30
     2022-08-18 09:00:01   BlindPBU01_lastPosValue 30
     2022-08-18 09:00:01   BlindPBU01_nextAstroTimeEvent 18.08.2022 - 20:12
     2022-05-05 15:08:59   ascEnable       on
     2022-05-05 15:08:59   controlShading  off
     2022-05-05 15:08:59   hardLockOut     off
     2022-08-12 10:06:41   room_02_handy_10_WZ_ASC BlindPBU01
     2022-05-05 15:08:59   selfDefense     off
     2022-08-18 13:35:26   state           ventilate - window open
     2022-05-05 15:08:59   sunriseTimeWeHoliday off
     2022-08-12 10:06:41   userAttrList    rolled out
   helper:
     shuttersList:
       BlindPBU01
   monitoredDevs:
     BlindPBU01:
     Fenster.Bad:
       BlindPBU01 ASC_WindowRec
Attributes:
   ASC_autoShuttersControlComfort on
   ASC_debug  1
   ASC_expert 1
   ASC_twilightDevice astro
   devStateIcon { ShuttersControl_DevStateIcon($name) }
   icon       fts_shutter_automatic
   room       ASC



edit:
wäre es vielleicht möglich die unnötigen leerzeilen bei ASC_DEBUG zu entfernen?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Ich tippe auf

ASC_WindowRec_PosAfterDayClosed lastManual


Er sagt ja auch

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnSetCmdFn: BlindPBU01 - Abbruch aktuelle Position ist gleich der Zielposition 30=30
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

frank

#2
ZitatIch tippe auf

ASC_WindowRec_PosAfterDayClosed lastManual


Er sagt ja auch

ASC_DEBUG!!! 2022.08.18 13:41:52 - FnSetCmdFn: BlindPBU01 - Abbruch aktuelle Position ist gleich der Zielposition 30=30
genau, diese zielposition wird falsch ermittelt.

definiere bitte mal den wert "lastManual".
(für mich bedeutet es: die letzte manuell gesetzte position vor dem öffnen des fensters)


##########################################

tagsüber passiert scheinbar nur "mist":
gerade habe ich das rollo extra stufenweise manuell geschlossen (60/45/20/0).
anschliessend das fenster gekippt.

diesmal gibt es dazu nicht einmal debugausgaben in fhem.log, asc hat das fensterereignis völlig ignoriert.

list asc:
Internals:
   .FhemMetaInternals 1
   FUUID      6272570f-f33f-09c4-c69a-a624974b2a78d347
   FVERSION   73_AutoShuttersControl.pm:v0.10.23-s25934/2022-04-07
   MID        da39a3ee5e6b4b0d3255bfef95601890afd80709
   NAME       asc
   NOTIFYDEV  global,asc,BlindPBU01,Fenster.Bad,BlindPBU01
   NR         767
   NTFY_ORDER 51-asc
   STATE      manual
   TYPE       AutoShuttersControl
   VERSION    v0.10.23
   .attraggr:
   .attrminint:
   OLDREADINGS:
   READINGS:
     2022-05-12 19:08:15   .monitoredDevs  {"Fenster.Bad":{"BlindPBU01":"ASC_WindowRec"},"BlindPBU01":{}}
     2022-08-20 13:23:01   BlindPBU01_PosValue 0
     2022-08-20 09:00:01   BlindPBU01_lastPosValue 30
     2022-08-20 09:00:01   BlindPBU01_nextAstroTimeEvent 20.08.2022 - 20:08
     2022-05-05 15:08:59   ascEnable       on
     2022-05-05 15:08:59   controlShading  off
     2022-05-05 15:08:59   hardLockOut     off
     2022-08-19 11:48:37   room_02_handy_10_WZ_ASC BlindPBU01
     2022-05-05 15:08:59   selfDefense     off
     2022-08-20 13:23:01   state           manual
     2022-05-05 15:08:59   sunriseTimeWeHoliday off
     2022-08-19 11:48:37   userAttrList    rolled out
   helper:
     shuttersList:
       BlindPBU01
   monitoredDevs:
     BlindPBU01:
     Fenster.Bad:
       BlindPBU01 ASC_WindowRec
Attributes:
   ASC_autoShuttersControlComfort on
   ASC_debug  1
   ASC_expert 1
   ASC_twilightDevice astro
   devStateIcon { ShuttersControl_DevStateIcon($name) }
   icon       fts_shutter_automatic
   room       ASC



vielleicht hilft dir ja das eventlog weiter (asc, rollo, fenster):
2022-08-20_03:47:51 asc BlindPBU01_PosValue: 30
2022-08-20_03:47:51 asc ventilate - window open
2022-08-20_03:47:51 BlindPBU01 ASC_ShuttersLastDrive: ventilate - window open
2022-08-20_09:00:01 BlindPBU01 commState: CMDs_pending
2022-08-20_09:00:01 BlindPBU01 level: set_100
2022-08-20_09:00:01 BlindPBU01 set_100
2022-08-20_09:00:01 BlindPBU01 IODev: cul868
2022-08-20_09:00:01 BlindPBU01 commState: CMDs_processing...
2022-08-20_09:00:01 BlindPBU01 trigLast: fhem:02
2022-08-20_09:00:01 asc BlindPBU01_lastPosValue: 30
2022-08-20_09:00:01 BlindPBU01 ASC_Time_DriveDown: 20.08.2022 - 20:08
2022-08-20_09:00:01 BlindPBU01 ASC_Time_DriveUp: 21.08.2022 - 09:00
2022-08-20_09:00:01 asc BlindPBU01_nextAstroTimeEvent: 20.08.2022 - 20:08
2022-08-20_09:00:01 asc created new drive timer
2022-08-20_09:00:01 BlindPBU01 trigLast: fhem:02
2022-08-20_09:00:01 BlindPBU01 CommandAccepted: yes
2022-08-20_09:00:01 BlindPBU01 recentStateType: ack
2022-08-20_09:00:01 BlindPBU01 commState: CMDs_done
2022-08-20_09:00:01 BlindPBU01 deviceMsg: 30 (to ccu)
2022-08-20_09:00:01 BlindPBU01 level: 30
2022-08-20_09:00:01 BlindPBU01 motor: up:30
2022-08-20_09:00:01 BlindPBU01 pct: 30
2022-08-20_09:00:01 BlindPBU01 30
2022-08-20_09:00:01 BlindPBU01 timedOn: off
2022-08-20_09:00:01 BlindPBU01 motorErr: ok
2022-08-20_09:00:01 asc BlindPBU01_PosValue: 30
2022-08-20_09:00:01 asc day open
2022-08-20_09:00:01 BlindPBU01 ASC_ShuttersLastDrive: day open
2022-08-20_09:00:27 BlindPBU01 IODev: cul868
2022-08-20_09:00:27 BlindPBU01 recentStateType: info
2022-08-20_09:00:27 BlindPBU01 commState: CMDs_done
2022-08-20_09:00:27 BlindPBU01 deviceMsg: on (to ccu)
2022-08-20_09:00:27 BlindPBU01 level: 100
2022-08-20_09:00:27 BlindPBU01 motor: stop:on
2022-08-20_09:00:27 BlindPBU01 pct: 100
2022-08-20_09:00:27 BlindPBU01 on
2022-08-20_09:00:27 BlindPBU01 timedOn: off
2022-08-20_09:00:27 BlindPBU01 motorErr: ok
2022-08-20_09:00:27 asc BlindPBU01_PosValue: 100
2022-08-20_09:00:27 asc day open
2022-08-20_09:00:27 BlindPBU01 ASC_ShuttersLastDrive: day open
2022-08-20_09:43:50 Fenster.Bad IODev: cul868
2022-08-20_09:43:50 Fenster.Bad IODev: cul868
2022-08-20_09:43:50 Fenster.Bad contact: closed (to ccu)
2022-08-20_09:43:50 Fenster.Bad closed
2022-08-20_09:43:50 Fenster.Bad trigger_cnt: 80
2022-08-20_10:05:24 Fenster.Bad IODev: cul868
2022-08-20_10:05:24 Fenster.Bad IODev: cul868
2022-08-20_10:05:25 Fenster.Bad contact: tilted (to ccu)
2022-08-20_10:05:25 Fenster.Bad tilted
2022-08-20_10:05:25 Fenster.Bad trigger_cnt: 81
2022-08-20_13:20:12 Fenster.Bad IODev: cul868
2022-08-20_13:20:12 Fenster.Bad IODev: cul868
2022-08-20_13:20:12 Fenster.Bad contact: closed (to ccu)
2022-08-20_13:20:12 Fenster.Bad closed
2022-08-20_13:20:12 Fenster.Bad trigger_cnt: 82
2022-08-20_13:20:53 BlindPBU01 commState: CMDs_pending
2022-08-20_13:20:53 BlindPBU01 level: set_60
2022-08-20_13:20:53 BlindPBU01 set_60
2022-08-20_13:20:53 BlindPBU01 IODev: cul868
2022-08-20_13:20:53 BlindPBU01 commState: CMDs_processing...
2022-08-20_13:20:53 BlindPBU01 trigLast: fhem:02
2022-08-20_13:20:53 BlindPBU01 trigLast: fhem:02
2022-08-20_13:20:53 BlindPBU01 CommandAccepted: yes
2022-08-20_13:20:53 BlindPBU01 recentStateType: ack
2022-08-20_13:20:53 BlindPBU01 commState: CMDs_done
2022-08-20_13:20:53 BlindPBU01 deviceMsg: on (to ccu)
2022-08-20_13:20:53 BlindPBU01 level: 100
2022-08-20_13:20:53 BlindPBU01 motor: down:on
2022-08-20_13:20:53 BlindPBU01 pct: 100
2022-08-20_13:20:53 BlindPBU01 on
2022-08-20_13:20:53 BlindPBU01 timedOn: off
2022-08-20_13:20:53 BlindPBU01 motorErr: ok
2022-08-20_13:20:53 asc BlindPBU01_PosValue: 100
2022-08-20_13:20:53 asc manual
2022-08-20_13:20:53 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:21:06 BlindPBU01 IODev: cul868
2022-08-20_13:21:06 BlindPBU01 recentStateType: info
2022-08-20_13:21:06 BlindPBU01 commState: CMDs_done
2022-08-20_13:21:06 BlindPBU01 deviceMsg: 60 (to ccu)
2022-08-20_13:21:06 BlindPBU01 level: 60
2022-08-20_13:21:06 BlindPBU01 motor: stop:60
2022-08-20_13:21:06 BlindPBU01 pct: 60
2022-08-20_13:21:06 BlindPBU01 60
2022-08-20_13:21:06 BlindPBU01 timedOn: off
2022-08-20_13:21:06 BlindPBU01 motorErr: ok
2022-08-20_13:21:06 asc BlindPBU01_PosValue: 60
2022-08-20_13:21:06 asc manual
2022-08-20_13:21:06 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:21:55 BlindPBU01 commState: CMDs_pending
2022-08-20_13:21:55 BlindPBU01 level: set_45
2022-08-20_13:21:55 BlindPBU01 set_45
2022-08-20_13:21:55 BlindPBU01 IODev: cul868
2022-08-20_13:21:55 BlindPBU01 commState: CMDs_processing...
2022-08-20_13:21:55 BlindPBU01 trigLast: fhem:02
2022-08-20_13:21:55 BlindPBU01 trigLast: fhem:02
2022-08-20_13:21:56 BlindPBU01 CommandAccepted: yes
2022-08-20_13:21:56 BlindPBU01 recentStateType: ack
2022-08-20_13:21:56 BlindPBU01 commState: CMDs_done
2022-08-20_13:21:56 BlindPBU01 deviceMsg: 60 (to ccu)
2022-08-20_13:21:56 BlindPBU01 level: 60
2022-08-20_13:21:56 BlindPBU01 motor: down:60
2022-08-20_13:21:56 BlindPBU01 pct: 60
2022-08-20_13:21:56 BlindPBU01 60
2022-08-20_13:21:56 BlindPBU01 timedOn: off
2022-08-20_13:21:56 BlindPBU01 motorErr: ok
2022-08-20_13:21:56 asc BlindPBU01_PosValue: 60
2022-08-20_13:21:56 asc manual
2022-08-20_13:21:56 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:22:00 BlindPBU01 IODev: cul868
2022-08-20_13:22:01 BlindPBU01 recentStateType: info
2022-08-20_13:22:01 BlindPBU01 commState: CMDs_done
2022-08-20_13:22:01 BlindPBU01 deviceMsg: 45 (to ccu)
2022-08-20_13:22:01 BlindPBU01 level: 45
2022-08-20_13:22:01 BlindPBU01 motor: stop:45
2022-08-20_13:22:01 BlindPBU01 pct: 45
2022-08-20_13:22:01 BlindPBU01 45
2022-08-20_13:22:01 BlindPBU01 timedOn: off
2022-08-20_13:22:01 BlindPBU01 motorErr: ok
2022-08-20_13:22:01 asc BlindPBU01_PosValue: 45
2022-08-20_13:22:01 asc manual
2022-08-20_13:22:01 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:22:39 BlindPBU01 commState: CMDs_pending
2022-08-20_13:22:39 BlindPBU01 level: set_20
2022-08-20_13:22:39 BlindPBU01 set_20
2022-08-20_13:22:39 BlindPBU01 IODev: cul868
2022-08-20_13:22:39 BlindPBU01 commState: CMDs_processing...
2022-08-20_13:22:39 BlindPBU01 trigLast: fhem:02
2022-08-20_13:22:40 BlindPBU01 trigLast: fhem:02
2022-08-20_13:22:40 BlindPBU01 CommandAccepted: yes
2022-08-20_13:22:40 BlindPBU01 recentStateType: ack
2022-08-20_13:22:40 BlindPBU01 commState: CMDs_done
2022-08-20_13:22:40 BlindPBU01 deviceMsg: 45 (to ccu)
2022-08-20_13:22:40 BlindPBU01 level: 45
2022-08-20_13:22:40 BlindPBU01 motor: down:45
2022-08-20_13:22:40 BlindPBU01 pct: 45
2022-08-20_13:22:40 BlindPBU01 45
2022-08-20_13:22:40 BlindPBU01 timedOn: off
2022-08-20_13:22:40 BlindPBU01 motorErr: ok
2022-08-20_13:22:40 asc BlindPBU01_PosValue: 45
2022-08-20_13:22:40 asc manual
2022-08-20_13:22:40 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:22:47 BlindPBU01 IODev: cul868
2022-08-20_13:22:48 BlindPBU01 recentStateType: info
2022-08-20_13:22:48 BlindPBU01 commState: CMDs_done
2022-08-20_13:22:48 BlindPBU01 deviceMsg: 20 (to ccu)
2022-08-20_13:22:48 BlindPBU01 level: 20
2022-08-20_13:22:48 BlindPBU01 motor: stop:20
2022-08-20_13:22:48 BlindPBU01 pct: 20
2022-08-20_13:22:48 BlindPBU01 20
2022-08-20_13:22:48 BlindPBU01 timedOn: off
2022-08-20_13:22:48 BlindPBU01 motorErr: ok
2022-08-20_13:22:48 asc BlindPBU01_PosValue: 20
2022-08-20_13:22:48 asc manual
2022-08-20_13:22:48 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:22:51 BlindPBU01 commState: CMDs_pending
2022-08-20_13:22:51 BlindPBU01 level: set_0
2022-08-20_13:22:51 BlindPBU01 set_0
2022-08-20_13:22:52 BlindPBU01 IODev: cul868
2022-08-20_13:22:52 BlindPBU01 commState: CMDs_processing...
2022-08-20_13:22:52 BlindPBU01 trigLast: fhem:02
2022-08-20_13:22:52 BlindPBU01 trigLast: fhem:02
2022-08-20_13:22:52 BlindPBU01 CommandAccepted: yes
2022-08-20_13:22:52 BlindPBU01 recentStateType: ack
2022-08-20_13:22:52 BlindPBU01 commState: CMDs_done
2022-08-20_13:22:52 BlindPBU01 deviceMsg: 20 (to ccu)
2022-08-20_13:22:52 BlindPBU01 level: 20
2022-08-20_13:22:52 BlindPBU01 motor: down:20
2022-08-20_13:22:52 BlindPBU01 pct: 20
2022-08-20_13:22:52 BlindPBU01 20
2022-08-20_13:22:52 BlindPBU01 timedOn: off
2022-08-20_13:22:52 BlindPBU01 motorErr: ok
2022-08-20_13:22:52 asc BlindPBU01_PosValue: 20
2022-08-20_13:22:52 asc manual
2022-08-20_13:22:52 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:23:01 BlindPBU01 IODev: cul868
2022-08-20_13:23:01 BlindPBU01 recentStateType: info
2022-08-20_13:23:01 BlindPBU01 commState: CMDs_done
2022-08-20_13:23:01 BlindPBU01 deviceMsg: off (to ccu)
2022-08-20_13:23:01 BlindPBU01 level: 0
2022-08-20_13:23:01 BlindPBU01 motor: stop:off
2022-08-20_13:23:01 BlindPBU01 pct: 0
2022-08-20_13:23:01 BlindPBU01 off
2022-08-20_13:23:01 BlindPBU01 timedOn: off
2022-08-20_13:23:01 BlindPBU01 motorErr: ok
2022-08-20_13:23:01 asc BlindPBU01_PosValue: 0
2022-08-20_13:23:01 asc manual
2022-08-20_13:23:01 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-20_13:23:06 Fenster.Bad IODev: cul868
2022-08-20_13:23:06 Fenster.Bad IODev: cul868
2022-08-20_13:23:06 Fenster.Bad contact: tilted (to ccu)
2022-08-20_13:23:06 Fenster.Bad tilted
2022-08-20_13:23:06 Fenster.Bad trigger_cnt: 83



edit:
was genau bedeutet eigentlich das reading "BlindPBU01_lastPosValue " im asc device?
ist das der "alte/letzte" wert von "BlindPBU01_PosValue"?
(dem namen nach sollte das wohl so sein)

"BlindPBU01_lastPosValue" wird, wenn überhaupt, scheinbar nur zum tages-/nacht wechsel geändert.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

#3
Zitatdiesmal gibt es dazu nicht einmal debugausgaben in fhem.log, asc hat das fensterereignis völlig ignoriert.
das passiert, weil es am anfang von EventProcessingWindowRec() gleich wieder raus geht.
        return
          if (
            !IsAfterShuttersManualBlocking($shuttersDev)
            && ( $FHEM::Automation::ShuttersControl::shutters->getLockOut eq
                'off'
                || $FHEM::Automation::ShuttersControl::shutters
                ->getShuttersPlace ne 'terrace' )
          );

sub IsAfterShuttersManualBlocking {
    my $shuttersDev = shift;
    $FHEM::Automation::ShuttersControl::shutters->setShuttersDev($shuttersDev);

    if (
        $FHEM::Automation::ShuttersControl::ascDev->getBlockAscDrivesAfterManual
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getOpenPos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getClosedPos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getWindPos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getShadingPos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getComfortOpenPos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getVentilatePos
        && $FHEM::Automation::ShuttersControl::shutters->getStatus !=
        $FHEM::Automation::ShuttersControl::shutters->getAntiFreezePos
        && $FHEM::Automation::ShuttersControl::shutters->getLastDrive eq
        'manual' )
    {
        return 0;
    }
    elsif (
        (
            int( ::gettimeofday() ) -
            $FHEM::Automation::ShuttersControl::shutters->getLastManPosTimestamp
        ) <
        $FHEM::Automation::ShuttersControl::shutters->getBlockingTimeAfterManual
      )
    {
        return 0;
    }

    else { return 1 }
}

was ist hier wohl "faul"?


edit:
erste hürde genommen.  :)
ASC_BlockingTime_afterManual - Time in which operations by ASC are blocked after the last manual operation in seconds. Defaults to 1200 (20 minutes).
da nicht gesetzt, gab es immer eine blockade. da muss man erst mal drauf kommen.

für die attribute ASC_BlockingTime_beforeDayOpen und ASC_BlockingTime_beforeNightClose wird kein hilfetext bei der auswahl der attribute angezeigt.

edit2:
eine debugausgabe mit den gründen zum ignorieren von EventProcessingWindowRec() fände ich sehr hilfreich.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

#4
hallo cooltux,

das problem ist die ermittlung der manuellen fahrten in der funktion EventProcessingShutters() in der datei EventProcessingFunctions.pm.

bei aktoren, die mehrere position events pro fahrt senden, kann die funktion immer nur das erste position event als manuell erkennen. mein homematic aktor sendet immer 2 position events. die 1. position kurz nach dem start der fahrt und die 2. position nach beendigung der fahrt.
somit wird quasi immer die endposition der vorherigen fahrt in LastManPos gespeichert. dabei ist es auch egal, ob die vorherige fahrt manuell oder automatisch war.


########## beispiel ##########

ich habe mal ein userreading im aktor definiert, das die LastManPos inklusive dem timestamp über die ascAPI ermittelt:
ASC_lastManPosValue:ASC_ShuttersLastDrive:.* {
   return ascAPIget('LastManPos','BlindPBU01')." => ".FmtDateTime(ascAPIget('LastManPosTimestamp','BlindPBU01'))
}


im eventlog sieht man nun, dass nur das erste position event in LastManPos gespeichert wird.
interessant ist auch, dass das 2. position event in den asc readings "fälschlicherweise" als manuell gekennzeichnet wird, obwohl es intern als automatisches ereignis erkannt wurde. siehe folgende debug ausgaben zu dieser fahrt.

eventlog einer fahrt von 79 auf 0:
2022-08-24_07:59:50 BlindPBU01 commState: CMDs_pending
2022-08-24_07:59:50 BlindPBU01 level: set_0
2022-08-24_07:59:50 BlindPBU01 set_0
2022-08-24_07:59:50 BlindPBU01 IODev: hmuart1
2022-08-24_07:59:50 BlindPBU01 commState: CMDs_processing...
2022-08-24_07:59:50 BlindPBU01 trigLast: fhem:02
2022-08-24_07:59:51 BlindPBU01 trigLast: fhem:02
2022-08-24_07:59:51 BlindPBU01 CommandAccepted: yes
2022-08-24_07:59:51 BlindPBU01 recentStateType: ack
2022-08-24_07:59:51 BlindPBU01 commState: CMDs_done
2022-08-24_07:59:51 BlindPBU01 deviceMsg: 79 (to ccu)
2022-08-24_07:59:51 BlindPBU01 level: 79
2022-08-24_07:59:51 BlindPBU01 motor: down:79
2022-08-24_07:59:51 BlindPBU01 pct: 79
2022-08-24_07:59:51 BlindPBU01 rssi_at_cul868: -46.5
2022-08-24_07:59:51 BlindPBU01 rssi_hmuart1: -58
2022-08-24_07:59:51 BlindPBU01 79
2022-08-24_07:59:51 BlindPBU01 timedOn: off
2022-08-24_07:59:51 BlindPBU01 motorErr: ok
2022-08-24_07:59:51 asc BlindPBU01_PosValue: 79
2022-08-24_07:59:51 asc manual
2022-08-24_07:59:51 BlindPBU01 rssi_at_hmlan1: -41
2022-08-24_07:59:51 BlindPBU01 rssi_at_hmuart1: -45
2022-08-24_07:59:51 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-24_07:59:51 BlindPBU01 ASC_lastManPosValue: 79 => 2022-08-24 07:59:51

2022-08-24_08:00:18 BlindPBU01 IODev: hmuart1
2022-08-24_08:00:18 BlindPBU01 recentStateType: info
2022-08-24_08:00:18 BlindPBU01 commState: CMDs_done
2022-08-24_08:00:18 BlindPBU01 deviceMsg: off (to ccu)
2022-08-24_08:00:18 BlindPBU01 level: 0
2022-08-24_08:00:18 BlindPBU01 motor: stop:off
2022-08-24_08:00:18 BlindPBU01 pct: 0
2022-08-24_08:00:18 BlindPBU01 rssi_at_cul868: -46.5
2022-08-24_08:00:18 BlindPBU01 off
2022-08-24_08:00:18 BlindPBU01 timedOn: off
2022-08-24_08:00:18 BlindPBU01 motorErr: ok
2022-08-24_08:00:18 asc BlindPBU01_PosValue: 0
2022-08-24_08:00:18 asc manual
2022-08-24_08:00:18 BlindPBU01 rssi_at_hmuart1: -47
2022-08-24_08:00:18 BlindPBU01 rssi_at_hmlan1: -42
2022-08-24_08:00:18 BlindPBU01 ASC_ShuttersLastDrive: manual
2022-08-24_08:00:18 BlindPBU01 ASC_lastManPosValue: 79 => 2022-08-24 07:59:51


zugehöriges debuglog der fahrt von 79 auf 0:
##################################

ASC_DEBUG!!! 2022.08.24 07:59:51 - Notify:  ASC_Pos_Reading Event vom Rollo BlindPBU01 wurde erkannt  - RECEIVED EVENT: $VAR1 = [
          'CommandAccepted: yes',
          'recentStateType: ack',
          'commState: CMDs_done',
          'deviceMsg: 79 (to ccu)',
          'level: 79',
          'motor: down:79',
          'pct: 79',
          'rssi_at_cul868: -46.5',
          'rssi_hmuart1: -58',
          'state: 79',
          'timedOn: off',
          'motorErr: ok'
        ];


ASC_DEBUG!!! 2022.08.24 07:59:51 - EventProcessingShutters:  Fn wurde durch Notify aufgerufen da ASC_Pos_Reading Event erkannt wurde  - RECEIVED EVENT: $VAR1 = 'CommandAccepted: yes recentStateType: ack commState: CMDs_done deviceMsg: 79 (to ccu) level: 79 motor: down:79 pct: 79 rssi_at_cul868: -46.5 rssi_hmuart1: -58 state: 79 timedOn: off motorErr: ok';


ASC_DEBUG!!! 2022.08.24 07:59:51 - EventProcessingShutters: BlindPBU01 - Event vom Rollo erkannt. Es wird nun eine etwaige manuelle Fahrt ausgewertet. Int von ::gettimeofday: 1661320791 Last Position Timestamp: 1661284137 Drive Up Max Duration: 60 Last Position: 30 aktuelle Position: 79

ASC_DEBUG!!! 2022.08.24 07:59:51 - FnIsDay: BlindPBU01 Allgemein: 0

ASC_DEBUG!!! 2022.08.24 07:59:51 - EventProcessingShutters: eine manualle Fahrt wurde erkannt!

ASC_DEBUG!!! 2022.08.24 07:59:51 - EventProcessingShutters:  Fn wurde durlaufen und es sollten Debugausgaben gekommen sein.  !!!Wenn nicht!!! wurde der Event nicht korrekt als Nummerisch erkannt.

###################################

ASC_DEBUG!!! 2022.08.24 08:00:18 - Notify:  ASC_Pos_Reading Event vom Rollo BlindPBU01 wurde erkannt  - RECEIVED EVENT: $VAR1 = [
          'recentStateType: info',
          'commState: CMDs_done',
          'deviceMsg: off (to ccu)',
          'level: 0',
          'motor: stop:off',
          'pct: 0',
          'rssi_at_cul868: -46.5',
          'state: off',
          'timedOn: off',
          'motorErr: ok'
        ];


ASC_DEBUG!!! 2022.08.24 08:00:18 - EventProcessingShutters:  Fn wurde durch Notify aufgerufen da ASC_Pos_Reading Event erkannt wurde  - RECEIVED EVENT: $VAR1 = 'recentStateType: info commState: CMDs_done deviceMsg: off (to ccu) level: 0 motor: stop:off pct: 0 rssi_at_cul868: -46.5 state: off timedOn: off motorErr: ok';


ASC_DEBUG!!! 2022.08.24 08:00:18 - EventProcessingShutters: BlindPBU01 - Event vom Rollo erkannt. Es wird nun eine etwaige manuelle Fahrt ausgewertet. Int von ::gettimeofday: 1661320818 Last Position Timestamp: 1661284137 Drive Up Max Duration: 60 Last Position: 30 aktuelle Position: 0

ASC_DEBUG!!! 2022.08.24 08:00:18 - EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!

ASC_DEBUG!!! 2022.08.24 08:00:18 - EventProcessingShutters:  Fn wurde durlaufen und es sollten Debugausgaben gekommen sein.  !!!Wenn nicht!!! wurde der Event nicht korrekt als Nummerisch erkannt.

##################################



########## hack ##########

mit folgendem hack, kann man auch die 2. position (oder weitere positions) in LastManPos speichern:

        if (
            (
                int( ::gettimeofday() ) -
                $FHEM::Automation::ShuttersControl::shutters
                ->getLastPosTimestamp
            ) >
            $FHEM::Automation::ShuttersControl::shutters->getDriveUpMaxDuration
            && (
                int( ::gettimeofday() ) -
                $FHEM::Automation::ShuttersControl::shutters
                ->getLastManPosTimestamp ) >
            $FHEM::Automation::ShuttersControl::shutters->getDriveUpMaxDuration
          )
        {
            $FHEM::Automation::ShuttersControl::shutters->setLastDrive(
                'manual');
            $FHEM::Automation::ShuttersControl::shutters->setLastDriveReading;
            $FHEM::Automation::ShuttersControl::ascDev->setStateReading;
            $FHEM::Automation::ShuttersControl::shutters->setLastManPos($1);

            $FHEM::Automation::ShuttersControl::shutters
              ->setShadingManualDriveStatus(1)
              if ( $FHEM::Automation::ShuttersControl::shutters->getIsDay
                && $FHEM::Automation::ShuttersControl::shutters->getIfInShading
              );

            FHEM::Automation::ShuttersControl::ASC_Debug(
                'EventProcessingShutters: eine manualle Fahrt wurde erkannt!');
        }
        else {
            $FHEM::Automation::ShuttersControl::shutters->setLastDriveReading;
            $FHEM::Automation::ShuttersControl::ascDev->setStateReading;

$FHEM::Automation::ShuttersControl::shutters->setLastManPos($1) #frank
   if($FHEM::Automation::ShuttersControl::shutters->getLastDrive eq 'manual'); #frank

            $FHEM::Automation::ShuttersControl::shutters->setHardLockOut('on')
              if (
                (
                    $FHEM::Automation::ShuttersControl::shutters->getStatus ==
                    $FHEM::Automation::ShuttersControl::shutters
                    ->getComfortOpenPos
                    || ( $FHEM::Automation::ShuttersControl::shutters->getStatus
                        == $FHEM::Automation::ShuttersControl::shutters
                        ->getOpenPos
                        && $FHEM::Automation::ShuttersControl::shutters
                        ->getLastDrive eq 'ventilate - window open' )
                )
                && $FHEM::Automation::ShuttersControl::shutters
                ->getShuttersPlace eq 'terrace'
              );

            FHEM::Automation::ShuttersControl::ASC_Debug(
'EventProcessingShutters: eine automatisierte Fahrt durch ASC wurde erkannt! Es werden nun die LastDriveReading und StateReading Werte gesetzt!'
            );
        }



########## wunsch ##########

eigentlich müsste man aber die manuelle erkennung umbauen, da die aktuelle implementierung zb auch probleme hat, wenn zu schnell nach einer automatischen fahrt eine manuelle fahrt startet.

vorschlag:
asc weiss doch am besten, wann eine automatische fahrt gestartet wird (set cmd wird gesendet).
ab diesem moment wird ein timer gestartet (dauer=DriveUpMaxDuration). während der laufzeit des timers werden alle position events als zugehörige events einer automatischen fahrt registriert. ausserhalb der laufzeit ist alles manuell.
noch genauer wird es, wenn man zusätzlich die laufzeit des timers entsprechend der gesetzten positionsänderung dynamisch verkürzt.
also bei einer fahrt von 40 auf 80 läuft der timer nur 40% von DriveUpMaxDuration.


wo finde ich eigentlich die funktion "getDriveUpMaxDuration"?
wird die eventuell irgendwo zusammengebaut?

edit: gefunden.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Hallo Frank,

Vielen Dank für Deine ausführliche Analyse. Ich schaue es mir gerne in der kommenden Woche einmal genauer an.
Die Ermittlung der manuellen Fahrt erfolgt im übrigen bereits durch das feststellen ob ASC die Fahrt durch ein Kommando ausgelöst hat und einem dann gesetzen Timer. Hier könnte man noch schauen bezüglich Deiner Berechnung der Prozente.


Grüße
Marko
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

frank

#6
moin,

Zitat von: CoolTux am 26 August 2022, 05:38:51
Ich schaue es mir gerne in der kommenden Woche einmal genauer an.
prima.  :)


ZitatDie Ermittlung der manuellen Fahrt erfolgt im übrigen bereits durch das feststellen ob ASC die Fahrt durch ein Kommando ausgelöst hat und einem dann gesetzen Timer.
du beschreibst hier aber die ermittlung einer "automatischen" fahrt, initiert durch asc.
in dem gezeigten code ausschnitt in meinem letzten post, ist davon nichts zu sehen.

vielleicht hast du noch nicht den feinen unterschied verstanden.
asc muss "nur" das ende der automatischen fahrt ermitteln. ab dann gehört jedes weitere position event in jedem fall zu einer manuellen fahrt bis asc erneut eine automatische fahrt initiert.

ich habe keine probleme bei der ermittlung einer "normalen" automatischen fahrt festgestellt. hier erkennt asc korrekt beide position events, die der homematic aktor dabei generiert.
das beschriebene problem existiert, da nach dem ende der automatischen fahrt weiterhin der "timer" aktiv ist.

die ermittlung des endes der automatischen fahrt nur über einen timer ist trotzdem fragil.
der timer muss lang genug sein, dass das richtige position event erfasst wird, aber auch kurz genug, so dass nicht ein anschliessendes manuelles event fälschlicher weise erkannt wird.

die bereits beschriebene dynamische anpassung des timers verbessert sicher die erkennung, da folgende manuelle position events besser ausgefiltert werden. allerdings erhöht sich auch das risiko, dass das richtige position event nicht mehr erfasst wird.

zb gibt es beim homematic aktor auch "referenzfahrten", wo das ziel nicht direkt angefahren wird, sondern zuvor erst ein endanschlag angefahren wird. diese referenzfahrten verlängern natürlich die fahrtzeit eventuell erheblich.
daher tendiere ich aktuell dazu, den timer zunächst auf den 2-fachen wert von DriveUpMaxDuration zu setzen und bis zum ablauf des timers alle eingehenden position events mit dem sollwert zu vergleichen. sobald ein position event gleich dem sollwert ist, wird der timer abgebrochen und das ende der automatischen fahrt ist erreicht.


############ exakte bestimmung durch fahrtstatus events


aber es gibt weitere fälle wie zb den manuellen abbruch einer automatischen fahrt, die zumindestens beim homematic aktor durch folgende auswertung exakt bestimmt werden können.

der homematic aktor sendet in seiner status message nicht nur die position, sondern auch eine info über den aktuellen fahrtstatus. dadurch kann anfang und ende jeder fahrt eindeutig ermittelt werden.

im reading "motor" wird fahrtstatus und position (durch doppelpunkt getrennt) gemeinsam übermittelt.
der fahrtstatus kann 4 werte annnehmen: up/down/stop/err.
jedes stop-position-event zeigt das ende einer fahrt an.
ein up/down-position-event zeigt den start einer fahrt an oder auch eine änderung der zielposition während einer fahrt.

nach der initiierung einer automatischen fahrt kommt also immer zuerst ein up/down-position-event.
die fahrt ist in jedem fall zuende, wenn irgendwann ein stop-position-event eintrifft.
wenn die dabei übermittelte position gleich der soll position ist, war es eine "normale" automatische fahrt.
ist die stop-position ungleich der sollposition, wurde die fahrt entweder manuell gestopt, oder es gab vor dem ende der fahrt eine neue manuelle zielposition.

der fahrtstatus "err" mit einer position 50 wird in jedem fall nach einer versorgungsspannungsunterbrechung gesendet. hier wird in jedem fall eine referenzfahrt benötigt, damit der aktor die zukünftigen positionen wieder richtig berechnen kann. referenzfahrten muss ich noch genauer untersuchen.

ich wünsche mir für meinen homematic aktor natürlich eine exakte ermittlung von auto/manu fahrten anhand von gesendetem fahrtstatus und position.  :)


gruss frank


edit:
es gibt ja das attr ASC_Shutter_IdleDetection, habe ich gerade gesehen.
wird das eventuell schon dafür benutzt?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

idledetection ist dafür gedacht zu erkennen ob gerade eine Fahrt des Rollos statt findet. Dann sendet ASC keine Fahranweisung.

In Bezug auf das erkennen der manuellen Fahrt oder nicht manuellen Fahrt. Es ist zwar schön das Homematic sendet wenn die Fahrt unterbrochen wurde als Beispiel, aber Ich ASC nicht so Homematic abhängig gestaltet. Es gibt noch tausend andere Rollotypen.

Aktuell ist es so das ASC einen Timestamp setzt wenn es selbst eine Fahrt initiiert. Danach reagiert es auf das erste Event welches vom Reading "ASC_Pos_Reading" gesendet wird und wertet dann aus ob es älter ist wie TIMESTAMP + ASC_DriveUpMaxDuration ist oder nicht. So ist es aktuell.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

frank

ZitatIn Bezug auf das erkennen der manuellen Fahrt oder nicht manuellen Fahrt. Es ist zwar schön das Homematic sendet wenn die Fahrt unterbrochen wurde als Beispiel, aber Ich ASC nicht so Homematic abhängig gestaltet. Es gibt noch tausend andere Rollotypen.
es würde mich wirklich wundern, wenn nur homematic aktoren melden, wenn der motor läuft.

Zitatidledetection ist dafür gedacht zu erkennen ob gerade eine Fahrt des Rollos statt findet. Dann sendet ASC keine Fahranweisung.
die existenz von idledetection verstärkt zudem mein gefühl, dass es viele solcher aktoren gibt.
ausserdem könnte man idledetection bestens zur erkennung verwenden.  ;)


über dieses userreading habe ich nun "ASC_Shutter_IdleDetection=motorAction:idle" gesetzt.
motorAction:motor:.* {
  my $mot = ReadingsVal($name,"motor","");
  return ($mot =~ /^(stop|err):/)? "idle": "running";
}



hier ein beispiel, wo das ende einer automatischen fahrt nicht/falsch erkannt wird, da der aktor automatisch eine "referenzfahrt" eingefügt hat, um sich zu synchronisieren.
im kommentierten eventlog ist auch das idledetection reading "motorAction" zu sehen:
################### vor dem versuch wurde das rollo manuell geschlossen => position=0
2022-08-30_09:33:45 BlindPBU01 motor: stop:off
2022-08-30_09:33:45 BlindPBU01 motorAction: idle
2022-08-30_09:33:45 asc BlindPBU01_PosValue: 0
2022-08-30_09:33:45 BlindPBU01 ASC_ShuttersLastDrive: manual

################### spannung am rollo aus/an => rollo meldet error mit position=50 (eine referenzfahrt wird nötig)
2022-08-30_09:33:59 BlindPBU01 powerOn: 2022-08-30 09:33:59
2022-08-30_09:33:59 BlindPBU01 motor: err:50
2022-08-30_09:33:59 BlindPBU01 motorAction: idle
2022-08-30_09:33:59 asc BlindPBU01_PosValue: 50
2022-08-30_09:33:59 BlindPBU01 ASC_ShuttersLastDrive: manual


################### fenster wird geöffnet => asc initiiert eine automatische fahrt auf position 90 wie konfiguriert
################### ASC_DriveUpMaxDuration=38s ist gesetzt (aktor konfiguriert mit gemessenen 32.2s)
################### die fahrt führt zu 3 positionsmeldungen des aktors

################### 1. referenzfahrt von 36s zum oberen anschlag wird gestartet
2022-08-30_09:34:20 BlindPBU01 level: set_90
2022-08-30_09:34:20 BlindPBU01 motor: up:50                                       0s
2022-08-30_09:34:20 BlindPBU01 motorAction: running
2022-08-30_09:34:21 asc BlindPBU01_PosValue: 50
2022-08-30_09:34:21 BlindPBU01 ASC_ShuttersLastDrive: comfort - window open

################### 2. oberer anschlag erreicht position=100 => rollo dreht um und fährt weiter zum ziel
2022-08-30_09:34:56 BlindPBU01 motor: down:on                                    36s
2022-08-30_09:34:56 BlindPBU01 motorAction: running
2022-08-30_09:34:56 asc BlindPBU01_PosValue: 100
2022-08-30_09:34:56 BlindPBU01 ASC_ShuttersLastDrive: comfort - window open

################### 3. ziel erreicht => die fahrt hat zu lange gedauert (40s), daher wird die zielposition als manuelle fahrt ermittelt.
2022-08-30_09:35:00 BlindPBU01 motor: stop:90                                    40s
2022-08-30_09:35:00 BlindPBU01 motorAction: idle
2022-08-30_09:35:00 asc BlindPBU01_PosValue: 90
2022-08-30_09:35:00 BlindPBU01 ASC_ShuttersLastDrive: manual



diese fahrt würde also zu einem 20-minütigen (default) blockieren von asc führen.
referenzfahrten sind sicherlich auch nicht exklusiv bei homematic zu finden.

ich denke: je weniger fehler die erkennung macht, desto weniger support aufwand für dich.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

CoolTux

Zitat von: frank am 30 August 2022, 12:22:13
es würde mich wirklich wundern, wenn nur homematic aktoren melden, wenn der motor läuft.

Ich meine damit nicht die Meldung das der Motor läuft, sondern das wärend der Fahrt dauernd die position gemeldet wird. Bisher hat sich noch kein User gemeldet bei dem das passiert. Also das zum Beispiel bei einer 1min Fahrt 3 mal auf dem Weg dorthin irgendeine unwichtige Position gemeldet wird. Entscheident ist doch die Position welche er hat wenn die Fahrt abgeschlossen ist, oder nicht?

Zitat von: frank am 30 August 2022, 12:22:13
die existenz von idledetection verstärkt zudem mein gefühl, dass es viele solcher aktoren gibt.
ausserdem könnte man idledetection bestens zur erkennung verwenden.  ;)

Aktuell wird zu mindest darauf reagiert wenn ASC eine Fahrt initiieren  soll und es wird durch idledetection erkannt das das Rollo bereits fährt.
Allerdings gebe ich Dir recht, hier könnte man in der Tat einmal schauen das man durch das idledetection Fehlinterpretationen vermeiden kann.


Zitat von: frank am 30 August 2022, 12:22:13
über dieses userreading habe ich nun "ASC_Shutter_IdleDetection=motorAction:idle" gesetzt.
motorAction:motor:.* {
  my $mot = ReadingsVal($name,"motor","");
  return ($mot =~ /^(stop|err):/)? "idle": "running";
}



hier ein beispiel, wo das ende einer automatischen fahrt nicht/falsch erkannt wird, da der aktor automatisch eine "referenzfahrt" eingefügt hat, um sich zu synchronisieren.
im kommentierten eventlog ist auch das idledetection reading "motorAction" zu sehen:
################### vor dem versuch wurde das rollo manuell geschlossen => position=0
2022-08-30_09:33:45 BlindPBU01 motor: stop:off
2022-08-30_09:33:45 BlindPBU01 motorAction: idle
2022-08-30_09:33:45 asc BlindPBU01_PosValue: 0
2022-08-30_09:33:45 BlindPBU01 ASC_ShuttersLastDrive: manual

################### spannung am rollo aus/an => rollo meldet error mit position=50 (eine referenzfahrt wird nötig)
2022-08-30_09:33:59 BlindPBU01 powerOn: 2022-08-30 09:33:59
2022-08-30_09:33:59 BlindPBU01 motor: err:50
2022-08-30_09:33:59 BlindPBU01 motorAction: idle
2022-08-30_09:33:59 asc BlindPBU01_PosValue: 50
2022-08-30_09:33:59 BlindPBU01 ASC_ShuttersLastDrive: manual


################### fenster wird geöffnet => asc initiiert eine automatische fahrt auf position 90 wie konfiguriert
################### ASC_DriveUpMaxDuration=38s ist gesetzt (aktor konfiguriert mit gemessenen 32.2s)
################### die fahrt führt zu 3 positionsmeldungen des aktors

################### 1. referenzfahrt von 36s zum oberen anschlag wird gestartet
2022-08-30_09:34:20 BlindPBU01 level: set_90
2022-08-30_09:34:20 BlindPBU01 motor: up:50                                       0s
2022-08-30_09:34:20 BlindPBU01 motorAction: running
2022-08-30_09:34:21 asc BlindPBU01_PosValue: 50
2022-08-30_09:34:21 BlindPBU01 ASC_ShuttersLastDrive: comfort - window open

################### 2. oberer anschlag erreicht position=100 => rollo dreht um und fährt weiter zum ziel
2022-08-30_09:34:56 BlindPBU01 motor: down:on                                    36s
2022-08-30_09:34:56 BlindPBU01 motorAction: running
2022-08-30_09:34:56 asc BlindPBU01_PosValue: 100
2022-08-30_09:34:56 BlindPBU01 ASC_ShuttersLastDrive: comfort - window open

################### 3. ziel erreicht => die fahrt hat zu lange gedauert (40s), daher wird die zielposition als manuelle fahrt ermittelt.
2022-08-30_09:35:00 BlindPBU01 motor: stop:90                                    40s
2022-08-30_09:35:00 BlindPBU01 motorAction: idle
2022-08-30_09:35:00 asc BlindPBU01_PosValue: 90
2022-08-30_09:35:00 BlindPBU01 ASC_ShuttersLastDrive: manual



diese fahrt würde also zu einem 20-minütigen (default) blockieren von asc führen.
referenzfahrten sind sicherlich auch nicht exklusiv bei homematic zu finden.

ich denke: je weniger fehler die erkennung macht, desto weniger support aufwand für dich.

Wir schaut es eigentlich aus wenn Du generell die MaxDuration auf 60 stellst? Zum testen für ein zwei Tage.


Grüße
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

frank

ZitatIch meine damit nicht die Meldung das der Motor läuft, sondern das wärend der Fahrt dauernd die position gemeldet wird. Bisher hat sich noch kein User gemeldet bei dem das passiert. Also das zum Beispiel bei einer 1min Fahrt 3 mal auf dem Weg dorthin irgendeine unwichtige Position gemeldet wird. Entscheident ist doch die Position welche er hat wenn die Fahrt abgeschlossen ist, oder nicht?
das liegt wohl im auge des betrachters, oder?
möchte man zb die fahrt realistisch abbilden, ist man sicherlich für jede zusätzliche position dankbar.
bei zb "tasmota"-devices wäre ich auch nicht über deutlich mehr positionen überrascht.

die statusmessage vom aktor enthält nun mal den fahrtstatus und die aktuell berechnete position.
eine "einfache" fahrt mit nur einem einzigen ziel liefert also bei mir genau 2 positionen (start, stop). jedes weitere zwischenziel genau eine weitere position.
also: n-ziele => (n+1)-positionen.

wenn das noch kein user gemeldet hat, wurde es ja höchste zeit.  ;)

ZitatWir schaut es eigentlich aus wenn Du generell die MaxDuration auf 60 stellst? Zum testen für ein zwei Tage.
das hatte ich ja bis vor kurzem, da es der default wert ist.
ich habe den wert extra verkürzt, damit manuelle fahrten besser erkannt werden können.

manuelle fahrten, die zu schnell nach einer automatischen fahrt erfolgen (innerhalb ASC_DriveUpMaxDuration), werden falsch als automatisch erkannt:
################### vor dem versuch wurde das rollo manuell geschlossen => position=0
2022-08-31_11:38:09 BlindPBU01 motor: stop:off
2022-08-31_11:38:09 BlindPBU01 motorAction: idle
2022-08-31_11:38:09 asc BlindPBU01_PosValue: 0
2022-08-31_11:38:10 BlindPBU01 ASC_ShuttersLastDrive: manual

################### fenster öffnen => ventilate fährt das rollo automatisch auf 30
2022-08-31_11:38:29 Fenster.Bad tilted
2022-08-31_11:38:29 BlindPBU01 level: set_30

2022-08-31_11:38:30 BlindPBU01 motor: up:off
2022-08-31_11:38:30 BlindPBU01 motorAction: running
2022-08-31_11:38:30 asc BlindPBU01_PosValue: 0
2022-08-31_11:38:30 BlindPBU01 ASC_ShuttersLastDrive: ventilate - window open

2022-08-31_11:38:40 BlindPBU01 motor: stop:30
2022-08-31_11:38:40 BlindPBU01 motorAction: idle
2022-08-31_11:38:40 asc BlindPBU01_PosValue: 30
2022-08-31_11:38:40 BlindPBU01 ASC_ShuttersLastDrive: ventilate - window open

################### ein zusätzliches manuelles fahren noch innerhalb von ASC_DriveUpMaxDuration=60
2022-08-31_11:38:57 BlindPBU01 level: set_65
2022-08-31_11:38:57 BlindPBU01 motor: up:30
2022-08-31_11:38:57 BlindPBU01 motorAction: running
2022-08-31_11:38:57 asc BlindPBU01_PosValue: 30
2022-08-31_11:38:57 BlindPBU01 ASC_ShuttersLastDrive: ventilate - window open

2022-08-31_11:39:09 BlindPBU01 motor: stop:65
2022-08-31_11:39:09 BlindPBU01 motorAction: idle
2022-08-31_11:39:09 asc BlindPBU01_PosValue: 65
2022-08-31_11:39:09 BlindPBU01 ASC_ShuttersLastDrive: ventilate - window open



################


eine ermittlung des endes einer automatischen fahrt über einen timer ist in jedem fall fehleranfällig.
mit einer veränderung des timers kann man sich höchstens zwischen "pest oder cholera" entscheiden.  ;)

wenn man als längste fahrt eine fahrt annimmt, die eine endlage als zwischenziel anfährt (referenzfahrt), so ist die gesamtzeit dieser fahrt maximal etwa 2x (reelle uptime + 5s).
die kürzeste fahrt wäre eine sehr kurze fahrt ohne zwischenziel. sagen wir mal 1s.

eine ermittlung über einen vergleich von soll-position und ist-position erscheint mir deutlich besser zu sein.
alle positionen die nach dem starten eines automatischen fahrens hereinkommen und ungleich der sollposition sind gehören zur automatischen fahrt. sobald eine position gleich der sollposition ist, wird die erkennung abgebrochen. die automatische fahrt wurde erfolgreich beendet und diese position ist dann natürlich die aktuelle position der automatischen fahrt.

dieses verfahren darf natürlich nicht unendlich lange andauern, falls aus irgendeinem grund keine positionen gemeldet werden oder nie die sollposition gemeldet wird. zb weil die fahrt manuell abgebrochen wurde.
als "timeout" würde ich 2x ASC_DriveUpMaxDuration nehmen (ist abwärtskompatibel für diejenigen, die diesen wert bereits angepasst haben)

wenn also die erkennung durch timeout abgebrochen wurde, gibt es mindestens 2 fälle zu unterscheiden:
1. keine positionsmeldung erhalten => zb fehlermeldung ausgeben? fahrt wiederholen?
2. die letzte gemeldete position innerhalb timeout wird als manuelle position behandelt (manueller abbruch der automatischen fahrt)

alle weiteren positionen, die nach dem ende der erkennung der automatischen (entweder soll=ist oder timeout) eintreffen, werden bis zum nächsten starten einer automatischen fahrt als manuelle positionen behandelt. ohne jegliche weitere vergleiche oder timeouts.


wenn man ASC_Shutter_IdleDetection gesetzt hat, wird die erkennung innerhalb des timeout hierüber beendet.
ist/soll vergleich der letzten position ermöglicht die erkennung eines manuellen abbruchs.
bei timeout auf alle fälle fehler:
1. keine positionsmeldung erhalten => zb fehlermeldung ausgeben? fahrt wiederholen?
2. wenn wert vorhanden => zb fehlermeldung ausgeben? ASC_DriveUpMaxDuration eventuell zu kurz, weil zb nicht gesetzt.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

Zitat von: frank am 01 September 2022, 13:20:14
wenn das noch kein user gemeldet hat, wurde es ja höchste zeit.  ;)
...vermutlich würdest du fündig, wenn du in den Threads zu Version 0.4 oder 0.6 suchst...

Generell: Wir hatten relativ wenige Test-"Hardwares", genauer afaik: CUL_HM, ZWave und ROLLO. Genau aus dem Grund, dass die CUL_HM relativ viel "Zwischenlärm" veranstalten waren wir nach meiner erinnerung damals auf die Timer-Lösung gegangen, schlicht, weil wir an diesem Punkt "irgendwie" weiterkommen wollten.... ZWave macht z.B. keinen "Zwischenlärm" betr. den aktuellen Stand, was genau der Grund war, warum es ergänzend die Erkennung mit "motor" etc. gibt ;) .

Das bedeutet aber nicht, dass die jetzige Lösung optimal wäre...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

@frank

Ich muss gestehen daß ich gefallen an Deine Ideen gefunden habe. Sowohl der Weg über die tatsächliche Endposition sofern von ASC ausgelöst als auch das mit der IdleDetection finde ich sehr erfolgversprechend. Ich werde es mir in nächster Zeit einmal genauer anschauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

frank

Zitat von: Beta-User am 01 September 2022, 13:41:22
Wir hatten relativ wenige Test-"Hardwares", genauer afaik: CUL_HM, ZWave und ROLLO.
du hast zwave?
meldet zwave infos zum fahrtstatus? welche (start/stop/up/down/error/...)?
meldet zwave infos, wenn die position nicht mehr stimmt. zb nach device booten?

Zitat...vermutlich würdest du fündig, wenn du in den Threads zu Version 0.4 oder 0.6 suchst...
0.4 habe ich noch nicht gefunden.
0.6.x habe ich gefunden, aber .... 214 seiten a 15 beiträge.  8)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

frank

Zitat von: CoolTux am 01 September 2022, 15:42:52
@frank

Ich muss gestehen daß ich gefallen an Deine Ideen gefunden habe. Sowohl der Weg über die tatsächliche Endposition sofern von ASC ausgelöst als auch das mit der IdleDetection finde ich sehr erfolgversprechend. Ich werde es mir in nächster Zeit einmal genauer anschauen.
ich bin gespannt!


übrigens (die entwickler haben das sicherlich auf dem schirm):

wenn das position reading des rollos events-on-update sendet, erzeugt jeder statusrequest am aktor eine neue manuelle fahrt mit entsprechendem blocking. zusätzliche probleme kann es geben, wenn der request nach einer automatischen fahrt kommt, da dadurch dann die letzte automatische fahrt zur letzten manuellen fahrt wird.

wäre es nicht überlegenswert, dass asc von sich aus wiederholungen des position readings filtert?
wenn ich mir so die list der rollos diverser asc-user anschaue, ist das attribut event-on-change im rollo eher sehr selten selten zu sehen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html