[gelöst] Structure für Licht mit Dimmer und Nicht-Dimmer

Begonnen von ChrisK, 30 Januar 2016, 22:44:23

Vorheriges Thema - Nächstes Thema

ChrisK

Hallo zusammen,

ich habe heute meinen ersten HM-Dimmer eingebaut (HM-LC-Dim1TPBU-FM).
Hat auch alles prima geklappt, jetzt stehe ich aber beim structure ein bisschen ratlos da.

Bisher hatte ich ein structure für 4 Lichtschalter (HM-LC-Sw1PBU-FM).
Durch
clientstate_behavior: relative
clientstate_priority: on off

hat der structure mir auch brav angezeigt, wenn mindestens eine Lampe an war.

Mit dem Dimmer klappt das nur, wenn der Dimmer auf 100% steht, weil er nur dann "on" im State stehen hat.
Ziel wäre es, wenn structure "on" anzeigt, wenn entweder eine der Lampen an ist oder der Dimmer auf > 0 steht.
Ich habe jetzt länger gesucht und dieser Thread passt am ehesten, aber da wird keine Lösung beschrieben (und da er ziemlich alt ist, starte ich hier mal einen neuen Thread).

Gibt es eine Möglichkeit mein Ziel zu erreichen, ohne dass ich clientstate_priority auf "on|1|2|...|98|99 off" setze?
Das denke ich mal würde auch zum Ziel führen, aber das geht doch bestimmt eleganter, oder? ;)

Vielen Dank schon mal!

rapster

attr dimmerdevice structure_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off

ChrisK

Vielen Dank!
Klingt logisch. Man sagt nicht der structure, wann der Dimmer on ist, sondern man sagt dem Dimmer, wann es on sagen soll.

Leidet meldet mir fhem:
wz_licht_dimmer_Sw: unknown attribute structure_map. Type 'attr wz_licht_dimmer_Sw ?' for a detailed list.
Ich habe es mit dem dimmerdevice selbst und auch mit seinem channel_01 (wo on/off/pct angegeben werden kann) probiert.
Was mache ich falsch?


rapster

Ich zitier mal die Commandref, denke dann siehst du warum du natürlich die Meldung erhälst.
ZitatDefine

    define <name> structure <struct_type> <dev1> <dev2> ...
...
Zitat
Attributes

    <struct_type>_map
With this attribute, which has to specified for the structure- member, you can redefine the value reported by a specific structure-member for the structure value. The attribute has three variants:

    readingName
    take the value from readingName instead of state.
    oldVal:newVal
    if the state reading matches oldVal, then replace it with newVal
    readingName:oldVal:newVal
    if readingName matches oldVal, then replace it with newVal

ChrisK

Zitat von: rapster am 30 Januar 2016, 23:32:51
Ich zitier mal die Commandref, denke dann siehst du warum du natürlich die Meldung erhälst....
Leider nicht.

Ich habe zwar verstanden, dass es nicht "structure_map" heißen muss, sondern (in meinem Fall) "Lichter_map", aber trotzdem klappt es nicht.

Ich habe folgendes:
define lichter_vorne structure Lichter ez_licht wz_licht wz_licht_klein ku_licht  wz_licht_dimmer_Sw
Wobei "wz_licht_dimmer_Sw" der Channel_01 des Dimmers ist, weil dort der State on/off drin steht und dort auch das Attribut pct existiert.

Wenn ich das hier probiere:
attr wz_licht_dimmer_Sw Lichter_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off
Sagt er mir, dass es das Attribut nicht gibt.

Wenn ich das ganze für den Dimmer selbst mache, dann wird das Attribut hinterlegt:
attr wz_licht_dimmer Lichter_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off
Das Attribut ist zwar beim Device vorhanden, aber funktionieren tut es nicht. Structure geht auf on, nur wenn der Dimmer auch auf on steht.
Der Dimmer ist aber auch gar nicht "structure-member" ist. Laut Commandref muss ja die _map beim structure-member hinterlegt werden, was in diesem Fall der channel_01 des Dimmers ist, der aber das Attribut nicht kennt.

Sorry, ich versuche es ja zu verstehen, aber irgendwie klappt das mit dem Verstehen nicht.

Ralf W.

#5
Ich habe das Gerät nicht hier. Aber klappt es so?

attr wz_licht_dimmer_Sw Lichter_map pct:[1-9]:on [1-9][0-9]:on 0:off

