summaryrefslogtreecommitdiff
path: root/ebus-xml
diff options
context:
space:
mode:
authorYves Fischer <yvesf-git@xapek.org>2016-08-14 19:25:26 +0200
committerYves Fischer <yvesf-git@xapek.org>2016-08-14 19:25:26 +0200
commitcaae83f445935c06cd6aef36f283a4688675278a (patch)
tree5e63cbfd2877195430a8657dcd75f42b6a4d7110 /ebus-xml
downloadebus-caae83f445935c06cd6aef36f283a4688675278a.tar.gz
ebus-caae83f445935c06cd6aef36f283a4688675278a.zip
refactored ebus code
Diffstat (limited to 'ebus-xml')
-rw-r--r--ebus-xml/Makefile16
-rw-r--r--ebus-xml/dist/2011-06-25/ebus.docbook.pdfbin0 -> 152206 bytes
-rw-r--r--ebus-xml/dist/2016-08-14/ebus.docbook.pdfbin0 -> 87783 bytes
-rw-r--r--ebus-xml/dist/2016-08-14/ebus.xml258
-rw-r--r--ebus-xml/ebus-0.1.xsd158
-rw-r--r--ebus-xml/ebus.docbook.xslt244
-rw-r--r--ebus-xml/ebus.xml256
7 files changed, 932 insertions, 0 deletions
diff --git a/ebus-xml/Makefile b/ebus-xml/Makefile
new file mode 100644
index 0000000..1a8f4fc
--- /dev/null
+++ b/ebus-xml/Makefile
@@ -0,0 +1,16 @@
+TARGET_DIST=dist/$(shell date --rfc-3339=date)
+
+all: doc
+
+doc:
+ test -d build || mkdir build
+ xsltproc ebus.docbook.xslt ebus.xml > build/ebus.docbook.xml
+ dblatex -T db2latex build/ebus.docbook.xml
+
+dist: doc
+ test -d $(TARGET_DIST) || mkdir -p $(TARGET_DIST)
+ cp build/ebus.docbook.pdf $(TARGET_DIST)
+ cp ebus.xml $(TARGET_DIST)
+
+validate:
+ xmllint --noout --schema ebus-0.1.xsd ebus.xml
diff --git a/ebus-xml/dist/2011-06-25/ebus.docbook.pdf b/ebus-xml/dist/2011-06-25/ebus.docbook.pdf
new file mode 100644
index 0000000..819f85e
--- /dev/null
+++ b/ebus-xml/dist/2011-06-25/ebus.docbook.pdf
Binary files differ
diff --git a/ebus-xml/dist/2016-08-14/ebus.docbook.pdf b/ebus-xml/dist/2016-08-14/ebus.docbook.pdf
new file mode 100644
index 0000000..dfba6fc
--- /dev/null
+++ b/ebus-xml/dist/2016-08-14/ebus.docbook.pdf
Binary files differ
diff --git a/ebus-xml/dist/2016-08-14/ebus.xml b/ebus-xml/dist/2016-08-14/ebus.xml
new file mode 100644
index 0000000..39ebca8
--- /dev/null
+++ b/ebus-xml/dist/2016-08-14/ebus.xml
@@ -0,0 +1,258 @@
+<?xml version="1.0" standalone="yes"?>
+<!-- Ebus Paketspezifikation. https://xapek.org/ -->
+<ebus xmlns="http://xapek.org/ebus/0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xapek.org/ebus/0.1 ebus-0.1.xsd">
+ <devices>
+ <device address="0" type="master" name="pcModem">
+ <description lang="de">PC oder Modem</description>
+ <description lang="en">PC or Modem</description>
+ </device>
+ <device address="3" type="master" name="feuerungsautomat1">
+ <description lang="de">Feuerungsautomat 1</description>
+ </device>
+ <device address="10" type="master" name="rcClockModel">
+ <description lang="de">RC-Clock Model</description>
+ </device>
+ <device address="7" type="master" name="unknown">
+ <description lang="de">Unbekannt</description>
+ </device>
+ <device address="16" type="master" name="heizkreisregler2">
+ <description lang="de">Heizkreisregler 2</description>
+ </device>
+ <device address="17" type="master" name="busInterface1">
+ <description lang="de">Bus Interface 1</description>
+ </device>
+ <device address="19" type="master" name="feuerungsautomat2">
+ <description lang="de">Feuerungsautomat 2</description>
+ </device>
+ <device address="48" type="master" name="heizkreisregler1">
+ <description lang="de">Heizkreisregler 1</description>
+ </device>
+ <device address="49" type="master" name="busInterface2">
+ <description lang="de">Bus Interface 2</description>
+ </device>
+ <device address="51" type="master" name="feuerungsautomat3">
+ <description lang="de">Feuerungsautomat 3</description>
+ </device>
+ <device address="112" type="master" name="heizkreisregler2">
+ <description lang="de">Heizkreisregler 2</description>
+ </device>
+ <device address="113" type="master" name="heizkreisregler9">
+ <description lang="de">Heizkreisregler 9</description>
+ </device>
+ <device address="115" type="master" name="feuerungsautomat4">
+ <description lang="de">Feuerungsautomat 4</description>
+ </device>
+ <device address="241" type="master" name="heizkreisregler10">
+ <description lang="de">Heizkreisregler 10</description>
+ </device>
+ <device address="80" type="slave" name="mischer1">
+ <description lang="de">Mischer 1</description>
+ </device>
+ <device address="81" type="slave" name="mischer2">
+ <description lang="de">Mischer 2</description>
+ </device>
+ <device address="144" type="slave" name="fernsteller1">
+ <description lang="de">Raumgeräte/Fernsteller 1</description>
+ </device>
+ <device address="145" type="slave" name="fernsteller2">
+ <description lang="de">Raumgeräte/Fernsteller 2</description>
+ </device>
+ <device address="240" type="master" name="heizkreisregler3">
+ <description lang="de">Heizkreisregler 3</description>
+ </device>
+ <device address="240" type="master" name="feuerungsautomat5">
+ <description lang="de">Feuerungsautomat 5</description>
+ </device>
+ <device address="254" type="broadcast" name="broadcast">
+ <description lang="de">Broadcast-Adresse</description>
+ </device>
+ <device address="255" type="master" name="pc">
+ <description lang="de">PC</description>
+ </device>
+ </devices>
+ <packets>
+ <packet primary="5" secondary="3" name="betriebsdatenRegler1">
+ <description lang="de">Betriebsdaten des Feuerungsautomaten an den Regler Block1</description>
+ <fields>
+ <byte offset="3" name="stellgradKesselleistung">
+ <description lang="de">Stellgrad Kesselleistung</description>
+ </byte>
+ <data1c offset="4" name="kesselTemperatur">
+ <description lang="de">Kessel Temperatur</description>
+ </data1c>
+ <byte offset="5" name="ruecklaufTemperatur">
+ <description lang="de">Rücklauf Temperatur</description>
+ </byte>
+ <byte offset="6" name="boilerTemperatur">
+ <description lang="de">Boiler Temperatur</description>
+ </byte>
+ <data1b offset="7" name="aussenTemperatur">
+ <description lang="de">Aussentemperatur</description>
+ </data1b>
+ </fields>
+ </packet>
+ <packet primary="5" secondary="7"
+ name="betriebsdatenFeuerungsautomat">
+ <description lang="de">"Betriebsdaten des Reglers an den Feuerungsautomaten</description>
+ <fields>
+ <byteEnum offset="0" name="betriebszustand">
+ <option value="0" name="brennerAbschalten">
+ <description lang="de">Brenner Abschalten</description>
+ </option>
+ <option value="1" name="keineAktion">
+ <description lang="de">Keine Aktion</description>
+ </option>
+ <option value="85" name="brauchwasserbereitung">
+ <description lang="de">Brauchwasserbereitung</description>
+ </option>
+ <option value="170" name="heizbetrieb">
+ <description lang="de">Heizbetrieb</description>
+ </option>
+ <option value="204" name="emissionskontrolle">
+ <description lang="de">Emissionskontrolle</description>
+ </option>
+ <option value="221" name="tuevFunktion">
+ <description lang="de">TÜV Funktion</description>
+ </option>
+ <option value="238" name="reglerStopp">
+ <description lang="de">Regler Stopp</description>
+ </option>
+ <option value="102" name="brauchwasserReglerstopp">
+ <description lang="de">Brauchwasserbereitung bei Reglerstoppfunktion</description>
+ </option>
+ <option value="187" name="brauchwasserHeizbetrieb">
+ <description lang="de">Brauchwasserbereitung bei Heizbetrieb</description>
+ </option>
+ <option value="68" name="reglerstoppStufig">
+ <description lang="de">Reglerstoppfunktion bei stufigem Betrieb</description>
+ </option>
+ </byteEnum>
+ <byteEnum offset="1" name="aktion">
+ <option value="0" name="keineAktion">
+ <description lang="de">Keine Aktion</description>
+ </option>
+ <option value="1" name="ausschaltenKesselpumpe">
+ <description lang="de">Ausschalten Kesselpumpe</description>
+ </option>
+ <option value="2" name="einschaltenKesselpumpe">
+ <description lang="de">Einschalten Kesselpumpe</description>
+ </option>
+ <option value="3" name="ausschaltenVariableVerbraucher">
+ <description lang="de">Ausschalten variable Verbraucher</description>
+ </option>
+ <option value="4" name="einschaltenVariableVerbraucher">
+ <description lang="de">Einschalten variable Verbraucher</description>
+ </option>
+ </byteEnum>
+ <data2c offset="2" name="kesselSollwertTemperatur">
+ <description lang="de">Kessel Temperatur Sollwert</description>
+ </data2c>
+ <data2b offset="4" name="kesselSollwertDruck">
+ <description lang="de">Kesseldruck Sollwert</description>
+ </data2b>
+ <data1c offset="6" name="stellgrad">
+ <description lang="de">Stellgrad</description>
+ </data1c>
+ <data1c offset="7" name="brauchwasserSollwert">
+ <description lang="de">Brauchwasser Sollwert</description>
+ </data1c>
+ </fields>
+ </packet>
+
+ <packet primary="7" secondary="0" name="datumZeit">
+ <description lang="de">Datum/Zeit Meldung eines eBus Master</description>
+ <fields>
+ <data2b offset="0" name="aussenTemperatur" />
+ <bcd offset="2" name="sekunden" />
+ <bcd offset="3" name="minuten" /><!-- FEHLER ab hier beim offset??? -->
+ <bcd offset="4" name="stunden" />
+ <bcd offset="5" name="tag" />
+ <bcd offset="6" name="monat" />
+ <bcd offset="7" name="wochentag" />
+ <bcd offset="8" name="jahr" />
+ </fields>
+ </packet>
+
+ <packet primary="8" secondary="0" name="sollwertuebertragungRegler">
+ <description lang="de">Sollwertübertragung des Reglers an andere Regler</description>
+ <fields>
+ <data2b offset="0" name="TK_soll">
+ <description lang="de">Kessel Sollwert in °C [1/256]</description>
+ </data2b>
+ <data2b offset="2" name="TA_ist">
+ <description lang="de">Aussentemperatur in °C [1/256]</description>
+ </data2b>
+ <data1b offset="4" name="L_zwang">
+ <description lang="de">Leistungszwang in Prozent</description>
+ </data1b>
+ <bit offset="5" name="Status">
+ <description lang="de">Status</description>
+ </bit>
+ <data2b offset="6" name="TB_soll">
+ <description lang="de">Brauchwassersollwert</description>
+ </data2b>
+ </fields>
+ </packet>
+
+ <packet primary="3" secondary="8" name="brenstoffmengeLesen">
+ <description lang="de">Gesamtbrennstoffmenge Lesen</description>
+ <fields />
+ </packet>
+
+ <!-- #x50, Kromschröder Spezial -->
+ <packet primary="80" secondary="20" name="vorlauftemperatur">
+ <description lang="de">Reversed from http://www.mikrocontroller.net/topic/91164#1070401</description>
+ <fields>
+ <data2b offset="0" name="vorlauftemperaturIst">
+ <description lang="de">Aktuelle Vorlauftemperatur
+ Mischerkreis</description>
+ </data2b>
+ <data2b offset="2" name="vorlauftemperaturSoll">
+ <description lang="de">Soll Vorlaufteperatur
+ Mischerkreis</description>
+ </data2b>
+ </fields>
+ </packet>
+
+ <packet primary="80" secondary="23" name="solarDaten">
+ <description lang="de">Solar Daten</description>
+ <fields>
+ <bit offset="0" name="solarPumpe">
+ <description lang="de">Betriebszustand Solarpumpe</description>
+ </bit>
+ <data2c offset="2" name="tempKollektor">
+ <description lang="de">>Wassertemperatur am Kollektor</description>
+ </data2c>
+ <data2c offset="4" name="tempWarmwasserSolar">
+ <description lang="de">Warmwassertemperatur am
+ Kollektor</description>
+ </data2c>
+ </fields>
+ </packet>
+
+ <packet primary="80" secondary="24" name="solarDatenSumme">
+ <description lang="de">Reversed siehe ebus-wiki</description>
+ <fields>
+ <data2b offset="0" name="aktuelleLeistung">
+ <description lang="de">Aktuelle Solarleistung</description>
+ </data2b>
+ <word offset="2" name="tagesertragLow">
+ <description lang="de">Tagesertrag low</description>
+ </word>
+ <word offset="4" name="tagesertragHigh">
+ <description lang="de">Tagesertrag high * 1000</description>
+ </word>
+ <word offset="6" name="ertragssumme">
+ <description lang="de">Ertragssumme</description>
+ </word>
+ <word offset="8" name="ertragssummeT">
+ <description lang="de">Ertragssumme T * 1000</description>
+ </word>
+ <word offset="10" name="ertragssummeM">
+ <description lang="de">Etragssumme M * 1000 * 1000</description>
+ </word>
+ </fields>
+ </packet>
+ </packets>
+</ebus>
diff --git a/ebus-xml/ebus-0.1.xsd b/ebus-xml/ebus-0.1.xsd
new file mode 100644
index 0000000..4e96176
--- /dev/null
+++ b/ebus-xml/ebus-0.1.xsd
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://xapek.org/ebus/0.1"
+ xmlns:tns="http://xapek.org/ebus/0.1" elementFormDefault="qualified">
+ <element name="ebus">
+ <complexType>
+ <sequence>
+ <element name="devices">
+ <complexType>
+ <sequence minOccurs="0">
+ <element name="device" type="tns:DEVICE"
+ maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ </element>
+ <element name="packets">
+ <complexType>
+ <sequence minOccurs="0">
+ <element name="packet" type="tns:PACKET"
+ maxOccurs="unbounded" />
+ </sequence>
+ </complexType>
+ </element>
+ </sequence>
+ </complexType>
+ </element>
+
+ <complexType name="DEVICE">
+ <annotation>
+ <documentation xml:lang="en">
+ Example: &gt;device
+ address="#x10" type="master"
+ name="heizkreisregler1"&lt;Heizkreisregler 2&gt;/device&lt;
+ </documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="tns:DESCRIPTION"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="address" type="short" use="required" />
+ <attribute name="type" type="string" use="required" />
+ <attribute name="name" type="string" use="required" />
+ </complexType>
+
+ <complexType name="PACKET">
+ <annotation>
+ <documentation xml:lang="en">TODO</documentation>
+ </annotation>
+ <sequence>
+ <element name="description" type="tns:DESCRIPTION"
+ minOccurs="0" maxOccurs="unbounded" />
+ <element name="fields" type="tns:FIELDS" minOccurs="1"
+ maxOccurs="1" />
+ </sequence>
+ <attribute name="primary" type="short" use="required" />
+ <attribute name="secondary" type="short" use="required" />
+ <attribute name="name" type="string" use="required" />
+ </complexType>
+
+ <complexType name="DESCRIPTION">
+ <simpleContent>
+ <extension base="string">
+ <attribute name="lang" type="string" use="required" />
+ </extension>
+ </simpleContent>
+ </complexType>
+
+ <complexType name="FIELDS">
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element name="byte" type="tns:FIELD_BYTE" />
+ <element name="data1b" type="tns:FIELD_DATA1B"></element>
+ <element name="data1c" type="tns:FIELD_DATA1C"></element>
+ <element name="bcd" type="tns:FIELD_BCD"></element>
+ <element name="data2b" type="tns:FIELD_DATA2B"></element>
+ <element name="data2c" type="tns:FIELD_DATA2C"></element>
+ <element name="word" type="tns:FIELD_WORD"></element>
+ <element name="bit" type="tns:FIELD_BIT"></element>
+ <element name="byteEnum" type="tns:FIELD_BYTE_ENUM" />
+ </choice>
+ </complexType>
+
+ <complexType name="FIELD_BASE_TYPE">
+ <sequence>
+ <element name="description" type="tns:DESCRIPTION"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="offset" type="int" use="required" />
+ <attribute name="name" type="string" use="required" />
+ </complexType>
+
+
+
+ <complexType name="FIELD_BYTE" final="#all">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_DATA1B">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_DATA1C">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_BCD">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_DATA2B">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_DATA2C">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_WORD">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_BIT">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE"></extension>
+ </complexContent>
+ </complexType>
+
+ <complexType name="FIELD_BYTE_ENUM" final="#all">
+ <complexContent>
+ <extension base="tns:FIELD_BASE_TYPE">
+ <sequence>
+ <element name="option" minOccurs="1" maxOccurs="unbounded">
+ <complexType>
+ <sequence>
+ <element name="description" type="tns:DESCRIPTION"
+ minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <attribute name="value" type="short" use="required"></attribute>
+ <attribute name="name" type="string" use="required"></attribute>
+ </complexType>
+ </element>
+ </sequence>
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>
diff --git a/ebus-xml/ebus.docbook.xslt b/ebus-xml/ebus.docbook.xslt
new file mode 100644
index 0000000..c6c80c5
--- /dev/null
+++ b/ebus-xml/ebus.docbook.xslt
@@ -0,0 +1,244 @@
+<?xml version="1.0" encoding="utf8"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:ebus="http://xapek.org/ebus/0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:db="http://docbook.org/ns/docbook"
+ xsi:schemaLocation="
+ http://xapek.org/ebus/0.1 ebus-0.1.xsd
+ http://docbook.org/ns/docbook http://docbook.org/xml/5.0/xsd/docbook.xsd"
+>
+ <xsl:output method="xml" indent="yes"/>
+
+ <xsl:template match="/">
+ <db:book version="5.0" xml:lang="de">
+ <db:info>
+ <db:title>Ebus Protokollbeschreibung</db:title>
+ <db:author>
+ <db:personname>Yves Fischer</db:personname>
+ <db:email>yvesf+git@xapek.org</db:email>
+ </db:author>
+ </db:info>
+ <db:chapter>
+ <db:title>Adressen</db:title>
+ <db:sect1>
+ <db:title>Master Adressen</db:title>
+ <xsl:call-template name="do_devices">
+ <xsl:with-param name="type" select="'master'"/>
+ </xsl:call-template>
+ </db:sect1>
+ <db:sect1>
+ <db:title>Slave Adressen</db:title>
+ <xsl:call-template name="do_devices">
+ <xsl:with-param name="type" select="'slave'"/>
+ </xsl:call-template>
+ </db:sect1>
+ <db:sect1>
+ <db:title>Broadcast Adressen</db:title>
+ <xsl:call-template name="do_devices">
+ <xsl:with-param name="type" select="'broadcast'"/>
+ </xsl:call-template>
+ </db:sect1>
+ </db:chapter>
+ <db:chapter>
+ <db:title>Pakete</db:title>
+
+ <db:informaltable pgwide="1">
+ <db:tgroup cols="3">
+ <db:colspec colnum="1" colname="c1" colwidth="5cm"/>
+ <db:colspec colnum="2" colname="c2" colwidth="1.8cm"/>
+ <db:colspec colnum="3" colname="c3"/>
+ <db:thead>
+ <db:row>
+ <db:entry>Packet</db:entry>
+ <db:entry>Prim./Sec. Address</db:entry>
+ <db:entry>Description</db:entry>
+ </db:row>
+ </db:thead>
+ <db:tbody>
+ <xsl:for-each select="ebus:ebus/ebus:packets/ebus:packet">
+ <db:row>
+ <db:entry>
+ <xsl:element name="db:link">
+ <xsl:attribute name="linkend">
+ <xsl:value-of select="concat('link.packet.', @name)"/>
+ </xsl:attribute>
+ <xsl:value-of select="@name"/>
+ </xsl:element>
+ </db:entry>
+ <db:entry>
+ <db:computeroutput>
+ <xsl:value-of select="format-number(@primary, '00')"/> /
+ <xsl:value-of select="format-number(@secondary, '00')"/>
+ </db:computeroutput>
+ </db:entry>
+ <db:entry>
+ <xsl:for-each select="ebus:description">
+ <db:para>
+ <db:emphasis><xsl:value-of select="@lang"/>:
+ </db:emphasis>
+ <xsl:value-of select="text()"/>
+ </db:para>
+ </xsl:for-each>
+ </db:entry>
+ </db:row>
+ </xsl:for-each>
+ </db:tbody>
+ </db:tgroup>
+ </db:informaltable>
+ <db:sect1>
+ <db:title>Fields</db:title>
+ <xsl:for-each select="ebus:ebus/ebus:packets/ebus:packet">
+ <xsl:call-template name="do_packet"/>
+ </xsl:for-each>
+ </db:sect1>
+ </db:chapter>
+ </db:book>
+ </xsl:template>
+
+ <xsl:template name="do_packet">
+ <db:sect2>
+ <db:title>
+ <xsl:value-of select="@name"/>
+ </db:title>
+ <xsl:element name="db:anchor">
+ <xsl:attribute name="id">
+ <xsl:value-of select="concat('link.packet.', @name)"/>
+ </xsl:attribute>
+ </xsl:element>
+
+ <db:informaltable pgwide="1">
+ <db:tgroup cols="4">
+ <db:colspec colname="c1"/>
+ <db:colspec colname="c2" colwidth=".8cm"/>
+ <db:colspec colname="c3" colwidth="1.5cm"/>
+ <db:colspec colname="c4"/>
+ <db:thead>
+ <db:row>
+ <db:entry>Name</db:entry>
+ <db:entry>Offset</db:entry>
+ <db:entry>Type</db:entry>
+ <db:entry>Description</db:entry>
+ </db:row>
+ </db:thead>
+ <db:tbody>
+ <xsl:for-each select="ebus:fields/*">
+ <db:row>
+ <db:entry>
+ <xsl:value-of select="@name"/>
+ </db:entry>
+ <db:entry>
+ <xsl:value-of select="@offset"/>
+ </db:entry>
+ <db:entry>
+ <xsl:value-of select="name()"/>
+ </db:entry>
+ <db:entry>
+ <xsl:for-each select="ebus:description">
+ <db:para>
+ <db:emphasis>
+ <xsl:value-of select="concat(@lang, ': ')"/>
+ </db:emphasis>
+ <xsl:value-of select="text()"/>
+ </db:para>
+ </xsl:for-each>
+ </db:entry>
+ </db:row>
+
+ <xsl:if test="name() = 'byteEnum'">
+ <db:row>
+ <db:entry namest="c1" nameend="c4">
+ <xsl:call-template name="enuminfo"/>
+ </db:entry>
+ </db:row>
+ </xsl:if>
+ </xsl:for-each>
+ </db:tbody>
+ </db:tgroup>
+ </db:informaltable>
+
+ <xsl:for-each select="ebus:fields/*">
+
+ </xsl:for-each>
+ </db:sect2>
+ </xsl:template>
+
+ <xsl:template name="enuminfo">
+ <db:informaltable pgwide="1">
+ <db:tgroup cols="3">
+ <db:colspec colname="c1"/>
+ <db:colspec colname="c2"/>
+ <db:colspec colname="c3"/>
+ <db:thead>
+ <db:row>
+ <db:entry>Code</db:entry>
+ <db:entry>Name</db:entry>
+ <db:entry>Description</db:entry>
+ </db:row>
+ </db:thead>
+ <db:tbody>
+ <xsl:for-each select="ebus:option">
+ <db:row>
+ <db:entry>
+ <xsl:value-of select="@value"/>
+ </db:entry>
+ <db:entry>
+ <xsl:value-of select="@name"/>
+ </db:entry>
+ <db:entry>
+ <xsl:for-each select="ebus:description">
+ <db:para>
+ <db:emphasis>
+ <xsl:value-of select="concat(@lang, ': ')"/>
+ </db:emphasis>
+ <xsl:value-of select="text()"/>
+ </db:para>
+ </xsl:for-each>
+ </db:entry>
+ </db:row>
+ </xsl:for-each>
+ </db:tbody>
+ </db:tgroup>
+ </db:informaltable>
+ <db:para/>
+ </xsl:template>
+
+ <xsl:template name="do_devices">
+ <xsl:param name="type"/>
+ <db:informaltable pgwide="1" frame="none">
+ <db:tgroup cols="3">
+ <db:colspec colname="c1"/>
+ <db:colspec colname="c2"/>
+ <db:colspec colname="c3"/>
+ <db:thead>
+ <db:row>
+ <db:entry>Gerät</db:entry>
+ <db:entry>Address</db:entry>
+ <db:entry>Description</db:entry>
+ </db:row>
+ </db:thead>
+ <db:tbody>
+ <xsl:for-each select="ebus:ebus/ebus:devices/ebus:device[@type=$type]">
+ <db:row>
+ <db:entry>
+ <xsl:value-of select="@name"/>
+ </db:entry>
+ <db:entry>
+ <xsl:value-of select="@address"/>
+ </db:entry>
+ <db:entry>
+ <xsl:for-each select="ebus:description">
+ <db:para>
+ <db:emphasis>
+ <xsl:value-of select="concat(@lang, ': ')"/>
+ </db:emphasis>
+ <xsl:value-of select="text()"/>
+ </db:para>
+ </xsl:for-each>
+ </db:entry>
+ </db:row>
+ </xsl:for-each>
+ </db:tbody>
+ </db:tgroup>
+ </db:informaltable>
+ </xsl:template>
+</xsl:stylesheet> \ No newline at end of file
diff --git a/ebus-xml/ebus.xml b/ebus-xml/ebus.xml
new file mode 100644
index 0000000..a4552ba
--- /dev/null
+++ b/ebus-xml/ebus.xml
@@ -0,0 +1,256 @@
+<?xml version="1.0" standalone="yes"?>
+<!-- Ebus Paketspezifikation. https://xapek.org/ -->
+<ebus xmlns="http://xapek.org/ebus/0.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://xapek.org/ebus/0.1 ebus-0.1.xsd">
+ <devices>
+ <device address="0" type="master" name="pcModem">
+ <description lang="de">PC oder Modem</description>
+ <description lang="en">PC or Modem</description>
+ </device>
+ <device address="3" type="master" name="feuerungsautomat1">
+ <description lang="de">Feuerungsautomat 1</description>
+ </device>
+ <device address="10" type="master" name="rcClockModel">
+ <description lang="de">RC-Clock Model</description>
+ </device>
+ <device address="7" type="master" name="unknown">
+ <description lang="de">Unbekannt</description>
+ </device>
+ <device address="16" type="master" name="heizkreisregler2">
+ <description lang="de">Heizkreisregler 2</description>
+ </device>
+ <device address="17" type="master" name="busInterface1">
+ <description lang="de">Bus Interface 1</description>
+ </device>
+ <device address="19" type="master" name="feuerungsautomat2">
+ <description lang="de">Feuerungsautomat 2</description>
+ </device>
+ <device address="48" type="master" name="heizkreisregler1">
+ <description lang="de">Heizkreisregler 1</description>
+ </device>
+ <device address="49" type="master" name="busInterface2">
+ <description lang="de">Bus Interface 2</description>
+ </device>
+ <device address="51" type="master" name="feuerungsautomat3">
+ <description lang="de">Feuerungsautomat 3</description>
+ </device>
+ <device address="112" type="master" name="heizkreisregler2">
+ <description lang="de">Heizkreisregler 2</description>
+ </device>
+ <device address="113" type="master" name="heizkreisregler9">
+ <description lang="de">Heizkreisregler 9</description>
+ </device>
+ <device address="115" type="master" name="feuerungsautomat4">
+ <description lang="de">Feuerungsautomat 4</description>
+ </device>
+ <device address="241" type="master" name="heizkreisregler10">
+ <description lang="de">Heizkreisregler 10</description>
+ </device>
+ <device address="80" type="slave" name="mischer1">
+ <description lang="de">Mischer 1</description>
+ </device>
+ <device address="81" type="slave" name="mischer2">
+ <description lang="de">Mischer 2</description>
+ </device>
+ <device address="144" type="slave" name="fernsteller1">
+ <description lang="de">Raumgeräte/Fernsteller 1</description>
+ </device>
+ <device address="145" type="slave" name="fernsteller2">
+ <description lang="de">Raumgeräte/Fernsteller 2</description>
+ </device>
+ <device address="240" type="master" name="heizkreisregler3">
+ <description lang="de">Heizkreisregler 3</description>
+ </device>
+ <device address="240" type="master" name="feuerungsautomat5">
+ <description lang="de">Feuerungsautomat 5</description>
+ </device>
+ <device address="254" type="broadcast" name="broadcast">
+ <description lang="de">Broadcast-Adresse</description>
+ </device>
+ <device address="255" type="master" name="pc">
+ <description lang="de">PC</description>
+ </device>
+ </devices>
+ <packets>
+ <packet primary="5" secondary="3" name="betriebsdatenRegler1">
+ <description lang="de">Betriebsdaten des Feuerungsautomaten an den Regler Block1</description>
+ <fields>
+ <byte offset="3" name="stellgradKesselleistung">
+ <description lang="de">Stellgrad Kesselleistung</description>
+ </byte>
+ <data1c offset="4" name="kesselTemperatur">
+ <description lang="de">Kessel Temperatur</description>
+ </data1c>
+ <byte offset="5" name="ruecklaufTemperatur">
+ <description lang="de">Rücklauf Temperatur</description>
+ </byte>
+ <byte offset="6" name="boilerTemperatur">
+ <description lang="de">Boiler Temperatur</description>
+ </byte>
+ <data1b offset="7" name="aussenTemperatur">
+ <description lang="de">Aussentemperatur</description>
+ </data1b>
+ </fields>
+ </packet>
+ <packet primary="5" secondary="7" name="betriebsdatenFeuerungsautomat">
+ <description lang="de">"Betriebsdaten des Reglers an den Feuerungsautomaten</description>
+ <fields>
+ <byteEnum offset="0" name="betriebszustand">
+ <option value="0" name="brennerAbschalten">
+ <description lang="de">Brenner Abschalten</description>
+ </option>
+ <option value="1" name="keineAktion">
+ <description lang="de">Keine Aktion</description>
+ </option>
+ <option value="85" name="brauchwasserbereitung">
+ <description lang="de">Brauchwasserbereitung</description>
+ </option>
+ <option value="170" name="heizbetrieb">
+ <description lang="de">Heizbetrieb</description>
+ </option>
+ <option value="204" name="emissionskontrolle">
+ <description lang="de">Emissionskontrolle</description>
+ </option>
+ <option value="221" name="tuevFunktion">
+ <description lang="de">TÜV Funktion</description>
+ </option>
+ <option value="238" name="reglerStopp">
+ <description lang="de">Regler Stopp</description>
+ </option>
+ <option value="102" name="brauchwasserReglerstopp">
+ <description lang="de">Brauchwasserbereitung bei Reglerstoppfunktion</description>
+ </option>
+ <option value="187" name="brauchwasserHeizbetrieb">
+ <description lang="de">Brauchwasserbereitung bei Heizbetrieb</description>
+ </option>
+ <option value="68" name="reglerstoppStufig">
+ <description lang="de">Reglerstoppfunktion bei stufigem Betrieb</description>
+ </option>
+ </byteEnum>
+ <byteEnum offset="1" name="aktion">
+ <option value="0" name="keineAktion">
+ <description lang="de">Keine Aktion</description>
+ </option>
+ <option value="1" name="ausschaltenKesselpumpe">
+ <description lang="de">Ausschalten Kesselpumpe</description>
+ </option>
+ <option value="2" name="einschaltenKesselpumpe">
+ <description lang="de">Einschalten Kesselpumpe</description>
+ </option>
+ <option value="3" name="ausschaltenVariableVerbraucher">
+ <description lang="de">Ausschalten variable Verbraucher</description>
+ </option>
+ <option value="4" name="einschaltenVariableVerbraucher">
+ <description lang="de">Einschalten variable Verbraucher</description>
+ </option>
+ </byteEnum>
+ <data2c offset="2" name="kesselSollwertTemperatur">
+ <description lang="de">Kessel Temperatur Sollwert</description>
+ </data2c>
+ <data2b offset="4" name="kesselSollwertDruck">
+ <description lang="de">Kesseldruck Sollwert</description>
+ </data2b>
+ <data1c offset="6" name="stellgrad">
+ <description lang="de">Stellgrad</description>
+ </data1c>
+ <data1c offset="7" name="brauchwasserSollwert">
+ <description lang="de">Brauchwasser Sollwert</description>
+ </data1c>
+ </fields>
+ </packet>
+
+ <packet primary="7" secondary="0" name="datumZeit">
+ <description lang="de">Datum/Zeit Meldung eines eBus Master</description>
+ <fields>
+ <data2b offset="0" name="aussenTemperatur" />
+ <bcd offset="2" name="sekunden" />
+ <bcd offset="3" name="minuten" /><!-- FEHLER ab hier beim offset??? -->
+ <bcd offset="4" name="stunden" />
+ <bcd offset="5" name="tag" />
+ <bcd offset="6" name="monat" />
+ <bcd offset="7" name="wochentag" />
+ <bcd offset="8" name="jahr" />
+ </fields>
+ </packet>
+
+ <packet primary="8" secondary="0" name="sollwertuebertragungRegler">
+ <description lang="de">Sollwertübertragung des Reglers an andere Regler</description>
+ <fields>
+ <data2b offset="0" name="TK_soll">
+ <description lang="de">Kessel Sollwert in °C [1/256]</description>
+ </data2b>
+ <data2b offset="2" name="TA_ist">
+ <description lang="de">Aussentemperatur in °C [1/256]</description>
+ </data2b>
+ <data1b offset="4" name="L_zwang">
+ <description lang="de">Leistungszwang in Prozent</description>
+ </data1b>
+ <bit offset="5" name="Status">
+ <description lang="de">Status</description>
+ </bit>
+ <data2b offset="6" name="TB_soll">
+ <description lang="de">Brauchwassersollwert</description>
+ </data2b>
+ </fields>
+ </packet>
+
+ <packet primary="3" secondary="8" name="brenstoffmengeLesen">
+ <description lang="de">Gesamtbrennstoffmenge Lesen</description>
+ <fields />
+ </packet>
+
+ <!-- #x50, Kromschröder Spezial -->
+ <packet primary="80" secondary="20" name="vorlauftemperatur">
+ <description lang="de">see http://www.mikrocontroller.net/topic/91164</description>
+ <fields>
+ <data2b offset="0" name="vorlauftemperaturIst">
+ <description lang="de">Aktuelle Vorlauftemperatur
+ Mischerkreis</description>
+ </data2b>
+ <data2b offset="2" name="vorlauftemperaturSoll">
+ <description lang="de">Soll Vorlaufteperatur
+ Mischerkreis</description>
+ </data2b>
+ </fields>
+ </packet>
+
+ <packet primary="80" secondary="23" name="solarDaten">
+ <description lang="de">Solar Daten</description>
+ <fields>
+ <bit offset="0" name="solarPumpe">
+ <description lang="de">Betriebszustand Solarpumpe</description>
+ </bit>
+ <data2c offset="2" name="tempKollektor">
+ <description lang="de">Wassertemperatur am Kollektor</description>
+ </data2c>
+ <data2c offset="4" name="tempWarmwasserSolar">
+ <description lang="de">Warmwassertemperatur am Kollektor</description>
+ </data2c>
+ </fields>
+ </packet>
+
+ <packet primary="80" secondary="24" name="solarDatenSumme">
+ <description lang="de">Reversed siehe ebus-wiki</description>
+ <fields>
+ <data2b offset="0" name="aktuelleLeistung">
+ <description lang="de">Aktuelle Solarleistung</description>
+ </data2b>
+ <word offset="2" name="tagesertragLow">
+ <description lang="de">Tagesertrag low</description>
+ </word>
+ <word offset="4" name="tagesertragHigh">
+ <description lang="de">Tagesertrag high * 1000</description>
+ </word>
+ <word offset="6" name="ertragssumme">
+ <description lang="de">Ertragssumme</description>
+ </word>
+ <word offset="8" name="ertragssummeT">
+ <description lang="de">Ertragssumme T * 1000</description>
+ </word>
+ <word offset="10" name="ertragssummeM">
+ <description lang="de">Etragssumme M * 1000 * 1000</description>
+ </word>
+ </fields>
+ </packet>
+ </packets>
+</ebus>