I²C en een Remeha-ketel

In een vorig artikel maakte ik een “servicedisplay” (zo noemt Remeha het) voor mijn W21/28 ECO HR-ketel. Omdat ik toch de I²C-bus van de ketel aan het uitlezen was, leek het me aardig om meteen eens te kijken wat er nog meer voor berichten zichtbaar waren.

Gewapend met een oscilloscoop – en later met een eenvoudige logic analyzer, dat bleek wat simpeler – keek ik eerst maar eens welke adressen op de bus zoal langskwamen:

  • 0x21 – onbekend. Luisteren op dit adres lijkt de ketel-toestand op te leveren, 1 (ruststand?) of 3 (warm water?).
  • 0x38 – het servicedisplay (zie eerdere posting). Normaliter niet aangesloten op de W21/28; op nieuwere ketels is het een standaard-onderdeel van de ketel zelf.
  • 0x50 – onbekend; slave aanwezig; de ketel schrijft een byte (0x00) en leest dan een byte (0xAA).
  • 0x48 – onbekend; geen slave aanwezig. Wanneer je op dit adres luistert, gaat de ketel er zowel op schrijven als van lezen.
  • 0x57 – onbekend; geen slave aanwezig. Er wordt naar dit adres uitsluitend geschreven. (Zie ook 0x5f).
  • 0x5f – onbekend; wél een slave aanwezig. Op dit adres komen reeksen bytes langs die merkwaardig veel lijken op de bytes die naar adres 0x57 gestuurd worden.

Mijn aandacht gaat allereerst uit naar adres 0x57. Ik gebruikte het printje uit de vorige posting en programmeerde dat zo, dat de I²C-data naar de seriële uitgang geschreven wordt. Dat leverde blokken op die er ongeveer zo uitzien – de 0x staat er telkens expliciet voor, omdat ik verderop de decimale waarden ga gebruiken:

0x40
0x00 0x2F 0x2C 0xDB 0xDB 0xDB 0x00 0x00 0x14
0x08 0x00 0xF2 0xBF 0x20 0x00 0x00 0x00 0x00
0x10 0x00 0x00 0x2B 0x12 0x5C 0x12 0x5C 0x05
0x18 0xDC 0x64 0x0A 0x02 0x08 0xF3 0x24 0x00
0x20 0x00 0x00 0x37 0x00 0x4B 0x14 0x00 0x00

Wat de “40” precies betekent, weet ik niet. Wel kon ik bepaalde data thuisbrengen. De eerste regel is telkens het regelnummer:

0x40
0x00  47   44  0xDB 0xDB 0xDB 0x00 0x00 0x14
0x08 0x00 0xF2 0xBF 0x20 0x00 0x00 0x00 0x00
0x10 0x00 0x00 0x2B 0x12 0x5C 0x12 0x5C 0x05
0x18 0xDC 0x64 0x0A 0x02 0x08 0xF3 0x24 0x00
0x20 0x00 0x00  55  0x00 0x4B 0x14 0x00 0x00
0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00

De getallen 47 en 44 in bovenstaand blok zijn respectievelijk de gemeten aanvoertemperatuur en gemeten retourtemperatuur. Het getal 55 is de ingestelde “gewenste max. aanvoertemperatuur”.

De instellingen “pompnadraaitijd” en “temperatuur warmwater” lijken in bovenstaande berichten te ontbreken. Wijziging van deze parameters in de ketel leverde geen gewijzigde codewoorden in de I²C-blokken.

Zoals ik al zei, lijkt de data op de bus gespiegeld te worden naar adres 0x5f: daar zijn vrijwel identieke datablokken te vinden. Misschien toch maar eens kijken of er iemand met een Mini GMI interface te vinden is, zodat ik de seriële data met de I²C-data kan matchen…