MfG
http://twitter.com/RWausD
Schon gewusst, dass Haarausfall zu einer Glatze führen kann?

FHEM: NUC7PJYH2, Ubuntu Server 22.04.2 LTS, HMCCU - RaspberryMatic, DE ConBee II, diverse Sensoren und Aktoren.

rudolfkoenig

Bei der <structure>_map in der Variante 2 und 3 (d.h. mit ein oder zwei Doppelpunkten) wird vor dem Regexp noch ein ^ eingefuegt, das ist leider nicht dokumentiert. Aus diesem Grund funktioniert vermutlich der erste Vorschlag nicht.
Um den zweiten Vorschlag zu bewerten muesste man wissen, welche Werte state bzw. pct aufnehmen kann.
Etwas irritierend ist, dass fuer Werte von 1-9 das Reading pct abgelesen wird, sonst aber auf state zugegriffen wird.

rapster

#7
1. Vorschlag funktioniert bei dem HM Dimmer HM-LC-Dim1T-FM, kann also nicht an einer falschen regexp, oder dem doppelten ^ liegen.

Der HM-LC-Dim1T-FM hat allerdings keine Channels, das reading "pct" muss natürlich in dem Structure member device existieren, evtl. heisst es bei deinem
dimmer anders?

Poste mal ein list deines Dimmers bitte.

ChrisK

Danke Ralf und Rudolf.
Es liegt aber wahrscheinlich an der Konstellation mit dem Channel.

@rapster:
Das ist das List des Dimmers:

//"edit" während ich den Post schreibe:
Ich wollte zu den Lists noch die "attr device ?" hier mitliefern und da ist mir aufgefallen, dass das Attribut Lichter_Map jetzt auch beim Channel dabei ist.
Ich bin mir zu 99% sicher, dass ich gestern genau den gleichen Befehl ("attr wz_licht_dimmer_Sw Lichter_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off") probiert hatte, weil ich in gerade aus der gleichen Text-Datei raus kopiert habe. Jetzt klappt es aber.
Zwischen gestern und heute lagen ein paar Neustarts des Servers, aber ich habe keine Ahnung, warum es jetzt geht.

Sorry, wenn ich irgendwas falsch gemacht habe und Ihr deswegen unnötigen Aufwand hattet.
Vielen Dank nochmal an alle!



Hier trotzdem mal die Lists (weiß zwar nicht wofür, aber ich lass die mal drin ;) ).

Internals:
   DEF        3B7C3E
   HMLAN1_MSGCNT 93
   HMLAN1_RAWMSG R99824202,0001,C8937B8B,FF,FFC3,5480023B7C3E2865070101C6203DC8
   HMLAN1_RSSI -61
   HMLAN1_TIME 2016-01-31 22:06:41
   IODev      HMLAN1
   LASTInputDev HMLAN1
   MSGCNT     93
   NAME       wz_licht_dimmer
   NR         773
   NTFY_ORDER 50-wz_licht_dimmer
   STATE      CMDs_done
   TYPE       CUL_HM
   channel_01 wz_licht_dimmer_Sw
   channel_02 wz_licht_dimmer_Sw1_V_01
   channel_03 wz_licht_dimmer_Sw1_V_02
   lastMsg    No:54 - t:02 s:3B7C3E d:286507 0101C6203DC8
   protCmdDel 2
   protIOerr  1 last_at:2016-01-31 15:53:01
   protLastRcv 2016-01-31 22:06:41
   protResnd  1 last_at:2016-01-31 15:54:12
   protSnd    92 last_at:2016-01-31 22:06:36
   protState  CMDs_done
   rssi_HMLAN1 max:-60 avg:-60.66 cnt:3 lst:-61 min:-61
   rssi_at_HMLAN1 cnt:93 avg:-59.97 max:-59 min:-62 lst:-61
   CHANGETIME:
   Helper:
     Dblog:
       Poweron:
         Mydblog:
           TIME       1454251977.26308
           VALUE      2016-01-31 15:52:57
       State:
         Mydblog:
           TIME       1454274401.29562
           VALUE      CMDs_done
   Readings:
     2016-01-30 22:57:14   CommandAccepted yes
     2016-01-30 10:37:24   D-firmware      2.7
     2016-01-30 10:37:24   D-serialNr      MEQ0396315
     2016-01-31 15:54:03   PairedTo        0x286507
     2016-01-30 10:37:31   R-pairCentral   0x286507
     2016-01-31 15:54:03   RegL_00.          02:81 0A:28 0B:65 0C:07 15:FF 18:00 00:00
     2016-01-30 23:27:32   level           set_50
     2016-01-31 15:52:57   powerOn         2016-01-31 15:52:57
     2016-01-31 22:06:41   state           CMDs_done
   Helper:
     HM_CMDNR   84
     PONtest    0
     cSnd       112865073B7C3E0201000320FFFF,112865073B7C3E02017E0320FFFF
     mId        0068
     rxType     1
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Io:
       newChn     +3B7C3E,00,00,00
       nextSend   1454272698.3091
       prefIO
       rxt        0
       vccu
       p:
         3B7C3E
         00
         00
         00
     Mrssi:
       mNo        54
       Io:
         HMLAN1     -59
     Prt:
       bErr       0
       sProc      0
       Rspwait:
     Q:
       qReqConf
       qReqStat   01
     Role:
       dev        1
       prs        1
     Rssi:
       Hmlan1:
         avg        -60.6666666666667
         cnt        3
         lst        -61
         max        -60
         min        -61
       At_hmlan1:
         avg        -59.9784946236559
         cnt        93
         lst        -61
         max        -59
         min        -62
     Shadowreg:
     Vdim:
       idPhy      3B7C3E
       idV2       3B7C3E
       idV3       3B7C3E01
