vito.xml: Programm-unabhängige XML Konfigurationsdatei.


(Die Konfiguration für vcontrold findet sich hier)

Diese Konfiguratinsdatei dient zur programm-unabhängigen Definition von Kommandos für die Vitotronic Protokolle.
Da es sowohl protokoll- als auch anlagespezifischen Unterschiede gibt, wurde hier ein flexibler Ansatz gewählt.

Möchte ein Programm dieses Format nutzen, finden sich hier weitere Infomationen.


Abschnitte:

<devices>:

definiert die unterstützten Anlagentypen.
Folgende Attribute müssen pro <device> definiert werden:
ID: Die interne ID der Anlage. Die Referenzierung der Befehle findet an Hand dieser ID statt.
name: Der interne Name der Anlage, Dieser Namen dient nur zur Information.
protocol: Mit diesem Attribut wird das Protokoll und die damit verbundenen internen Befehle getaddr und setaddr definiert.

Beispiel:
  <device ID="2098" name="V200KW2" protocol="KW2"/>

Die Definition der einzelnen Protokolle und die dort verwendeten Byte folgen zum Lesen und Schreiben der Adressen werden nicht in dieser Datei definiert, sondern müssen programmabhängig gelöst werden.
(In der Datei vcontrold.xml wird dies z.B, auch in XML realisiert, eine hardkodierte Lösung ist aber ebenso vorstellbar).

<commands>
definiert die Kommandos pro Device.
Die einzelnen Befehle unterscheiden sich sowohl vom Anlagentyp (<device>), als auch vom verwendeten Protokoll. Um hier eine einfache und übersichtliche Konfiguration zu ermöglichen, wurde folgendes Format gewählt:
  1. Es gibt pro Befehl ein Default Konfiguration, die für alle nicht explizit aufgeführten Devices gilt.
  2. Benötigt ein bestimmter Anlagentyp eine spezielle Konfiguration, wird diese unterhalb der default Konfiguration aufgeführt
  3. Unterstütz eine Anlage bestimmte Befehle nicht, so wird dies durch eine leere Devicekonfiguration definiert.

Da nicht alle Befehle lesend und schreibend genutzt werden können, wird jeder Befehl explizit für lesend oder schreibend definiert. Dies geschieht durch Angabe des Protokoll-Kommandos (s.u.)

Ein command hat folgende Attribute:
name: Mit diesem Namen wird der Befehl angesprochen (wenn man den Einsatz einer RRDB zur Datenspeicherung in Betracht zieht, dann sollten die Command-Namen nicht länger als 19 Zeichen sein und keine Punkte enthalten. Das mag das RRDTool nicht.)
protocmd: Das benutzte interne Protokollkommando (getaddr oder setaddr)

Die Definiton eines Befehls besteht aus der Angabe der Adresse, der Anzahl der Bytes und die Art der Interpretation dieses Wertes.
addr: Adresse als 4Byte Hex (siehe Adressen)
len: Die Anzahl der zu lesenden oder schreibenden Bytes
bit: Bit-Postition, die für diesen Befehl ausgwertet werden soll. Der hier definierte Wert steht als BP im <icalc> Ausdruck zur Verfügung.
unit: Die Einheit des Wertes. Diese Einheit muss programmspezifisch zur Verfügung gestellt werden.
description: Eine Beschreibung des Befehls
error: Bytes in Hex durch Blank getrennt, bei der das Ergebnis als falsch verworfen wird. Beim GWG Protokoll kann damit ein 05 aals fehlerhaft abgefangen werden. Die Anzahl der Bytes muss mit len übereinstimmen.
z.B. <error> 05 05</error>: Werden zwei Bytes 05 empfangen, so ist die Antwort falsch. Der Befehl wird dann <retry> mal wiederholt (siehe Protokoll-Kommandos in der vcontrold.xml).

Beispiel:
<command name='gettempA' protocmd='getaddr'>
             <addr>0800</addr>
             <len>2</len>
             <unit>UT</unit>
             <description>Ermittle die Aussentemeratur in Grad C</description>

<command name='getZirkuStatus' protocmd='getaddr'>
         <description>Ermittle Zustand der Zirk.pumpe</description>
         <device ID="2053">
             <addr>01</addr>
             <len>1</len>
             <bit>2</bit>
             <unit>BST</unit>
          </device>
</command>
 

benötigt eine anderer Anlagentyp andere Konfigurationen für den gleichen Befehl, so wird dies unterhalb der default Konfiguration aufgeführt:
<commands>
        <command name='gettempA' protocmd='getaddr'>
             .... default Konfig
             <device ID="2098">
                  <addr>5525</addr>
                  <len>2</len>
                  <unit>UT</unit>
             </device>
Unter Umständen benötigt die Definition für ein anderes Device einen anderes Protokoll-Kommando. Ist dies notwendig, kann es als zusätzliches Attribut
<device ID='xxxx' protocmd='pcommand'>
angegeben werden.
Dies ist.z.B. bei der Definition des Befehls zu Abfrage der Gerätekennung notwendig. Das GWG Prorokoll nutzt hier eine andere Abfragemethode (virtual read):
<command name='getDevType' protocmd='getaddr'>
           <addr>00F8</addr>
           <len>2</len>
           <unit>DT</unit>
           <description>Ermittle Device Typ der Anlage</description>
           <device ID="2053" protocmd='getvaddr'>
                 <addr>F8</addr>
                 <len>4</len>
           </device>
</command>
 


Steht bei einer bestimmte Anlage einen Befehl nicht zur Verfügung, so wird dies so definiert:
<command name='gettempA' protocmd='getaddr'>
            --- default Konfig
             <device ID="2098">
             --- Device spezifische Konfig
           </device>
             <device ID="2053"/>



Gesmatbeispiel
<vito>
  <devices>
        <device ID="2098" name="V200KW2" protocol="KW2"/>
        <device ID="2053" name="GWG_VBEM" protocol="GWG"/>
        <device ID="20A4" name="V200GW1" protocol="KW2"/>
  </devices>
  <commands>
        <command name='gettempA' protocmd='getaddr'>
             <addr>0800</addr>
             <len>2</len>
             <unit>UT</unit>
             <description>Ermittle die Aussentemeratur in Grad C</description>
             <device ID="2098">
                  <addr>5525</addr>
                  <len>2</len>
                  <unit>UT</unit>
             </device>
             <device ID="2053"/>
        </command>
        <command name='gettempWW' protocmd='getaddr'>
             <addr>0804</addr>
             <len>2</len>
             <unit>UT</unit>
             <description>Ermittle die Warmwassertemepratur in Grad C</description>
             <device ID="2053">
                  <addr>0809</addr>
                  <len>2</len>
                  <unit>UT</unit>
             </device>
        </command>
  </commands>
</vito>