smartVISU
11:46, 12.10, v2.7

Grundlagen - Items

was und wie:

Um die Gruppenadressen (im folgenden GA oder GAs genannt) anzusprechen, arbeitet die smartVISU mit dem Backend SmartHome.py und den so genannten Items.
Das Verzeichnis dieser Items ist unter "Grundlagen-Einführung" benannt. Die Items haben die Dateiendung *.conf
Die Items enthalten unter anderen die notwendigen GAs selber, die dazugehörigen Datentypen, die Möglichkeit diese GA in einer Datenbank zu speichern, die Möglichkeit die GA über die VISU zu steuern und weitere.
Im Folgenden möchten wir aber nur auf minimale Punkte von SmartHome.py eingehen. Ein Link zu SmartHome.py ist ganz unten auf der Seite zu finden.
Items werden strukturiert angelegt und können zwecks der späteren Übersichtlichkeit Untergruppen enthalten. Die Anzahl der eckigen Klammern unterscheidet dabei die Gruppen bzw. Untergruppen.

Strukturaufbau Items

[Zweig1]
   [[Unterverzweigung_1.1]]
     [[[Unterverzweigung_1.1.1]]]
      [[[[Unterverzweigung_1.1.1.1]]]]
 
 Beispiel:
[EG]
   [[Wohnzimmer]]
       [[[Deckenlicht]]]
           [[[[schalten]]]]
           [[[[dimmen]]]]
       [[[Rollo]]]
           [[[[fahren]]]]
           [[[[stop]]]]
           [[[[position]]]]
   [[Bad]]
       [[[Spiegellicht_schalten]]]

Ein erweitertes Beispiel:
Um eine Leuchte (z.B. "Spot 3") zu schalten, wurde der dazugehörige Aktorausgang in der ETS mit der GA 0/0/3 verknüpft. Die Rückmeldung erhalten wir über die GA 0/1/3.
Das dazugehörige Item könnte wie folgt aussehen.

Beispiel Item:

[EG]
   [[Wohnzimmer]]
       [[[Spot3Schalten]]]
       type = bool
       visu_acl = rw
       knx_dpt = 1
       knx_listen = 0/1/3
       knx_send = 0/0/3
       knx_init = 0/1/3

Hier wurde jetzt folgendes definiert:
  • type = bool - Das Attribut des Item ist bool (s. unten Datentypen und Attribute)
  • visu_acl = rw - Das Item kann über die Visu angesprochen werden (rw = read and write / ro = real only).
  • knx_dpt = 1 - Der Datapoint (dpt) des Item ist 1 (=1bit)(s. unten Datentypen und Attribute)
  • knx_listen = 0/1/3 - Das Item EG.Wohnzimmer.Spot3schalten "hört" auf die GA 0/1/3
  • knx_send = 0/0/3 - Das Item EG.Wohnzimmer.Spot3schalten sendet auf die GA 0/0/3
  • knx_init = 0/1/3 - Das Item EG.Wohnzimmer.Spot3schalten initialisiert die GA 0/1/3 beim starten von SmartHome.py *)

Datentypen und Attribute:

Diese Datentypen und Attribute sind verbindlich. Der datapoint muß im item zum jeweiligen Type passen.

Auflistung

DPT Data Type Werte
1    
2     
3     
4.002
5     
5.001     
6     
7     
8     
9     
10     
11     
12     
13     
14     
16     
16.001     
17     
20     
24     
232
1 bit     
2 bit     
4 bit     
8 bit     
8 bit     
8 bit     
8 bit     
2 byte     
2 byte     
2 byte     
3 byte     
3 byte     
4 byte     
4 byte     
4 byte     
14 byte
14 byte
8 bit     
8 bit     
var     
3 byte
bool     
list     
list     
str     
num     
num     
num     
num     
num     
num     
foo     
foo     
num     
num     
num     
str     
str     
num     
num     
str     
list
True | False
[0, 0] - [1, 1]
[0, 0] - [1, 7]
1 character (8859_1) e.g. ‘c’
0 - 255
0 - 100
-128 - 127
0 - 65535
-32768 - 32767
-671088,64 - 670760,96
datetime.time
datetime.date
0 - 4294967295
-2147483648 - 2147483647
4-Octet Float Value IEEE 754
14 characters (ASCII)
14 characters (8859_1)
Scene: 0 - 63
HVAC: 0 - 255
ulimited string (8859_1)
RGB: [0, 0, 0] - [255, 255, 255]


HINWEIS:
*) Im obigen Beispiel verwenden wir knx_init = 0/1/3. Dies besagt, das die Gruppenadresse beim Start oder Neustart von SmartHome.py diese Gruppenadresse initialisiert wird. Sprich, es wird eine Leseanforderung an diese Gruppenadresse geschickt. Benutzt man nun in jedem Item das knx_init, wird je nach Anzahl der Items und der damit verbundenen Gruppenadressen logischerweise eine entsprechend hohe Buslast "produziert". SmartHome.py geht daher einen Schritt weiter und fängt dies mit knx_cache ab. Man hat die Möglichkeit sich jedes Telegramm in einen Cache schreiben zu lassen. Mit knx_cache = 0/1/3 wird bei einem Neustart von SmartHome.py nun nicht direkt der Bus durch eine Leseanforderung belastet, sondern es wird der letzte Wert aus dem Cache genommen. Nur wenn kein Cache-Wert vorhanden ist, wird eine Leseanforderung auf die Gruppenadresse gesendet. Dies verringert die Buslast beim Neustart enorm.

Weitere Einzelheiten, Infos und Dokumentationen zu SmartHome.py findet man in englischer Sprache hier .