mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-01 20:20:10 +00:00
10_KNX.pm: minor additions to cmdref & some cleanup (Forum Thread #122582)
git-svn-id: https://svn.fhem.de/fhem/trunk@26003 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
de75d3f6a6
commit
9106337d77
@ -78,6 +78,7 @@
|
|||||||
# changed unit encoding to UTF8 eg: dpt9.030 from: μg/m³ to: µg/m³
|
# changed unit encoding to UTF8 eg: dpt9.030 from: μg/m³ to: µg/m³
|
||||||
# MH 20220403 allow 'nosuffix' as only option in define
|
# MH 20220403 allow 'nosuffix' as only option in define
|
||||||
# minor corrections to cmdref
|
# minor corrections to cmdref
|
||||||
|
# MH 20220429 minor additions to cmdref & some cleanup
|
||||||
|
|
||||||
|
|
||||||
package FHEM::KNX; ## no critic 'package'
|
package FHEM::KNX; ## no critic 'package'
|
||||||
@ -87,16 +88,15 @@ use warnings;
|
|||||||
use Encode qw(encode decode);
|
use Encode qw(encode decode);
|
||||||
use Time::HiRes qw(gettimeofday);
|
use Time::HiRes qw(gettimeofday);
|
||||||
use Scalar::Util qw(looks_like_number);
|
use Scalar::Util qw(looks_like_number);
|
||||||
#use SetExtensions; # not yet!
|
|
||||||
use GPUtils qw(GP_Import GP_Export); # Package Helper Fn
|
use GPUtils qw(GP_Import GP_Export); # Package Helper Fn
|
||||||
|
|
||||||
### perlcritic parameters
|
### perlcritic parameters
|
||||||
# these ones are NOT used! (constants,Policy::Modules::RequireFilenameMatchesPackage,Modules::RequireVersionVar,NamingConventions::Capitalization)
|
# these ones are NOT used! (constants,Policy::Modules::RequireFilenameMatchesPackage,Modules::RequireVersionVar,NamingConventions::Capitalization)
|
||||||
|
# these ones are NOT used! (ControlStructures::ProhibitCascadingIfElse)
|
||||||
### the following percritic items will be ignored global ###
|
### the following percritic items will be ignored global ###
|
||||||
## no critic (ValuesAndExpressions::RequireNumberSeparators,ValuesAndExpressions::ProhibitMagicNumbers)
|
## no critic (ValuesAndExpressions::RequireNumberSeparators,ValuesAndExpressions::ProhibitMagicNumbers)
|
||||||
## no critic (RegularExpressions::RequireDotMatchAnything,RegularExpressions::RequireLineBoundaryMatching)
|
## no critic (RegularExpressions::RequireDotMatchAnything,RegularExpressions::RequireLineBoundaryMatching)
|
||||||
## no critic (ControlStructures::ProhibitPostfixControls)
|
## no critic (ControlStructures::ProhibitPostfixControls)
|
||||||
### no critic (ControlStructures::ProhibitCascadingIfElse)
|
|
||||||
## no critic (Documentation::RequirePodSections)
|
## no critic (Documentation::RequirePodSections)
|
||||||
|
|
||||||
### import FHEM functions / global vars
|
### import FHEM functions / global vars
|
||||||
@ -161,7 +161,6 @@ my $PAT_DTSEP = qr/(?:_)/ix; # date/time separator
|
|||||||
my $PAT_DATE = qr/(3[01]|[0-2]?[0-9])\.(1[0-2]|0?[0-9])\.((?:19|20)[0-9][0-9])/ix;
|
my $PAT_DATE = qr/(3[01]|[0-2]?[0-9])\.(1[0-2]|0?[0-9])\.((?:19|20)[0-9][0-9])/ix;
|
||||||
#pattern for time
|
#pattern for time
|
||||||
my $PAT_TIME = qr/(2[0-4]|[01]{0,1}[0-9]):([0-5]{0,1}[0-9]):([0-5]{0,1}[0-9])/ix;
|
my $PAT_TIME = qr/(2[0-4]|[01]{0,1}[0-9]):([0-5]{0,1}[0-9]):([0-5]{0,1}[0-9])/ix;
|
||||||
#my $PAT_TIME = qr/(2[0-4]|[0?1][0-9]):([0?1-5][0-9]):([0?1-5][0-9])/ix;
|
|
||||||
my $PAT_DPT16_CLR = qr/>CLR</ix;
|
my $PAT_DPT16_CLR = qr/>CLR</ix;
|
||||||
|
|
||||||
#CODE is the identifier for the en- and decode algos. See encode and decode functions
|
#CODE is the identifier for the en- and decode algos. See encode and decode functions
|
||||||
@ -394,7 +393,6 @@ sub KNX_Define {
|
|||||||
foreach my $tuls (@tulList) {
|
foreach my $tuls (@tulList) {
|
||||||
if ($tuls eq $iodevCandidate) {
|
if ($tuls eq $iodevCandidate) {
|
||||||
if ((IsDisabled($iodevCandidate) == 1) || IsDummy($iodevCandidate)) { # IO - device is disabled or dummy
|
if ((IsDisabled($iodevCandidate) == 1) || IsDummy($iodevCandidate)) { # IO - device is disabled or dummy
|
||||||
# delete $attr{$name}{IODev};
|
|
||||||
Log3 ($name, 3, "KNX_define ($name): IODev $iodevCandidate not used - because IODev is disabled or dummy");
|
Log3 ($name, 3, "KNX_define ($name): IODev $iodevCandidate not used - because IODev is disabled or dummy");
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
@ -652,7 +650,7 @@ sub KNX_Get {
|
|||||||
|
|
||||||
IOWrite($hash, $TULid, 'r' . $groupc);
|
IOWrite($hash, $TULid, 'r' . $groupc);
|
||||||
|
|
||||||
FW_directNotify("FILTER=" . $FW_detail, '#FHEMWEB:' . $FW_wname, 'FW_errmsg(" current value for ' . $name . ' - ' . $group . ' requested",5000)', qq{});
|
FW_directNotify("FILTER=" . $FW_detail, '#FHEMWEB:' . $FW_wname, 'FW_errmsg(" current value for ' . $name . ' - ' . $group . ' requested",5000)', qq{}) if (defined($FW_wname));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1481,7 +1479,6 @@ sub KNX_decodeByDpt {
|
|||||||
|
|
||||||
if (ref($dpttypes{$code}->{DEC}) eq 'CODE') {
|
if (ref($dpttypes{$code}->{DEC}) eq 'CODE') {
|
||||||
$state = $dpttypes{$code}->{DEC}->($value, $model, $hash);
|
$state = $dpttypes{$code}->{DEC}->($value, $model, $hash);
|
||||||
# $state = $dpttypes{$code}->{DEC}->($value, $model);
|
|
||||||
my $unit = $dpttypes{$model}{UNIT};
|
my $unit = $dpttypes{$model}{UNIT};
|
||||||
$state = $state . q{ } . $unit if (defined ($unit) && ($unit ne q{})); #append unit, if supplied
|
$state = $state . q{ } . $unit if (defined ($unit) && ($unit ne q{})); #append unit, if supplied
|
||||||
|
|
||||||
@ -1676,9 +1673,7 @@ sub enc_dpt232 { #RGB-Code
|
|||||||
### decode sub functions ###
|
### decode sub functions ###
|
||||||
sub dec_dpt1 { #Binary value
|
sub dec_dpt1 { #Binary value
|
||||||
my $numval = hex (shift);
|
my $numval = hex (shift);
|
||||||
# my $value = shift;
|
|
||||||
my $model = shift;
|
my $model = shift;
|
||||||
# my $numval = hex ($value);
|
|
||||||
$numval = ($numval & 0x01);
|
$numval = ($numval & 0x01);
|
||||||
my $state = $dpttypes{"$model"}{MIN}; # default
|
my $state = $dpttypes{"$model"}{MIN}; # default
|
||||||
$state = $dpttypes{"$model"}{MAX} if ($numval == 1);
|
$state = $dpttypes{"$model"}{MAX} if ($numval == 1);
|
||||||
@ -1894,7 +1889,6 @@ sub main::KNX_scan {
|
|||||||
### issue all get cmd's - each one delayed by InternalTimer
|
### issue all get cmd's - each one delayed by InternalTimer
|
||||||
sub doKNX_scan {
|
sub doKNX_scan {
|
||||||
my ($devgad, $arr) = split(/,/x,shift,2);
|
my ($devgad, $arr) = split(/,/x,shift,2);
|
||||||
# Log3 undef,1, "doKNX_scan: get $devgad";
|
|
||||||
main::fhem("get $devgad");
|
main::fhem("get $devgad");
|
||||||
return if (length($arr) <= 1);
|
return if (length($arr) <= 1);
|
||||||
return InternalTimer(gettimeofday() + 0.2,\&doKNX_scan,$arr); # does not support array-> use string...
|
return InternalTimer(gettimeofday() + 0.2,\&doKNX_scan,$arr); # does not support array-> use string...
|
||||||
@ -2228,11 +2222,14 @@ The result of the "get" cmd will be stored in the respective readings - same as
|
|||||||
<br/>Useful after a fhem-start to syncronize the readings with the status of the KNX-device.
|
<br/>Useful after a fhem-start to syncronize the readings with the status of the KNX-device.
|
||||||
<br/>The "get" cmds are scheduled asynchronous, with a delay of 200ms between each get. (avoid overloading KNX-bus)
|
<br/>The "get" cmds are scheduled asynchronous, with a delay of 200ms between each get. (avoid overloading KNX-bus)
|
||||||
Returns number of "get's" issued.<br/>
|
Returns number of "get's" issued.<br/>
|
||||||
<code>KNX_scan - scan all possible devices</code><br/>
|
<code>KNX_scan() - scan all possible devices</code><br/>
|
||||||
<code>KNX_scan('dev-A') - scan device-A only</code><br/>
|
<code>KNX_scan('dev-A') - scan device-A only</code><br/>
|
||||||
<code>KNX_scan('dev-A,dev-B,dev-C') - scan device-A, device-B, device-C</code><br/>
|
<code>KNX_scan('dev-A,dev-B,dev-C') - scan device-A, device-B, device-C</code><br/>
|
||||||
<code>KNX_scan('room=Kueche') - scan all KNX-devices in room Kueche</code><br/>
|
<code>KNX_scan('room=Kueche') - scan all KNX-devices in room Kueche</code><br/>
|
||||||
<code>{KNX_scan('device')} - syntax when used from FHEM-cmdline</code><br/>
|
<code>{KNX_scan('device')} - syntax when used from FHEM-cmdline</code><br/>
|
||||||
|
<br/>When using KNX_scan() or any 'set|get <device> ...' in a global:INITIALIZED notify, pls. ensure to have some delay in processing the cmd's by using <b>fhem sleep</b>.
|
||||||
|
<br/>Example: <code>defmod initialized_nf notify global:INITIALIZED sleep 2 quiet;; set KNX_date now;; set KNX_time now;; {KNX_scan()};;</code>
|
||||||
|
<br>This avoids sending requests while the KNX-Gateway has not finished its initial handshake-procedure with FHEM (the KNX-IO-device).
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user