mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
10_KNX.pm: a few fixes, (Forum #122582)
git-svn-id: https://svn.fhem.de/fhem/trunk@29084 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
4b203adc12
commit
a93311d507
@ -1,5 +1,8 @@
|
|||||||
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
|
||||||
# Do not insert empty lines here, update check depends on it
|
# Do not insert empty lines here, update check depends on it
|
||||||
|
- bugfix: 10_KNX: prevent set/get-cmd during fhem start
|
||||||
|
add sub dpts for dpt14, enfoce gadname rules
|
||||||
|
- bugfix: 00_KNXIO: fix error msg when mode S fails to open
|
||||||
- feature: 76_SolarForecast: new attribute flowGraphicShift,
|
- feature: 76_SolarForecast: new attribute flowGraphicShift,
|
||||||
Forum:https://forum.fhem.de/index.php?msg=1318597
|
Forum:https://forum.fhem.de/index.php?msg=1318597
|
||||||
- change: 93_DbRep: message data ignored change loglevel to 2, Forum:#138986
|
- change: 93_DbRep: message data ignored change loglevel to 2, Forum:#138986
|
||||||
|
@ -175,6 +175,10 @@
|
|||||||
# MH 20240425 remove Attr answerreading & conversion to putcmd (announced 5/2023)
|
# MH 20240425 remove Attr answerreading & conversion to putcmd (announced 5/2023)
|
||||||
# modify set cmd
|
# modify set cmd
|
||||||
# modified address converssion hex2Name()
|
# modified address converssion hex2Name()
|
||||||
|
# MH 20240819 add sub-dpts for dpt14, cmdref
|
||||||
|
# enforce gadName rules
|
||||||
|
# prevent set- and get-cmd during fhem-start (e.g. in fhem.cfg)
|
||||||
|
# change dpt16 encoding - fix dblogsplit for dpt16
|
||||||
#
|
#
|
||||||
# todo-4/2024 remove support for oldsyntax cmd's: raw,value,string,rgb
|
# todo-4/2024 remove support for oldsyntax cmd's: raw,value,string,rgb
|
||||||
|
|
||||||
@ -250,7 +254,7 @@ my $PAT_GAD_OPTIONS = 'get|set|listenonly';
|
|||||||
#pattern for GAD-suffixes
|
#pattern for GAD-suffixes
|
||||||
my $PAT_GAD_SUFFIX = 'nosuffix';
|
my $PAT_GAD_SUFFIX = 'nosuffix';
|
||||||
#pattern for forbidden GAD-Names
|
#pattern for forbidden GAD-Names
|
||||||
my $PAT_GAD_NONAME = 'on|off|on-for-timer|on-until|off-for-timer|off-until|toggle|raw|rgb|string|value';
|
my $PAT_GAD_NONAME = 'on|off|on-for-timer|on-until|off-for-timer|off-until|toggle|raw|rgb|string|value|get|set|listenonly|nosuffix';
|
||||||
#pattern for DPT
|
#pattern for DPT
|
||||||
my $PAT_GAD_DPT = 'dpt\d+\.?\d*';
|
my $PAT_GAD_DPT = 'dpt\d+\.?\d*';
|
||||||
#pattern for dpt1 (standard)
|
#pattern for dpt1 (standard)
|
||||||
@ -300,6 +304,7 @@ my %dpttypes = (
|
|||||||
'dpt1.022' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|scene_A|scene_B)/ixms, MIN=>'scene_A', MAX=>'scene_B'},
|
'dpt1.022' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|scene_A|scene_B)/ixms, MIN=>'scene_A', MAX=>'scene_B'},
|
||||||
'dpt1.023' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|move_(up_down|and_step_mode))/ixms, MIN=>'move_up_down', MAX=>'move_and_step_mode'},
|
'dpt1.023' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|move_(up_down|and_step_mode))/ixms, MIN=>'move_up_down', MAX=>'move_and_step_mode'},
|
||||||
'dpt1.024' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|Day|Night)/ixms, MIN=>'Day', MAX=>'Night'},
|
'dpt1.024' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|Day|Night)/ixms, MIN=>'Day', MAX=>'Night'},
|
||||||
|
'dpt1.100' => {CODE=>'dpt1', UNIT=>q{}, PATTERN=>qr/($PAT_DPT1_PAT|Heat|Cool)/ixms, MIN=>'Heat', MAX=>'Cool'},
|
||||||
|
|
||||||
#Step value (two-bit)
|
#Step value (two-bit)
|
||||||
'dpt2' => {CODE=>'dpt2', UNIT=>q{}, PATTERN=>qr/(on|off|forceon|forceoff)/ixms, MIN=>undef, MAX=>undef, SETLIST=>'on,off,forceon,forceoff',
|
'dpt2' => {CODE=>'dpt2', UNIT=>q{}, PATTERN=>qr/(on|off|forceon|forceoff)/ixms, MIN=>undef, MAX=>undef, SETLIST=>'on,off,forceon,forceoff',
|
||||||
@ -324,6 +329,8 @@ my %dpttypes = (
|
|||||||
'dpt5.001' => {CODE=>'dpt5', UNIT=>q{%}, PATTERN=>qr/[+]?\d{1,3}/xms, FACTOR=>100/255, MIN=>0, MAX=>100},
|
'dpt5.001' => {CODE=>'dpt5', UNIT=>q{%}, PATTERN=>qr/[+]?\d{1,3}/xms, FACTOR=>100/255, MIN=>0, MAX=>100},
|
||||||
'dpt5.003' => {CODE=>'dpt5', UNIT=>q{°}, PATTERN=>qr/[+]?\d{1,3}/xms, FACTOR=>360/255, MIN=>0, MAX=>360},
|
'dpt5.003' => {CODE=>'dpt5', UNIT=>q{°}, PATTERN=>qr/[+]?\d{1,3}/xms, FACTOR=>360/255, MIN=>0, MAX=>360},
|
||||||
'dpt5.004' => {CODE=>'dpt5', UNIT=>q{%}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255},
|
'dpt5.004' => {CODE=>'dpt5', UNIT=>q{%}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255},
|
||||||
|
'dpt5.005' => {CODE=>'dpt5', UNIT=>q{}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255}, # Decimal Factor
|
||||||
|
'dpt5.006' => {CODE=>'dpt5', UNIT=>q{}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255}, # Tariff
|
||||||
'dpt5.010' => {CODE=>'dpt5', UNIT=>q{p}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255}, # counter pulses
|
'dpt5.010' => {CODE=>'dpt5', UNIT=>q{p}, PATTERN=>qr/[+]?\d{1,3}/xms, MIN=>0, MAX=>255}, # counter pulses
|
||||||
|
|
||||||
# 1-Octet signed value
|
# 1-Octet signed value
|
||||||
@ -388,12 +395,14 @@ my %dpttypes = (
|
|||||||
'dpt9.030' => {CODE=>'dpt9', UNIT=>q{µg/m³}, PATTERN=>qr/[-+]?(?:\d*[.])?\d+/xms, MIN=>0, MAX=>670433.28}, # Dichte
|
'dpt9.030' => {CODE=>'dpt9', UNIT=>q{µg/m³}, PATTERN=>qr/[-+]?(?:\d*[.])?\d+/xms, MIN=>0, MAX=>670433.28}, # Dichte
|
||||||
|
|
||||||
# Time of Day
|
# Time of Day
|
||||||
'dpt10' => {CODE=>'dpt10', UNIT=>q{}, PATTERN=>qr/($PAT_TIME|now)/ixms, MIN=>undef, MAX=>undef,
|
'dpt10' => {CODE=>'dpt10', UNIT=>q{}, PATTERN=>qr/($PAT_TIME|now)/ixms, MIN=>undef, MAX=>undef,
|
||||||
DEC=>\&dec_dpt10,ENC=>\&enc_dpt10,},
|
DEC=>\&dec_dpt10,ENC=>\&enc_dpt10,},
|
||||||
|
'dpt10.001' => {CODE=>'dpt10', UNIT=>q{}, PATTERN=>qr/($PAT_TIME|now)/ixms, MIN=>undef, MAX=>undef},
|
||||||
|
|
||||||
# Date
|
# Date
|
||||||
'dpt11' => {CODE=>'dpt11', UNIT=>q{}, PATTERN=>qr/($PAT_DATE2|now)/ixms, MIN=>undef, MAX=>undef,
|
'dpt11' => {CODE=>'dpt11', UNIT=>q{}, PATTERN=>qr/($PAT_DATE2|now)/ixms, MIN=>undef, MAX=>undef,
|
||||||
DEC=>\&dec_dpt11,ENC=>\&enc_dpt11,}, # year range 1990-2089 !
|
DEC=>\&dec_dpt11,ENC=>\&enc_dpt11,}, # year range 1990-2089 !
|
||||||
|
'dpt11.001' => {CODE=>'dpt11', UNIT=>q{}, PATTERN=>qr/($PAT_DATE2|now)/ixms, MIN=>undef, MAX=>undef},
|
||||||
|
|
||||||
# 4-Octet unsigned value
|
# 4-Octet unsigned value
|
||||||
'dpt12' => {CODE=>'dpt12', UNIT=>q{}, PATTERN=>qr/[+]?\d{1,10}/xms, MIN=>0, MAX=>4294967295,
|
'dpt12' => {CODE=>'dpt12', UNIT=>q{}, PATTERN=>qr/[+]?\d{1,10}/xms, MIN=>0, MAX=>4294967295,
|
||||||
@ -440,14 +449,38 @@ my %dpttypes = (
|
|||||||
'dpt14.017' => {CODE=>'dpt14', UNIT=>q{kg/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # density
|
'dpt14.017' => {CODE=>'dpt14', UNIT=>q{kg/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # density
|
||||||
'dpt14.018' => {CODE=>'dpt14', UNIT=>q{C}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric charge
|
'dpt14.018' => {CODE=>'dpt14', UNIT=>q{C}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric charge
|
||||||
'dpt14.019' => {CODE=>'dpt14', UNIT=>q{A}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric current
|
'dpt14.019' => {CODE=>'dpt14', UNIT=>q{A}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric current
|
||||||
|
'dpt14.020' => {CODE=>'dpt14', UNIT=>q{A/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric current density
|
||||||
|
'dpt14.021' => {CODE=>'dpt14', UNIT=>q{Cm}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric dipole moment
|
||||||
|
'dpt14.022' => {CODE=>'dpt14', UNIT=>q{C/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric displacement
|
||||||
|
'dpt14.023' => {CODE=>'dpt14', UNIT=>q{V/m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric field strength
|
||||||
|
'dpt14.024' => {CODE=>'dpt14', UNIT=>q{c}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric flux
|
||||||
|
'dpt14.025' => {CODE=>'dpt14', UNIT=>q{C/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric flux density
|
||||||
|
'dpt14.016' => {CODE=>'dpt14', UNIT=>q{C/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric polarization
|
||||||
'dpt14.027' => {CODE=>'dpt14', UNIT=>q{V}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric potential
|
'dpt14.027' => {CODE=>'dpt14', UNIT=>q{V}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric potential
|
||||||
|
'dpt14.028' => {CODE=>'dpt14', UNIT=>q{V}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electric potential difference
|
||||||
|
'dpt14.029' => {CODE=>'dpt14', UNIT=>q{A/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electromagnetive moment
|
||||||
|
'dpt14.030' => {CODE=>'dpt14', UNIT=>q{V}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # electromotive force
|
||||||
'dpt14.031' => {CODE=>'dpt14', UNIT=>q{J}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # energy
|
'dpt14.031' => {CODE=>'dpt14', UNIT=>q{J}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # energy
|
||||||
'dpt14.032' => {CODE=>'dpt14', UNIT=>q{N}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # force
|
'dpt14.032' => {CODE=>'dpt14', UNIT=>q{N}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # force
|
||||||
'dpt14.033' => {CODE=>'dpt14', UNIT=>q{Hz}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # frequency
|
'dpt14.033' => {CODE=>'dpt14', UNIT=>q{Hz}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # frequency
|
||||||
'dpt14.034' => {CODE=>'dpt14', UNIT=>q{rad/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # frequency, angular
|
'dpt14.034' => {CODE=>'dpt14', UNIT=>q{rad/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # frequency, angular
|
||||||
|
'dpt14.035' => {CODE=>'dpt14', UNIT=>q{J/K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # heat capacity
|
||||||
|
'dpt14.036' => {CODE=>'dpt14', UNIT=>q{W}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # heat flow rate
|
||||||
|
'dpt14.037' => {CODE=>'dpt14', UNIT=>q{J}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # heat quantity
|
||||||
'dpt14.038' => {CODE=>'dpt14', UNIT=>qq{\xCE\xA9}, ## no critic (ValuesAndExpressions::ProhibitEscapedCharacters)
|
'dpt14.038' => {CODE=>'dpt14', UNIT=>qq{\xCE\xA9}, ## no critic (ValuesAndExpressions::ProhibitEscapedCharacters)
|
||||||
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Impedance OHM
|
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Impedance OHM
|
||||||
'dpt14.039' => {CODE=>'dpt14', UNIT=>q{m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # length
|
'dpt14.039' => {CODE=>'dpt14', UNIT=>q{m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # length
|
||||||
|
'dpt14.040' => {CODE=>'dpt14', UNIT=>q{J}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # light quantity
|
||||||
|
'dpt14.041' => {CODE=>'dpt14', UNIT=>q{cd/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # luminance
|
||||||
|
'dpt14.042' => {CODE=>'dpt14', UNIT=>q{lm}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # luminous flux
|
||||||
|
'dpt14.043' => {CODE=>'dpt14', UNIT=>q{cd}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # luminous intensity
|
||||||
|
'dpt14.044' => {CODE=>'dpt14', UNIT=>q{A/m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetic field strenght
|
||||||
|
'dpt14.045' => {CODE=>'dpt14', UNIT=>q{Wb}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetic flux
|
||||||
|
'dpt14.046' => {CODE=>'dpt14', UNIT=>q{T}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetic flux density
|
||||||
|
'dpt14.047' => {CODE=>'dpt14', UNIT=>q{A/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetic moment
|
||||||
|
'dpt14.048' => {CODE=>'dpt14', UNIT=>q{T}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetic polarisation
|
||||||
|
'dpt14.049' => {CODE=>'dpt14', UNIT=>q{A/m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magnetization
|
||||||
|
'dpt14.050' => {CODE=>'dpt14', UNIT=>q{A}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # magneto motive force
|
||||||
'dpt14.051' => {CODE=>'dpt14', UNIT=>q{kg}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # mass
|
'dpt14.051' => {CODE=>'dpt14', UNIT=>q{kg}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # mass
|
||||||
'dpt14.052' => {CODE=>'dpt14', UNIT=>q{kg/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # mass flux
|
'dpt14.052' => {CODE=>'dpt14', UNIT=>q{kg/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # mass flux
|
||||||
'dpt14.053' => {CODE=>'dpt14', UNIT=>q{N/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # momentum
|
'dpt14.053' => {CODE=>'dpt14', UNIT=>q{N/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # momentum
|
||||||
@ -460,10 +493,19 @@ my %dpttypes = (
|
|||||||
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Reactance OHM
|
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Reactance OHM
|
||||||
'dpt14.060' => {CODE=>'dpt14', UNIT=>qq{\xCE\xA9}, ## no critic (ValuesAndExpressions::ProhibitEscapedCharacters)
|
'dpt14.060' => {CODE=>'dpt14', UNIT=>qq{\xCE\xA9}, ## no critic (ValuesAndExpressions::ProhibitEscapedCharacters)
|
||||||
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Resistance OHM
|
PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # Resistance OHM
|
||||||
|
'dpt14.061' => {CODE=>'dpt14', UNIT=>q{kg}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # mass
|
||||||
|
'dpt14.062' => {CODE=>'dpt14', UNIT=>q{H}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # self inductance
|
||||||
|
'dpt14.063' => {CODE=>'dpt14', UNIT=>q{sr}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # solid angle
|
||||||
|
'dpt14.064' => {CODE=>'dpt14', UNIT=>q{W/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # sound intensity
|
||||||
'dpt14.065' => {CODE=>'dpt14', UNIT=>q{m/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # speed
|
'dpt14.065' => {CODE=>'dpt14', UNIT=>q{m/s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # speed
|
||||||
|
'dpt14.066' => {CODE=>'dpt14', UNIT=>q{N/m²}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # stress
|
||||||
|
'dpt14.067' => {CODE=>'dpt14', UNIT=>q{N/m}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # surface tension
|
||||||
'dpt14.068' => {CODE=>'dpt14', UNIT=>q{°C}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature, common
|
'dpt14.068' => {CODE=>'dpt14', UNIT=>q{°C}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature, common
|
||||||
'dpt14.069' => {CODE=>'dpt14', UNIT=>q{K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature (absolute)
|
'dpt14.069' => {CODE=>'dpt14', UNIT=>q{K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature (absolute)
|
||||||
'dpt14.070' => {CODE=>'dpt14', UNIT=>q{K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature difference
|
'dpt14.070' => {CODE=>'dpt14', UNIT=>q{K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # temperature difference
|
||||||
|
'dpt14.071' => {CODE=>'dpt14', UNIT=>q{J/K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # thermal capacity
|
||||||
|
'dpt14.072' => {CODE=>'dpt14', UNIT=>q{1/K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # thermal conductivity
|
||||||
|
'dpt14.073' => {CODE=>'dpt14', UNIT=>q{V/K}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # thermoelectric power
|
||||||
'dpt14.074' => {CODE=>'dpt14', UNIT=>q{s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # time
|
'dpt14.074' => {CODE=>'dpt14', UNIT=>q{s}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # time
|
||||||
'dpt14.075' => {CODE=>'dpt14', UNIT=>q{Nm}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # torque
|
'dpt14.075' => {CODE=>'dpt14', UNIT=>q{Nm}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # torque
|
||||||
'dpt14.076' => {CODE=>'dpt14', UNIT=>q{m³}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # volume
|
'dpt14.076' => {CODE=>'dpt14', UNIT=>q{m³}, PATTERN=>qr/[-+]?(?:\d+(?:[.]\d*)?(?:e[+-]?\d+)?)/xms, MIN=>-3.4e38, MAX=>3.4e38}, # volume
|
||||||
@ -556,7 +598,7 @@ sub Initialize {
|
|||||||
|
|
||||||
$hash->{AttrList} = 'IODev ' . #define IO-Device to communicate with. Deprecated at definition line.
|
$hash->{AttrList} = 'IODev ' . #define IO-Device to communicate with. Deprecated at definition line.
|
||||||
'disable:1 ' . #device disabled
|
'disable:1 ' . #device disabled
|
||||||
'showtime:1,0 ' . #show event-time instead of value in device overview
|
'showtime:0,1 ' . #show event-time instead of value in device overview
|
||||||
'stateRegex:textField-long ' . #modifies state value
|
'stateRegex:textField-long ' . #modifies state value
|
||||||
'stateCmd:textField-long ' . #modify state value
|
'stateCmd:textField-long ' . #modify state value
|
||||||
'putCmd:textField-long ' . #enable FHEM to answer KNX read telegrams
|
'putCmd:textField-long ' . #enable FHEM to answer KNX read telegrams
|
||||||
@ -664,17 +706,16 @@ sub KNX_Define2 {
|
|||||||
if (scalar(@gadArgs)) {
|
if (scalar(@gadArgs)) {
|
||||||
$gadNoSuffix = lc(pop(@gadArgs)) if ($gadArgs[-1] =~ /$PAT_GAD_SUFFIX/ixms);
|
$gadNoSuffix = lc(pop(@gadArgs)) if ($gadArgs[-1] =~ /$PAT_GAD_SUFFIX/ixms);
|
||||||
$gadOption = lc(pop(@gadArgs)) if (@gadArgs && $gadArgs[-1] =~ /^($PAT_GAD_OPTIONS)$/ixms);
|
$gadOption = lc(pop(@gadArgs)) if (@gadArgs && $gadArgs[-1] =~ /^($PAT_GAD_OPTIONS)$/ixms);
|
||||||
$gadName = pop(@gadArgs) if (@gadArgs);
|
$gadName = shift(@gadArgs) // q{g} . $gadNo; # use first verb
|
||||||
|
}
|
||||||
|
|
||||||
if ($gadName =~ /^($PAT_GAD_NONAME)$/xms) { # allow mixed case
|
if (scalar(@gadArgs)) {
|
||||||
push(@logarr,qq{forbidden gadName $gadName});
|
push(@logarr,q{syntax or parameter error in options definition: } . join(q{:},@gadArgs));
|
||||||
next;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if ($gadName eq q{state} && defined($gadNoSuffix)) {
|
if (($gadName =~ /^($PAT_GAD_NONAME)$/xms) || ($gadName eq q{state} && defined($gadNoSuffix))) { # allow mixed case
|
||||||
$gadName = q{g} . $gadNo;
|
push(@logarr,qq{forbidden gadName: $gadName - modified to: g} . $gadNo);
|
||||||
push(@logarr,qq{forbidden gadName: state - modified to: $gadName});
|
$gadName = q{g} . $gadNo;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined($hash->{GADTABLE}->{$gadCode})) {
|
if (defined($hash->{GADTABLE}->{$gadCode})) {
|
||||||
@ -786,6 +827,7 @@ sub KNX_Get {
|
|||||||
|
|
||||||
return qq{unknown argument $gadName choose one of $getter};
|
return qq{unknown argument $gadName choose one of $getter};
|
||||||
}
|
}
|
||||||
|
return qq{get cmd ($name) not allowed during fhem-start} if (! $init_done);
|
||||||
return qq{KNX_Get ($name): is disabled} if (IsDisabled($name) == 1);
|
return qq{KNX_Get ($name): is disabled} if (IsDisabled($name) == 1);
|
||||||
|
|
||||||
KNX_Log ($name, 5, qq{enter: CMD= $gadName});
|
KNX_Log ($name, 5, qq{enter: CMD= $gadName});
|
||||||
@ -828,6 +870,7 @@ sub KNX_Set {
|
|||||||
return qq{unknown argument $targetGadName choose one of $setter};
|
return qq{unknown argument $targetGadName choose one of $setter};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return qq{set cmd ($name) not allowed during fhem-start} if (! $init_done);
|
||||||
return qq{$name is disabled} if (IsDisabled($name) == 1);
|
return qq{$name is disabled} if (IsDisabled($name) == 1);
|
||||||
|
|
||||||
KNX_Log ($name, 5, qq{enter: $targetGadName } . join(q{ }, @arg));
|
KNX_Log ($name, 5, qq{enter: $targetGadName } . join(q{ }, @arg));
|
||||||
@ -860,8 +903,6 @@ sub KNX_Set {
|
|||||||
#Text neads special treatment - additional args may be blanked words - truncate to 14 char
|
#Text neads special treatment - additional args may be blanked words - truncate to 14 char
|
||||||
if ($model =~ m/^dpt16/xms) {
|
if ($model =~ m/^dpt16/xms) {
|
||||||
$value .= q{ } . join (q{ }, @arg) if (scalar (@arg) > 0);
|
$value .= q{ } . join (q{ }, @arg) if (scalar (@arg) > 0);
|
||||||
KNX_Log ($name, 3, qq{dpt16 string $value truncated to 14 characters}) if (length($value) > 14);
|
|
||||||
$value = substr($value,0,14);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#Special commands for dpt1 and dpt1.001
|
#Special commands for dpt1 and dpt1.001
|
||||||
@ -883,7 +924,6 @@ sub KNX_Set {
|
|||||||
#apply post processing for state and set all readings
|
#apply post processing for state and set all readings
|
||||||
KNX_SetReadings($hash, $targetGadName, $value, undef, undef);
|
KNX_SetReadings($hash, $targetGadName, $value, undef, undef);
|
||||||
|
|
||||||
# KNX_Log ($name, 5, 'exit');
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -903,6 +943,7 @@ sub KNX_Set_oldsyntax {
|
|||||||
$groupnr = pop (@arg);
|
$groupnr = pop (@arg);
|
||||||
KNX_Log ($name, 3, qq{you are still using old syntax, pls. change to "set $name $groupnr $cmd } . join(q{ },@arg) . q{"});
|
KNX_Log ($name, 3, qq{you are still using old syntax, pls. change to "set $name $groupnr $cmd } . join(q{ },@arg) . q{"});
|
||||||
$groupnr =~ s/^[g]//ixms; #remove "g"
|
$groupnr =~ s/^[g]//ixms; #remove "g"
|
||||||
|
$na--;
|
||||||
}
|
}
|
||||||
|
|
||||||
# if cmd contains g1: the check for valid gadnames failed !
|
# if cmd contains g1: the check for valid gadnames failed !
|
||||||
@ -916,7 +957,7 @@ sub KNX_Set_oldsyntax {
|
|||||||
return qq{gadName not found or invalid dpt used for group $groupnr} if(!defined($targetGadName));
|
return qq{gadName not found or invalid dpt used for group $groupnr} if(!defined($targetGadName));
|
||||||
|
|
||||||
# all of the following cmd's need at least 1 Argument (or more)
|
# all of the following cmd's need at least 1 Argument (or more)
|
||||||
return (undef, $targetGadName, $cmd) if (scalar(@arg) <= 0);
|
return (undef, $targetGadName, $cmd) if ($na <= 0);
|
||||||
# pass thru -for-timer,-until,blink cmds...
|
# pass thru -for-timer,-until,blink cmds...
|
||||||
return (undef, $targetGadName, $cmd) if ($cmd =~ m/(?:-until|-for-timer|$BLINK)$/ixms);
|
return (undef, $targetGadName, $cmd) if ($cmd =~ m/(?:-until|-for-timer|$BLINK)$/ixms);
|
||||||
|
|
||||||
@ -947,7 +988,7 @@ sub KNX_Set_oldsyntax {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
KNX_Log ($name, 2, qq{invalid cmd: "set $name $cmd" issued - ignored});
|
KNX_Log ($name, 2, qq{invalid cmd: "set $name $cmd" issued - ignored});
|
||||||
return qq{invalid cmd: "set $name $cmd" - ignored};
|
return qq{invalid cmd: "set $name $cmd } . join(q{ },@arg). q{" -ignored};
|
||||||
}
|
}
|
||||||
|
|
||||||
KNX_Log ($name, 3, qq{This cmd will be deprecated by 1/2024: "set $name $cmd } . join(q{ },@arg) .
|
KNX_Log ($name, 3, qq{This cmd will be deprecated by 1/2024: "set $name $cmd } . join(q{ },@arg) .
|
||||||
@ -1111,6 +1152,7 @@ sub KNX_DbLog_split {
|
|||||||
|
|
||||||
my $reading = 'state'; # default
|
my $reading = 'state'; # default
|
||||||
my $unit = q{}; # default
|
my $unit = q{}; # default
|
||||||
|
my $dpt16flag = 0; # is it a dpt16 ?
|
||||||
|
|
||||||
# split event into pieces
|
# split event into pieces
|
||||||
$event =~ s/^\s?//xms; # remove leading blank if any
|
$event =~ s/^\s?//xms; # remove leading blank if any
|
||||||
@ -1121,10 +1163,17 @@ sub KNX_DbLog_split {
|
|||||||
}
|
}
|
||||||
$strings[0] = q{} if (! defined($strings[0]));
|
$strings[0] = q{} if (! defined($strings[0]));
|
||||||
|
|
||||||
#numeric value? and last value non numeric? - assume unit
|
#numeric value? and last value non numeric? - assume unit - except for dpt16
|
||||||
if (looks_like_number($strings[0]) && (! looks_like_number($strings[scalar(@strings)-1]))) {
|
my $devhash = $defs{$device};
|
||||||
|
foreach my $key (keys %{$devhash->{GADDETAILS}}) {
|
||||||
|
next if ($devhash->{GADDETAILS}->{$key}->{MODEL} !~ /^dpt16/xms);
|
||||||
|
$dpt16flag = 1;
|
||||||
|
last;
|
||||||
|
}
|
||||||
|
if (($dpt16flag == 0) && looks_like_number($strings[0]) && (! looks_like_number($strings[scalar(@strings)-1]))) {
|
||||||
$unit = pop(@strings);
|
$unit = pop(@strings);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $value = join(q{ },@strings);
|
my $value = join(q{ },@strings);
|
||||||
$unit = q{} if (!defined($unit));
|
$unit = q{} if (!defined($unit));
|
||||||
|
|
||||||
@ -1173,9 +1222,15 @@ sub KNX_Parse {
|
|||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ignore input from "wrong" IO-dev
|
||||||
|
# if ($iohash ne $deviceHash->{IODev}) {
|
||||||
|
# KNX_Log ($deviceName, 2, qq{ioname mismatch device= $deviceName io= $ioName});
|
||||||
|
# next;
|
||||||
|
# }
|
||||||
|
|
||||||
my $getName = $deviceHash->{GADDETAILS}->{$gadName}->{RDNAMEGET};
|
my $getName = $deviceHash->{GADDETAILS}->{$gadName}->{RDNAMEGET};
|
||||||
|
|
||||||
KNX_Log ($deviceName, 4, qq{process gadName=$gadName cmd=$cmd readingName=$getName value=$val});
|
KNX_Log ($deviceName, 4, qq{process ioName=$ioName gadName=$gadName cmd=$cmd readingName=$getName value=$val});
|
||||||
|
|
||||||
my $trigger = 1; # default create events
|
my $trigger = 1; # default create events
|
||||||
=begin comment
|
=begin comment
|
||||||
@ -1743,6 +1798,7 @@ sub enc_dpt16 { #14-Octet String
|
|||||||
my $model = shift;
|
my $model = shift;
|
||||||
my $numval = encode('iso-8859-1', decode('utf8', $value)); #always convert to latin-1
|
my $numval = encode('iso-8859-1', decode('utf8', $value)); #always convert to latin-1
|
||||||
$numval =~ s/[\x80-\xff]/?/gxms if ($model ne 'dpt16.001'); #replace values >= 0x80 if ascii
|
$numval =~ s/[\x80-\xff]/?/gxms if ($model ne 'dpt16.001'); #replace values >= 0x80 if ascii
|
||||||
|
$numval = substr($numval,0,14); # limit to 14 char
|
||||||
|
|
||||||
#convert to hex-string
|
#convert to hex-string
|
||||||
my $dat = unpack('H*', $numval);
|
my $dat = unpack('H*', $numval);
|
||||||
@ -2154,17 +2210,17 @@ __END__
|
|||||||
<style>
|
<style>
|
||||||
#KNX-dpt_ul {
|
#KNX-dpt_ul {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 10px;
|
padding-left: 2em;
|
||||||
width:95%;
|
width:95%;
|
||||||
column-count:2;
|
column-count:2;
|
||||||
column-gap:10px;
|
column-gap:10px;
|
||||||
-moz-column-count:2;
|
-moz-column-count:2;
|
||||||
-moz-column-gap:20px;
|
-moz-column-gap:10px;
|
||||||
-webkit-column-count:2;
|
-webkit-column-count:2;
|
||||||
-webkit-column-gap:20px;
|
-webkit-column-gap:10px;
|
||||||
}
|
}
|
||||||
#KNX-dpt_ul li {
|
#KNX-dpt_ul li {
|
||||||
padding-left: 1em; white-space: pre; overflow: clip;
|
overflow: clip;
|
||||||
}
|
}
|
||||||
#KNX-dpt_ul li b {
|
#KNX-dpt_ul li b {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
@ -2173,7 +2229,7 @@ __END__
|
|||||||
}
|
}
|
||||||
#KNX-attr_ul {
|
#KNX-attr_ul {
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
padding-left: 30px;
|
padding-left: 2em;
|
||||||
width:95%;
|
width:95%;
|
||||||
column-count:2;
|
column-count:2;
|
||||||
column-gap:10px;
|
column-gap:10px;
|
||||||
@ -2182,8 +2238,9 @@ __END__
|
|||||||
-webkit-column-count:2;
|
-webkit-column-count:2;
|
||||||
-webkit-column-gap:20px;
|
-webkit-column-gap:20px;
|
||||||
}
|
}
|
||||||
#KNX-attr_ul a {
|
#KNX-attr_ul li {
|
||||||
padding-left: 1em; width: 100%;
|
padding-left: 1em;
|
||||||
|
overflow: clip;
|
||||||
}
|
}
|
||||||
/* For mobile phones: */
|
/* For mobile phones: */
|
||||||
@media only screen and (max-width: 1070px) {
|
@media only screen and (max-width: 1070px) {
|
||||||
@ -2243,16 +2300,15 @@ If you want to restrict the GAD, you can use the options "get", "set", or "liste
|
|||||||
<p>The first group is used for sending by default. If you want to send to a different group, you have to address it.
|
<p>The first group is used for sending by default. If you want to send to a different group, you have to address it.
|
||||||
E.g: <code>set <name> <gadName> <value> </code>
|
E.g: <code>set <name> <gadName> <value> </code>
|
||||||
Without additional attributes, all incoming and outgoing messages are in addition copied into reading <state>.</p>
|
Without additional attributes, all incoming and outgoing messages are in addition copied into reading <state>.</p>
|
||||||
<p>If enabled, the module <a href="#autocreate">autocreate</a> is creating a new definition for any unknown group-address.
|
<p>If enabled, the module <a href="#autocreate">autocreate</a> is creating a new definition for each not already defined group-address.
|
||||||
However, the new device will be disabled until you added a DPT to the definition and delete the
|
However, the new device will be disabled until you added a DPT to the definition and delete the
|
||||||
<a href="#KNX-attr-disable">disable</a> attribute. The device name will be KNX_nnmmooo where nn is the line adress,
|
<a href="#KNX-attr-disable">disable</a> attribute. The device name will be KNX_<llaaddd> where ll is the line-,
|
||||||
mm the area and ooo the device.
|
aa the area- and ddd the device-address.
|
||||||
No FileLog or SVG definition is created for KNX-devices by autocreate. Use for example
|
No FileLog or SVG definition is created for KNX-devices by autocreate. Use for example
|
||||||
<code>define <name> FileLog <filename> KNX_.*</code> to create a single FileLog-definition for all KNX-devices
|
<code>define <name> FileLog <filename> KNX_.*</code> to create a single FileLog-definition for all KNX-devices
|
||||||
created by autocreate.<br/>
|
created by autocreate.<br/>
|
||||||
Another option is to disable autocreate for KNX-devices in production environments (when no changes / additions are expected)
|
Another option is to disable autocreate for KNX-devices in production environments (when no changes / additions are expected)
|
||||||
by using:<br/>
|
by using: <code>attr <autocreate> ignoreTypes KNX_.*</code></p>
|
||||||
<code>attr <autocreate> ignoreTypes KNX_.*</code></p>
|
|
||||||
<pre>
|
<pre>
|
||||||
Examples:
|
Examples:
|
||||||
<code> define lamp1 KNX 0/10/11:dpt1
|
<code> define lamp1 KNX 0/10/11:dpt1
|
||||||
@ -2339,6 +2395,7 @@ Examples:
|
|||||||
<li><a href="#readingFnAttributes">stateFormat</a></li>
|
<li><a href="#readingFnAttributes">stateFormat</a></li>
|
||||||
<li><a href="#readingFnAttributes">timestamp-on-change-reading</a></li>
|
<li><a href="#readingFnAttributes">timestamp-on-change-reading</a></li>
|
||||||
<li><a href="#readingFnAttributes">userReadings</a></li>
|
<li><a href="#readingFnAttributes">userReadings</a></li>
|
||||||
|
<li><a href="#suppressReading">suppressReading</a></li>
|
||||||
<li><a href="#userattr">userattr</a></li>
|
<li><a href="#userattr">userattr</a></li>
|
||||||
<li><a href="#verbose">verbose</a></li>
|
<li><a href="#verbose">verbose</a></li>
|
||||||
<li><a href="#FHEMWEB-attr-webCmd">webCmd</a></li>
|
<li><a href="#FHEMWEB-attr-webCmd">webCmd</a></li>
|
||||||
@ -2351,21 +2408,21 @@ Examples:
|
|||||||
<li><strong>Special attributes</strong><br/>
|
<li><strong>Special attributes</strong><br/>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a id="KNX-attr-stateRegex"></a><b>stateRegex</b><br/>
|
<li><a id="KNX-attr-stateRegex"></a><b>stateRegex</b><br/>
|
||||||
You can pass n pairs of regex-patterns and strings to replace, seperated by a space.
|
You can pass mutiple pairs of regex-patterns and strings to replace, separated by a space.
|
||||||
A regex-pair is always in the format /<readingName>[:<value>]/[2nd part]/.
|
A regex-pair is always in the format /<readingName>[:<value>]/[2nd part]/.
|
||||||
The first part of the regex must exactly match the readingname, and optional (separated by a colon) the readingValue.
|
The first part of the regex must exactly match the readingname, and optional (separated by a colon) the readingValue.
|
||||||
If first part match, the matching part will be replaced by the 2nd part of the regex.
|
If first part match, the matching part will be replaced by the 2nd part of the regex.
|
||||||
If the 2nd part is empty, the value is ignored and reading state will not get updated.
|
If the 2nd part is empty, the value is ignored and reading state will not get updated.
|
||||||
The substitution is done every time, a reading is updated. You can use this function for converting, adding units,
|
The substitution is done every time a reading is updated. You can use this function for converting, adding units,
|
||||||
having more fun with icons, ...<br/>
|
having more fun with icons, ...<br/>
|
||||||
This function has only an impact on the content of reading state.
|
This function has only an impact on the content of reading state.
|
||||||
It is executed directly after replacing the reading-names and processing "format" Attr, but before stateCmd.
|
It is executed directly after replacing the reading-names and processing "format" Attr, but before stateCmd.
|
||||||
<br/></li>
|
<br/></li>
|
||||||
<li><a id="KNX-attr-stateCmd"></a><b>stateCmd</b><br/>
|
<li><a id="KNX-attr-stateCmd"></a><b>stateCmd</b><br/>
|
||||||
You can supply a perl-command for modifying state. This command is executed directly before updating the reading
|
You can supply a perl-command for modifying state. This command is executed directly before updating the reading
|
||||||
- so after renaming, format and regex.
|
- so after renaming, format and stateRegex.
|
||||||
Please supply a valid perl command like using the attribute stateFormat.<br/>
|
Please supply a valid perl command like using the attribute stateFormat.<br/>
|
||||||
Unlike stateFormat the stateCmd modifies also the content of the reading <b>state</b>,
|
Unlike stateFormat the stateCmd modifies the content of the reading <b>state</b>,
|
||||||
not only the hash-content for visualization.<br/>
|
not only the hash-content for visualization.<br/>
|
||||||
You can access the device-hash ( e.g: $hash{IODev} ) in yr. perl-cmd. In addition the variables
|
You can access the device-hash ( e.g: $hash{IODev} ) in yr. perl-cmd. In addition the variables
|
||||||
"$name", "$gadName" and "$state" are avaliable. A return value must be set and overrides reading state.
|
"$name", "$gadName" and "$state" are avaliable. A return value must be set and overrides reading state.
|
||||||
@ -2377,34 +2434,34 @@ Examples:
|
|||||||
Each device only knows one putCmd, so you have to take care about the different GAD's in the perl string.<br/>
|
Each device only knows one putCmd, so you have to take care about the different GAD's in the perl string.<br/>
|
||||||
Like in stateCmd you can access the device hash ("$hash") in yr. perl-cmd. In addition the variables
|
Like in stateCmd you can access the device hash ("$hash") in yr. perl-cmd. In addition the variables
|
||||||
"$name", "$gadName" and "$state" are avaliable. On entry, "$state" contains the current value of reading "state".
|
"$name", "$gadName" and "$state" are avaliable. On entry, "$state" contains the current value of reading "state".
|
||||||
The return-value will be sent to KNX-bus. The value has to be in the allowed range for the corresponding dpt,
|
The return-value will be sent to KNX-bus. The value has to be in the allowed range and format for the corresponding dpt,
|
||||||
else the send is rejected. The reading "state" will NOT get updated!
|
else the send is rejected. The reading "state" will NOT get updated!
|
||||||
<pre>
|
<pre>
|
||||||
Examples:
|
Examples:
|
||||||
<code> attr <device> putCmd {return $state if($gadName eq 'status');} #returns value of reading state on request from bus for gadName "status".
|
<code> attr <device> putCmd {return $state if($gadName eq 'status');} #returns value of reading state on request from bus for gadName "status".
|
||||||
attr <device> putCmd {return ReadingsVal('dummydev','state','error') if(...);} #returns value of device "dummydev" reading "state".
|
attr <device> putCmd {return ReadingsVal('dummydev','state','error') if(...);} #returns value of device "dummydev" reading "state".
|
||||||
attr <device> putCmd {return (split(/[\s]/xms,TimeNow()))[1] if ($gadName eq 'time');} #returns systemtime-stamp ...
|
attr <device> putCmd {return (split(/[\s]/xms,TimeNow()))[1] if ($gadName eq 'time');} #returns system timestamp (dpt10 format) ...
|
||||||
</code></pre>
|
</code></pre>
|
||||||
</li>
|
</li>
|
||||||
<li><a id="KNX-attr-format"></a><b>format</b><br/>
|
<li><a id="KNX-attr-format"></a><b>format</b><br/>
|
||||||
The content of this attribute is appended to every sent/received value before readings are set,
|
The content of this attribute is appended to every sent/received value before readings are set,
|
||||||
it replaces the default unit-value! "format" will be appied to ALL readings, it is better to use the (more complex)
|
it replaces the default unit-value! "format" will be appied to ALL readings, it is better to use the (more complex)
|
||||||
"stateCmd" or "stateRegex" Attributes if you have more than one GAD in your device.
|
"stateCmd" or "stateRegex" attributes if you have more than one GAD in your device.
|
||||||
<br/></li>
|
<br/></li>
|
||||||
<li><a id="KNX-attr-disable"></a><b>disable</b><br/>
|
<li><a id="KNX-attr-disable"></a><b>disable</b><br/>
|
||||||
Disable the device if set to <b>1</b>. No send/receive from bus and no set/get possible. Delete this attr to enable device again.
|
Disable the device if set to <b>1</b>. No send/receive from bus and no set/get possible. Delete this attr to enable device again.
|
||||||
Deleting this attribute is prevented in case the definition contains errors!
|
Deleting this attribute is prevented in case the definition is incomplete or contains errors!
|
||||||
<br/>As an aid for debugging, an additional INTERNAL: "RAWMSG" will show any message received from bus while the device is disabled.
|
<br/>As an aid for debugging, an additional INTERNAL: "RAWMSG" will show any message received from bus while the device is disabled.
|
||||||
<br/></li>
|
<br/></li>
|
||||||
<li><a id="KNX-attr-KNX_toggle"></a><b>KNX_toggle</b><br/>
|
<li><a id="KNX-attr-KNX_toggle"></a><b>KNX_toggle</b><br/>
|
||||||
Lookup current value before issuing <code>set device <gadName> toggle</code> cmd.<br/>
|
Lookup current value before issuing <code>set <device> <gadName> toggle</code> cmd.<br/>
|
||||||
FHEM has to retrieve a current value to make the toggle-cmd acting correctly. This attribute can be used to
|
FHEM has to retrieve a current value to make the toggle-cmd acting correctly. This attribute can be used to
|
||||||
define the source of the current value.<br/>
|
define the source of the current value.<br/>
|
||||||
Format is: <b><devicename>:<readingname></b>. If you want to use a reading from own device,
|
Format is: <b><devicename>:<readingname></b>. If you want to use a reading from own device,
|
||||||
you can use "$self" as devicename. Be aware that only <b>on</b> and <b>off</b> are supported as valid values
|
you can use "$self" as devicename. Be aware that only <b>on</b> and <b>off</b> are supported as valid values
|
||||||
when defining device:readingname.<br/>
|
when defining <device>:<readingname>.<br/>
|
||||||
If this attribute is not defined, the current value will be taken from owndevice:readingName-get or,
|
If this attribute is not defined, the current value will be taken from <owndevice>:<readingName-get> or,
|
||||||
if readingName-get is not defined, the value will be taken from readingName-set.
|
if <readingName-get> is not defined, the value will be taken from <readingName-set>.
|
||||||
<br/></li>
|
<br/></li>
|
||||||
<li><a id="KNX-attr-IODev"></a><b>IODev</b><br/>
|
<li><a id="KNX-attr-IODev"></a><b>IODev</b><br/>
|
||||||
Due to changes in IO-Device handling, (default IO-Device will be stored in <b>reading IODev</b>), setting this Attribute
|
Due to changes in IO-Device handling, (default IO-Device will be stored in <b>reading IODev</b>), setting this Attribute
|
||||||
@ -2457,6 +2514,7 @@ Examples:
|
|||||||
<li><b>dpt1.022 </b> scene_A, scene_B</li>
|
<li><b>dpt1.022 </b> scene_A, scene_B</li>
|
||||||
<li><b>dpt1.023 </b> move_up/down, move_and_step_mode</li>
|
<li><b>dpt1.023 </b> move_up/down, move_and_step_mode</li>
|
||||||
<li><b>dpt1.024 </b> Day, Night</li>
|
<li><b>dpt1.024 </b> Day, Night</li>
|
||||||
|
<li><b>dpt1.100 </b> Heat, Cool</li>
|
||||||
<li><b>dpt2 </b> off, on, forceOff, forceOn</li>
|
<li><b>dpt2 </b> off, on, forceOff, forceOn</li>
|
||||||
<li><b>dpt2.000 </b> 0,1,2,3</li>
|
<li><b>dpt2.000 </b> 0,1,2,3</li>
|
||||||
<li><b>dpt3 </b> -100..+100</li>
|
<li><b>dpt3 </b> -100..+100</li>
|
||||||
@ -2469,6 +2527,8 @@ Examples:
|
|||||||
<li><b>dpt5.001 </b> 0..100 %</li>
|
<li><b>dpt5.001 </b> 0..100 %</li>
|
||||||
<li><b>dpt5.003 </b> 0..360 °</li>
|
<li><b>dpt5.003 </b> 0..360 °</li>
|
||||||
<li><b>dpt5.004 </b> 0..255 %</li>
|
<li><b>dpt5.004 </b> 0..255 %</li>
|
||||||
|
<li><b>dpt5.005 </b> 0..255 (decimal factor)</li>
|
||||||
|
<li><b>dpt5.006 </b> 0..255 (tariff info)</li>
|
||||||
<li><b>dpt5.010 </b> 0..255 p (pulsecount)</li>
|
<li><b>dpt5.010 </b> 0..255 p (pulsecount)</li>
|
||||||
<li><b>dpt6 </b> -128..+127</li>
|
<li><b>dpt6 </b> -128..+127</li>
|
||||||
<li><b>dpt6.001 </b> -128 %..+127 %</li>
|
<li><b>dpt6.001 </b> -128 %..+127 %</li>
|
||||||
@ -2519,8 +2579,8 @@ Examples:
|
|||||||
<li><b>dpt9.028 </b> 0..+670433.28 km/h</li>
|
<li><b>dpt9.028 </b> 0..+670433.28 km/h</li>
|
||||||
<li><b>dpt9.029 </b> 0..+670433.28 g/m³</li>
|
<li><b>dpt9.029 </b> 0..+670433.28 g/m³</li>
|
||||||
<li><b>dpt9.030 </b> 0..+670433.28 μg/m³</li>
|
<li><b>dpt9.030 </b> 0..+670433.28 μg/m³</li>
|
||||||
<li><b>dpt10 </b> HH:MM:SS (Time)</li>
|
<li><b>dpt10.001</b> HH:MM:SS (Time)</li>
|
||||||
<li><b>dpt11 </b> DD.MM.YYYY (Date)</li>
|
<li><b>dpt11.001</b> DD.MM.YYYY (Date)</li>
|
||||||
<li><b>dpt12 </b> 0..+4294967295</li>
|
<li><b>dpt12 </b> 0..+4294967295</li>
|
||||||
<li><b>dpt12.001</b> 0..+4294967295 p (pulsecount)</li>
|
<li><b>dpt12.001</b> 0..+4294967295 p (pulsecount)</li>
|
||||||
<li><b>dpt12.100</b> 0..+4294967295 s</li>
|
<li><b>dpt12.100</b> 0..+4294967295 s</li>
|
||||||
@ -2538,54 +2598,87 @@ Examples:
|
|||||||
<li><b>dpt13.016</b> -2147483648..2147483647 MWh</li>
|
<li><b>dpt13.016</b> -2147483648..2147483647 MWh</li>
|
||||||
<li><b>dpt13.100</b> -2147483648..2147483647 s</li>
|
<li><b>dpt13.100</b> -2147483648..2147483647 s</li>
|
||||||
<li><b>dpt14 </b> -1.4e-45..+1.7e+38 (IEE754 floatingPoint)</li>
|
<li><b>dpt14 </b> -1.4e-45..+1.7e+38 (IEE754 floatingPoint)</li>
|
||||||
<li><b>dpt14.000</b> -1.4e-45..+1.7e+38 m/s²</li>
|
<li><b>dpt14.000</b> -1.4e-45..+1.7e+38 m/s² (acceleration)</li>
|
||||||
<li><b>dpt14.001</b> -1.4e-45..+1.7e+38 rad/s²</li>
|
<li><b>dpt14.001</b> -1.4e-45..+1.7e+38 rad/s² (acceleration) angular</li>
|
||||||
<li><b>dpt14.002</b> -1.4e-45..+1.7e+38 J/mol</li>
|
<li><b>dpt14.002</b> -1.4e-45..+1.7e+38 J/mol (activation energy)</li>
|
||||||
<li><b>dpt14.003</b> -1.4e-45..+1.7e+38 1/s</li>
|
<li><b>dpt14.003</b> -1.4e-45..+1.7e+38 1/s (activity - radioactive)</li>
|
||||||
<li><b>dpt14.004</b> -1.4e-45..+1.7e+38 mol</li>
|
<li><b>dpt14.004</b> -1.4e-45..+1.7e+38 mol (amount of substance)</li>
|
||||||
<li><b>dpt14.005</b> -1.4e-45..+1.7e+38 -</li>
|
<li><b>dpt14.005</b> -1.4e-45..+1.7e+38 - (amplitude)</li>
|
||||||
<li><b>dpt14.006</b> -1.4e-45..+1.7e+38 rad</li>
|
<li><b>dpt14.006</b> -1.4e-45..+1.7e+38 rad (angle radiant)</li>
|
||||||
<li><b>dpt14.007</b> -1.4e-45..+1.7e+38 °</li>
|
<li><b>dpt14.007</b> -1.4e-45..+1.7e+38 ° (angle degree)</li>
|
||||||
<li><b>dpt14.008</b> -1.4e-45..+1.7e+38 Js</li>
|
<li><b>dpt14.008</b> -1.4e-45..+1.7e+38 Js (angular momentum)</li>
|
||||||
<li><b>dpt14.009</b> -1.4e-45..+1.7e+38 rad/s</li>
|
<li><b>dpt14.009</b> -1.4e-45..+1.7e+38 rad/s (angular velocity)</li>
|
||||||
<li><b>dpt14.010</b> -1.4e-45..+1.7e+38 m²</li>
|
<li><b>dpt14.010</b> -1.4e-45..+1.7e+38 m² (area)</li>
|
||||||
<li><b>dpt14.011</b> -1.4e-45..+1.7e+38 F</li>
|
<li><b>dpt14.011</b> -1.4e-45..+1.7e+38 F (capacitance)</li>
|
||||||
<li><b>dpt14.012</b> -1.4e-45..+1.7e+38 C/m²</li>
|
<li><b>dpt14.012</b> -1.4e-45..+1.7e+38 C/m² (charge density - surface)</li>
|
||||||
<li><b>dpt14.013</b> -1.4e-45..+1.7e+38 C/m³</li>
|
<li><b>dpt14.013</b> -1.4e-45..+1.7e+38 C/m³ ((charge density - volume)</li>
|
||||||
<li><b>dpt14.014</b> -1.4e-45..+1.7e+38 m²/N</li>
|
<li><b>dpt14.014</b> -1.4e-45..+1.7e+38 m²/N (compressibility)</li>
|
||||||
<li><b>dpt14.015</b> -1.4e-45..+1.7e+38 S</li>
|
<li><b>dpt14.015</b> -1.4e-45..+1.7e+38 S (conductance - 1/Ω)</li>
|
||||||
<li><b>dpt14.016</b> -1.4e-45..+1.7e+38 S/m</li>
|
<li><b>dpt14.016</b> -1.4e-45..+1.7e+38 S/m (conductivity - electrical)</li>
|
||||||
<li><b>dpt14.017</b> -1.4e-45..+1.7e+38 kg/m³</li>
|
<li><b>dpt14.017</b> -1.4e-45..+1.7e+38 kg/m³ (density)</li>
|
||||||
<li><b>dpt14.018</b> -1.4e-45..+1.7e+38 C</li>
|
<li><b>dpt14.018</b> -1.4e-45..+1.7e+38 C (electric charge)</li>
|
||||||
<li><b>dpt14.019</b> -1.4e-45..+1.7e+38 A</li>
|
<li><b>dpt14.019</b> -1.4e-45..+1.7e+38 A (electric current)</li>
|
||||||
<li><b>dpt14.027</b> -1.4e-45..+1.7e+38 V</li>
|
<li><b>dpt14.020</b> -1.4e-45..+1.7e+38 A/m² (electric current density)</li>
|
||||||
<li><b>dpt14.031</b> -1.4e-45..+1.7e+38 J</li>
|
<li><b>dpt14.021</b> -1.4e-45..+1.7e+38 C*m (dipole moment)</li>
|
||||||
<li><b>dpt14.032</b> -1.4e-45..+1.7e+38 N</li>
|
<li><b>dpt14.022</b> -1.4e-45..+1.7e+38 C/m² (electric displacement)</li>
|
||||||
<li><b>dpt14.033</b> -1.4e-45..+1.7e+38 Hz</li>
|
<li><b>dpt14.023</b> -1.4e-45..+1.7e+38 V/m (electric field strenght)</li>
|
||||||
<li><b>dpt14.034</b> -1.4e-45..+1.7e+38 rad/s</li>
|
<li><b>dpt14.024</b> -1.4e-45..+1.7e+38 c (electric flux)</li>
|
||||||
<li><b>dpt14.038</b> -1.4e-45..+1.7e+38 Ω</li>
|
<li><b>dpt14.025</b> -1.4e-45..+1.7e+38 C/m² (electric flux density)</li>
|
||||||
<li><b>dpt14.039</b> -1.4e-45..+1.7e+38 m</li>
|
<li><b>dpt14.026</b> -1.4e-45..+1.7e+38 C/m² (electric polarization)</li>
|
||||||
<li><b>dpt14.051</b> -1.4e-45..+1.7e+38 kg</li>
|
<li><b>dpt14.027</b> -1.4e-45..+1.7e+38 V (electric potential)</li>
|
||||||
<li><b>dpt14.052</b> -1.4e-45..+1.7e+38 kg/s</li>
|
<li><b>dpt14.028</b> -1.4e-45..+1.7e+38 V (electric potential difference)</li>
|
||||||
<li><b>dpt14.053</b> -1.4e-45..+1.7e+38 N/s</li>
|
<li><b>dpt14.029</b> -1.4e-45..+1.7e+38 A/m² (electromagnetic moment)</li>
|
||||||
<li><b>dpt14.054</b> -1.4e-45..+1.7e+38 rad</li>
|
<li><b>dpt14.030</b> -1.4e-45..+1.7e+38 V (electromotive force)</li>
|
||||||
<li><b>dpt14.055</b> -1.4e-45..+1.7e+38 °</li>
|
<li><b>dpt14.031</b> -1.4e-45..+1.7e+38 J (energy)</li>
|
||||||
<li><b>dpt14.056</b> -1.4e-45..+1.7e+38 W</li>
|
<li><b>dpt14.032</b> -1.4e-45..+1.7e+38 N (force)</li>
|
||||||
<li><b>dpt14.057</b> -1.4e-45..+1.7e+38 cosφ</li>
|
<li><b>dpt14.033</b> -1.4e-45..+1.7e+38 Hz (frequency)</li>
|
||||||
<li><b>dpt14.058</b> -1.4e-45..+1.7e+38 Pa</li>
|
<li><b>dpt14.034</b> -1.4e-45..+1.7e+38 rad/s (angular frequency)</li>
|
||||||
<li><b>dpt14.059</b> -1.4e-45..+1.7e+38 Ω</li>
|
<li><b>dpt14.035</b> -1.4e-45..+1.7e+38 J/K (heat capacity)</li>
|
||||||
<li><b>dpt14.060</b> -1.4e-45..+1.7e+38 Ω</li>
|
<li><b>dpt14.036</b> -1.4e-45..+1.7e+38 W (heat flow rate)</li>
|
||||||
<li><b>dpt14.065</b> -1.4e-45..+1.7e+38 m/s</li>
|
<li><b>dpt14.037</b> -1.4e-45..+1.7e+38 J (heat quantity)</li>
|
||||||
<li><b>dpt14.068</b> -1.4e-45..+1.7e+38 °C</li>
|
<li><b>dpt14.038</b> -1.4e-45..+1.7e+38 Ω (impedance)</li>
|
||||||
<li><b>dpt14.069</b> -1.4e-45..+1.7e+38 K</li>
|
<li><b>dpt14.039</b> -1.4e-45..+1.7e+38 m (lenght)</li>
|
||||||
<li><b>dpt14.070</b> -1.4e-45..+1.7e+38 K</li>
|
<li><b>dpt14.040</b> -1.4e-45..+1.7e+38 J (light quantity)</li>
|
||||||
<li><b>dpt14.074</b> -1.4e-45..+1.7e+38 s</li>
|
<li><b>dpt14.041</b> -1.4e-45..+1.7e+38 cd/m² (luminance)</li>
|
||||||
<li><b>dpt14.075</b> -1.4e-45..+1.7e+38 Nm</li>
|
<li><b>dpt14.042</b> -1.4e-45..+1.7e+38 lm (luminous flux)</li>
|
||||||
<li><b>dpt14.076</b> -1.4e-45..+1.7e+38 m³</li>
|
<li><b>dpt14.043</b> -1.4e-45..+1.7e+38 cd (luminous intensity)</li>
|
||||||
<li><b>dpt14.077</b> -1.4e-45..+1.7e+38 m³/s</li>
|
<li><b>dpt14.044</b> -1.4e-45..+1.7e+38 A/m (magnetic field strength)</li>
|
||||||
<li><b>dpt14.078</b> -1.4e-45..+1.7e+38 N</li>
|
<li><b>dpt14.045</b> -1.4e-45..+1.7e+38 Wb (magnetic flux)</li>
|
||||||
<li><b>dpt14.079</b> -1.4e-45..+1.7e+38 J</li>
|
<li><b>dpt14.046</b> -1.4e-45..+1.7e+38 T (magnetic flux density)</li>
|
||||||
<li><b>dpt14.080</b> -1.4e-45..+1.7e+38 VA</li>
|
<li><b>dpt14.047</b> -1.4e-45..+1.7e+38 A/m² (magnetic moment)</li>
|
||||||
|
<li><b>dpt14.048</b> -1.4e-45..+1.7e+38 T (magnetic polarization)</li>
|
||||||
|
<li><b>dpt14.049</b> -1.4e-45..+1.7e+38 A/m (magnetization)</li>
|
||||||
|
<li><b>dpt14.050</b> -1.4e-45..+1.7e+38 A (magneto motive force)</li>
|
||||||
|
<li><b>dpt14.051</b> -1.4e-45..+1.7e+38 kg (mass)</li>
|
||||||
|
<li><b>dpt14.052</b> -1.4e-45..+1.7e+38 kg/s (mass flux)</li>
|
||||||
|
<li><b>dpt14.053</b> -1.4e-45..+1.7e+38 N/s (momentum)</li>
|
||||||
|
<li><b>dpt14.054</b> -1.4e-45..+1.7e+38 rad (phase angle radiant)</li>
|
||||||
|
<li><b>dpt14.055</b> -1.4e-45..+1.7e+38 ° (phase angle degrees)</li>
|
||||||
|
<li><b>dpt14.056</b> -1.4e-45..+1.7e+38 W (power)</li>
|
||||||
|
<li><b>dpt14.057</b> -1.4e-45..+1.7e+38 cosφ (power factor)</li>
|
||||||
|
<li><b>dpt14.058</b> -1.4e-45..+1.7e+38 Pa (pressure)</li>
|
||||||
|
<li><b>dpt14.059</b> -1.4e-45..+1.7e+38 Ω (reactance)</li>
|
||||||
|
<li><b>dpt14.060</b> -1.4e-45..+1.7e+38 Ω (resistance)</li>
|
||||||
|
<li><b>dpt14.061</b> -1.4e-45..+1.7e+38 Ω/m (resistivity)</li>
|
||||||
|
<li><b>dpt14.062</b> -1.4e-45..+1.7e+38 H (self inductance)</li>
|
||||||
|
<li><b>dpt14.063</b> -1.4e-45..+1.7e+38 sr (solid angle)</li>
|
||||||
|
<li><b>dpt14.064</b> -1.4e-45..+1.7e+38 W/m² (sound intensity)</li>
|
||||||
|
<li><b>dpt14.065</b> -1.4e-45..+1.7e+38 m/s (speed)</li>
|
||||||
|
<li><b>dpt14.066</b> -1.4e-45..+1.7e+38 N/m² (stress)</li>
|
||||||
|
<li><b>dpt14.067</b> -1.4e-45..+1.7e+38 N/m (surface tension)</li>
|
||||||
|
<li><b>dpt14.068</b> -1.4e-45..+1.7e+38 °C (temperature)</li>
|
||||||
|
<li><b>dpt14.069</b> -1.4e-45..+1.7e+38 K (temperature absolute)</li>
|
||||||
|
<li><b>dpt14.070</b> -1.4e-45..+1.7e+38 K (temperature difference)</li>
|
||||||
|
<li><b>dpt14.071</b> -1.4e-45..+1.7e+38 J/K (thermal capacity)</li>
|
||||||
|
<li><b>dpt14.072</b> -1.4e-45..+1.7e+38 W/m (thermal conductivity)</li>
|
||||||
|
<li><b>dpt14.073</b> -1.4e-45..+1.7e+38 V/K (thermoelectric power)</li>
|
||||||
|
<li><b>dpt14.074</b> -1.4e-45..+1.7e+38 s (time)</li>
|
||||||
|
<li><b>dpt14.075</b> -1.4e-45..+1.7e+38 Nm (torque)</li>
|
||||||
|
<li><b>dpt14.076</b> -1.4e-45..+1.7e+38 m³ (volume)</li>
|
||||||
|
<li><b>dpt14.077</b> -1.4e-45..+1.7e+38 m³/s (volume flux)</li>
|
||||||
|
<li><b>dpt14.078</b> -1.4e-45..+1.7e+38 N (weight)</li>
|
||||||
|
<li><b>dpt14.079</b> -1.4e-45..+1.7e+38 J (work)</li>
|
||||||
|
<li><b>dpt14.080</b> -1.4e-45..+1.7e+38 VA (apparent power)</li>
|
||||||
<li><b>dpt15.000</b> Access-code (readonly)</li>
|
<li><b>dpt15.000</b> Access-code (readonly)</li>
|
||||||
<li><b>dpt16 </b> 14 char ASCII string</li>
|
<li><b>dpt16 </b> 14 char ASCII string</li>
|
||||||
<li><b>dpt16.000</b> 14 char ASCII string</li>
|
<li><b>dpt16.000</b> 14 char ASCII string</li>
|
||||||
@ -2606,6 +2699,7 @@ Examples:
|
|||||||
</ol>
|
</ol>
|
||||||
<br/>
|
<br/>
|
||||||
<b>Note: </b>dptRAW is for testing/debugging only! You can send/receive hex strings of unlimited length (assuming the KNX-HW supports it).
|
<b>Note: </b>dptRAW is for testing/debugging only! You can send/receive hex strings of unlimited length (assuming the KNX-HW supports it).
|
||||||
|
No conversion, limit-, plausibility-check is done, the hex values are sent unmodified to the KNX bus.
|
||||||
<pre> syntax: set <device> <gadName> <hex-string>
|
<pre> syntax: set <device> <gadName> <hex-string>
|
||||||
<code> Examples of valid / invalid hex-strings:
|
<code> Examples of valid / invalid hex-strings:
|
||||||
00..3f # valid, single byte range x00-x3f
|
00..3f # valid, single byte range x00-x3f
|
||||||
|
Loading…
x
Reference in New Issue
Block a user