| Beide Seiten der vorigen Revision
Vorhergehende Überarbeitung
Nächste Überarbeitung
|
Vorhergehende Überarbeitung
|
wiki:ems:re [2014/04/18 17:50] karlmw reveng |
wiki:ems:re [2015/12/30 21:00] (aktuell) |
| ====== Reverse Engineering ====== | ====== Reverse Engineering ====== |
| ==== Sniffen ==== | ==== Sniffen ==== |
| Wie man EMS Telegramme identifiziert und z.B. in den "collectord" einbaut, hat Michael Moosbauer (moosy) detailliert [[http://www.mikrocontroller.net/topic/318364#3530428|im Thread]] beschrieben. In der Zwischenzeit (Mitte April 2014) sind einige Änderungen eingetreten, so dass moosys aktualisierter Text, auch der einfacheren Auffindbarkeit, hier noch einmal wieder gegeben wird. | Wie man EMS Telegramme identifiziert und z.B. in den "collectord" einbaut, hat Michael Moosbauer (moosy) detailliert [[http://www.mikrocontroller.net/topic/318364#3530428|im Thread]] beschrieben. In der Zwischenzeit (Mitte April 2014) sind einige Änderungen eingetreten, so dass moosys aktualisierter Text, auch der einfacheren Auffindbarkeit halber, hier noch einmal wiedergegeben wird. |
| ==== HowTo ==== | ==== HowTo ==== |
| Der Einbau eines neuen Features ist eigentlich immer gleich: | Der Einbau eines neuen Features ist eigentlich immer gleich: |
| |
| - Identifizierung der Parameter/Werte, die man ändern/einstellen kann. | * Identifizierung der Parameter/Werte, die man ändern/einstellen kann.\\ |
| - Herausfinden, in welchen Telegrammen sie stecken. Das geht mit dem collectord recht leicht, allerdings muss hierzu der ems-collector mit Raw-Kommando-Support gebaut werden (Zeile 3 des Makefiles auskommentieren, d.h. Raute entfernen). Dann im collectord: | * Herausfinden, in welchen Telegrammen sie stecken. Das geht mit dem collectord recht leicht, allerdings muss hierzu der ems-collector mit Raw-Kommando-Support gebaut werden (Zeile 3 des Makefiles auskommentieren, d.h. Raute entfernen). Dann im collectord:\\ |
| |
| a) 'raw read <device> <type> <offset> <len>' also: | a) 'raw read <device> <type> <offset> <len>' also: |
| raw read DE TY 0 25 , wobei DE das DEVICE is (also 10=RC35, 08=UBA), | raw read DE TY 0 25 , wobei DE das DEVICE is (also 0x10=RC35, 0x08=UBA), |
| und TY der Telegrammtyp, den man im Verdacht hat, dass er zuständig ist. | und TY der Telegrammtyp, den man im Verdacht hat, dass er zuständig ist. |
| Ausgabe merken. | Ausgabe merken. |
| b) Wert am RCxx[x] verstellen | b) Wert am RCxx[x] verstellen |
| c) a) wiederholen. Wenn sich was geändert hat, ist es ein heißer Kandidat. | c) a) wiederholen. Wenn sich was geändert hat, ist es ein heißer Kandidat. |
| d) a) - c) wiederholen um sicherzugehen | d) a) - c) wiederholen um sicherzugehen |
| e) raw read DE TY OFF 1 , wobei OFF der ausgezählte Offset ist, | e) raw read DE TY OFF 1 , wobei OFF der ausgezählte Offset ist, |
| so lange probieren, bis genau dieser eine Wert da steht | so lange probieren, bis genau dieser eine Wert da steht |
| f) 'raw write <device> <type> <offset> <data0> ... <dataX>', also: | f) 'raw write <device> <type> <offset> <data0> ... <dataX>', also: |
| raw write DE TY OFF <andererWert> und gucken, ob sich der Wert am RCxx[x] geändert hat. | raw write DE TY OFF <andererWert> und gucken, ob sich der Wert am RCxx[x] geändert hat. |
| WENN NICHT: mit raw write DE TY OFF <Wert aus e)> alten Wert wiederherstellen. | WENN NICHT: mit raw write DE TY OFF <Wert aus e)> alten Wert wiederherstellen. |
| - Für die Messwerte parallel die Werte am RC35 ablesen und per raw read gucken, ob man sie irgendwo findet (dabei beachten: raw read liefert hex, Temperaturen sind oft verdoppelt 30°=60 oder verzehnfacht 30°=300). | g) Für die Messwerte parallel die Werte am RCxx[x] ablesen und per raw read gucken, |
| | ob man sie irgendwo findet (dabei beachten: raw read liefert hex, Temperaturen sind |
| | oft verdoppelt 30°=60 oder verzehnfacht 30°=300). |
| |
| - Ins EMS-Wiki eintragen (lassen) | * Ins EMS-Wiki eintragen (lassen)\\ |
| - In den ems-collectord einbauen (lassen) | * In den ems-collectord einbauen (lassen)\\ |
| - Ins Webinterface einbauen (lassen) | * Ins Webinterface einbauen (lassen)\\ |
| |