diff --git a/FHEM/10_CUL_HM.pm b/FHEM/10_CUL_HM.pm index 3ddd79834..a4c2f23b4 100755 --- a/FHEM/10_CUL_HM.pm +++ b/FHEM/10_CUL_HM.pm @@ -812,8 +812,7 @@ sub CUL_HM_Attr(@) {################################# my $chn = substr(CUL_HM_hash2Id($hash),6,2); if ($md eq "HM-SEN-RD-O" && $chn eq "02"){ delete $hash->{helper}{param}; - my @param = split ",",$attrVal; - foreach (@param){ + foreach (split ",",$attrVal){ if ($_ eq "offAtPon"){$hash->{helper}{param}{offAtPon} = 1} elsif ($_ eq "onAtRain"){$hash->{helper}{param}{onAtRain} = 1} else {return "param $_ unknown, use offAtPon or onAtRain";} @@ -4032,6 +4031,7 @@ sub CUL_HM_parseCommon(@){##################################################### CUL_HM_rmOldRegs($chnName,$readCont); $chnhash->{READINGS}{".peerListRDate"}{VAL} = $chnhash->{READINGS}{".peerListRDate"}{TIME} = $mhp->{tmStr}; CUL_HM_cfgStateDelay($chnName);#schedule check when finished + Log3 $mhp->{devH},4,'peerlist finished. cmds pending:'.scalar(@{$mhp->{devH}->{cmdStack}}); } else{ CUL_HM_respPendToutProlong($mhp->{devH});#wasn't last - reschedule timer @@ -4091,9 +4091,11 @@ sub CUL_HM_parseCommon(@){##################################################### delete $mhp->{cHash}{helper}{shadowReg}{$regLNp}; #rm shadow # peerChannel name from/for user entry. CUL_HM_updtRegDisp($mhp->{cHash},$list,CUL_HM_peerChId($peer,$mhp->{devH}{DEF})); + Log3 $mhp->{devH},4,'reglist $regLN finished. cmds pending:'.scalar(@{$mhp->{devH}->{cmdStack}}); } else{ CUL_HM_respPendToutProlong($mhp->{devH});#wasn't last - reschedule timer + Log3 $mhp->{devH},4,'waiting for Reglist $regLN msgNo:'.$rspWait->{mNo}.'+, rec:'.hex($mhp->{mNo}); } } else{ @@ -12555,7 +12557,7 @@ sub CUL_HM_getIcon($) { ####################################################### prior to rewrite data to an entity it is necessary to pair the device with FHEM.
restore will not delete any peered channels, it will just add peer channels.
-
  • list (normal|hidden);
    +
  • list (normal|hidden);
    issue list command for the fiven entity normal or including the hidden parameter
  • listDevice
    @@ -12578,7 +12580,7 @@ sub CUL_HM_getIcon($) { #######################################################

  • - + Attributes
    • eventMap
    • @@ -12587,7 +12589,107 @@ sub CUL_HM_getIcon($) { #######################################################
    • dummy
    • showtime
    • readingFnAttributes
    • -
    • readingOnDead +
    • actAutoTry
      + actAutoTry 0_off,1_on
      + setting this option enables Action Detector to send a statusrequest in case of a device is going to be marked dead. + The attribut may be useful in case a device is being checked that does not send messages regularely - e.g. an ordinary switch. +
    • +
    • actCycleactCycle <[hhh:mm]|off>
      + Supports 'alive' or better 'not alive' detection for devices. [hhh:mm] is the maximum silent time for the device. + Upon no message received in this period an event will be raised "<device> is dead". + If the device sends again another notification is posted "<device> is alive".
      + This actiondetect will be autocreated for each device with build in cyclic status report.
      + Controlling entity is a pseudo device "ActionDetector" with HMId "000000".
      + Due to performance considerations the report latency is set to 600sec (10min). + It can be controlled by the attribute "actCycle" of "ActionDetector".
      + Once entered to the supervision the HM device has 2 attributes:
      +
        + actStatus: activity status of the device
        + actCycle: detection period [hhh:mm]
        +
      + The overall function can be viewed checking out the "ActionDetector" entity. The status of all entities is present in the READING section.
      + Note: This function can be enabled for devices with non-cyclic messages as well. It is up to the user to enter a reasonable cycletime. +
    • +
    • actStatus
      + readonly
      + This attribut is set by ActionDetector. It cannot be set manually +
    • +
    • aesCommReq
      + if set IO is forced to request AES signature before sending ACK to the device.
      + Defautls to 0
      +
    • +
    • aesKey
      + specifies which aes key is to be used if aesCommReq is active
      +
    • +
    • autoReadReg
      + '0' autoReadReg will be ignored.
      + '1' will execute a getConfig for the device automatically after each reboot of FHEM.
      + '2' like '1' plus execute after power_on.
      + '3' includes '2' plus updates on writes to the device
      + '4' includes '3' plus tries to request status if it seems to be missing
      + '5' checks reglist and peerlist. If reading seems incomplete getConfig will be scheduled
      + '8_stateOnly' will only update status information but not configuration + data like register and peer
      + Execution will be delayed in order to prevent congestion at startup. Therefore the update + of the readings and the display will be delayed depending on the size of the database.
      + Recommendations and constrains upon usage:
      +
        + usage on devices which only react to 'config' mode is not recommended since executen will + not start until config is triggered by the user
        + usage on devices which support wakeup-mode is usefull. But consider that execution is delayed + until the device "wakes up".
        +
      +
    • +
    • burstAccess
      + can be set for the device entity if the model allowes conditionalBurst. + The attribut will switch off burst operations (0_off) which causes less message load + on HMLAN and therefore reduces the chance of HMLAN overload.
      + Setting it on (1_auto) allowes shorter reaction time of the device. User does not + need to wait for the device to wake up.
      + Note that also the register burstRx needs to be set in the device.
    • +
    • expert <option1[[,option2],...]>
      + This attribut controls the visibility of the register readings. This attibute controls + the presentation of device parameter in readings.
      + Options are:
      +
        + defReg : default register
        + allReg : all register
        + rawReg : raw reading
        + templ : template assiciation
        + none : no register
        +
      + If expert is applied to the device it is used for assotiated channels if not overwritten by it.
      +
    • +
    • communication status copied to channel reading
      + on: device communication status not visible in channel entities
      + off: device communication status commState is visiblein channel entities
      +
    • +
    • firmware <FWversion>
      + Firmware version of the device. Should not be overwritten. +
    • +
    • hmKey <key>
      + AES key to be used +
    • +
    • hmKey2 <key>
      + AES key to be used +
    • +
    • hmKey3 <key>
      + AES key to be used +
    • +
    • hmProtocolEvents
      + parses and logs the device messages. This is performance consuming and may disturb the timing. Use with care.
      + Options:
      +
        + 0_off : no parsing - default
        + 1_dump : log all messages
        + 2_dumpFull : log with extended parsing
        + 3_dumpTrigger : log full and include trigger events
        +
      +
    • +
    • readOnly
      + 1: restricts commands to read od observ only. +
    • +
    • readingOnDead
      defines how readings shall be treated upon device is marked 'dead'.
      The attribute is applicable for devices only. It will modify the readings upon entering dead of the device. Upon leaving state 'dead' the selected readings will be set to 'notDead'. It is expected that useful values will be filled by the normally operating device.
      @@ -12609,81 +12711,10 @@ sub CUL_HM_getIcon($) { ####################################################### attr myDevice readingOnDead state,deviceMsg,CommandAccepted # upon entering dead state,deviceMsg and CommandAccepted of the device will be set to 'dead' if available.
    -
  • aesCommReq - if set IO is forced to request AES signature before sending ACK to the device.
    -
  • -
  • actAutoTry - actAutoTry 0_off,1_on
    - setting this option enables Action Detector to send a statusrequest in case of a device is going to be marked dead. - The attribut may be useful in case a device is being checked that does not send messages regularely - e.g. an ordinary switch. -
  • -
  • actCycle - actCycle <[hhh:mm]|off>
    - Supports 'alive' or better 'not alive' detection for devices. [hhh:mm] is the maximum silent time for the device. - Upon no message received in this period an event will be raised "<device> is dead". - If the device sends again another notification is posted "<device> is alive".
    - This actiondetect will be autocreated for each device with build in cyclic status report.
    - Controlling entity is a pseudo device "ActionDetector" with HMId "000000".
    - Due to performance considerations the report latency is set to 600sec (10min). - It can be controlled by the attribute "actCycle" of "ActionDetector".
    - Once entered to the supervision the HM device has 2 attributes:
    -
      - actStatus: activity status of the device
      - actCycle: detection period [hhh:mm]
      -
    - The overall function can be viewed checking out the "ActionDetector" entity. The status of all entities is present in the READING section.
    - Note: This function can be enabled for devices with non-cyclic messages as well. It is up to the user to enter a reasonable cycletime. -
  • -
  • autoReadReg
    - '0' autoReadReg will be ignored.
    - '1' will execute a getConfig for the device automatically after each reboot of FHEM.
    - '2' like '1' plus execute after power_on.
    - '3' includes '2' plus updates on writes to the device
    - '4' includes '3' plus tries to request status if it seems to be missing
    - '5' checks reglist and peerlist. If reading seems incomplete getConfig will be scheduled
    - '8_stateOnly' will only update status information but not configuration - data like register and peer
    - Execution will be delayed in order to prevent congestion at startup. Therefore the update - of the readings and the display will be delayed depending on the size of the database.
    - Recommendations and constrains upon usage:
    -
      - use this attribute on the device or channel 01. Do not use it separate on each channel - of a multi-channel device to avoid duplicate execution
      - usage on devices which only react to 'config' mode is not recommended since executen will - not start until config is triggered by the user
      - usage on devices which support wakeup-mode is usefull. But consider that execution is delayed - until the device "wakes up".
      -
    -
  • -
  • burstAccess
    - can be set for the device entity if the model allowes conditionalBurst. - The attribut will switch off burst operations (0_off) which causes less message load - on HMLAN and therefore reduces the chance of HMLAN overload.
    - Setting it on (1_auto) allowes shorter reaction time of the device. User does not - need to wait for the device to wake up.
    - Note that also the register burstRx needs to be set in the device.
  • -
  • expert
    - This attribut controls the visibility of the register readings. This attibute controls - the presentation of device parameter in the readings.
    - it is a binary coded number with following presets:
    -
      - 0_defReg : default register
      - 1_allReg : all register
      - 2_defReg+raw : default register and raw reading
      - 3_allReg+raw : all register and raw reading
      - 4_off : no register
      - 8_templ+default: templates and default register
      - 12_templOnly : templates only
      - 251_anything : anything available
      -
    - If expert is applied a device it is used for assotiated channels. - It can be overruled if expert attibute is also applied to the channel device.
    - Make sure to check out attribut showInternalValues in the global values as well. - extert takes benefit of the implementation. - Nevertheless - by definition - showInternalValues overrules expert. -
  • -
  • readOnly
    - restircts commands to read od observ only. +
  • rssiLog
    + can be given to devices, denied for channels. If switched '1' each RSSI entry will be + written to a reading. User may use this to log and generate a graph of RSSI level.
    + Due to amount of readings and events it is NOT RECOMMENDED to switch it on by default.
  • IOgrp
    can be given to devices and shall point to a virtual CCU. @@ -12703,36 +12734,34 @@ sub CUL_HM_getIcon($) { ####################################################### attr myDevice2 IOgrp vccu:prefIO1,prefIO2,none
  • -
  • levelRange
    - can be used with dimmer only. It defines the dimmable range to be used with this dimmer-channel. - It is meant to support e.g. LED light that starts at 10% and reaches maxbrightness at 40%. - levelrange will normalize the level to this range. I.e. set to 100% will physically set the +
  • levelRange <min,max>
    + It defines the usable dimm-range. + Can be used for e.g. LED light starting at 10% and reach maxbrightness at 40%. + levelRange will normalize the level to this range. I.e. set to 100% will physically set the dimmer to 40%, 1% will set to 10% physically. 0% still switches physially off.
    - Impacted are commands on, up, down, toggle and pct. Not effected is the off command - which still set physically 0%.
    - To be considered:
    - dimmer level set by peers and buttons is not impacted. Those are controlled by device register
    - Readings level may go to negative or above 100%. This simply results from the calculation and reflects - physical level is above or below the given range.
    - In case of virtual dimmer channels available present the attribut needs to be set for - each channel
    - User should be careful to set min level other then '0'
    + Applies to all level commands as on, up, down, toggle and pct. off and level 0 still sets to physically 0%.
    + LevelRage does not impact register controlled level and direct peering.
    + The attribut needs to be set for each virtual channel of a device.
    Example:
      - attr myChannel levelRange 0,40
      attr myChannel levelRange 10,80
  • -
  • modelForce, +
  • levelMap <=[:=[:...]]>
    + the level value valX will be replaced by keyX. Multiple values can be mapped. +
  • +
  • modelForce
    modelForce overwrites the model attribute. Doing that it converts the device and its channel to the new model.
    Reason for this attribute is an eQ3 bug as some devices are delivered with wrong Module IDs.
    ATTENTION: changing model id automatically starts reconfiguration of the device and its channels! channels may be deleted or incarnated
  • -
  • model, - subType
    - These attributes are set automatically after a successful pairing. - They are not supposed to be set by hand, and are necessary in order to - correctly interpret device messages or to be able to send them.
  • +
  • model
    + showes model. This is read only. +
  • +
  • subType
    + showes models subType. This is read only.
  • +
  • serialNr
    + device serial number. Should not be set manually
  • msgRepeat
    defines number of repetitions if a device doesn't answer in time.
    Devices which donly support config mode no repeat ist allowed.
    @@ -12741,6 +12770,8 @@ sub CUL_HM_getIcon($) { ####################################################### Repeat for burst devices will impact HMLAN transmission capacity.
  • param
    param defines model specific behavior or functions. See available parameter for details
  • +
  • peerIDs
    + will be filled automatically by getConfig and shows the direct peerings of the channel. Should not be changed by user.
  • rawToReadable
    Used to convert raw KFM100 values to readable data, based on measured values. E.g. fill slowly your container, while monitoring the @@ -12754,22 +12785,17 @@ sub CUL_HM_getIcon($) { ####################################################### Apply these values with: "attr KFM100 rawToReadable 10:0 50:20 79:40 270:100". fhem will do a linear interpolation for values between the bounderies.
  • -
  • rssiLog
    - can be given to devices, denied for channels. If switched '1' each RSSI entry will be - written to a reading. User may use this to log and generate a graph of RSSI level.
    - Due to amount of readings and events it is NOT RECOMMENDED to switch it on by default. -
  • tempListTmpl
    Sets the default template for a heating controller. If not given the detault template is taken from file tempList.cfg using the enitity name as template name (e.g. ./tempLict.cfg:RT1_Clima
    To avoid template usage set this attribut to '0'.
    Format is <file>:<templatename>. lt
  • -
  • unit
    +
  • unit
    set the reported unit by the KFM100 if rawToReadable is active. E.g.
    attr KFM100 unit Liter
  • -
  • cyclicMsgOffset
    +
  • cyclicMsgOffset
    when calculating the timestamp for sending the next cyclic message (e.g. weather or valve data) then the value of this attribute
    in milliseconds is added to the result. So adjusting this might fix problems for example when weather messages of virtual devices are not received reliably
  • @@ -12804,7 +12830,7 @@ sub CUL_HM_getIcon($) { ####################################################### This results eventually in state on-till which allowes better icon handling.

    - Generated events: + Generated events:
    • general
      recentStateType:[ack|info] # cannot be used ti trigger notifies
      @@ -13983,7 +14009,7 @@ sub CUL_HM_getIcon($) { ####################################################### vor dem zurückschreiben der Daten eines Eintrags muss das Gerät mit FHEM verbunden werden.
      "restore" löscht keine verknüpften Kanäle, es fügt nur neue Peers hinzu.
    • -
    • list (normal|hidden);
      +
    • list (normal|hidden);
      triggern des list commandos fuer die entity normal oder inclusive der verborgenen parameter
    • listDevice
      @@ -14008,7 +14034,7 @@ sub CUL_HM_getIcon($) { #######################################################
    • dummy
    • showtime
    • readingFnAttributes
    • -
    • readingOnDead +
    • readingOnDead
      definiert wie readings behandelt werden sollten wenn das Device als 'dead' mariert wird.
      Das Attribut ist nur auf Devices anwendbar. Es ändert die Readings wenn das Device nach dead geht. Beim Verlasen des Zustandes 'dead' werden die ausgewählten Readings nach 'notDead' geändert. Es kann erwartet werden, dass sinnvolle Werte vom Device eingetragen werden.
      Upon leaving state 'dead' the selected readings will be set to 'notDead'. It is expected that useful values will be filled by the normally operating device.
      @@ -14030,15 +14056,15 @@ sub CUL_HM_getIcon($) { ####################################################### attr myDevice readingOnDead state,deviceMsg,CommandAccepted # beim Eintreten in dead state,deviceMsg und CommandAccepted des Device werden, wenn verfuegbar, auf 'dead' gesetzt.
    -
  • aesCommReq
    +
  • aesCommReq
    wenn gesetzt wird IO AES signature anfordern bevor ACK zum Device gesendet wird.
  • -
  • actAutoTry
    +
  • actAutoTry
    actAutoTry 0_off,1_on
    setzen erlaubt dem ActionDetector ein statusrequest zu senden falls das Device dead markiert werden soll. Das Attribut kann für Devices nützlich sein, welche sich nicht von selbst zyklisch melden.
  • -
  • actCycle +
  • actCycle
    actCycle <[hhh:mm]|off>
    Bietet eine 'alive' oder besser 'not alive' Erkennung für Geräte. [hhh:mm] ist die maximale Zeit ohne Nachricht eines Geräts. Wenn innerhalb dieser Zeit keine Nachricht empfangen wird so wird das Event"<device> is dead" generiert. Sendet das Gerät wieder so wird die Nachricht"<device> is alive" ausgegeben.
    @@ -14053,8 +14079,7 @@ sub CUL_HM_getIcon($) { ####################################################### Die gesamte Funktion kann über den "ActionDetector"-Eintrag überprüft werden. Der Status aller Instanzen liegt im READING-Bereich.
    Hinweis: Diese Funktion kann ebenfalls für Geräte ohne zyklische Übertragung aktiviert werden. Es obliegt dem Nutzer eine vernünftige Zeitspanne festzulegen.
  • - -
  • autoReadReg
    +
  • autoReadReg
    '0' autoReadReg wird ignorert.
    '1' wird automatisch in getConfig ausgeführt für das Device nach jedem reboot von FHEM.
    '2' wie '1' plus nach Power on.
    @@ -14070,7 +14095,7 @@ sub CUL_HM_getIcon($) { ####################################################### Das Setzen auf Level 5 wird für alle Devices und Typen empfohlen, auch wakeup Devices.
  • -
  • burstAccess
    +
  • burstAccess
    kann für eine Geräteinstanz gesetzt werden falls das Model bedingte Bursts erlaubt. Das Attribut deaktiviert den Burstbetrieb (0_off) was die Nachrichtenmenge des HMLAN reduziert und damit die Wahrscheinlichkeit einer Überlast von HMLAN verringert.
    @@ -14078,7 +14103,7 @@ sub CUL_HM_getIcon($) { ####################################################### bis das Gerät wach ist.
    Zu beachten ist, dass das Register "burstRx" im Gerät ebenfalls gesetzt werden muss.
  • -
  • expert
    +
  • expert
    Dieses Attribut steuert die Sichtbarkeit der Register Readngs. Damit wird die Darstellung der Geräteparameter kontrolliert.
    Es handdelt sich um einen binaer kodierten Wert mit folgenden Empfehlungen:
      @@ -14097,10 +14122,10 @@ sub CUL_HM_getIcon($) { ####################################################### "expert" macht sich diese Implementierung zu Nutze. Gleichwohl setzt "showInternalValues" - bei Definition - 'expert' außer Kraft . -
    • readOnly
      +
    • readOnly
      beschränkt kommandos auf Lesen und Beobachten.
    • -
    • IOgrp
      +
    • IOgrp
      kann an Devices vergeben werden und zeigt auf eine virtuelle VCCU. Das Setzen des Attributs führt zum Löschen des Attributs IODev da sich diese ausschliessen. Danach wird die VCCU @@ -14117,7 +14142,7 @@ sub CUL_HM_getIcon($) { ####################################################### attr myDevice2 IOgrp vccu:prefIO1,prefIO2,none
  • -
  • levelRange
    +
  • levelRange
    nur für Dimmer! Der Dimmbereich wird eingeschränkt. Es ist gedacht um z.B. LED Lichter unterstützen welche mit 10% beginnen und bei 40% bereits das Maximum haben. levelrange normalisiert den Bereich entsprechend. D.h. set 100 wird physikalisch den Dimmer auf 40%, @@ -14135,32 +14160,31 @@ sub CUL_HM_getIcon($) { ####################################################### attr myChannel levelRange 10,80
  • -
  • tempListTmpl
    +
  • tempListTmpl
    Setzt das Default für Heizungskontroller. Ist es nicht gesetzt wird der default filename genutzt und der name der entity als templatename. Z.B. ./tempList.cfg:RT_Clima
    Um das template nicht zu nutzen kann man es auf '0'setzen.
    Format ist <file>:<templatename>.
  • -
  • modelForce
    +
  • modelForce
    modelForce überschreibt das model attribut. Dabei wird das Device und seine Kanäle reconfguriert.
    Grund für dieses Attribut ist ein eQ3 bug bei welchen Devices mit falscher ID ausgeliefert werden. Das Attribut erlaubt dies zu ueberschreiben
    ACHTUNG: Durch das Eintragen eines anderen model werden die Entites modifiziert, ggf. neu angelegt oder gelöscht.
  • -
  • model, - subType
    - Diese Attribute werden bei erfolgreichem Pairing automatisch gesetzt. - Sie sollten nicht per Hand gesetzt werden und sind notwendig um Gerätenachrichten - korrekt interpretieren oder senden zu können.
  • -
  • param
    +
  • model
    + wird automatisch gesetzt.
  • +
  • subType
    + wird automatisch gesetzt.
  • +
  • param
    'param' definiert modelspezifische Verhalten oder Funktionen. Siehe "models" für Details.
  • -
  • msgRepeat
    +
  • msgRepeat
    Definiert die Nummer an Wiederholungen falls ein Gerät nicht rechtzeitig antwortet.
    Für Geräte die nur den "Config"-Modus unterstützen sind Wiederholungen nicht erlaubt.
    Bei Geräte mit wakeup-Modus wartet das Gerät bis zum nächsten Aufwachen. Eine längere Verzögerung sollte in diesem Fall angedacht werden.
    Wiederholen von Bursts hat Auswirkungen auf die HMLAN Übertragungskapazität.
  • -
  • rawToReadable
    +
  • rawToReadable
    Wird verwendet um Rohdaten von KFM100 in ein lesbares Fomrat zu bringen, basierend auf den gemessenen Werten. Z.B. langsames Füllen eines Tanks, während die Werte mit inform angezeigt werden. Man sieht: @@ -14173,11 +14197,11 @@ sub CUL_HM_getIcon($) { ####################################################### Anwenden dieser Werte: "attr KFM100 rawToReadable 10:0 50:20 79:40 270:100". FHEM für damit eine lineare Interpolation der Werte in den gegebenen Grenzen aus.
  • -
  • unit
    +
  • unit
    setzt die gemeldete Einheit des KFM100 falls 'rawToReadable' aktiviert ist. Z.B.
    attr KFM100 unit Liter
  • -
  • autoReadReg
    +
  • autoReadReg
    '0' autoReadReg wird ignoriert.
    '1' führt ein "getConfig" für ein Gerät automatisch nach jedem Neustart von FHEM aus.
    '2' verhält sich wie '1',zusätzlich nach jedem power_on.