From 45d18c5badf9d6e7fb6ea3c1ad99d828d2e4b072 Mon Sep 17 00:00:00 2001 From: andi291 Date: Sun, 5 Jun 2016 19:11:10 +0000 Subject: [PATCH] 10_KNX.pm: Changed Doku, changed autocreate-naming, fixed dpt10-sending-now git-svn-id: https://svn.fhem.de/fhem/trunk@11623 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/10_KNX.pm | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/fhem/FHEM/10_KNX.pm b/fhem/FHEM/10_KNX.pm index 43beb70ea..7b4573df1 100644 --- a/fhem/FHEM/10_KNX.pm +++ b/fhem/FHEM/10_KNX.pm @@ -13,6 +13,7 @@ # ABU 20160416 Changed SplitFn again # ABU 20160422 Added dpt9.021 - mA # ABU 20160529 Changed Doku +# ABU 20160605 Changed Doku, changed autocreate-naming, fixed dpt10-sending-now package main; @@ -820,10 +821,17 @@ KNX_Parse($$) { } else { my $gad = hexToName($dest); + #remove slashes + #$name =~ s/\///g; + #my $name = "KNX_" . $gad; + my ($line, $area, $device) = split ("/", $gad); + my $name = sprintf("KNX_%.2d%.2d%.3d", $line, $area, $device); + my $ret = "KNX Unknown device $dest ($gad), Value $val, please define it"; - Log3 ($dest, 3, "KNX Unknown device $dest ($gad), Value $val, please define it"); + Log3 ($name, 3, "KNX Unknown device $dest ($gad), Value $val, please define it"); + #needed for autocreate - return "UNDEFINED KNX_$dest KNX $gad:$modelErr"; + return "UNDEFINED $name KNX $gad:$modelErr"; } } @@ -1076,7 +1084,7 @@ encodeByDpt ($$$) { $hours += $hoffset; $value = "$hours:$mins:$secs"; - $numval = $secs + ($mins<<8) + (($hoffset + $hours)<<16); + $numval = $secs + ($mins<<8) + ($hours<<16); } else { my ($hh, $mm, $ss) = split (":", $value); @@ -1469,7 +1477,8 @@ decodeByDpt ($$$) { via a different group, you have to index it (set <devname> value <17.0> <g2>).
If you use the readingName, readings are based on this name (e.g. hugo-set, hugo-get for name hugo).

-

The module autocreate is creating a new definition for any unknown sender. The device itself will be NOT fully available, until you added a DPT to the definition.

+

The module autocreate is creating a new definition for any unknown sender. The device itself will be NOT fully available, until you added a DPT to the definition. The name will be + KNX_nnmmooo where nn is the line adress, mm the area and ooo the device.

Example:

@@ -1477,6 +1486,17 @@ decodeByDpt ($$$) {
       define lamp1 KNX 0/10/12:dpt1:meinName 0/0/5:dpt1.001
       define lamp1 KNX 0A0C:dpt1.003 myTul
       
+ + One hint regarding dpt1 (binary): all the sub-types have to be used with keyword value. Received telegrams are already encoded to their representation. + Having the on/off button (for send values) without keyword value is an absolutely special use-case and only valid for dpt1 (not the subs).
+ +

Example:

+
+      define rollo KNX 0/10/12:dpt1.008
+	  set rollo value up
+	  set rollo value down
+      
+

Set

@@ -1515,9 +1535,11 @@ decodeByDpt ($$$) {

The current date and time can be sent to the bus by the following settings:

       define timedev KNX 0/0/7:dpt10
+	  attr timedev eventMap /value now:now/
       attr timedev webCmd now
       
       define datedev KNX 0/0/8:dpt11
+	  attr datedev eventMap /value now:now/
       attr datedev webCmd now
       
       # send every midnight the new date
@@ -1714,7 +1736,7 @@ decodeByDpt ($$$) {
 	Wollt Ihr über eine andere Gruppe senden. müsst Ihr diese indizieren (set <devname> value <17.0> <g2>).

Das Modul autocreate generiert eine Instanz für jede unbekannte Gruppenadresse. Das Gerät selbst wird jedoch NICHT korrekt funktionieren, so lange noch kein korrekter - DPT angelegt ist.

+ DPT angelegt ist. Der Name ist immer KNX_nnmmooo wobei nn die Linie ist, mm der Bereich und ooo die Geräteadresse.

Example:

@@ -1722,6 +1744,17 @@ decodeByDpt ($$$) {
       define lamp1 KNX 0/10/12:dpt1:meinName 0/0/5:dpt1.001
       define lamp1 KNX 0A0C:dpt1.003 myTul
       
+ + Ein Hinweis bezüglich dem binären Datentyp dpt1: alle Untertypen müssen über das Schlüsselwort value gesetzt werden. Empfangene Telegramme werden entsprechend ihrer Definition automatisch + umbenannt. Die zur Verfügung stehenden on/off Schaltflächen ohne den Schlüssel value sind ein absoluter Sonderfall und gelten nur für den dpt1 selbst (nicht die Untertypen). + +

Example:

+
+      define rollo KNX 0/10/12:dpt1.008
+	  set rollo value up
+	  set rollo value down
+      
+

Set

@@ -1759,9 +1792,11 @@ decodeByDpt ($$$) {

Aktuelle Uhrzeit / Datum können wie folgt auf den Bus gelegt werden:

       define timedev KNX 0/0/7:dpt10
+	  attr timedev eventMap /value now:now/
       attr timedev webCmd now
       
       define datedev KNX 0/0/8:dpt11
+	  attr datedev eventMap /value now:now/
       attr datedev webCmd now
       
       # send every midnight the new date