Autor Thema: HMCCU5: Probleme mit Substitute  (Gelesen 1280 mal)

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
HMCCU5: Probleme mit Substitute
« am: 03 Oktober 2022, 18:05:00 »
Hallo zusammen!

Ich habe mir heute mal Zeit genommen, um das Großprojekt HMCCU5-Migration im zweiten Anlauf anzugehen nachdem ich im voraus einige Zeit auf einer Test-Instanz gangbare Konfigurationen entwickelt habe.

Nun bin ich auf ein bislang neues Problem gestoßen: substitute scheint nicht mehr auf <channelno>.<datapoint> zu matchen, ein Matchen auf <datapoint> funktioniert.

Beispiel:
attr AU.XX.Regensensor substitute 1.STATE!(0|false):dry,(1|true):rain;2.STATE!(0|false):off,(1|true):on
Wie man hier sieht, lässt sich der Workaround, auf die channelno zu verzichten, hier nicht umsetzen.

Hat jemand einen Tipp?

Falls relevant:
ccudef-substitute auf der HMCCU ist auf .*:${value} gesetzt
ccuflags im HMCCUDEV ist auf showMasterReadings,showLinkReadings,showDeviceReadings,showServiceReadings gesetzt

/Update2: list
Internals:
   DEF        KEQ0883874
   FUUID      5f11cc12-f33f-5676-c825-8b10bd6e3e57cf84
   IODev      rpiccu
   NAME       AU.XX.Regensensor
   NR         416
   STATE      0 (0)
   TYPE       HMCCUDEV
   ccuaddr    KEQ0883874
   ccudevstate active
   ccuif      BidCos-RF
   ccuname    AU.XX.Regensensor
   ccusubtype HM-Sen-RD-O
   ccutype    HM-Sen-RD-O
   eventCount 14
   firmware   1.4
   readonly   no
   Helper:
     DBLOG:
       1.STATE:
         DbLog:
           TIME       1664815553.56241
           VALUE      0
       2.STATE:
         DbLog:
           TIME       1664815553.8473
           VALUE      0
   OLDREADINGS:
   READINGS:
     2022-10-03 17:58:39   0.AES_KEY       0
     2022-10-03 17:58:39   0.CONFIG_PENDING 0
     2022-10-03 17:58:39   0.DEVICE_IN_BOOTLOADER 0
     2022-10-03 17:58:39   0.RSSI_DEVICE   -53
     2022-10-03 17:58:39   0.RSSI_PEER     -194
     2022-10-03 17:58:39   0.STICKY_UNREACH 0
     2022-10-03 17:58:39   0.UNREACH       0
     2022-10-03 17:58:39   0.UPDATE_PENDING 0
     2022-10-03 18:45:53   1.STATE         0
     2022-10-03 18:45:53   2.STATE         0
     2022-10-03 17:58:39   R-1.AES_ACTIVE  0
     2022-10-03 17:58:39   R-1.COND_TX_THRESHOLD_HI 2900
     2022-10-03 17:58:39   R-1.COND_TX_THRESHOLD_LO 2850
     2022-10-03 17:58:39   R-1.EVENT_FILTERTIME 1.0
     2022-10-03 17:58:39   R-1.EVENT_RELEASE_FILTER_TIME 120.0
     2022-10-03 17:58:39   R-1.STATE_HIGH_HOLD_TIME 180.0
     2022-10-03 17:58:39   R-1.TRANSMIT_TRY_MAX 10
     2022-10-03 17:58:39   R-LOCAL_RESET_DISABLE 0
     2022-10-03 17:58:39   R-TRANSMIT_DEV_TRY_MAX 10
     2022-10-03 17:58:39   activity        0
     2022-10-03 18:45:53   control         0
     2022-10-03 18:45:53   devstate        ok
     2022-10-03 18:45:53   hmstate         0
     2022-10-03 17:58:39   rssidevice      -53
     2022-10-03 17:58:39   rssipeer        -194
     2022-10-03 17:58:39   sign            0
     2022-10-03 18:45:53   state           0
   helper:
     bm:
       HMCCUDEV_Attr:
         cnt        8
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        03.10. 17:43:15
         max        6.79492950439453e-05
         tot        0.000325918197631836
         mAr:
           set
           AU.XX.Regensensor
           substitute
           1\.STATE!(0|false):dry,(1|true):rain
       HMCCUDEV_Get:
         cnt        20
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        03.10. 17:46:43
         max        0.356071949005127
         tot        0.908060312271118
         mAr:
           HASH(0x563e017915f8)
           ARRAY(0x563e077cb9a8)
           HASH(0x563e07a94288)
       HMCCUDEV_Set:
         cnt        105
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        03.10. 18:45:53
         max        0.00419497489929199
         tot        0.0281155109405518
         mAr:
           HASH(0x563e017915f8)
           ARRAY(0x563e0888f510)
           HASH(0x563e0841d7a8)
   hmccu:
     channels   3
     detect     3
     devspec    KEQ0883874
     forcedev   0
     nodefaults 1
     role       0:MAINTENANCE,1:RAINDETECTOR,2:RAINDETECTOR_HEAT
     setDefaults 0
     cmdlist:
       get       
       set        off:noArg on-for-timer on-till on:noArg toggle:noArg
     control:
       chn        2
       dpt        STATE
     dp:
       0.AES_KEY:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.DEVICE_IN_BOOTLOADER:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -53
           ONVAL      -53
           OSVAL      -53
           OVAL       -53
           SVAL       -53
           VAL        -53
       0.RSSI_PEER:
         VALUES:
           NVAL       -194
           ONVAL      -194
           OSVAL      -194
           OVAL       -194
           SVAL       -194
           VAL        -194
       0.STICKY_UNREACH:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.UNREACH:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
       1.AES_ACTIVE:
         MASTER:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
         VALUES:
       1.COND_TX_THRESHOLD_HI:
         MASTER:
           NVAL       2900
           ONVAL      2900
           OSVAL      2900
           OVAL       2900
           SVAL       2900
           VAL        2900
         VALUES:
       1.COND_TX_THRESHOLD_LO:
         MASTER:
           NVAL       2850
           ONVAL      2850
           OSVAL      2850
           OVAL       2850
           SVAL       2850
           VAL        2850
         VALUES:
       1.EVENT_FILTERTIME:
         MASTER:
           NVAL       1.000000
           ONVAL      1.000000
           OSVAL      1.0
           OVAL       1.000000
           SVAL       1.0
           VAL        1.000000
         VALUES:
       1.EVENT_RELEASE_FILTER_TIME:
         MASTER:
           NVAL       120.000000
           ONVAL      120.000000
           OSVAL      120.0
           OVAL       120.000000
           SVAL       120.0
           VAL        120.000000
         VALUES:
       1.STATE:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      1
           OVAL       1
           SVAL       0
           VAL        0
       1.STATE_HIGH_HOLD_TIME:
         MASTER:
           NVAL       180.000000
           ONVAL      180.000000
           OSVAL      180.0
           OVAL       180.000000
           SVAL       180.0
           VAL        180.000000
         VALUES:
       1.TRANSMIT_TRY_MAX:
         MASTER:
           NVAL       10
           ONVAL      10
           OSVAL      10
           OVAL       10
           SVAL       10
           VAL        10
         VALUES:
       2.STATE:
         VALUES:
           NVAL       0
           ONVAL      1
           OSVAL      1
           OVAL       1
           SVAL       0
           VAL        0
       d.LOCAL_RESET_DISABLE:
         MASTER:
           NVAL       0
           ONVAL      0
           OSVAL      0
           OVAL       0
           SVAL       0
           VAL        0
         VALUES:
       d.TRANSMIT_DEV_TRY_MAX:
         MASTER:
           NVAL       10
           ONVAL      10
           OSVAL      10
           OVAL       10
           SVAL       10
           VAL        10
         VALUES:
     roleCmds:
       get:
       set:
         off:
           channel    2
           role       RAINDETECTOR_HEAT
           subcount   1
           syntax     V:STATE:0
           usage      off
           subcmd:
             000:
               args       0
               dpt        STATE
               fnc       
               max        1
               min        0
               parname    STATE
               partype    3
               ps         VALUES
               scn        000
               unit       
         on:
           channel    2
           role       RAINDETECTOR_HEAT
           subcount   1
           syntax     V:STATE:1
           usage      on
           subcmd:
             000:
               args       1
               dpt        STATE
               fnc       
               max        1
               min        0
               parname    STATE
               partype    3
               ps         VALUES
               scn        000
               unit       
         on-for-timer:
           channel    2
           role       RAINDETECTOR_HEAT
           subcount   2
           syntax     V:ON_TIME:?duration V:STATE:1
           usage      on-for-timer duration
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    duration
               partype    2
               ps         VALUES
               scn        000
               unit       s
             001:
               args       1
               dpt        STATE
               fnc       
               max        1
               min        0
               parname    STATE
               partype    3
               ps         VALUES
               scn        001
               unit       
         on-till:
           channel    2
           role       RAINDETECTOR_HEAT
           subcount   2
           syntax     V:ON_TIME:?time V:STATE:1
           usage      on-till time
           subcmd:
             000:
               args       
               dpt        ON_TIME
               fnc       
               max        85825945.600000
               min        0.000000
               parname    time
               partype    2
               ps         VALUES
               scn        000
               unit       s
             001:
               args       1
               dpt        STATE
               fnc       
               max        1
               min        0
               parname    STATE
               partype    3
               ps         VALUES
               scn        001
               unit       
     state:
       chn        1
       dpt        STATE
