intercook schreef op maandag 27 juli 2026 @ 21:13:
[...]
Yes, it's 5V on the data line.
I did not have time to get my Arduino experiments started yet. But I was able to make some more captures. (This time I will describe them in more detail)
All following captures were made with reservoir and cube attached to flex faucet.
Capture of reservoir heating.
This capture was made while the system was in idle (I did not touch it) but with the reservoir heating up, so the led ring on the faucet was red. Nothing else happened in this capture, just the reservoir heating up and the led ring being red.
Capture of activating and stopping boiling water.
This capture starts with the system in idle and the reservoir not heating. I then activated boiling water by "push - push - rotate". I let it run a little and then brought it back to idle by moving the ring / knob (I don't know what I should call this thing) back into its released position.
Capture of activating and stopping cooled non sparkling water.
This capture again starts with the system in idle and the reservoir not heating. I then activated cooled non sparkling water by "push - wait - rotate". Again I let it run a little and then brought it back to idle by moving the ring (I'll just call it ring for now) back to its released position.
Capture of activating and stopping sparkling water.
This capture started the same as the two above. The system was in idle and not heating. I activated sparkling water by "push - rotate". I let it run a little and turned it back to idle by moving the ring to its released position.
Since we have some time variance in these captures, I also made some while every function is already activated.
Capture of dispensing boiling water.
I activated boiling water (push push rotate) and then started the capture for some seconds. After ending the capture, I turned it back to idle.
Capture of dispensing cooled non sparkling water.
Same here. Cooled non sparkling water was already active when I started the capture. I again ended the capture before putting the system back to idle.
Capture of dispensing sparkling water.
This is the same as the two above, but with sparkling water.
During all of these captures, the led ring of the faucet turned on:
For boiling in red.
For non sparkling in blue.
For sparkling in blue but flashing.
I just made these, so I did not give them a good look by now, but I saw that there are now 3 packets being sent in most of them.
I hope these captures help and that my descriptions are better than last time.
great captures! very useful..
sorry i did everything in Dutch, i guess you can use the translate option in the webbrowser right?
if not and you need some help with translating, just let me know, ok?
samen met Gemini jouw captures ontleed, ik denk dat ik alle AI fouten er nu uit heb, maar goed dat zullen we nog wel zien
---
# 🛠️ Quooker Single-Wire Bus Protocol (Reverse Engineered)
Na het analyseren van diverse Logic Analyzer / CSV captures van de Quooker databuis (Boiler, Flex Kraan, CUBE), is de exacte werking en pakketstructuur van de communicatie ontrafeld.
---
## 1. Fysieke Laag & Hardware
* **Spanning:** 5V Logica.
* **Typologie:** 1-wire Shared Data Bus (Open-drain / Single-wire UART).
* **Instellingen:** `19200 Baud`, `8N1` (8 data bits, no parity, 1 stop bit).
* **Aansluiting:** Alle apparaten (Boiler, Kraan, CUBE) zitten parallel geschakeld op dezelfde datalijn.
---
## 2. Bus Rollen & Transmissie-cyclus
De **Boiler** is de Master op de bus. De communicatie vindt plaats via een strak georganiseerde time-slotting cyclus (elke ~100ms):
1. **Master Query (Boiler):** Zodra er een kraan/slaves zijn aangesloten, stuurt de Boiler een **17-byte Request** (`0x01 0x11 ...`).
2. **Slave Response (Flex Kraan):** Binnen ~11ms reageert de Kraan met een **16-byte Status-frame** (`0x01 0x10 ...`) waarin de actuele knopstatus en waterkeuze staan.
3. **Bus Reset / Heartbeat (Boiler):** ~10ms na het kraanbericht (of bij stilte) stuurt de boiler een **5-byte frame** (`XX 05 FA 10 CS`). Dit fungeert als heartbeat (met teller) én als **reset-signaal** om de luisterbuffers van alle apparaten op de lijn schoon te vegen bij ruis/collisions.
---
## 3. CUBE Integratie
De CUBE stuurt **geen** losse eigen communicatieberichten over de lijn, maar beïnvloedt de **statusbytes** binnen het bestaande verkeer:
* **Zonder CUBE:** Byte 10/11 in de berichten is `0x00`.
* **Met CUBE aangesloten:** Byte 10/11 verandert naar `0x40` om de aanwezigheid van de gekoelde/bruismodule aan te kondigen.
---
## 4. Checksum Formule
Alle frames (zowel 5, 10, 16 als 17 bytes) gebruiken een universele XOR Checksum.
De XOR-som van alle bytes inclusief de checksum geeft altijd `0xFF` (255):
---
---