Benutzer:Stettberger/Blog:Dachs MSR1 Protokoll decodieren: Unterschied zwischen den Versionen

Aus Ethersex_Wiki
Wechseln zu: Navigation, Suche
K (Die Seite wurde neu angelegt: right == Dachs MSR1 Protokoll decodieren == Vor einiger Zeit ist jemand auf der dem Ethersex Bugtracker aufgeschlagen, der Daten aus einer S...)
 
(kein Unterschied)

Version vom 24. Juli 2009, 13:20 Uhr

Senertec-dachs.png

Dachs MSR1 Protokoll decodieren

Vor einiger Zeit ist jemand auf der dem Ethersex Bugtracker aufgeschlagen, der Daten aus einer Senertec Dachs MSR1 Steuerung für Blockheizkraftwerke auslesen wollte. Leider gibt sehr sehr wenig Dokumentation zu dem verwendeten Protokoll. Die Firma scheint genau garnichts rauszugeben[*] Im BHKW-Forum geistert die Beschreibung von 2 Befehlen zum auslesen von Informationen herum. Die hab ich zunächst einmal in Ethersex implementiert. Ging soweit auch ganz angenehm. Allerdings wollte ich noch unbedingt die Zeit bis zur nächsten Wartung auslesen. Das ist zwar teilweise schon implementiert in den 2 bekannten Kommandos, allerdings gibts dort erst eine Anzeige, wenn die Wartung schon in 254 Betriebsstunden fällig ist. Das war mir zu wenig, vornehmlich, weil die Mitgelieferte DOS Software mir eben diese Information bietet (waren da dann ueber 1500 Betriebsstunden bis zur nächsten Wartung). Also musste da noch mehr an Informationen und Kommandos versteckt sein.

Da langes googeln keinen Erfolg brachte, hab ich mich selber drangemacht das Protokoll zu dekodieren. Dazu ist der erste Schritt rauszufinden, welche Kommandos Informationen hervorrufen. Dazu verbindet man die Serielle Schnittstelle eines normales PCs mit der Dachs und bringt die Kommunikation ans laufen. (Die Service Software mit DosBox starten). Nun lötet man die TX Leitung des Rechners auf die RX Leitung einer anderen seriellen Schnittstelle, und voila, schon bekommt man all die kommandos, die die Service Software absetzt. Nun einfach selber die Bytes (es waren nur 1 Byte lange Kommandos) an die Dachs versendet, und die Antworten in Dateien umgeleitet. Exakterweise habe ich ein ethersex mit YPort zu diesem Zecke verwendet, da ist dann netcat sehr praktisch.

Gut jetzt hab man mehrere Binärblobs als Antwort, weiß aber nicht was die einzelnen Bytes bedeuten, und ohne das machts ja wenig Spass. Also Baut man sich mit den Antwortpacketen und einem bischen Python Skript einen Dachs Emulator. Der einfach auf der seriellen Schnittstelle nach diesen 1 Byte Kommandos lauscht und als Antwort den Inhalt der passenden Datei versendet. Die Service Software läuft dann auf einem anderen Rechner (oder auf dem gleichen, wenn man 2 Serielle Schnittstellen hat) und fragt unseren Emulator ab.

Jetzt geht man nur noch her und wackelt mit jeweils einen Byte und schaut welcher Wert in der Anzeige sich verändert und wie der Bytewert mit der Änderung im Zusammenhang steht. Das ganze muss ich jetzt "nur noch" vervollständigen und in Ethersex einbauen und schon hat kann man mit einem ethersex seine BHKW überwachen.

Voila: Dachs MSR1 Service Protokoll

Was ich zu dem Service Programm noch loslassen wollte. Wenn da schon eine Checksumme mitgeschickt wird (ich denke/hoffe jedenfalls, dass das passiert, dann sollte doch wenigstens die Service Software sich ein kleines bischen drum kümmer und sie nit einfach ignorieren.

PS: Ich hab kein so ein Ding.....

[*] Jede Firma, die ihre Protokolle geheimhält ist doch wirklich selten doof. Der Kunde wird, obwohl das Protokoll offengelegt ist, und obwohl es vielleicht Konkurrenzprodukte zu seinen Serviceangeboten gibt, das der Herstellerfirma nutzen, weil er ein besseres Gefühl hat, wenn doch alles aus einer Hand kommt. Andereseits ist ein offenes Protokoll auch ein werbewirksames Feature, weil der Kunde sich nicht auf den Hersteller auf gedeih und verderb einlassen muss. Das gibt ein gutes Gefühl beim kaufen.