Attributes:
   DbLogInclude 1.STATE,2.STATE
   IODev      rpiccu
   alias      Regensensor
   ccuflags   showMasterReadings,showLinkReadings,showDeviceReadings,showServiceReadings
   controldatapoint 2.STATE
   devStateIcon .*:noIcon:
   event-on-change-reading .*
   eventMap   /datapoint 2.STATE 1:on/datapoint 2.STATE 0:off/
   group      Klima
   room       Außen,Entwässerung,Start
   stateFormat 1.STATE (2.STATE)
   statedatapoint 1.STATE
   substitute 1.STATE!0:dry,1:rain;2.STATE!(0|false):off,(1|true):on
   userattr   mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long
   webCmd     :
   widgetOverride control:uzsuToggle,off,on

Patrick
« Letzte Änderung: 03 Oktober 2022, 19:01:22 von PatrickR »
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4358
    • HMCCU
Antw:HMCCU5: Probleme mit Substitute
« Antwort #1 am: 20 Oktober 2022, 16:12:01 »
Bei mir funktioniert es. Lösche mal ccudef-substitute, das matched alle Readings und ist außerdem syntaktisch falsch
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #2 am: 20 Oktober 2022, 17:21:21 »
Hi!

Bei mir funktioniert es. Lösche mal ccudef-substitute, das matched alle Readings und ist außerdem syntaktisch falsch
Habe ich inzwischen auch rausgefunden. Hast Du eine Alternatividee für ccudef-substitute? Die Original-Values würde ich schon gerne behalten.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4358
    • HMCCU