Attributes:
   IODev      HMLAN1
   autoReadReg 4_reqStatus
   expert     2_raw
   firmware   2.7
   model      HM-LC-Dim1TPBU-FM
   room       Wohnzimmer
   serialNr   MEQ0396315
   subType    dimmer
   userattr   Lichter Lichter_map structexclude
   webCmd     getConfig:clear msgEvents


Und das hier das List des Channels, dass pct enthält:
Internals:
   DEF        3B7C3E01
   NAME       wz_licht_dimmer_Sw
   NR         775
   NTFY_ORDER 50-wz_licht_dimmer_Sw
   STATE      63
   TYPE       CUL_HM
   chanNo     01
   device     wz_licht_dimmer
   peerList   HM_302FC9_Sw_01,self01,self02,
   CHANGETIME:
   Helper:
     Dblog:
       Devicemsg:
         Mydblog:
           TIME       1454274407.96752
           VALUE      63 (to HMLAN1)
       Dim:
         Mydblog:
           TIME       1454274407.96752
           VALUE      stop:63
       Level:
         Mydblog:
           TIME       1454274407.96752
           VALUE      63
       Overheat:
         Mydblog:
           TIME       1454274407.96752
           VALUE      off
       Overload:
         Mydblog:
           TIME       1454274407.96752
           VALUE      off
       Pct:
         Mydblog:
           TIME       1454274407.96752
           VALUE      63
       Phylevel:
         Mydblog:
           TIME       1454274407.96752
           VALUE      63
       Reduced:
         Mydblog:
           TIME       1454274407.96752
           VALUE      off
       State:
         Mydblog:
           TIME       1454274407.96752
           VALUE      63
       Timedon:
         Mydblog:
           TIME       1454274407.96752
           VALUE      off
   Readings:
     2016-01-31 22:06:41   CommandAccepted yes
     2016-01-30 10:50:25   R-HM_302FC9_Sw_01-lgActionTypeDim toggelDim
     2016-01-30 10:50:25   R-HM_302FC9_Sw_01-lgOnLevel 100 %
     2016-01-30 10:50:25   R-HM_302FC9_Sw_01-shActionTypeDim jmpToTarget
     2016-01-30 22:57:21   R-HM_302FC9_Sw_01-shOnLevel oldLevel
     2016-01-30 10:37:32   R-logicCombination or
     2016-01-30 10:37:32   R-powerUpAction off
     2016-01-30 11:13:27   R-self01-lgActionTypeDim downDim
     2016-01-30 11:13:27   R-self01-lgOnLevel 100 %
     2016-01-30 11:13:27   R-self01-shActionTypeDim jmpToTarget
     2016-01-30 11:15:42   R-self01-shOnLevel oldLevel
     2016-01-30 11:13:29   R-self02-lgActionTypeDim upDim
     2016-01-30 11:13:29   R-self02-lgOnLevel 100 %
     2016-01-30 11:13:29   R-self02-shActionTypeDim jmpToTarget
     2016-01-30 11:15:44   R-self02-shOnLevel oldLevel
     2016-01-31 15:54:03   RegL_01.         00:00
     2016-01-31 15:54:18   RegL_03.HM_302FC9_Sw_01  01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:14 0C:52 0D:63 0E:20 0F:00 10:14 11:C9 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 26:00 27:14 28:52 29:63 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:26 8B:14 8C:52 8D:63 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 A6:20 A7:14 A8:52 A9:63 00:00
     2016-01-31 15:54:20   RegL_03.self01   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:64 0E:20 0F:00 10:14 11:C9 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 26:00 27:14 28:52 29:63 81:00 82:00 83:00 84:32 85:64 86:00 87:0A 88:00 89:FF 8A:A5 8B:44 8C:54 8D:64 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 A6:20 A7:14 A8:52 A9:63 00:00
     2016-01-31 15:54:22   RegL_03.self02   01:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:12 0C:22 0D:23 0E:20 0F:00 10:14 11:C9 12:0A 13:05 14:05 15:00 16:C8 17:0A 18:0A 19:04 1A:04 26:00 27:14 28:52 29:63 81:00 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:24 8B:12 8C:22 8D:23 8E:20 8F:00 90:14 91:C8 92:0A 93:05 94:05 95:00 96:C8 97:0A 98:0A 99:04 9A:04 A6:20 A7:14 A8:52 A9:63 00:00
     2016-01-31 22:06:47   deviceMsg       63 (to HMLAN1)
     2016-01-31 22:06:47   dim             stop:63
     2016-01-31 22:06:47   level           63
     2016-01-31 22:06:47   overheat        off
     2016-01-31 22:06:47   overload        off
     2016-01-31 22:06:47   pct             63
     2016-01-31 15:54:09   peerList        HM_302FC9_Sw_01,self01,self02,
     2016-01-31 22:06:47   phyLevel        63
     2016-01-31 22:06:47   recentStateType info
     2016-01-31 22:06:47   reduced         off
     2016-01-31 22:06:47   state           63
     2016-01-31 22:06:47   timedOn         off
   Helper:
     dlvlCmd    ++A0112865073B7C3E02017E0320FFFF
     peerIDsRaw ,3B7C3E01,3B7C3E02,302FC901,00000000
     Dir:
       cur        stop
       rct        down
     Expert:
       def        1
       det        0
       raw        1
       tpl        0
     Role:
       chn        1
     Shadowreg:
     Vdim:
       idPhy      3B7C3E01
       idV2       3B7C3E02
       idV3       3B7C3E03
