diff options
Diffstat (limited to 'ebus-xml')
-rw-r--r-- | ebus-xml/.project | 11 | ||||
-rw-r--r-- | ebus-xml/ebus-0.1.xsd | 158 | ||||
-rw-r--r-- | ebus-xml/ebus.xml | 257 | ||||
-rw-r--r-- | ebus-xml/transform/ebus.html.xslt | 112 | ||||
-rw-r--r-- | ebus-xml/transform/ebus.txt.xslt | 49 |
5 files changed, 587 insertions, 0 deletions
diff --git a/ebus-xml/.project b/ebus-xml/.project new file mode 100644 index 0000000..533290a --- /dev/null +++ b/ebus-xml/.project @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>ebus-xml</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + </buildSpec> + <natures> + </natures> +</projectDescription> diff --git a/ebus-xml/ebus-0.1.xsd b/ebus-xml/ebus-0.1.xsd new file mode 100644 index 0000000..19895a8 --- /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: >device + address="#x10" type="master" + name="heizkreisregler1"<Heizkreisregler 2>/device< + </documentation> + </annotation> + <sequence> + <element name="description" type="tns:DESCRIPTION" + minOccurs="0" maxOccurs="unbounded" /> + </sequence> + <attribute name="address" type="hexBinary" 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="hexBinary" use="required" /> + <attribute name="secondary" type="hexBinary" 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="hexBinary" use="required"></attribute> + <attribute name="name" type="string" use="required"></attribute> + </complexType> + </element> + </sequence> + </extension> + </complexContent> + </complexType> +</schema> diff --git a/ebus-xml/ebus.xml b/ebus-xml/ebus.xml new file mode 100644 index 0000000..5b7f1f0 --- /dev/null +++ b/ebus-xml/ebus.xml @@ -0,0 +1,257 @@ +<?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="00" type="master" name="pcModem"> + <description lang="de">PC oder Modem</description> + </device> + <device address="03" type="master" name="feuerungsautomat1"> + <description lang="de">Feuerungsautomat 1</description> + </device> + <device address="0f" type="master" name="rcClockModel"> + <description lang="de">RC-Clock Model</description> + </device> + <device address="07" type="master" name="unknown"> + <description lang="de">Unbekannt</description> + </device> + <device address="10" type="master" name="heizkreisregler2"> + <description lang="de">Heizkreisregler 2</description> + </device> + <device address="11" type="master" name="busInterface1"> + <description lang="de">Bus Interface 1</description> + </device> + <device address="13" type="master" name="feuerungsautomat2"> + <description lang="de">Feuerungsautomat 2</description> + </device> + <device address="30" type="master" name="heizkreisregler1"> + <description lang="de">Heizkreisregler 1</description> + </device> + <device address="31" type="master" name="busInterface2"> + <description lang="de">Bus Interface 2</description> + </device> + <device address="33" type="master" name="feuerungsautomat3"> + <description lang="de">Feuerungsautomat 3</description> + </device> + <device address="70" type="master" name="heizkreisregler2"> + <description lang="de">Heizkreisregler 2</description> + </device> + <device address="71" type="master" name="heizkreisregler9"> + <description lang="de">Heizkreisregler 9</description> + </device> + <device address="73" type="master" name="feuerungsautomat4"> + <description lang="de">Feuerungsautomat 4</description> + </device> + <device address="f1" type="master" name="heizkreisregler10"> + <description lang="de">Heizkreisregler 10</description> + </device> + <device address="50" type="slave" name="mischer1"> + <description lang="de">Mischer 1</description> + </device> + <device address="51" type="slave" name="mischer2"> + <description lang="de">Mischer 2</description> + </device> + <device address="90" type="slave" name="fernsteller1"> + <description lang="de">Raumgeräte/Fernsteller 1</description> + </device> + <device address="91" type="slave" name="fernsteller2"> + <description lang="de">Raumgeräte/Fernsteller 2</description> + </device> + <device address="f0" type="master" name="heizkreisregler3"> + <description lang="de">Heizkreisregler 3</description> + </device> + <device address="f3" type="master" name="feuerungsautomat5"> + <description lang="de">Feuerungsautomat 5</description> + </device> + <device address="fe" type="broadcast" name="broadcast"> + <description lang="de">Broadcast-Adresse</description> + </device> + <device address="ff" type="master" name="pc"> + <description lang="de">PC</description> + </device> + </devices> + <packets> + <packet primary="05" secondary="03" 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="4" name="ruecklaufTemperatur"> + <description lang="de">Rücklauf Temperatur</description> + </byte> + <byte offset="6" name="boilerTemperatur"> + <description lang="de">Boiler Temperatur</description> + </byte> + <byte offset="7" name="aussenTemperatur"> + <description lang="de">Aussentemperatur</description> + </byte> + </fields> + </packet> + <packet primary="05" secondary="07" + name="betriebsdatenFeuerungsautomat"> + <description lang="de">"Betriebsdaten des Reglers an den Feuerungsautomaten</description> + <fields> + <byteEnum offset="0" name="betriebszustand"> + <option value="00" name="brennerAbschalten"> + <description lang="de">Brenner Abschalten</description> + </option> + <option value="01" name="keineAktion"> + <description lang="de">Keine Aktion</description> + </option> + <option value="55" name="brauchwasserbereitung"> + <description lang="de">Brauchwasserbereitung</description> + </option> + <option value="aa" name="heizbetieb"> + <description lang="de">Heizbetrieb</description> + </option> + <option value="cc" name="emissionskontrolle"> + <description lang="de">Emissionskontrolle</description> + </option> + <option value="dd" name="tuevFunktion"> + <description lang="de">TÜV Funktion</description> + </option> + <option value="ee" name="reglerStopp"> + <description lang="de">Regler Stopp</description> + </option> + <option value="66" name="brauchwasserReglerstopp"> + <description lang="de">Brauchwasserbereitung bei Reglerstoppfunktion</description> + </option> + <option value="bb" name="brauchwasserHeizbetrieb"> + <description lang="de">Brauchwasserbereitung bei Heizbetrieb</description> + </option> + <option value="44" name="reglerstoppStufig"> + <description lang="de">Reglerstoppfunktion bei stufigem Betrieb</description> + </option> + </byteEnum> + <byteEnum offset="1" name="aktion"> + <option value="00" name="keineAktion"> + <description lang="de">Keine Aktion</description> + </option> + <option value="01" name="ausschaltenKesselpumpe"> + <description lang="de">Ausschalten Kesselpumpe</description> + </option> + <option value="02" name="einschaltenKesselpumpe"> + <description lang="de">Einschalten Kesselpumpe</description> + </option> + <option value="03" name="ausschaltenVariableVerbraucher"> + <description lang="de">Ausschalten variable Verbraucher</description> + </option> + <option value="04" 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="07" secondary="00" 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="08" secondary="00" 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="03" secondary="08" name="brenstoffmengeLesen"> + <description lang="Gesamtbrennstoffmenge Lesen"></description> + <fields /> + </packet> + + <!-- #x50, Kromschröder Spezial --> + <packet primary="50" secondary="14" 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="50" secondary="17" 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="50" secondary="18" 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/transform/ebus.html.xslt b/ebus-xml/transform/ebus.html.xslt new file mode 100644 index 0000000..bf2d031 --- /dev/null +++ b/ebus-xml/transform/ebus.html.xslt @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="utf8"?> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + + <xsl:template match="/"> + <html> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf8" /> + <style type="text/css"> + table { + border: 1px solid gray; + width: 100%; + } + table td { + border-left: 1px dotted gray; + border-right: 1px + dotted gray; + } + + table th { + border: 1px dotted gray; + } + </style> + </head> + <body> + <h2>Ebus Geräte</h2> + <table class="devices"> + <tr> + <th>Adresse</th> + <th>Gerät</th> + <th>Typ</th> + </tr> + <xsl:for-each select="ebus/devices/device"> + <tr> + <td> + <!-- anchor --> + <xsl:value-of select="@address" /> + </td> + <td> + <xsl:value-of select="text()" /> + </td> + <td> + <xsl:value-of select="@type" /> + </td> + </tr> + </xsl:for-each> + </table> + + <h2>Ebus Pakete</h2> + <table class="packets"> + <tr> + <th>Primary Command</th> + <th>Secondary Command</th> + <th>Name</th> + <th>Description</th> + </tr> + <xsl:for-each select="ebus/packets/packet"> + <tr> + <td> + <xsl:value-of select="@primary" /> + </td> + <td> + <xsl:value-of select="@secondary" /> + </td> + <td> + <xsl:value-of select="@name" /> + </td> + <td> + <xsl:value-of select="@description" /> + </td> + </tr> + <tr> + <td /> + <td colspan="3"> + <table class="fields"> + <tr> + <th>offset</th> + <th>typ</th> + <th>name</th> + <th>Description</th> + </tr> + <xsl:for-each select="fields/*"> + <tr> + <td> + <xsl:value-of select="@offset" /> + </td> + <td> + <xsl:value-of select="name()" /> + </td> + <td> + <xsl:value-of select="@name" /> + </td> + <td> + <xsl:value-of select="text()" /> + </td> + </tr> + </xsl:for-each> + </table> + </td> + </tr> + <tr> + <td colspan="4"> + <hr /> + </td> + </tr> + </xsl:for-each> + </table> + </body> + </html> + </xsl:template> + +</xsl:stylesheet> diff --git a/ebus-xml/transform/ebus.txt.xslt b/ebus-xml/transform/ebus.txt.xslt new file mode 100644 index 0000000..dda1e33 --- /dev/null +++ b/ebus-xml/transform/ebus.txt.xslt @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="utf8"?> +<xsl:stylesheet version="1.0" +xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> +<!-- TODO: padding --> + <xsl:output method="text" /> + <xsl:template match="/"> +=== Ebus Geräte + +Adresse | Gerät | Typ + + <xsl:for-each select="ebus/devices/device"> + <xsl:value-of select="@address"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="text()"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="@type"/> + <xsl:text> +</xsl:text> + </xsl:for-each> + +=== Ebus Pakete + +Primary Command | Secondary Command | Name | Description + ---- offset | typ | name | description + <xsl:for-each select="ebus/packets/packet"> + <xsl:value-of select="@primary"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="@secondary"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="@description"/> + + <xsl:for-each select="fields/*"> + <xsl:value-of select="@offset"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="name()"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="@name"/> + <xsl:text>|</xsl:text> + <xsl:value-of select="text()"/> + <xsl:text> + </xsl:text> + </xsl:for-each> + <xsl:text> + </xsl:text> + </xsl:for-each> + </xsl:template> +</xsl:stylesheet> |