Antw:HMCCU5: Probleme mit Substitute
« Antwort #3 am: 21 Oktober 2022, 09:13:24 »
Verstehe ich nicht. Soll dann jedes Reading 2x vorkommen, also einmal der Originalwert und einmal der per substitute geänderte? Ich verstehe den Sinn nicht.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #4 am: 21 Oktober 2022, 11:25:52 »
Hi!

Verstehe ich nicht. Soll dann jedes Reading 2x vorkommen, also einmal der Originalwert und einmal der per substitute geänderte? Ich verstehe den Sinn nicht.
Nein, von Readings habe ich nicht gesprochen sondern von Values. HMCCU5 mappt eine Vielzahl von Values auf andere Werte z. B. 1 auf motion und 0 auf noMotion. Mit dem ccudef-substitute-Hack weiter oben hatte ich das rückgängig gemacht ohne die Module patchen zu müssen. D. h. mein Reading 0.LOW_BAT hat nun den Wert 0, wenn die Batterie ok ist. So habe ich eine globale und effiziente Lösung gefunden. Möchte ich aber deviceabhängig(!) nun einzelne Werte doch umbelegen, muss ich das substitute-Attribut eines Devices setzen, das aber leider im beschriebenen Fall nicht wirkt.

Das heißt im Ergebnis, dass zwei Lösungsmöglichkeiten bestehen:
  • Eine Alternative des ccudef-substitute-Hacks zur Wiederherstellung der Original-Readings
  • Beibehaltung des ccudef-substitute-Hacks aber eine Anpassung des deviceabhängigen Substitutes

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #5 am: 26 Oktober 2022, 21:46:24 »
Verstehe ich nicht. Soll dann jedes Reading 2x vorkommen, also einmal der Originalwert und einmal der per substitute geänderte? Ich verstehe den Sinn nicht.
Keine Idee? Einfallen würde mir allenfalls noch ein Patchen vom HMCCUConf.pm.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline zap

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4358
    • HMCCU
