From c049a67e7c4449f21962f87b8a23f0b3230d780c Mon Sep 17 00:00:00 2001 From: zap <> Date: Thu, 6 Jan 2022 17:27:06 +0000 Subject: [PATCH] HMCCU: Added auto detect for some devices git-svn-id: https://svn.fhem.de/fhem/trunk@25429 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/88_HMCCU.pm | 8 +++++--- fhem/FHEM/88_HMCCUCHN.pm | 27 ++++++++++++++++++--------- fhem/FHEM/88_HMCCUDEV.pm | 2 +- fhem/FHEM/88_HMCCURPCPROC.pm | 2 +- fhem/FHEM/HMCCUConf.pm | 21 ++++++++++++++++++++- 5 files changed, 45 insertions(+), 15 deletions(-) diff --git a/fhem/FHEM/88_HMCCU.pm b/fhem/FHEM/88_HMCCU.pm index d8b648ae8..ad3d5701b 100755 --- a/fhem/FHEM/88_HMCCU.pm +++ b/fhem/FHEM/88_HMCCU.pm @@ -57,7 +57,7 @@ my %HMCCU_CUST_CHN_DEFAULTS; my %HMCCU_CUST_DEV_DEFAULTS; # HMCCU version -my $HMCCU_VERSION = '5.0 220021858'; +my $HMCCU_VERSION = '5.0 220061807'; # Timeout for CCU requests (seconds) my $HMCCU_TIMEOUT_REQUEST = 4; @@ -2413,7 +2413,7 @@ sub HMCCU_GetReadingName ($$$$$;$$$) push @rnlist, $newReadings{$d}; } - # Build list of reading name rules + # Build list of reading name rul my @srl = (); my $crn = AttrVal ($name, 'ccureadingname', ''); push @srl, split(';', $crn) if ($crn ne ''); @@ -4476,7 +4476,7 @@ sub HMCCU_GetEnumValues ($$$;$) $i--; my $j = $i; my @valList = split(',',$paramDef->{VALUE_LIST}); - my %valIndex = map { $i++; $_ => $i if ($_ ne '') } @valList; # Consider blanks in value list + my %valIndex = map { $i++; $_ ne '' ? ($_ => $i) : () } @valList; # Consider blanks in value list if (defined($value)) { if ($value eq '#') { # Return list of Constant:Value pairs @@ -8970,6 +8970,7 @@ sub HMCCU_HMCommandNB ($$$) my $ccureqtimeout = AttrVal ($ioHash->{NAME}, 'ccuReqTimeout', $HMCCU_TIMEOUT_REQUEST); my $url = HMCCU_BuildURL ($ioHash, 'rega'); + HMCCU_Trace ($ioHash, 2, "Executing command $cmd non blocking"); HMCCU_Trace ($clHash, 2, "URL=$url"); my $param = { url => $url, timeout => $ccureqtimeout, data => $cmd, method => "POST", @@ -9062,6 +9063,7 @@ sub HMCCU_HMScriptExt ($$;$$$) my $url = HMCCU_BuildURL ($hash, 'rega'); if (defined($cbFunc)) { # Non blocking + HMCCU_Trace ($hash, 2, "Executing $hmscript non blocking"); my $param = { url => $url, timeout => $ccureqtimeout, data => $code, method => "POST", callback => \&HMCCU_HMScriptCB, cbFunc => $cbFunc, devhash => $hash, ioHash => $ioHash }; if (defined($cbParam)) { diff --git a/fhem/FHEM/88_HMCCUCHN.pm b/fhem/FHEM/88_HMCCUCHN.pm index 11d71ef4a..047e528d1 100644 --- a/fhem/FHEM/88_HMCCUCHN.pm +++ b/fhem/FHEM/88_HMCCUCHN.pm @@ -30,7 +30,7 @@ sub HMCCUCHN_Set ($@); sub HMCCUCHN_Get ($@); sub HMCCUCHN_Attr ($@); -my $HMCCUCHN_VERSION = '5.0 220021858'; +my $HMCCUCHN_VERSION = '5.0 220061807'; ###################################################################### # Initialize module @@ -532,7 +532,7 @@ sub HMCCUCHN_Get ($@) and all internally stored device parameter values are deleted.
  • set <name> close
    - [blind] Set level of a shutter or blind to 0%. + [blind,door] Set level of a shutter or blind to 0%.

  • set <name> color <color-name>
    [light] Set color of LED light. @@ -609,7 +609,7 @@ sub HMCCUCHN_Get ($@) ON_TIME.

  • set <name> open
    - [blind] Set level of a shutter or blind to 100%. + [blind,door] Set level of a shutter or blind to 100%.

  • set <name> pct <value> [<ontime> [<ramptime>]]
    [dimmer,blind] Set datapoint LEVEL of a channel to the specified value. Optionally a ontime @@ -624,12 +624,18 @@ sub HMCCUCHN_Get ($@)
  • set <name> pctSlats <value>
    [blind] Like command 'set pct', but changes the level of slats (if available).

  • -
  • set <name> readingFilter <datapoint-list>
    - Set attribute ccureadingfilter by selecting a list of datapoints. Parameter datapoint-list - is a comma seperated list of datapoints. -

  • +
  • set <name> press
    + [key] Submit a short key press. +

  • +
  • set <name> pressLong
    + [key] Submit a long key press. +

  • +
  • set <name> readingFilter <datapoint-list>
    + Set attribute ccureadingfilter by selecting a list of datapoints. Parameter datapoint-list + is a comma seperated list of datapoints. +

  • set <name> stop
    - [blind] Set datapoint STOP of a channel to true. This command is only available, if the + [blind,door] Set datapoint STOP of a channel to true. This command is only available, if the channel contains a datapoint STOP.

  • set <name> toggle
    @@ -651,7 +657,10 @@ sub HMCCUCHN_Get ($@) must be a valid datapoint name. If type is not specified, it's taken from parameter set definition. The default type is STRING. Valid types are STRING, BOOL, INTEGER, FLOAT, DOUBLE. -
  • +
    +
  • set <name> ventilate
    + [garage door] Set door position to ventilation. +

  • diff --git a/fhem/FHEM/88_HMCCUDEV.pm b/fhem/FHEM/88_HMCCUDEV.pm index cefbf4f35..312f26e77 100644 --- a/fhem/FHEM/88_HMCCUDEV.pm +++ b/fhem/FHEM/88_HMCCUDEV.pm @@ -31,7 +31,7 @@ sub HMCCUDEV_Set ($@); sub HMCCUDEV_Get ($@); sub HMCCUDEV_Attr ($@); -my $HMCCUDEV_VERSION = '5.0 220021858'; +my $HMCCUDEV_VERSION = '5.0 220061807'; ###################################################################### # Initialize module diff --git a/fhem/FHEM/88_HMCCURPCPROC.pm b/fhem/FHEM/88_HMCCURPCPROC.pm index b6df966a7..7bed71dc7 100755 --- a/fhem/FHEM/88_HMCCURPCPROC.pm +++ b/fhem/FHEM/88_HMCCURPCPROC.pm @@ -39,7 +39,7 @@ require "$attr{global}{modpath}/FHEM/88_HMCCU.pm"; ###################################################################### # HMCCURPC version -my $HMCCURPCPROC_VERSION = '5.0 220021858'; +my $HMCCURPCPROC_VERSION = '5.0 220061807'; # Maximum number of events processed per call of Read() my $HMCCURPCPROC_MAX_EVENTS = 100; diff --git a/fhem/FHEM/HMCCUConf.pm b/fhem/FHEM/HMCCUConf.pm index c35e50ab8..07860fd85 100644 --- a/fhem/FHEM/HMCCUConf.pm +++ b/fhem/FHEM/HMCCUConf.pm @@ -112,9 +112,15 @@ $HMCCU_CONFIG_VERSION = '5.0'; 'DOOR_LOCK_STATE_TRANSMITTER' => { F => 3, S => 'LOCK_STATE', C => 'LOCK_TARGET_LEVEL', V => 'open:2,unlocked:1,locked:0' }, + 'DOOR_RECEIVER' => { + F => 3, S => 'DOOR_STATE', C => 'DOOR_COMMAND', V => 'open:1,stop:2,close:3,ventilate:4' + }, 'ENERGIE_METER_TRANSMITTER' => { F => 3, S => 'CURRENT', C => '', V => '', P => 1 }, + 'HB_GENERIC_DIST' => { + F => 3, S => 'DISTANCE', C => '', V => '', P => 1 + }, 'HEATING_CLIMATECONTROL_TRANSCEIVER' => { F => 3, S => 'ACTUAL_TEMPERATURE', C => 'SET_POINT_TEMPERATURE', V => 'on:30.5,off:4.5', P => 2 }, @@ -258,6 +264,8 @@ $HMCCU_CONFIG_VERSION = '5.0'; '^(C#\.)?LEVEL$:+pct,+level;(C#\.)?COLOR$:+color', 'DIMMER_WEEK_PROFILE' => '^(C#\.)?WEEK_PROGRAM_CHANNEL_LOCKS$:+progMode', + 'HB_GENERIC_DIST' => + '^(C#\.)?BATTERY_VOLTAGE$:voltage', 'HEATING_CLIMATECONTROL_TRANSCEIVER' => '^(C#\.)?ACTUAL_TEMPERATURE$:+measured-temp;'. '^(C#\.)?HUMIDITY$:+humidity;'. @@ -417,6 +425,12 @@ $HMCCU_CONFIG_VERSION = '5.0'; 'unlock' => 'V:LOCK_TARGET_LEVEL:1', 'lock' => 'V:LOCK_TARGET_LEVEL:0' }, + 'DOOR_RECEIVER' => { + 'open' => 'V:DOOR_COMMAND:1', + 'stop' => 'V:DOOR_COMMAND:2', + 'close' => 'V:DOOR_COMMAND:3', + 'ventilate' => 'V:DOOR_COMMAND:4' + }, 'HEATING_CLIMATECONTROL_TRANSCEIVER' => { 'desired-temp' => 'V:SET_POINT_TEMPERATURE:?temperature', 'auto' => 'V:CONTROL_MODE:0', @@ -440,7 +454,8 @@ $HMCCU_CONFIG_VERSION = '5.0'; 'KEY' => { 'on' => 'V:PRESS_SHORT:1', 'off' => 'V:PRESS_SHORT:1', - 'press' => 'V:PRESS_SHORT:1' + 'press' => 'V:PRESS_SHORT:1', + 'pressLong' => 'V:PRESS_LONG:1' }, 'KEYMATIC' => { 'open' => 'V:OPEN:true', @@ -562,6 +577,10 @@ $HMCCU_CONFIG_VERSION = '5.0'; 'cmdIcon' => 'open:fts_door_open unlock:secur_open lock:secur_locked', 'webCmd' => 'lock:unlock:open' }, + 'DOOR_RECEIVER' => { + 'cmdIcon' => 'open:fts_garage_door_up stop:fts_garage_door_manual close:fts_garage_door_down ventilate:fts_garage_door_80', + 'webCmd' => 'open:close:stop:ventilate' + }, 'JALOUSIE' => { 'substexcl' => 'pct', 'cmdIcon' => 'open:fts_shutter_up stop:fts_shutter_manual close:fts_shutter_down',