Attributes:
   model      HM-LC-Dim1TPBU-FM
   peerIDs    00000000,302FC901,3B7C3E01,3B7C3E02,
   userattr   Lichter Lichter_map structexclude
   webCmd     statusRequest:toggle:on:off:up:down


Die Lampe habe ich hierbei auf 63pct gesetzt, so dass man das auch in dem List wiederfinden kann.

attr vom Channel liefert:
wz_licht_dimmer_Sw: unknown attribute ?, choose one of verbose room group comment alias eventMap userReadings do_not_notify showtime rawToReadable unit expert param actAutoTry aesCommReq ignore dummy IODev IOList IOgrp hmProtocolEvents rssiLog actCycle hmKey hmKey2 hmKey3 serialNr firmware .stc .devInfo actStatus autoReadReg burstAccess msgRepeat hmProtocolEvents aesKey repPeers peerIDs tempListTmpl levelRange levelMap event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat model subType DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle fp_Villa fp_castle fp_home icon sortby webCmd widgetOverride Lichter Lichter_map structexclude userattr

rapster

ZitatIch bin mir zu 99% sicher, dass ich gestern genau den gleichen Befehl ("attr wz_licht_dimmer_Sw Lichter_map pct:^[1-9][0-9]{0,2}:on pct:^0$:off") probiert hatte, weil ich in gerade aus der gleichen Text-Datei raus kopiert habe. Jetzt klappt es aber.
Zwischen gestern und heute lagen ein paar Neustarts des Servers, aber ich habe keine Ahnung, warum es jetzt geht.

Und wenn du das Attr jetzt am Channel setzt funktioniert es?

ChrisK

Zitat von: rapster am 01 Februar 2016, 06:12:55
Und wenn du das Attr jetzt am Channel setzt funktioniert es?
Yepp. Deine erste Lösung funktioniert also, aber keine Ahnung, warum es nicht auf Anhieb geklappt hat.