Antw:HMCCU5: Probleme mit Substitute
« Antwort #6 am: 27 Oktober 2022, 09:37:48 »
Ich habe mir das mal angeschaut. Wenn ich die Konvertierung rausnehme, funktionieren einige Befehle wie "toggle" sehr wahrscheinlich nicht mehr. Andere Seiteneffekte kann ich auch nicht ausschließen. Da Du der Einzige bist, der sich diese Funktionalität wünscht, werde ich das erst einmal nicht einführen.
Diese Art der Wertekonvertierung machen sehr viele Module, u.a. CUL_HM.
2xCCU3, diverse Komponenten (Fenster, Rolladen, Themostate, Stromzähler, Steckdosen ...)
FHEM mit Raspi für CCU Integration.
IOBroker für UI (VIS), Hue, Sonos usw.
Maintainer der Module FULLY, Meteohub und HMCCU (Schnittstelle CCU-FHEM = best of both worlds approach

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #7 am: 27 Oktober 2022, 15:50:01 »
Hi!

Ich habe mir das mal angeschaut. Wenn ich die Konvertierung rausnehme, funktionieren einige Befehle wie "toggle" sehr wahrscheinlich nicht mehr. Andere Seiteneffekte kann ich auch nicht ausschließen. Da Du der Einzige bist, der sich diese Funktionalität wünscht, werde ich das erst einmal nicht einführen.
Ok, dann werde ich mal schauen, was ich mit dem Patchen der HMCCUConf.pm erreichen kann.

Diese Art der Wertekonvertierung machen sehr viele Module, u.a. CUL_HM.
Das ist mir natürlich bewusst, und ich verstehe auch die Beweggründe dahinter. Aber diese subjektive Umdeutung führt u. a. dazu, dass nach Modulupdates Automatisierungen lautlos ins Leere laufen können wie bei HMCCU5 passiert. Das ist ein bisschen so, wie neben einem Vulkan zu leben. Oft passiert halt nix Schlimmes.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #8 am: 29 Oktober 2022, 01:43:09 »
Hi!

Bei mir funktioniert es. Lösche mal ccudef-substitute, das matched alle Readings und ist außerdem syntaktisch falsch
Nachdem mein Plan, HMCCUConf.pm zu patchen wegen hardkodierter Regeln gescheitert ist, habe ich mich nochmal mit substitute beschäftigt.

Habe wie vorgeschlagen das ccudef-substitute der HMCCU gelöscht. Es gibt nun exakt ein .*substitute-Attribut in der ganzen Testinstanz und das Problem besteht nach wie vor. Alle Module sind laut Update aktuell.

List des Testgeräts:
Internals:
   DEF        000B5BE98E2C76
   FUUID      629e2ef7-f33f-2cae-b562-f15a6fb774e3e33e
   IODev      kvmccu
   NAME       HmIP_WRC6_000B5BE98E2C76
   NR         14
   STATE      TEST=1
   TYPE       HMCCUDEV
   ccuaddr    000B5BE98E2C76
   ccudevstate active
   ccuif      HmIP-RF
   ccuname    HmIP-WRC6 000B5BE98E2C76
   ccurolestate KEY_TRANSCEIVER
   ccusubtype WRC6
   ccutype    HmIP-WRC6
   eventCount 38
   firmware   1.0.19
   readonly   no
   OLDREADINGS:
   READINGS:
     2022-10-29 01:40:21   0.CONFIG_PENDING false
     2022-10-29 01:40:18   0.DUTY_CYCLE    false
     2022-10-29 01:40:18   0.INSTALL_TEST  true
     2022-10-29 01:40:21   0.LOW_BAT       ok
     2022-10-29 01:40:18   0.OPERATING_VOLTAGE 2.9
     2022-10-29 01:40:18   0.OPERATING_VOLTAGE_STATUS NORMAL
     2022-10-29 01:40:21   0.RSSI_DEVICE   -76
     2022-10-29 01:40:18   0.RSSI_PEER     N/A
     2022-10-29 01:40:21   0.UNREACH       alive
     2022-10-29 01:40:18   0.UPDATE_PENDING false
     2022-10-29 01:40:18   1.PRESS_SHORT   TEST=1
     2022-10-29 01:40:18   2.PRESS_SHORT   TEST=1
     2022-10-29 01:40:21   3.PRESS_SHORT   TEST=1
     2022-10-29 01:40:21   activity        alive
     2022-10-29 01:40:21   battery         ok
     2022-10-29 01:40:21   devstate        ok
     2022-10-29 01:40:21   hmstate         TEST=1
     2022-10-29 01:40:18   pressed         TEST=1
     2022-10-29 01:40:21   rssidevice      -76
     2022-10-29 01:40:18   rssipeer        N/A
     2022-10-29 01:40:18   state           TEST=1
     2022-10-29 01:40:18   voltage         2.9
   helper:
     bm:
       HMCCUDEV_Attr:
         cnt        5
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.10. 01:34:54
         max        8.392333984375e-05
         tot        0.000219106674194336
         mAr:
           set
           HmIP_WRC6_000B5BE98E2C76
           substitute
           .*1.PRESS_SHORT!.+:P=${value}
       HMCCUDEV_Get:
         cnt        17
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.10. 01:34:54
         max        0.000270843505859375
         tot        0.00343775749206543
         mAr:
           HASH(0x56395918bbd0)
           ARRAY(0x56395a4ea1b8)
           HASH(0x56395a4ffd50)
       HMCCUDEV_Set:
         cnt        91
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        29.10. 01:34:54
         max        0.000522851943969727
         tot        0.0219762325286865
         mAr:
           HASH(0x56395918bbd0)
           ARRAY(0x56395a5081a0)
           HASH(0x56395a4ebdb8)
   hmccu:
     channels   7
     detect     2
     devspec    000B5BE98E2C76
     forcedev   0
     nodefaults 1
     role       0:MAINTENANCE,1:KEY_TRANSCEIVER,2:KEY_TRANSCEIVER,3:KEY_TRANSCEIVER,4:KEY_TRANSCEIVER,5:KEY_TRANSCEIVER,6:KEY_TRANSCEIVER
     setDefaults 0
     cmdlist:
       get       
       set       
     control:
     dp:
       0.CONFIG_PENDING:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      false
           OVAL       0
           SVAL       false
           VAL        0
       0.DUTY_CYCLE:
         VALUES:
           NVAL       false
           ONVAL      false
           OSVAL      false
           OVAL       false
           SVAL       false
           VAL        false
       0.INSTALL_TEST:
         VALUES:
           NVAL       true
           ONVAL      true
           OSVAL      true
           OVAL       true
           SVAL       true
           VAL        true
       0.LOW_BAT:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      ok
           OVAL       0
           SVAL       ok
           VAL        0
       0.OPERATING_VOLTAGE:
         VALUES:
           NVAL       2.900000
           ONVAL      2.900000
           OSVAL      2.9
           OVAL       2.900000
           SVAL       2.9
           VAL        2.900000
       0.OPERATING_VOLTAGE_STATUS:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      NORMAL
           OVAL       0
           SVAL       NORMAL
           VAL        0
       0.RSSI_DEVICE:
         VALUES:
           NVAL       -76
           ONVAL      -74
           OSVAL      -74
           OVAL       -74
           SVAL       -76
           VAL        -76
       0.RSSI_PEER:
         VALUES:
           NVAL       N/A
           ONVAL      N/A
           OSVAL      N/A
           OVAL       0
           SVAL       N/A
           VAL        0
       0.UNREACH:
         VALUES:
           NVAL       0
           ONVAL      0
           OSVAL      alive
           OVAL       0
           SVAL       alive
           VAL        0
       0.UPDATE_PENDING:
         VALUES:
           NVAL       false
           ONVAL      false
           OSVAL      false
           OVAL       false
           SVAL       false
           VAL        false
       1.PRESS_SHORT:
         VALUES:
           NVAL       1
           ONVAL      1
           OSVAL      P=1
           OVAL       1
           SVAL       TEST=1
           VAL        1
       2.PRESS_SHORT:
         VALUES:
           NVAL       1
           ONVAL      1
           OSVAL      P=1
           OVAL       1
           SVAL       TEST=1
           VAL        1
       3.PRESS_SHORT:
         VALUES:
           NVAL       1
           ONVAL      1
           OSVAL      TEST=1
           OVAL       1
           SVAL       TEST=1
           VAL        1
     roleCmds:
       get:
       set:
     state:
       chn        1
       dpt        PRESS_SHORT
Attributes:
   ccuflags   showMasterReadings,showLinkReadings,showDeviceReadings,showServiceReadings
   event-on-change-reading .*
   event-on-update-reading .*PRESS_SHORT.*
   substitute PRESS_SHORT!.+:TEST=${value}
   verbose    5
Mit dem Attribut
substitute PRESS_SHORT!.+:TEST=${value}
werden die Werte ersetzt, mit
substitute 1.PRESS_SHORT!.+:TEST=${value}
aber nicht.

Patrick
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook

Offline PatrickR

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 965
Antw:HMCCU5: Probleme mit Substitute
« Antwort #9 am: 29 Oktober 2022, 03:33:34 »
Mahlzeit!

Habe den Bug mal näher eingegrenzt. Das Problem scheint zu sein, dass die Substitute-Regel garnicht unversehrt in HMCCU_Substitute ankommt.

Statt
1.PRESS_SHORT!.*:TEST=${value};LOW_BAT!.*:TEST2=${value}
kommt
1!.*:TEST=${value};LOW_BAT!.*:TEST2=${value}
an. Das kann aber nur passieren, wenn ${}-Teile enthalten sind, denn vor dem Aufruf von HMCCU_SubstVariables ist alles ok.

/Update:
Es passiert in der Zeile 3085
$text =~ s/$dp/$clhash->{hmccu}{dp}{$dp}{VALUES}{VAL}/g;

Patrick
« Letzte Änderung: 05 November 2022, 00:26:31 von PatrickR »
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook