Benutzer-Werkzeuge

Webseiten-Werkzeuge


ebus:ebusconnector

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
ebus:ebusconnector [2015/10/27 20:26]
admin alte Version wiederhergestellt (2015/10/11 08:02)
ebus:ebusconnector [2016/01/11 15:16] (aktuell)
bernhardh
Zeile 1: Zeile 1:
 ====== Was ist der eBus-Connector? ====== ====== Was ist der eBus-Connector? ======
  
-Die Software dient zum Auslesen und Speichern der Daten, welche Ã¼ber den eBus Ã¼bertragen werden. Dabei können die Services in der Konfigurationsdatei frei festgelegt werden wodurch eine Anpassung an jegliche im Standard definierten oder herstellerspezifischen Datendefinitionen möglich ist. Die Festlegung der Datenspeicherung geschieht ebenfalls Ã¼ber die Konfigurationsdatei. Dort werden die SQL-Befehle festgelegt wodurch eine Anpassung an jegliche SQL-fähige Datenbank möglich ist.+Die Software dient zum Auslesen und Speichern der Daten, welche über den eBus übertragen werden. Dabei können die Services in der Konfigurationsdatei frei festgelegt werden wodurch eine Anpassung an jegliche im Standard definierten oder herstellerspezifischen Datendefinitionen möglich ist. Die Festlegung der Datenspeicherung geschieht ebenfalls über die Konfigurationsdatei. Dort werden die SQL-Befehle festgelegt wodurch eine Anpassung an jegliche SQL-fähige Datenbank möglich ist.
  
 ====== Welche Voraussetzungen sind zum Betrieb des eBus-Connectors notwendig? ====== ====== Welche Voraussetzungen sind zum Betrieb des eBus-Connectors notwendig? ======
Zeile 7: Zeile 7:
 ===== Hardware ===== ===== Hardware =====
  
-Da der eBus zwar auf dem RS232-Protokoll basiert aber mit unterschiedlichen Pegeln arbeitet, ist ein Konverter notwendig. Dafür gibt es Schaltpläne für den Elektronik-Bastler (siehe unter [[:ebus:ebuskonverter|EBusKonverter]]).+Da der eBus zwar auf dem RS232-Protokoll basiert aber mit unterschiedlichen Pegeln arbeitet, ist ein Konverter notwendig. Dafür gibt es Schaltpläne für den Elektronik-Bastler (siehe unter EBusKonverter).
  
-Natürlich ist dann noch ein PC zur Ausführung der Software notwendig :)+Natürlich ist dann noch ein PC zur Ausführung der Software notwendig :)
  
 ===== Software ===== ===== Software =====
  
-Der eBus-Connector ist ab**Windows** XP lauffähig, wobei ich Windows 7 noch nicht getestet habe, sollte aber kein Problem sein (Tester gesucht). Zum Speichern der Daten ist ein ODBC- oder OLEDB-Treiber für Windows notwendig. Dieser ist für MS-Access im Betriebssystem bereits inkludiert.+Der eBus-Connector ist ab**Windows** XP lauffähig, wobei ich Windows 7 noch nicht getestet habe, sollte aber kein Problem sein (Tester gesucht). Zum Speichern der Daten ist ein ODBC- oder OLEDB-Treiber für Windows notwendig. Dieser ist für MS-Access im Betriebssystem bereits inkludiert.
  
-→ [[:ebus:downloadebusconnector|DownloadEBusConnector]] <-+-> [[ebus:download:ebusconnector|DownloadEBusConnector]] <-
  
-Für **Linux** gibt es den [[:ebus:linuxkonnektor|LinuxKonnektor]] von Main.[[:ebus:frankweis|FrankWeis]] als Perl-Script zum download.+Für **Linux** gibt es den LinuxKonnektor von Main.FrankWeis als Perl-Script zum download.
  
 ====== Wie wird eBus-Connector konfiguriert? ====== ====== Wie wird eBus-Connector konfiguriert? ======
  
-Die Konfiguration erfolgt ausschließlich über die Datei //eBusConnector.ini//. Dabei handelt es sich um eine Textdatei im Windows-INI Format und kann mit einem jedem beliebigem Texteditor editiert werden. (Mein Favorit ist [[http://notepad-plus.sourceforge.net/de/site.htm|Notepad++]])+Die Konfiguration erfolgt ausschließlich über die Datei //eBusConnector.ini//. Dabei handelt es sich um eine Textdatei im Windows-INI Format und kann mit einem jedem beliebigem Texteditor editiert werden. (Mein Favorit ist [[http://notepad-plus.sourceforge.net/de/site.htm|Notepad++]])
  
 ===== Fertige Konfigurationen ===== ===== Fertige Konfigurationen =====
  
-Derzeit gibt es Konfigurationsdateien für Wolf Solarregler SM1 und Kaskadenmodul KM und Speicherung in einer Access-Datei. Diese Konfiguration inklusive grafischer Auswertung ist im Downloadpaket bereits enthalten.+Derzeit gibt es Konfigurationsdateien für Wolf Solarregler SM1 und Kaskadenmodul KM und Speicherung in einer Access-Datei. Diese Konfiguration inklusive grafischer Auswertung ist im Downloadpaket bereits enthalten
 + 
 +Für **Vaillant** sind Konfiguration und Datenbank im Unterverzeichnis "Vaillant" enthalten. Diese beiden Dateien müssen ein Verzeichnis tiefer kopiert werden.
  
-Für **Vaillant** sind Konfiguration und Datenbank im Unterverzeichnis "Vaillant" enthalten. Diese beiden Dateien müssen ein Verzeichnis tiefer kopiert werden. 
 ===== Datenbankverbindung (Gruppe [Db]) ===== ===== Datenbankverbindung (Gruppe [Db]) =====
  
-Hier wird der Datenbanktreiber angegeben. Beispiele dazu siehe [[http://www.connectionstrings.com|www.connectionstrings.com]]+Hier wird der Datenbanktreiber angegeben. Beispiele dazu siehe www.connectionstrings.com
  
-Beispiel für MS-Access:+Beispiel für MS-Access:
  
 <code> <code>
-Connection''Provider''Microsoft.Jet.OLEDB.4.0;Data Source''eBus.mdb +Connection=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=eBus.mdb 
-User'' +User= 
-Pwd''+Pwd=
-Provider''MSDASQL+Provider=MSDASQL
 </code> </code>
  
-Beispiel für <nowiki>[[:ebus:mysql|MySQL]]:</nowiki> +Beispiel für %%MySQL:%% 
- +<code>Connection=Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=ebus;Option=
-<code> +User=ebus 
-Connection''Driver''{MySQL ODBC 3.51 Driver};Server''localhost;Database''ebus;Option''+Pwd=
-User''ebus +Provider=MSDASQL</code>
-Pwd''+
-Provider''MSDASQL +
-</code>+
  
 ===== Schnittstellenparameter (Gruppe [eBusCom]) ===== ===== Schnittstellenparameter (Gruppe [eBusCom]) =====
  
-Hier wird die zu verwendende serielle Schnittstelle festgelegt. In diesem Beispiel Com3. Die restlichen Parameter sind auf den eBus-Standard abgestimmt und sollten keine Ã„nderung benötigen. +Hier wird die zu verwendende serielle Schnittstelle festgelegt. In diesem Beispiel Com3. Die restlichen Parameter sind auf den eBus-Standard abgestimmt und sollten keine Änderung benötigen.
 <code> <code>
-ComNum''+ComNum=
-Baudrate''2400 +Baudrate=2400 
-FlowCtrl''+FlowCtrl=
-LineCondFlags''+LineCondFlags=
-RxCharWait''3000+RxCharWait=3000
 </code> </code>
  
Zeile 66: Zeile 63:
 ==== Datentypen ==== ==== Datentypen ====
  
-^Type  ^Bereich  ^Defaultwert| +^Type  ^Bereich  ^Defaultwert ^ 
-|einfach:||| +| einfach: ||| 
-|char  | |FF| +|char  | |FF | 
-|signed char  | |80| +|signed char  | |80 | 
-|signed int  | |8000| +|signed int  | |8000 | 
-|word  | |FFFF| +|word  | |FFFF | 
-|komplex:||| +| komplex: ||| 
-|bcd  |0-99  |FF| +|bcd  |0-99  |FF | 
-|data1b|-127-127|80| +|data1b |-127-127 |80 | 
-|data1c|0-100 0,5|FF| +|data1c |0-100 0,5|FF | 
-|data2b|-127,99-127,99 1/256|8000| +|data2b |-127,99-127,99 1/256 |8000 | 
-|data2c|-2047,9-2047,9 1/16|8000| +|data2c |-2047,9-2047,9 1/16 |8000 | 
-|data2d|-3276,6-3276,6 1/10|8000| +|data2d |-3276,6-3276,6 1/10 |8000 | 
-|spezial:||| +| spezial: ||| 
-|Flags  |Daten werden als Binärstring ausgegeben|| +|Flags  |Daten werden als Binärstring ausgegeben || 
-|Text( Anzahl )|Daten werden als Text umgewandelt|| +|Text( Anzahl ) |Daten werden als Text umgewandelt || 
-|hex( Anzahl )  |erzeugt einen Hexstring der angegebenen Anzahl Bytes als String ( z.B. "01 02 03")|| +|hex( Anzahl )  |erzeugt einen Hexstring der angegebenen Anzahl Bytes als String ( z.B. "01 02 03") || 
-|text( Anzahl )|Wandelt Daten in Text um. Wird z.B. in Service FE01 (Fehlernachricht) verwendet.|| +|text( Anzahl ) |Wandelt Daten in Text um. Wird z.B. in Service FE01 (Fehlernachricht) verwendet. || 
-|<nowiki>[[:ebus:subservice|SubService]]</nowiki>  |Gibt an, dass der Inhalt dieses Feldes ein Subservice definiert|| +|%%SubService%% |Gibt an, dass der Inhalt dieses Feldes ein Subservice definiert || 
-|Analyze( Anzahl )|Dient zur Analyse von unbekannten Befehlen. Es wird der Datenblock in definierter Länge mit allen einfachen und komplexen Datentypen angezeigt. So können gültige Werte einfacher aufgespürt werden.||+|Analyze( Anzahl ) |Dient zur Analyse von unbekannten Befehlen. Es wird der Datenblock in definierter Länge mit allen einfachen und komplexen Datentypen angezeigt. So können gültige Werte einfacher aufgespürt werden. ||
  
 ==== Grundparameter (Gruppe [eBusConnector]) ==== ==== Grundparameter (Gruppe [eBusConnector]) ====
  
-^Parameter  ^Beschreibung| +^Parameter  ^Beschreibung ^ 
-|[[:ebus:loglevel|LogLevel]]  |Legt fest, welche Informationen geloggt werden sollen. \\ Kombination folgender Werte ist möglich: \\   \\ LOG_ERROR 0x0001 \\ LOG_UNDEFINED 0x0002 \\ LOG_SQL 0x0004 \\ LOG_INFO 0x0008 \\ LOG_ALL_INPUT 0x0010 â†’ erstellt "eBusIn.dat" mit allen vom eBus gelesenen raw-Daten \\ LOG_CHECK 0x0020 \\ LOG_READ 0x0040 \\ LOG_UNSAVED 0x0080 \\ LOG_READ_ERROR 0x0100 \\ LOG_VALUES 0x0200 â†’ erstellt .cvs-Dateien mit gelesenen Daten lt. Definition| +|%%LogLevel%% |Legt fest, welche Informationen geloggt werden sollen.\\ Kombination folgender Werte ist möglich:\\ \\ LOG_ERROR 0x0001\\ LOG_UNDEFINED 0x0002\\ LOG_SQL 0x0004\\ LOG_INFO 0x0008\\ LOG_ALL_INPUT 0x0010 -> erstellt "eBusIn.dat" mit allen vom eBus gelesenen raw-Daten\\ LOG_CHECK 0x0020\\ LOG_READ 0x0040\\ LOG_UNSAVED 0x0080\\ LOG_READ_ERROR 0x0100\\ LOG_VALUES 0x0200 -> erstellt .cvs-Dateien mit gelesenen Daten lt. Definition | 
-|<nowiki>[[:ebus:servicedef|ServiceDef]]</nowiki>  |Beschreibt in dieser Gruppe den Aufbau des Headers bis einschließlich Datenlänge+|%%ServiceDef%% |Beschreibt in dieser Gruppe den Aufbau des Headers bis einschließlich Datenlänge 
-|Use  |Gibt an, welche Befehle definiert und für die Weiterbearbeitung verwendet werden sollen. Die Definition beginnt bei der Gruppe [eBusConnector] und geht bei jedem mit "Use" angeführten Befehl weiter. Es kann beliebig weiterverzweigt werden.|+|Use  |Gibt an, welche Befehle definiert und für die Weiterbearbeitung verwendet werden sollen. Die Definition beginnt bei der Gruppe [eBusConnector] und geht bei jedem mit "Use" angeführten Befehl weiter. Es kann beliebig weiterverzweigt werden. |
  
 ==== Servicedefinition (Gruppen [nnnn] oder [nnnn:ss]) ==== ==== Servicedefinition (Gruppen [nnnn] oder [nnnn:ss]) ====
  
-Dabei gibt //nnnn// die Hex-Representation des Primär- und Sekundärbefehls an und //ss// das Subservice (welches beliebig wiederholt werden kann, da jedes Subservice wiederum Subservices enthalten kann)+Dabei gibt //nnnn// die Hex-Representation des Primär- und Sekundärbefehls an und //ss// das Subservice (welches beliebig wiederholt werden kann, da jedes Subservice wiederum Subservices enthalten kann) 
 + 
 +^Parameter ^Beschreibung ^ 
 +|%%ServiceDef%% |Definition der Datenstruktur ab hier in der Form %%Feldname=Datentype | Feldname2=Datentype2 [|...]%% | 
 +|Check |SQL-Statement, welches prüft, ob die Daten verarbeitet werden müssen. Es wird nichts bearbeitet, wenn Recordset mit 0 Datensätzen oder 1.Feld des 1.Datensatzes den Wert 0 enthält. Damit sind Prüfungen möglich in der Form von Berechnungen oder in Abhängigkeit von anderen Werten in der Db. | 
 +|%%MinInteral%% |Mindestzeit zwischen zwei Ausführungen Beispiele: (Werte ohne Anführungszeichen eintragen)\\ "80 s" -> 80 Sekunden\\ "1 h" -> eine Stunde\\ "2 d" -> 2 Tage\\ "1500" -> 1500 millisekunden ( 1,5 Sekunden)\\ "1 d 5 h 30 m" -> Kombination der Werte möglich | 
 +|%%CheckChanges%% |entweder "sql", wenn der komplette erzeugte SQL-Befehl unterschiedlich sein muss oder Felder, welche unterschiedlich sein müssen. z.B.: %From%!%To%. Damit wird erreicht, dass nur geänderte Daten gespeichert werden. | 
 +|%%CheckMode%% |Kann den Wert AND oder OR haben. Defaultwert AND bedeutet, dass %%MinInterval%% und %%CheckChanges%% zutreffen müssen um eine Aktion durchzuführen. Bei OR wird der Satz bearbeitet, wenn entweder %%MinInterval%% erreicht oder %%CheckChanges%% zutrifft. | 
 +|SUBSERVICEDEFINITION: |Wird ein Feld als "%%SubService%%" definiert, dann legt der Feldinhalt das zu verwendende %%SubService%% fest. Es muss wieder mit Use= festgelegt werden, welche Subservices bearbeitet werden sollen. Der Gruppenname für die Definition wird entsprechend erweitert (siehe Service [0503] ; In jedem %%SubService%% kann auf die Variablen der darüberliegenden Definitionen zugegriffen werden. Das gilt auch für die globalen Variablen des Headers, welche in der Gruppe [eBusConnector] definiert werden. |
  
-^Parameter  ^Beschreibung| | | 
-|<nowiki>[[:ebus:servicedef|ServiceDef]]</nowiki>  |Definition der Datenstruktur ab hier in der Form <nowiki>Feldname=Datentype|Feldname2=Datentype2 [|...]</nowiki>| 
-|Check  |SQL-Statement, welches prüft, ob die Daten verarbeitet werden müssen. Es wird nichts bearbeitet, wenn Recordset mit 0 Datensätzen oder 1.Feld des 1.Datensatzes den Wert 0 enthält. Damit sind Prüfungen möglich in der Form von Berechnungen oder in Abhängigkeit von anderen Werten in der Db.| | | 
-|<nowiki>[[:ebus:mininteral|MinInteral]]</nowiki>  |Mindestzeit zwischen zwei Ausführungen Beispiele: (Werte ohne Anführungszeichen eintragen) \\ "80 s" → 80 Sekunden \\ "1 h" → eine Stunde \\ "2 d" → 2 Tage \\ "1500" → 1500 millisekunden ( 1,5 Sekunden) \\ "1 d 5 h 30 m" → Kombination der Werte möglich| | | 
-|<nowiki>[[:ebus:checkchanges|CheckChanges]]</nowiki>  |entweder "sql", wenn der komplette erzeugte SQL-Befehl unterschiedlich sein muss oder Felder, welche unterschiedlich sein müssen. z.B.: %From%!%To%. Damit wird erreicht, dass nur geänderte Daten gespeichert werden.| | | 
-|<nowiki>[[:ebus:checkmode|CheckMode]]</nowiki>  |Kann den Wert AND oder OR haben. Defaultwert AND bedeutet, dass [[:ebus:mininterval|MinInterval]] und [[:ebus:checkchanges|CheckChanges]] zutreffen müssen um eine Aktion durchzuführen. Bei OR wird der Satz bearbeitet, wenn entweder [[:ebus:mininterva|MinInterva]] l erreicht oder [[:ebus:checkchanges|CheckChanges]] zutrifft.| | | 
-|SUBSERVICEDEFINITION:  |Wird ein Feld als "SubService" definiert, dann legt der Feldinhalt das zu verwendende [[:ebus:subservice|SubService]] fest. Es muss wieder mit Use= festgelegt werden, welche Subservices bearbeitet werden sollen. Der Gruppenname für die Definition wird entsprechend erweitert (siehe Service [0503] ; In jedem [[:ebus:subservice|SubService]] kann auf die Variablen der darüberliegenden Definitionen zugegriffen werden. Das gilt auch für die globalen Variablen des Headers, welche in der Gruppe [eBusConnector] definiert werden.| | | 
  
 ====== Wie beginnen... ====== ====== Wie beginnen... ======
  
-Um einfach alle Daten anzuzeigen welche am eBus transportiert werden, können einfach die Use-Einträge in der Gruppe [eBusConnector] auskommentiert werden und der Eintrag <nowiki>[[:ebus:loglevel|LogLevel]]</nowiki> auf 0x0241 setzen.+Um einfach alle Daten anzuzeigen welche am eBus transportiert werden, können einfach die Use-Einträge in der Gruppe [eBusConnector] auskommentiert werden und der Eintrag %%LogLevel%% auf 0x0241 setzen.
  
-<file> +<file>Unknown Service 0700 read: 30 FE 07 00 09 00 80 10 43 21 FF FF 03 FF FB</file>
-Unknown Service 0700 read: 30 FE 07 00 09 00 80 10 43 21 FF FF 03 FF FB +
-</file>+
  
-Dann können die benötigten Servicedaten mit Use eingehängt und noch nicht definierte Services auf Grund der Dokumentation definiert werden (siehe Servicedefiniton). In obigem Beispiel ergibt sich folgende Definiton:+Dann können die benötigten Servicedaten mit Use eingehängt und noch nicht definierte Services auf Grund der Dokumentation definiert werden (siehe Servicedefiniton). In obigem Beispiel ergibt sich folgende Definiton: 
 + 
 +|QQ |30 || 
 +|ZZ |FE |Broadcast | 
 +|PB |07 |Primärbefehl | 
 +|SB |00 |Sekundärbefehl | 
 +|LL |09 |Datenlänge | 
 +|00 80 |Außentemperatur (data2b, 1/256) || 
 +|10 |Sekunden (BCD) || 
 +|43 |Minuten (BCD) || 
 +|21 |Stunden (BCD) || 
 +|FF |Tag (BCD) || 
 +|FF |Monat (BCD) || 
 +|03 |Wochentag (BCD) || 
 +|FF |Jahr (BCD) || 
 +|FB |Prüfziffer ||
  
-|QQ  |30  || 
-|ZZ  |FE  |Broadcast| 
-|PB  |07  |Primärbefehl| 
-|SB  |00  |Sekundärbefehl| 
-|LL  |09  |Datenlänge| 
-|00 80  |Außentemperatur (data2b, 1/256)|| 
-|10  |Sekunden (BCD)|| 
-|43  |Minuten (BCD)|| 
-|21  |Stunden (BCD)|| 
-|FF  |Tag (BCD)|| 
-|FF  |Monat (BCD)|| 
-|03  |Wochentag (BCD)|| 
-|FF  |Jahr (BCD)|| 
-|FB  |Prüfziffer|| 
  
-<code> 
 <file>[eBusConnector] <file>[eBusConnector]
-Use''0700+Use=0700
  
 [0700] [0700]
-ServiceDefAussenTempdata2b Sekundenbcd Minutenbcd Stundenbcd Tagbcd Monatbcd Wochentagbcd Jahrbcd+ServiceDef=AussenTemp=data2b Sekunden=bcd Minuten=bcd Stunden=bcd Tag=bcd Monat=bcd Wochentag=bcd Jahr=bcd
 ; Anzeige der Daten ; Anzeige der Daten
-SqlSelect 'AussenTemp: %AussenTemp%', 'Zeit: %Stunden%:%Minuten%:%Sekunden%', 'Datum: %Tag%.%Monat%.%Jahr%', 'WochenTag: %Wochentag%' +Sql=Select 'AussenTemp: %AussenTemp%', 'Zeit: %Stunden%:%Minuten%:%Sekunden%', 'Datum: %Tag%.%Monat%.%Jahr%', 'WochenTag: %Wochentag%' 
-MinInterval1 m+MinInterval=1 m
 </file> </file>
-</code>Im obigen Beispiel werden keine Daten gespeichert, sondern nur angezeigt. Sollen diese Daten gespeichert werden, dann muss zuerst in der Datenbank ein entsprechendes Datenfeld dafür vorhanden sein. Ist das nicht der Fall, dann zuerst ein entsprechendes Datenfeld in der Datenbank anlegen. 
  
-— 
  
-eine weitere Möglichkeit ist die Verwendung der Analysefunktion:+Im obigen Beispiel werden keine Daten gespeichert, sondern nur angezeigt. Sollen diese Daten gespeichert werden, dann muss zuerst in der Datenbank ein entsprechendes Datenfeld dafür vorhanden sein. Ist das nicht der Fall, dann zuerst ein entsprechendes Datenfeld in der Datenbank anlegen.
  
-Dazu sind die zu analysierenden Services mit dem Typ "analyze" zu definieren und der <nowiki>[[:ebus:loglevel|LogLevel]]</nowiki> auf LOG_VALUES gestellt werden.+--- 
 + 
 +eine weitere Möglichkeit ist die Verwendung der Analysefunktion: 
 + 
 +Dazu sind die zu analysierenden Services mit dem Typ "analyze" zu definieren und der %%LogLevel%% auf LOG_VALUES gestellt werden.
  
-<code> 
 <file>[eBusConnector] <file>[eBusConnector]
-LogLevel''0x0347+LogLevel=0x0347
  
-Use''0700+Use=0700
  
 [0700] [0700]
-ServiceDef''analyze(9)+ServiceDef=analyze(9)
 </file> </file>
-</code> 
  
-Nun wird eine Datei mit dem Namen "0700.cvs" erstellt welche alle möglichen Werte der verschiedenen Datentypen aller gelesenen Servicedaten enthält. Da können schon große Datenmengen zustande kommen!+ 
 +Nun wird eine Datei mit dem Namen "0700.cvs" erstellt welche alle möglichen Werte der verschiedenen Datentypen aller gelesenen Servicedaten enthält. Da können schon große Datenmengen zustande kommen!
  
 Habe ich nun durch die Analyse der cvs-Datei herausgefunden (das geht sehr gut mit der grafischen Darstellung der Daten in Excel und die Verwendung der Filterfunktion) welche Daten an bestimmten Stellen enthalten sind, dann kann die Servicedefinition erweitert werden. Dadurch entstehen weniger Analysedaten. Habe ich nun durch die Analyse der cvs-Datei herausgefunden (das geht sehr gut mit der grafischen Darstellung der Daten in Excel und die Verwendung der Filterfunktion) welche Daten an bestimmten Stellen enthalten sind, dann kann die Servicedefinition erweitert werden. Dadurch entstehen weniger Analysedaten.
  
-<code> 
 <file>[eBusConnector] <file>[eBusConnector]
-LogLevel''0x0347+LogLevel=0x0347
  
-Use''0700+Use=0700
  
 [0700] [0700]
-ServiceDef''AussenTemp''data2b | analyze(7)+ServiceDef=AussenTemp=data2b | analyze(7) 
  
 </file> </file>
-</code> 
  
-— 
  
-Natürlich kann diese Funktionalität auch genutzt werden, um sämtliche gelesenen Daten welche von Interesse sind in csv-Dateien zu speichern und in anderen Programmen weiterzuverarbeiten.+--- 
 + 
 +Natürlich kann diese Funktionalität auch genutzt werden, um sämtliche gelesenen Daten welche von Interesse sind in csv-Dateien zu speichern und in anderen Programmen weiterzuverarbeiten.
  
 ====== Beispieldatei: ====== ====== Beispieldatei: ======
  
-Mit dieser Datei logge ich die Daten meiner Wolf Solaranlage (SM1) und Wolf Regler (KM1) und speichere alle 20 Minuten einen Datensatz für spätere Auswertungen und grafische Darstellung.+Mit dieser Datei logge ich die Daten meiner Wolf Solaranlage (SM1) und Wolf Regler (KM1) und speichere alle 20 Minuten einen Datensatz für spätere Auswertungen und grafische Darstellung.
  
-<code+<file
-<file>; Datenbankanbindung+; Datenbankanbindung
 ; Sollte keine Access-MDB verwendet werden, dann hier den Connectionstring eintragen ; Sollte keine Access-MDB verwendet werden, dann hier den Connectionstring eintragen
 ; (siehe www.connectionstrings.com) ; (siehe www.connectionstrings.com)
 [Db] [Db]
-Connection''Provider''Microsoft.Jet.OLEDB.4.0;Data Source''eBus.mdb +Connection=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=eBus.mdb 
-User'' +User= 
-Pwd''+Pwd=
-Provider''MSDASQL+Provider=MSDASQL
  
 ; ;
Zeile 198: Zeile 195:
 ; ;
 ; ComNum legt fest, an welcher seriellen Schnittstelle der Konverter angeschlossen ist. ; ComNum legt fest, an welcher seriellen Schnittstelle der Konverter angeschlossen ist.
-; die anderen Einstellungen sollten für eBus passen und sollten nicht geändert werden.+; die anderen Einstellungen sollten für eBus passen und sollten nicht geändert werden.
 [eBusCom] [eBusCom]
-ComNum''+ComNum=
-Baudrate''2400 +Baudrate=2400 
-FlowCtrl''+FlowCtrl=
-LineCondFlags''+LineCondFlags=
-RxCharWait''3000+RxCharWait=3000
  
 ; ;
 ; Daten aus Datei einlesen ; Daten aus Datei einlesen
-; Der Parameter CharDelay kann gesetzt werden, um das Einlesen der Daten zu verzögern. Das ist dann nützlich+; Der Parameter CharDelay kann gesetzt werden, um das Einlesen der Daten zu verzögern. Das ist dann nützlich
-; wenn Timestamps als Keyfelder verwendet werden. Bei 0 werden die Daten ohne Verzögerung gelesen.+; wenn Timestamps als Keyfelder verwendet werden. Bei 0 werden die Daten ohne Verzögerung gelesen.
 [eBusFile] [eBusFile]
-InputFile''eBusIn.dat +InputFile=eBusIn.dat 
-CharDelay''1+CharDelay=1
  
 ; ;
 ; Konfiguration eBUS-Connector: Services und Datenstrukturen ; Konfiguration eBUS-Connector: Services und Datenstrukturen
 ; ;
-;+
 ; Servicedefinition: ; Servicedefinition:
 ; Parameter: ; Parameter:
-; ServiceDef'' Definition der Datenstruktur in der Form Feldname''Datentype | Feldname2''Datentype2 [|...] +; ServiceDefDefinition der Datenstruktur in der Form Feldname=Datentype | Feldname2=Datentype2 [|...] 
-; Check'' SQL-Statement, welches prüft, ob die Daten verarbeitet werden müssen+; CheckSQL-Statement, welches prüft, ob die Daten verarbeitet werden müssen
-; Es wird nichts bearbeitet, wenn Recordset mit 0 Datensätzen oder 1.Feld des 1.Datensatzes den Wert 0 enthält+; Es wird nichts bearbeitet, wenn Recordset mit 0 Datensätzen oder 1.Feld des 1.Datensatzes den Wert 0 enthält
-; Damit sind Prüfungen möglich in der Form von Berechnungen oder in Abhängigkeit von anderen Werten in der Db. +; Damit sind Prüfungen möglich in der Form von Berechnungen oder in Abhängigkeit von anderen Werten in der Db. 
-; MinInteral'' Mindestzeit zwischen zwei Ausführungen +; MinInteralMindestzeit zwischen zwei Ausführungen 
-; Beispiele: (Werte ohne Anführungszeichen eintragen)+; Beispiele: (Werte ohne Anführungszeichen eintragen)
 ; "80 s" -> 80 Sekunden ; "80 s" -> 80 Sekunden
 ; "1 h" -> eine Stunde ; "1 h" -> eine Stunde
Zeile 231: Zeile 228:
 ; "2 d" -> 2 Tage ; "2 d" -> 2 Tage
 ; "1500" -> 1500 millisekunden ( 1,5 Sekunden) ; "1500" -> 1500 millisekunden ( 1,5 Sekunden)
-; "1 d 5 h 30 m" -> Kombination der Werte möglich+; "1 d 5 h 30 m" -> Kombination der Werte möglich
 ; CheckChanges entweder "sql", wenn der komplette erzeugte SQL-Befehl unterschiedlich sein muss oder Felder, ; CheckChanges entweder "sql", wenn der komplette erzeugte SQL-Befehl unterschiedlich sein muss oder Felder,
-; welche unterschiedlich sein müssen. z.B.: %From%%To%. Damit wird erreicht, dass nur geänderte Daten+; welche unterschiedlich sein müssen. z.B.: %From%%To%. Damit wird erreicht, dass nur geänderte Daten
 ; gespeichert werden. ; gespeichert werden.
-; CheckMode'' Kann den Wert AND oder OR haben. Defaultwert AND bedeutet, dass MinInterval und CheckChanges zutreffen müssen +; CheckModeKann den Wert AND oder OR haben. Defaultwert AND bedeutet, dass MinInterval und CheckChanges zutreffen müssen 
-; um eine Aktion durchzuführen. Bei OR wird der Satz bearbeitet, wenn entweder MinInterval erreicht oder+; um eine Aktion durchzuführen. Bei OR wird der Satz bearbeitet, wenn entweder MinInterval erreicht oder
 ; CheckChanges zutrifft. ; CheckChanges zutrifft.
-+;  
-; Use'' Gibt an, welche Befehle definiert und für die Weiterbearbeitung verwendet werden sollen. +; UseGibt an, welche Befehle definiert und für die Weiterbearbeitung verwendet werden sollen. 
-; Die Definition beginnt bei der Gruppe [eBusConnector] und geht bei jedem mit "Use" angeführten Befehl +; Die Definition beginnt bei der Gruppe [eBusConnector] und geht bei jedem mit "Use" angeführten Befehl 
-; weiter. Es kann beliebig weiterverzweigt werden.+; weiter. Es kann beliebig weiterverzweigt werden. 
 ; ;
 ; DATENTYPEN: ; DATENTYPEN:
 ; alle in der Spezifikation beschriebenen Datentypen: ; alle in der Spezifikation beschriebenen Datentypen:
-; einfach: Bereich Auflösung Defaultwert+; einfach: Bereich Auflösung Defaultwert
 ; char FF ; char FF
 ; signed char 80 ; signed char 80
Zeile 258: Zeile 255:
 ; data2d -3276,6-3276,6 1/10  8000 ; data2d -3276,6-3276,6 1/10  8000
 ; spezial: ; spezial:
-;   Flags               Daten werden als Binärstring ausgegeben+;   Flags               Daten werden als Binärstring ausgegeben
 ;   Text( Anzahl )      Daten werden als Text umgewandelt; hex( Anzahl ) erzeugt einen Hexstring der angegebenen Anzahl Bytes als String ( z.B. "01 02 03") ;   Text( Anzahl )      Daten werden als Text umgewandelt; hex( Anzahl ) erzeugt einen Hexstring der angegebenen Anzahl Bytes als String ( z.B. "01 02 03")
 ; SubService Gibt an, dass der Inhalt dieses Feldes ein Subservice definiert ; SubService Gibt an, dass der Inhalt dieses Feldes ein Subservice definiert
Zeile 264: Zeile 261:
 ; SUBSERVICEDEFINITION: ; SUBSERVICEDEFINITION:
 ; Wird ein Feld als "SubService" definiert, dann legt der Feldinhalt das zu verwendende SubService fest. ; Wird ein Feld als "SubService" definiert, dann legt der Feldinhalt das zu verwendende SubService fest.
-; Es muss wieder mit Use'' festgelegt werden, welche Subservices bearbeitet werden sollen. Der Gruppenname für die+; Es muss wieder mit Usefestgelegt werden, welche Subservices bearbeitet werden sollen. Der Gruppenname für die
 ; definition wird entsprechend erweitert (siehe Service [0503] ; definition wird entsprechend erweitert (siehe Service [0503]
-; In jedem SubService kann auf die Variablen der darüberliegenden definitionen zugegriffen werden. +; In jedem SubService kann auf die Variablen der darüberliegenden definitionen zugegriffen werden. 
-; Das gilt auch für die globalen Variablen des Headers, welche in der Gruppe [eBusConnector] definiert werden.+; Das gilt auch für die globalen Variablen des Headers, welche in der Gruppe [eBusConnector] definiert werden.
 ; ;
 [eBusConnector] [eBusConnector]
-CommType''$COMMTYPE$+CommType=$COMMTYPE$
  
-; Loglevel: Kombination folgender Werte (Beginn mit 0x... für Hex-Wert, 0... für Octal)+; Loglevel: Kombination folgender Werte (Beginn mit 0x... für Hex-Wert, 0... für Octal)
 ; LOG_ERROR          0x0001        -> Fehler generell ; LOG_ERROR          0x0001        -> Fehler generell
 ; LOG_UNDEFINED      0x0002        -> undefinierte Services ; LOG_UNDEFINED      0x0002        -> undefinierte Services
Zeile 278: Zeile 275:
 ; LOG_INFO           0x0008        -> Info-Meldungen ; LOG_INFO           0x0008        -> Info-Meldungen
 ; LOG_ALL_INPUT      0x0010        -> erstellt "eBusIn.dat" mit kompletten Input vom eBus ; LOG_ALL_INPUT      0x0010        -> erstellt "eBusIn.dat" mit kompletten Input vom eBus
-; LOG_CHECK          0x0020        -> Prüfungen für Ausführung von SQL-Befehlen+; LOG_CHECK          0x0020        -> Prüfungen für Ausführung von SQL-Befehlen
 ; LOG_READ           0x0040        -> gelesene Services ; LOG_READ           0x0040        -> gelesene Services
 ; LOG_UNSAVED        0x0080        -> nicht gespeicherte Services ; LOG_UNSAVED        0x0080        -> nicht gespeicherte Services
-; LOG_READ_ERROR     0x0100        -> Daten bei Lesefehler (CRC-, ACK- od. Längenfehler+; LOG_READ_ERROR     0x0100        -> Daten bei Lesefehler (CRC-, ACK- od. Längenfehler
-; LOG_VALUES         0x0200        -> Werte loggen (Rechenintensiv, nur für Analyse verwenden!) +; LOG_VALUES         0x0200        -> Werte loggen (Rechenintensiv, nur für Analyse verwenden!) 
-LogLevel''0x0107+LogLevel=0x0107
 ; Header: QQ ZZ PB SB NN ; Header: QQ ZZ PB SB NN
-ServiceDef''From''char | To''char | Service''char | SubService''char | DataLen''char+ServiceDef=From=char | To=char | Service=char | SubService=char | DataLen=char
 ; Standard ; Standard
-Use''0700 +Use=0700 
-Use''0800 +Use=0800 
-Use''0503 +Use=0503 
-Use''0507 +Use=0507 
-Kromschröder / Wolf +Kromschröder / Wolf 
-Use''5017 +Use=5017 
-Use''5018+Use=5018
  
 [0700] [0700]
-ServiceDef''AussenTemp''data2b | Sekunden''bcd | Minuten''bcd | Stunden''bcd | Tag''bcd | Monat''bcd | Wochentag''bcd | Jahr''bcd+ServiceDef=AussenTemp=data2b | Sekunden=bcd | Minuten=bcd | Stunden=bcd | Tag=bcd | Monat=bcd | Wochentag=bcd | Jahr=bcd
 ; Anzeige der Daten ; Anzeige der Daten
-Sql''Select 'AussenTemp: %AussenTemp%', 'Zeit: %Stunden%:%Minuten%:%Sekunden%', 'Datum: %Tag%.%Monat%.%Jahr%', 'WochenTag: %Wochentag%' +Sql=Select 'AussenTemp: %AussenTemp%', 'Zeit: %Stunden%:%Minuten%:%Sekunden%', 'Datum: %Tag%.%Monat%.%Jahr%', 'WochenTag: %Wochentag%' 
-MinInterval''1 m +MinInterval=1 m 
-NextWrite''B9FD4106DE9EE34000000000+NextWrite=B9FD4106DE9EE34000000000
  
 [0503] [0503]
-ServiceDef''Blocknummer''SubService +ServiceDef=Blocknummer=SubService 
-Use''01 +Use=01 
-Use''02+Use=02
  
 [0503:01] [0503:01]
-ServiceDef '' Statusanzeige''char | Zustand''char | Kesselleistung''char | Kesseltemp''data1c | Ruecklauftemp''char | Boilertemp''char | Aussentemp''signed char +ServiceDef Statusanzeige=char | Zustand=char | Kesselleistung=char | Kesseltemp=data1c | Ruecklauftemp=char | Boilertemp=char | Aussentemp=signed char 
-Sql''UPDATE eBusCurrent SET SammlerTemp''%Kesseltemp%, WWTemp''%BoilerTemp% +Sql=UPDATE eBusCurrent SET SammlerTemp=%Kesseltemp%, WWTemp=%BoilerTemp% 
-Check''SELECT %From%''241 AND %To%''254 +Check=SELECT %From%=241 AND %To%=254 
-CheckChanges''%KesselTemp%|%BoilerTemp% +CheckChanges=%KesselTemp%|%BoilerTemp% 
-MinInterval''30 s +MinInterval=30 s 
-LastCmd''43.0|35 +LastCmd=43.0|35 
-NextWrite''3D159805DE9EE34000000000+NextWrite=3D159805DE9EE34000000000
  
-0503:02] + 
-ServiceDef '' Abgastemp''data2c | BWWVorlauftemp''data1c | KesselleistungRel''data1c | GemeinsameVorlauftemp''Data1c | unused''char +[0503:02] 
-Sql''SELECT %Blocknummer% AS Blocknummer, «gastemp% AS Abgastemp, %BWWVorlauftemp% AS BWWVorlauftemp, %KesselleistungRel% AS KesselleistungRel, %GemeinsameVorlauftemp% AS GemeinsameVorlauftemp, %unused% AS unused+ServiceDef Abgastemp=data2c | BWWVorlauftemp=data1c | KesselleistungRel=data1c | GemeinsameVorlauftemp=Data1c | unused=char 
 +Sql=SELECT %Blocknummer% AS Blocknummer, %Abgastemp% AS Abgastemp, %BWWVorlauftemp% AS BWWVorlauftemp, %KesselleistungRel% AS KesselleistungRel, %GemeinsameVorlauftemp% AS GemeinsameVorlauftemp, %unused% AS unused
  
 [0507] [0507]
-ServiceDef '' StatusWaermeAnf''char | AktionVariableVerbraucher''char | Kesselsolltemp''data2c | Kesselsolldruck''data2b | Stellgrad''data1c | Brauchwassersolltemp''data1c | Brennstoffwahl''char +ServiceDef StatusWaermeAnf=char | AktionVariableVerbraucher=char | Kesselsolltemp=data2c | Kesselsolldruck=data2b | Stellgrad=data1c | Brauchwassersolltemp=data1c | Brennstoffwahl=char 
-MinInterval''20 m +MinInterval=20 m 
-NextWrite''A4703D8AB697E34000000000+NextWrite=A4703D8AB697E34000000000 
  
 [0800] [0800]
-ServiceDef '' Kesselsolltemp''data2b | AussenTemp''data2b | Leistungszwang''data1b | Status''char | WWSolltemp''data2b +ServiceDef Kesselsolltemp=data2b | AussenTemp=data2b | Leistungszwang=data1b | Status=char | WWSolltemp=data2b 
-Sql''UPDATE eBusCurrent SET KesselSollTemp''%Kesselsolltemp%, AussenTemp''%AussenTemp%, Leistungszwang''%Leistungszwang%, StatusKessel''%Status%, WWSollTemp''%WWSolltemp%, Timst''NOW() +Sql=UPDATE eBusCurrent SET KesselSollTemp=%Kesselsolltemp%, AussenTemp=%AussenTemp%, Leistungszwang=%Leistungszwang%, StatusKessel=%Status%, WWSollTemp=%WWSolltemp%, Timst=NOW() 
-;Sql''INSERT INTO Kessel ( KesselSollTemp, AussenTemp, Leistungszwang, Status, WWSollTemp, Von, An, Timst ) VALUES( %Kesselsolltemp%, %AussenTemp%, %Leistungszwang%, %Status%, %WWSolltemp%, %From%, %To%, NOW() ) +;Sql=INSERT INTO Kessel ( KesselSollTemp, AussenTemp, Leistungszwang, Status, WWSollTemp, Von, An, Timst ) VALUES( %Kesselsolltemp%, %AussenTemp%, %Leistungszwang%, %Status%, %WWSolltemp%, %From%, %To%, NOW() ) 
-Check''SELECT %From%''241 AND %To%''16 +Check=SELECT %From%=241 AND %To%=16 
-MinInterval''5 m +MinInterval=5 m 
-NextWrite''1598C51DDE9EE34000000000+NextWrite=1598C51DDE9EE34000000000 
  
 [5017] [5017]
-ServiceDef '' SolarPumpe''char | unknown1''char | KollektorTemp''data2c | WWSolarTemp''data2c +ServiceDef SolarPumpe=char | unknown1=char | KollektorTemp=data2c | WWSolarTemp=data2c 
-Sql''[5017:UpdateSolar]|[5017:InsertHistory]+Sql=[5017:UpdateSolar]|[5017:InsertHistory]
  
 [5017:UpdateSolar] [5017:UpdateSolar]
-Sql''UPDATE eBusCurrent Set S1Pumpe''%SolarPumpe%, S1KollektorTemp''%KollektorTemp%, S1WWTemp''%WWSolarTemp%, Timst''NOW() +Sql=UPDATE eBusCurrent Set S1Pumpe=%SolarPumpe%, S1KollektorTemp=%KollektorTemp%, S1WWTemp=%WWSolarTemp%, Timst=NOW() 
-MinInterval''20 s +MinInterval=20 s 
-CheckMode''OR +CheckMode=OR 
-CheckChanges''%KollektorTemp% +CheckChanges=%KollektorTemp% 
-NextWrite''44444404DE9EE34000000000 +NextWrite=44444404DE9EE34000000000 
-LastCmd''-11.31+LastCmd=-11.31
  
 [5017:InsertHistory] [5017:InsertHistory]
-Sql''INSERT INTO eBusHistory SELECT** From eBusCurrent +Sql=INSERT INTO eBusHistory SELECT** From eBusCurrent 
-MinInterval''20 m +MinInterval=20 m 
-NextWrite''CCD78D6EDE9EE34000000000+NextWrite=CCD78D6EDE9EE34000000000
  
-[5018] 
-ServiceDef '' Solarleistung''data2b | ErtragTagL''word | ErtragTagH''word | SummeErtragL''word | SummeErtragH''word | SummeErtragM''word 
-Sql''INSERT INTO SolarErtrag( Leistung, Tagesertrag, SummeErtrag, Timst ) VALUES ( %Solarleistung%, %ErtragTagH%** 1000 + %ErtragTagL%, %SummeErtragM%** 1000000 + %SummeErtragH%** 1000 + %SummeErtragL%, NOW() ) 
-MinInterval''1 h 
-CheckChanges''sql 
-NextWrite''C4C92455DE9EE34000000000 
-LastCmd''INSERT INTO SolarErtrag( Leistung, Tagesertrag, SummeErtrag, Timst ) VALUES ( 0.00, 2** 1000 + 139, 1** 1000000 + 452** 1000 + 833, NOW() )</p></file> 
-</code> 
  
-\\+[5018] 
 +ServiceDef = Solarleistung=data2b | ErtragTagL=word | ErtragTagH=word | SummeErtragL=word | SummeErtragH=word | SummeErtragM=word 
 +Sql=INSERT INTO SolarErtrag( Leistung, Tagesertrag, SummeErtrag, Timst ) VALUES ( %Solarleistung%, %ErtragTagH%** 1000 + %ErtragTagL%, %SummeErtragM%** 1000000 + %SummeErtragH%** 1000 + %SummeErtragL%, NOW() ) 
 +MinInterval=1 h 
 +CheckChanges=sql 
 +NextWrite=C4C92455DE9EE34000000000 
 +LastCmd=INSERT INTO SolarErtrag( Leistung, Tagesertrag, SummeErtrag, Timst ) VALUES ( 0.00, 2** 1000 + 139, 1** 1000000 + 452** 1000 + 833, NOW() ) 
 +</file>
  
  
ebus/ebusconnector.1445977573.txt.gz · Zuletzt geändert: 2015/10/27 20:26 von admin