In navolging van het andere topic waar ik bezig ben (met het slopen) van mijn Philips 1200 koffiemachine (bartbh in "Philips 1200 + esp8266 - display niet werkend te krijgen") ben ik bezig om een esp8266 in te richten als vervangend scherm voor het koffieapparaat.
Hierbij heb ik gebruik gemaakt van een bestaand github-project om met de machine te communiceren. Hierbij ontvangt de esp8266 de statuscodes van het apparaat om zo te bepalen wat de instellingen (aantal koffiie, water, bonen etc.) van de machine is. Hiervoor kijk ik naar een gedeelte van de statuscode. Probleem is echter dat deze communicatie niet stabiel genoeg is, waardoor er verstoring ontstaat en mijn webinterface op de esp8266 niet altijd de goede status weergeeft.
Nu wil ik de checksum achterhalen om zo te controleren of het ontvangen bericht correct is of niet. Echter is dit voor mij een geheel nieuw gebied en heb ik wat moeite om te achterhalen wat dit precies zou kunnen zijn.
Een aantal goede berichten zijn:
Waar het mis gaat
Hieruit heb ik herleidt dat een bericht altijd begint met d5 55 (header?) en de laatste 4 karakters (2 hex getallen) zouden dan de checksum moeten zijn. Een CRC-16 als ik het goed heb.
Na wat zoek en speurwerk ben ik uiteindelijk uitgekomen op reveng voor het reverse engineren van de checksum. Alleen lukt het mij niet om de gebruikte checksum te achterhalen.
Ik heb zowel complete statuscodes, als ook statuscodes zonder de leading d5 en ook zonder d5 55 geprobeerd. Echter het resultaat is stevast "no models found".
Zoek ik in de verkeerde hoek, of zie ik wat anders over het hoofd?
Hierbij heb ik gebruik gemaakt van een bestaand github-project om met de machine te communiceren. Hierbij ontvangt de esp8266 de statuscodes van het apparaat om zo te bepalen wat de instellingen (aantal koffiie, water, bonen etc.) van de machine is. Hiervoor kijk ik naar een gedeelte van de statuscode. Probleem is echter dat deze communicatie niet stabiel genoeg is, waardoor er verstoring ontstaat en mijn webinterface op de esp8266 niet altijd de goede status weergeeft.
Nu wil ik de checksum achterhalen om zo te controleren of het ontvangen bericht correct is of niet. Echter is dit voor mij een geheel nieuw gebied en heb ik wat moeite om te achterhalen wat dit precies zou kunnen zijn.
Een aantal goede berichten zijn:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
| d5550000003800003f07380700000000071d2b d5550000003800003f07380700000000002437 d555000000380000000738070000000000312c d5550000003800000007380700000000070830 d5550000003800003807380700000000073707 d5550000003800003807380700000000000e1b d5550000000700000007380700000000070c22 d555000000070000000738070000000000353e d5550038000000003f073f0700000000070e11 d5550007070707000000000007000000003232 d555000000030700000000000000000007081a d5550000070003000000000000000000073c3d d555000700000000003807000000000007100b |
Waar het mis gaat
code:
1
2
| d5550100000000000000000000000000000626 <- deze klopt, d555501 = machine staat uit d5554000000000000000000000000000062675 <- deze klopt niet, maar daardoor lijkt het alsof de machine niet uit staat |
Hieruit heb ik herleidt dat een bericht altijd begint met d5 55 (header?) en de laatste 4 karakters (2 hex getallen) zouden dan de checksum moeten zijn. Een CRC-16 als ik het goed heb.
Na wat zoek en speurwerk ben ik uiteindelijk uitgekomen op reveng voor het reverse engineren van de checksum. Alleen lukt het mij niet om de gebruikte checksum te achterhalen.
code:
1
2
| .\reveng.exe -w 16 -s 0038000000003f073f0700000000070e11 000000030700000000000000000007081a 0000000000000000000000003800003816 0000070000000000070000000000071325 C:\temp\reveng-2.1.1\bin\win32\reveng.exe: no models found |
Ik heb zowel complete statuscodes, als ook statuscodes zonder de leading d5 en ook zonder d5 55 geprobeerd. Echter het resultaat is stevast "no models found".
Zoek ik in de verkeerde hoek, of zie ik wat anders over het hoofd?