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 ++ @@ -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
+
+
@@ -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