mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-15 22:26:04 +00:00
10_KNX.pm: Fixed dpt18, fixed offset-addition in decode (was "-" instead of "+"), fixed issue with slider
git-svn-id: https://svn.fhem.de/fhem/trunk@16825 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
c392f21c9b
commit
478ffa0a60
@ -22,6 +22,7 @@
|
||||
# ABU 20180605 Corrected dpt18
|
||||
# ABU 20180605 Added example for autogenerated devices
|
||||
# ABU 20180605 Added workaround for STATE
|
||||
# ABU 20180606 Fixed dpt18, fixed offset-addition in decode (was "-" instead of "+"), fixed issue with slider
|
||||
|
||||
package main;
|
||||
|
||||
@ -31,7 +32,7 @@ use Encode;
|
||||
use SetExtensions;
|
||||
|
||||
#set to 1 for debug
|
||||
my $debug = 0;
|
||||
my $debug = 1;
|
||||
|
||||
#string constant for autocreate
|
||||
my $modelErr = "MODEL_NOT_DEFINED";
|
||||
@ -199,7 +200,7 @@ my %dpttypes = (
|
||||
"dpt17.001" => {CODE=>"dpt5", UNIT=>"", FACTOR=>1, OFFSET=>0, PATTERN=>qr/[+-]?\d{1,3}/i, MIN=>0, MAX=>63},
|
||||
|
||||
# Scene, 1-64
|
||||
"dpt18.001" => {CODE=>"dpt5", UNIT=>"", FACTOR=>1, OFFSET=>-1, PATTERN=>qr/[+-]?\d{1,3}/i, MIN=>1, MAX=>64},
|
||||
"dpt18.001" => {CODE=>"dpt5", UNIT=>"", FACTOR=>1, OFFSET=>1, PATTERN=>qr/[+-]?\d{1,3}/i, MIN=>1, MAX=>64},
|
||||
|
||||
#date and time
|
||||
"dpt19" => {CODE=>"dpt19", UNIT=>"", FACTOR=>undef, OFFSET=>undef, PATTERN=>qr/(((3[01]|[0-2]?[0-9]).(1[0-2]|0?[0-9]).(19[0-9][0-9]|2[01][0-9][0-9]))_((2[0-4]|[0?1][0-9]):(60|[0?1-5]?[0-9]):(60|[0?1-5]?[0-9])))|(now)/i, MIN=>undef, MAX=>undef},
|
||||
@ -508,7 +509,9 @@ KNX_Define($$) {
|
||||
{
|
||||
my $min = $dptDetails->{MIN};
|
||||
my $max = $dptDetails->{MAX};
|
||||
$setlist = ":slider," . $min . "," . int(($max-$min)/100) . "," . $max;
|
||||
my $interval = int(($max-$min)/100);
|
||||
$interval = 1 if ($interval == 0);
|
||||
$setlist = ":slider," . $min . "," . $interval . "," . $max;
|
||||
}
|
||||
#on/off/...
|
||||
elsif (defined ($dptDetails->{MIN}))
|
||||
@ -1822,7 +1825,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = 0 - $state if (not ($numval & 8));
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1834,7 +1837,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1847,7 +1850,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1859,7 +1862,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1872,7 +1875,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1889,7 +1892,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$numval = (1 << $exp) * 0.01 * $mant;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.2f","$numval");
|
||||
@ -1924,7 +1927,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1937,7 +1940,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$state = $numval;
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.0f", $state);
|
||||
@ -1948,7 +1951,7 @@ KNX_decodeByDpt ($$$) {
|
||||
$numval = unpack "f", pack "L", hex ($value);
|
||||
|
||||
#correct value
|
||||
$state -= $offset if (defined ($offset));
|
||||
$state += $offset if (defined ($offset));
|
||||
$state *= $factor if (defined ($factor));
|
||||
|
||||
$state = sprintf ("%.3f","$numval");
|
||||
|
Loading…
x
Reference in New Issue
Block a user