Kun je een oud model combi ketel upgraden met een binnenwerk ve fusion ( dus koud/warm/kokend), met dezelfde rode kap (software)?
Ik heb weer kokend water, dubbeldruk en draai reageerde steeds slechter en toen helemaal niet meer. Ik heb de methode gebruikt met magneetjes, die kunnen op de bovenrand van de draaiknop geplakt worden op ca 10 over. Dit na enig zoeken van de juiste plek en juiste magneetjes en het minimale magneetveld dat nodig is. Werkt weer perfect!
:no_upscale():strip_icc():strip_exif()/f/image/xYmyGmDqsvMiCgrjLx9LWpOQ.jpg?f=user_large)
:no_upscale():strip_icc():strip_exif()/f/image/xYmyGmDqsvMiCgrjLx9LWpOQ.jpg?f=user_large)
Met dank aan dit forum ook hier een snelle reparatie uit kunnen voeren (Fusion kraan uit 2018).
- Jack plug van kraan uit Quooker vat trekken, zodat je zeker weet dat hij niet meer aan gaat.
- Knop naar beneden drukken en draaien (in de stand waarin hij staat als je warm water wilt). Dit zorgt ervoor dat het plastic deel van de knop zich met drie pennetjes borgt.
- Knop omhoogtrekken, met enig gevoel en gewrik. Dan komt de metalen knop los van de plastic ring waar de magneet in zit.
- Oude magneetje eruit halen met een scherp voorwerp.
- Schoonmaken, en nieuwe magneetje erin (SuperMagnete Q-10-04-01-G). Ik heb voor een magneetje met goud plating gekozen voor (hopelijk) een beetje betere corrosie bestendigheid.
- Jack-plug weer terug in het Quooker vat, testen of hij weer doet.
- Voor de zekerheid heb ik er een beetje lijm (UHU max repair, SuperMagete WS-ADH-01) overheen gedaan om het af te schermen voor water.
- Na uitharden/aanharden lijm de knop weer terug dukken en zorgen dat hij weer helemaal naar beneden zit in zijn oude positie.
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
![]() |
Kort leefde de kamerplant die aan een wilde orchidee.
Door jouw post een Quooker Fusion uit 2020 kunnen repareren. Hartelijk dank.Stig schreef op zaterdag 10 januari 2026 @ 16:01:
Met dank aan dit forum ook hier een snelle reparatie uit kunnen voeren (Fusion kraan uit 2018).
[...]
Hier was het magneetje behoorlijk vergaan en bleef er een stuk achter in de houder.
Ik heb nog magneetjes over, DM me als je er één wil.
:no_upscale():strip_icc():strip_exif()/f/image/R8hsythIAQtfoA2bkGlfkjDz.jpg?f=user_large)
Ik heb sinds ik de post gelezen heb op verschillende momenten geprobeerd om de knop met enig gevoel en gewrik los te krijgen. Afgezien van rode handen en een afgebroken iFixit “opening pick” nog weinig voortgang. Nog suggesties op dat gebied?
Bedoel je zoals hierboven de Fusion kraan? De knop vanaf onderen, in een rechte beweging naar boven duwen met twee handen (je kunt je afzetten op het aanrechtblad). En anders met twee man, twee schroevendraaiers per persoon en dan rustig de druk gelijkmatig opvoeren, wel risico op beschadiging.Anoniemand schreef op zaterdag 17 januari 2026 @ 10:53:
Ik heb sinds ik de post gelezen heb op verschillende momenten geprobeerd om de knop met enig gevoel en gewrik los te krijgen. Afgezien van rode handen en een afgebroken iFixit “opening pick” nog weinig voortgang. Nog suggesties op dat gebied?
@Arnout Ja de fusion kraan inderdaad.
Ik zat vooralsnog, met de minimale “wiebel” die erin zit nog, wat meer te wrikken inclusief opwaartse druk. Daarnaast met twee opening picks (bijna hetzelfde als de schroevendraaier suggestie), maar die zijn dan helaas niet sterk genoeg gebleken. Daarmee is de kans op beschadiging dan wel weer kleiner, dan met schroevendraaiers.
Bedankt voor je reactie, dan kan ik nog even verder stoeien met de kraan.
Ik zat vooralsnog, met de minimale “wiebel” die erin zit nog, wat meer te wrikken inclusief opwaartse druk. Daarnaast met twee opening picks (bijna hetzelfde als de schroevendraaier suggestie), maar die zijn dan helaas niet sterk genoeg gebleken. Daarmee is de kans op beschadiging dan wel weer kleiner, dan met schroevendraaiers.
Bedankt voor je reactie, dan kan ik nog even verder stoeien met de kraan.
Nou vandaag nog wat pogingen gedaan, maar het lijkt muurvast te zitten. Eerst nog met wat iFixit tools erna met een schroevendraaier, maar hij blijft lekker op zijn plek zitten
Even ter bevestiging, de knop moet in de kokend water stand (omlaag drukken) en daarbij zover mogelijk naar rechts gedraaid worden toch?
Even ter bevestiging, de knop moet in de kokend water stand (omlaag drukken) en daarbij zover mogelijk naar rechts gedraaid worden toch?
Nee, naar linksAnoniemand schreef op donderdag 22 januari 2026 @ 10:12:
Nou vandaag nog wat pogingen gedaan, maar het lijkt muurvast te zitten. Eerst nog met wat iFixit tools erna met een schroevendraaier, maar hij blijft lekker op zijn plek zitten![]()
Even ter bevestiging, de knop moet in de kokend water stand (omlaag drukken) en daarbij zover mogelijk naar rechts gedraaid worden toch?
Oh, kan ie ook die kant op
Volgens mij praten we langs elkaar heenAnoniemand schreef op donderdag 22 januari 2026 @ 11:34:
[...]
Oh, kan ie ook die kant op. Ik dacht ik vraag het nog maar even, want het zou jammer zijn als ik iets doe waardoor de borging er nog op blijft zitten.
Ik dacht dat je een grapje maakt, hij kan bij mij alleen maar rechtsom.Rowwan schreef op donderdag 22 januari 2026 @ 12:13:
[...]
Volgens mij praten we langs elkaar heen. De kokend water stand is naar beneden en naar links. Wat bedoel je met "kan hij ook die kant op"? Hij kan toch niet naar rechts?
Edit: Laat ik het maar even "tegen de klok in noemen". Achter gaat ie dan linksom, en voor naar rechts
[ Voor 12% gewijzigd door Anoniemand op 22-01-2026 14:44 ]
Rechtsom.. je komt aanrijden en je start (hopelijk doen mensen dat in ieder geval) met naar RECHTS rijden..MijnCommentaar schreef op donderdag 22 januari 2026 @ 14:44:
de vraag is dus: Is dit linksom of rechtsom
[Afbeelding]
*sowieso
Hmmm.. zo heb ik er nog nooit over nagedachtMijnCommentaar schreef op donderdag 22 januari 2026 @ 14:44:
de vraag is dus: Is dit linksom of rechtsom
[Afbeelding]
In het geval van een rotondo: Die neem je rechtsom
In het geval van een dopje van een fles: Die draai je linksom los
En de quooker kraan gaat bij mij rechtsom en bij jou linksom
en toch gaan ze beide dezelfde kant op
Maargoed, dan zal ie goed klem zitten bij mij. Binnenkort maar eens verder met de oplossing met de weerstanden en kijken of ik dat mooi weggewerkt / opgelost krijg, zonder dat er onbedoeld kokend water uit de kraan gaat komen.
Maargoed, dan zal ie goed klem zitten bij mij. Binnenkort maar eens verder met de oplossing met de weerstanden en kijken of ik dat mooi weggewerkt / opgelost krijg, zonder dat er onbedoeld kokend water uit de kraan gaat komen.
ik ben tevreden met de weerstanden oplossing. ik zag wel dat ik in mijn schema r4 en r5 omgewisseld heb
dus 5600 ohm voor ruststand en parallel met drukknop 470 ohm
Draadloos
:strip_exif()/f/image/DVh8EGaO0LO38uds9NNTGb69.jpg?f=fotoalbum_large)
of deze met draad
dus 5600 ohm voor ruststand en parallel met drukknop 470 ohm
Draadloos
:strip_exif()/f/image/DVh8EGaO0LO38uds9NNTGb69.jpg?f=fotoalbum_large)
of deze met draad
[ Voor 27% gewijzigd door MijnCommentaar op 22-01-2026 20:10 ]
Een jaar geleden gaven wij bij Quooker al aan dat onze kraan nauwelijks functioneerde. Als we mazzel hadden konden we 1 op de 10x een kopje thee maken. Ja, kapot. Uit coulance konden we de kraan krijgen van €951,- voor €500,-...Stig schreef op zaterdag 10 januari 2026 @ 16:01:
Met dank aan dit forum ook hier een snelle reparatie uit kunnen voeren (Fusion kraan uit 2018).
Nu had ik hier al eens eerder rond gekeken maar met weerstandjes en knoppen aan de gang gaan leek mij geen goed idee. Tot jouw post, voorzien van plaatjes en een duidelijke handleiding
Vijf minuten en een magneetje van €0,35 later en er komt nu gewoon keer-op-keer kokend water uit de kraan. Je hebt geen idee hoe blij je mij en mijn gezin hiermee gemaakt hebt!
Mocht ik iemand blij kunnen maken met nog een magneetje? Gratis op te halen op het station in Amersfoort of Harderwijk
Internet en alle berichten hier doorgespit. Hier een Quooker Flex Combi+ die storing geeft en blijft terugkomen.
Resetten kan simpelweg door de jack plug eruit en weer erin te doen, dan gaat het weer voor 'even' goed. Soms een dag. Soms meerdere dagen. Soms enkele uren.
Kraan uitelkaar gehad. De magneet is niet het probleem en volledig intact.
Als ik het goed begrijp gaat de weerstanden oplossing niet werken met dit type kraan vanwege nieuwere elektronica? Of heb ik het mis?
De solenoïde magneet bedienen is wel een optie? Is er iemand die hier een goed te volgen bouwtekening van heeft en zou willen delen?
Het boeit mij dus niet dat de originele bediening niet meer zou werken. Ik vind het net als de rest hier belachelijk hoe Quooker hiermee omgaat. Een verdienmodel waar ze makkelijk mee weg komen.
Resetten kan simpelweg door de jack plug eruit en weer erin te doen, dan gaat het weer voor 'even' goed. Soms een dag. Soms meerdere dagen. Soms enkele uren.
Kraan uitelkaar gehad. De magneet is niet het probleem en volledig intact.
Als ik het goed begrijp gaat de weerstanden oplossing niet werken met dit type kraan vanwege nieuwere elektronica? Of heb ik het mis?
De solenoïde magneet bedienen is wel een optie? Is er iemand die hier een goed te volgen bouwtekening van heeft en zou willen delen?
Het boeit mij dus niet dat de originele bediening niet meer zou werken. Ik vind het net als de rest hier belachelijk hoe Quooker hiermee omgaat. Een verdienmodel waar ze makkelijk mee weg komen.
als het goed is werkt de nieuwere type met zowel de communicatie bus als de weerstanden. ik zou het eens proberen met weerstanden...X-PloiD schreef op vrijdag 30 januari 2026 @ 10:22:
Internet en alle berichten hier doorgespit. Hier een Quooker Flex Combi+ die storing geeft en blijft terugkomen.
Resetten kan simpelweg door de jack plug eruit en weer erin te doen, dan gaat het weer voor 'even' goed. Soms een dag. Soms meerdere dagen. Soms enkele uren.
Kraan uitelkaar gehad. De magneet is niet het probleem en volledig intact.
Als ik het goed begrijp gaat de weerstanden oplossing niet werken met dit type kraan vanwege nieuwere elektronica? Of heb ik het mis?
De solenoïde magneet bedienen is wel een optie? Is er iemand die hier een goed te volgen bouwtekening van heeft en zou willen delen?
Het boeit mij dus niet dat de originele bediening niet meer zou werken. Ik vind het net als de rest hier belachelijk hoe Quooker hiermee omgaat. Een verdienmodel waar ze makkelijk mee weg komen.
De mijne (combi 2.2e) produceerde geen kokend water meer en ging vanzelf uit. In het binnenwerk van de kraan had ik vorig jaar al een componentje vervangen. De Quooker was meer dan 10 jaar oud en dan heb ik iets van ''vervangen". Ook de uittrekslang vind ik handig bij onze onmogelijke vierkante spoelbak.
Dus vorige week een nieuwe geïnstalleerd en vandaag de oude eens goed bekeken. De oogst: circa 2 kg kalk.
Ik post het hier even omdat er hier veel Quooker bezitters zijn met mogelijk hetzelfde euvel.
:strip_exif()/f/image/gRaojSc6thWRzZHb0EmqDq3z.jpg?f=fotoalbum_large)
Ik vraag me wel of of hij het nog zou doen nu ik de kalk verwijderd heb.
Dus vorige week een nieuwe geïnstalleerd en vandaag de oude eens goed bekeken. De oogst: circa 2 kg kalk.
Ik post het hier even omdat er hier veel Quooker bezitters zijn met mogelijk hetzelfde euvel.
:strip_exif()/f/image/gRaojSc6thWRzZHb0EmqDq3z.jpg?f=fotoalbum_large)
Ik vraag me wel of of hij het nog zou doen nu ik de kalk verwijderd heb.
Aiaiai... zeker met AI gedaan
eventueel hebben ze ook een nieuw binnenwerk te koop bij Quookerbert pit schreef op maandag 2 februari 2026 @ 15:54:
Ik vraag me wel of of hij het nog zou doen nu ik de kalk verwijderd heb.
Als je de kalk verwijderd heb en je maakt de binnenkant van de boiler schoon met een schuurspons inclusief het verwarmingselement en je spoelt alles heel goed schoon zodat er geen kalk deeltjes op de schroefdraad van de draadstangetjes blijven zitten of het pakking oppervlak maak de witte Teflon o-ring schoon plaats alles gewoon terug wel een beetje kranenvet of keramisch vet aan de draadtangetjes doen en de moeren gelijkmatig aandraaien
Voor een gelijkmatige aandrukking van het pakking oppervlak
Voor een gelijkmatige aandrukking van het pakking oppervlak
[ Voor 7% gewijzigd door Edje44magnum op 03-02-2026 08:22 ]
Maar zegt geen enkele keukenboer als je een cooker of een Celciuz neemt dat je eigenlijk een ontharder moet nemen? Die van ons namelijk wel dus hebben we er een laten plaatsen omdat bij ons in het oosten het water ook erg hard is.
Voor normale techneuten is dit linksom.MijnCommentaar schreef op donderdag 22 januari 2026 @ 14:44:
de vraag is dus: Is dit linksom of rechtsom
[Afbeelding]
Bekijk het als een moer, rechtsom draai je hem vast, linksom draai je hem los.
All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.
tenzij het linkse draad is natuurlijkBen(V) schreef op zondag 15 februari 2026 @ 15:27:
[...]
Voor normale techneuten is dit linksom.
Bekijk het als een moer, rechtsom draai je hem vast, linksom draai je hem los.
wijsneus 
PS
Voor iedereen die een quooker vol kalk heeft na een aantal jaren en het ook nutteloos vind het hele verwarmings element ook te moeten vervangen.
Je kunt het Hitac filter ook gewoon opnieuw vullen met actieve kool dat je los kunt kopen.
PS
Voor iedereen die een quooker vol kalk heeft na een aantal jaren en het ook nutteloos vind het hele verwarmings element ook te moeten vervangen.
Je kunt het Hitac filter ook gewoon opnieuw vullen met actieve kool dat je los kunt kopen.
[ Voor 111% gewijzigd door Ben(V) op 15-02-2026 15:57 ]
All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.
Veel voorkomend probleem bij de fusion kraan zo te zien. Bij mij ook het geval: 1x in de 10x draaien werkt het kokend water. Met een extern magneetje werkte hij meteen, dus ik had al zo'n vermoeden dat de magneet verroest was.
Met enige moeite gelukt om de ring eraf te krijgen, en inderdaad een compleet doorgeroeste magneet.
:strip_exif()/f/image/XjzRqfQwlgusdn0D9kawR4EO.jpg?f=fotoalbum_large)
Met enige moeite gelukt om de ring eraf te krijgen, en inderdaad een compleet doorgeroeste magneet.
:strip_exif()/f/image/XjzRqfQwlgusdn0D9kawR4EO.jpg?f=fotoalbum_large)
Ik kreeg de ring eerst bij mij ook niet los, tot ik opeens merkte dat ik te diep met de schroevendraaier zat. Ik zat namelijk onder die beige plastic ring, waar nu ook zichtbaar een deukje op is. Je moet echt maar een klein stukje met de schroeven draaien tussen de ring, en dan omhoog duwen. Ik had de kraan in de kokend water stand gezet.[b]Anoniemand schreef op donderdag 22 januari 2026 @ 15:15:[b]
Maargoed, dan zal ie goed klem zitten bij mij. Binnenkort maar eens verder met de oplossing met de weerstanden en kijken of ik dat mooi weggewerkt / opgelost krijg, zonder dat er onbedoeld kokend water uit de kraan gaat komen.
Ik heb nu trouwens een hele zak met magneten besteld vanwege de minimale bestelwaarde...
Mocht je nog magneetjes nodig hebben, doe mij dan een berichtje, gewoon tegen de inkoopprijs, 7 euro voor 20 magneten + postzegel.
Mocht je nog magneetjes nodig hebben, doe mij dan een berichtje, gewoon tegen de inkoopprijs, 7 euro voor 20 magneten + postzegel.
Heeft iemand een oplossing gevonden voor de nieuwere versie kranen. De kraan (en boiler Pro3) blijft knipperen ondanks dat alles is schoongemaakt.
:strip_exif()/f/image/MntfHkoVOkvxUcX0SR4BWwzs.jpg?f=fotoalbum_large)
Is de elektronica die hier in zit misschien los te koop? Of is er een andere manier om het te fixen? Zonde om de kraan van 4 jaar oud te vervangen...
:strip_exif()/f/image/MntfHkoVOkvxUcX0SR4BWwzs.jpg?f=fotoalbum_large)
Is de elektronica die hier in zit misschien los te koop? Of is er een andere manier om het te fixen? Zonde om de kraan van 4 jaar oud te vervangen...
[ Voor 15% gewijzigd door pascalcv op 12-03-2026 22:09 . Reden: Aanvulling ]
Ik had ook problemen met onze quooker. Deze knipperde (kraan 3x, boiler 4x). Ik kwam er niet uit met de Quooker hulpwizard en na het doorlezen van dit topic had ik weinig hoop op fatsoenlijke ondersteuning van Quooker zelf. Dus opengeschroefd (wat een kalk!) en ik heb er een ESP32 aangehangen. Het is mij alleen nog niet gelukt het kraan-signaal te decoderen, aangezien dit, voor zover ik kan meten, een digitaal signaal betreft. Heeft iemand dit protocol al kunnen ontleden? Ik gebruik nu een deur/contact sensor om de quooker te bedienen.
"Chaos kan niet uit de hand lopen"
ik had hier op tweakers wel eens een topic over het ontleden van dat digitale signaal voorbij zien komen. geen idee of ze daar nog mee bezig zijn.storeman schreef op zondag 15 maart 2026 @ 20:06:
Ik had ook problemen met onze quooker. Deze knipperde (kraan 3x, boiler 4x). Ik kwam er niet uit met de Quooker hulpwizard en na het doorlezen van dit topic had ik weinig hoop op fatsoenlijke ondersteuning van Quooker zelf. Dus opengeschroefd (wat een kalk!) en ik heb er een ESP32 aangehangen. Het is mij alleen nog niet gelukt het kraan-signaal te decoderen, aangezien dit, voor zover ik kan meten, een digitaal signaal betreft. Heeft iemand dit protocol al kunnen ontleden? Ik gebruik nu een deur/contact sensor om de quooker te bedienen.
[Afbeelding]
maar volgens mij moet de weerstand methode ook werken, ik had alleen begrepen dat als je ook de cube wil aansturen dat dat dan niet werkt. ik zou zeggen probeer het eens.
ik wil nog wel een keer kijken of ik de berichten kan capture-en oid zodat je die dan met een esp32 oid naar de boiler kan sturen. geen idee of het alleen eenrichting berichten zijn of echt communicatie op en neer.
Zou top zijn als je iets kunt ontleden. Ik heb een multimeter aan alle pincombinaties gehangen, maar ik kon niets ontdekken. Ik heb overigens geen cube. Zou ik een permanente weerstand moeten meten in de verschillende posities?JazekerXX schreef op zondag 15 maart 2026 @ 22:43:
[...]
ik had hier op tweakers wel eens een topic over het ontleden van dat digitale signaal voorbij zien komen. geen idee of ze daar nog mee bezig zijn.
maar volgens mij moet de weerstand methode ook werken, ik had alleen begrepen dat als je ook de cube wil aansturen dat dat dan niet werkt. ik zou zeggen probeer het eens.
ik wil nog wel een keer kijken of ik de berichten kan capture-en oid zodat je die dan met een esp32 oid naar de boiler kan sturen. geen idee of het alleen eenrichting berichten zijn of echt communicatie op en neer.
Verder meet ik ca 5V tussen 1 en 4 geloof ik. AI dacht ook aan een digitaal signaal ivm en chip die hij zag op het bordje.
"Chaos kan niet uit de hand lopen"
nee je meet geen weerstanden op de pinnen maar je moet bepaalde weerstanden op bepaalde pinnen zetten. met een schakeling kun je dan de verschillende waardes genereren waardoor de boiler dus de druk en draai standen door krijgt. het is hier al vaak besproken, dus even terug lezen. ik heb ook schema's gedeeld dus je kan het zo na bouwen. andere kwamen met andere oplossingen misschien dat dat voor je werkt.storeman schreef op zondag 15 maart 2026 @ 23:48:
[...]
Zou top zijn als je iets kunt ontleden. Ik heb een multimeter aan alle pincombinaties gehangen, maar ik kon niets ontdekken. Ik heb overigens geen cube. Zou ik een permanente weerstand moeten meten in de verschillende posities?
Verder meet ik ca 5V tussen 1 en 4 geloof ik. AI dacht ook aan een digitaal signaal ivm en chip die hij zag op het bordje.
en ja de nieuwe kranen werken met een digitaal signaal maar zoals gezegd zou het ook met de oude weerstand methode moeten werken, tenzij je ook de qube wilt gebruiken. maar test het gewoon want ik heb dit zelf niet getest.
@JazekerXX ik heb het nog even teruggelezen en ik denk dat ik onze miscommunicatie snap. Mijn kraan heeft geen probleem, die wil ik blijven gebruiken, de sturingsmodule heb ik vervangen en ik wil proberen de kraan(knop) te gebruiken. Mijn kraanknop geeft geen weerstand op de pins. Dus om de kraan met een ESP32 uit te kunnen lezen, moet ik het signaal begrijpen... Tijd voor een logica analyzer
"Chaos kan niet uit de hand lopen"
het is me idd totaal onduidelijk wat je nu wilt bereiken.storeman schreef op dinsdag 17 maart 2026 @ 09:43:
@JazekerXX ik heb het nog even teruggelezen en ik denk dat ik onze miscommunicatie snap. Mijn kraan heeft geen probleem, die wil ik blijven gebruiken, de sturingsmodule heb ik vervangen en ik wil proberen de kraan(knop) te gebruiken. Mijn kraanknop geeft geen weerstand op de pins. Dus om de kraan met een ESP32 uit te kunnen lezen, moet ik het signaal begrijpen... Tijd voor een logica analyzer
je zegt eerst dat je knipper storingsmeldingen hebt op de kraan en boiler en dat je iets met een deurcontact sensor om de quooker te bedienen. geen idee wat je daar mee bedoeld. maar je hebt geen problemen???
je hebt de sturingsmodule vervangen, wat bedoel je daar precies mee?
ik had een keer in een youtube filmpje deze logic analyzer gezien. kost maar een paar euro. en deze kun je blijkbaar met de software van de dure jongens (saleae of pulseview etc.) gebruiken. ik heb dit zelf nog niet getest maar goed voor dat geld is het het proberen waard, toch?
https://nl.aliexpress.com/item/1005005993277484.html
@JazekerXX ik had inderdaad een knipperstoring, maar ik kwam niet helemaal uit wat de melding zou betekenen. De kraan had wat ons betreft geen probleem. Ik heb de quooker dus gedemonteerd en de sturingselektronica vervangen met een ESPHome en hiermee hangt hij in home assistant. Ik kon niet ontleden hoe de kraan precies werkt, dus ik gebruik nu een deurcontact om de het kokende water te schakelen.
"Chaos kan niet uit de hand lopen"
ah je wilt dus het digitale signaal uit de kraan gebruiken om de esp32 mee aan te sturen, en de esp32 die stuurt dan het magneetventiel aan zodat het kokend water er uit komt? heb ik het dan goed wat je wil?storeman schreef op dinsdag 17 maart 2026 @ 17:29:
@JazekerXX ik had inderdaad een knipperstoring, maar ik kwam niet helemaal uit wat de melding zou betekenen. De kraan had wat ons betreft geen probleem. Ik heb de quooker dus gedemonteerd en de sturingselektronica vervangen met een ESPHome en hiermee hangt hij in home assistant. Ik kon niet ontleden hoe de kraan precies werkt, dus ik gebruik nu een deurcontact om de het kokende water te schakelen.
maar is een nieuwe kap (elektronica) niet een simpelere oplossing?
ik zou dan wel een nieuw topic aan maken om dit topic niet verder te bevuilen. maar ik ben ook wel benieuwd in hoe dit werkt. ik zou idd met een logic analyzer eerst eens kijken wat voor data er uit komt en of het iedere keer hetzelfde is. wel moet je eerst uitzoeken welke pinnen voor wat is, je had al 5v op pin 1 en 4, dus die moet je sowieso leveren aan de kraan en mogelijk dat de andere 2 pinnen dan data zijn. ook moet er dan waarschijnlijk een logic level shifter tussen als de spanning op de data lijn ook 5v is. als die 3,3v is hoeft dat niet natuurlijk.
Ik ben eigenlijk ook zover met mijn kraan, maar dat magneetje moet je er dus uit kunnen krijgen? Lijkt hier helemaal afgesleten / ingesleten.Arnout schreef op zaterdag 17 januari 2026 @ 09:40:
[...]
Door jouw post een Quooker Fusion uit 2020 kunnen repareren. Hartelijk dank.![]()
Hier was het magneetje behoorlijk vergaan en bleef er een stuk achter in de houder.
Ik heb nog magneetjes over, DM me als je er één wil.
[Afbeelding]
[Afbeelding]
Moet dat er wel uit te krijgen zijn?
- Ter info, die 2x knipper, waar moet dat zijn op Boiler vat? Want daar brandt gewoon netjes rood lampje
- op de quooker kraan als ik met magneet in de buurt kom van de magneet in de kraan, dan gaat er eventjes rood branden
Ik durf nu eigenlijk niet te zeggen of de kraan nu wel de oorzaak is? (Maar wel heel roestig de magneet)
kreeg voor 475 ook een nieuwe kraan aangeboden (50%, echter is 35% tov de gangbare winkel prijzen!)
Enerzijds zit ik ook te denken of er geen kant en klare optie is voor dat jack mini plug systeem? Beter dan elke 6 jaar issues met dit..
![]() | ![]() |
Wat is eigenlijk het led ritme op de kraan zelf?
Die zwarte ring heeft ook van deze kleine ijzertjes moet ik daar iets mee:
[ Voor 31% gewijzigd door trekker22 op 18-03-2026 16:06 ]
Ter info ja meteen bij hem opgevraagd.MijnCommentaar schreef op woensdag 18 maart 2026 @ 16:48:
zie post van juliantje15, hij heeft er nog 19
Ik zag op een YouTube reel dat ze deze variant met een nagel schaartje de ring er af kregen. Even er onder bij die 3 pinnetjes.
Is nu de vraag: hoe weet ik nu of de kraan verder goed is. Ik kan met een magneet van boven naar beneden gaan op de plek waar eerst de magneet zat.
En led gaat dan wel aan. Maar draai beweging dan geen resultaat.
Is de sterkte magneet ook van belang? Een HDd magneet is vrij sterk. Maar is dat nodig.
Je moet niet op en neer gaan maar 2x "heen", dus naar links. Dat hij kort oplicht is een goed teken lijkt me, dan ziet hij in ieder geval een magnetisch veld.trekker22 schreef op woensdag 18 maart 2026 @ 16:55:
[...]
Is nu de vraag: hoe weet ik nu of de kraan verder goed is. Ik kan met een magneet van boven naar beneden gaan op de plek waar eerst de magneet zat.
Maar op de oude methode, met de ribbel knop er op. Dan is het toch duw, duw en draai tegen de klok in (dus naar links). Dan is het toch van boven naar beneden en weer naar boven en beneden en dan draaien?Arnout schreef op woensdag 18 maart 2026 @ 18:21:
[...]
Je moet niet op en neer gaan maar 2x "heen", dus naar links. Dat hij kort oplicht is een goed teken lijkt me, dan ziet hij in ieder geval een magnetisch veld.
of mis ik iets en is het anders met de knop er vanaf?
Ik ben er vrijwel zeker van dat in jouw geval een nieuw magneetje het probleem oplost, gezien die van mij er ook zo uit zag, en hij nu weer als nieuw werkt. Als je het handmatig met een andere magneet probeert door op die plek vast te houden, kan het soms een beetje lastig zijn, maar in mijn geval heb ik en mijn vrouw de kraan toch wel 2 weken kunnen gebruiken met behulp van een koelkast magneetje. Je moet er voor zorgen dat je de magneet meedraait met de knop, dus gewoon altijd op de plek houdt waar het originele magneetje zit.trekker22 schreef op woensdag 18 maart 2026 @ 16:55:
[...]
Is nu de vraag: hoe weet ik nu of de kraan verder goed is. Ik kan met een magneet van boven naar beneden gaan op de plek waar eerst de magneet zat.
En led gaat dan wel aan. Maar draai beweging dan geen resultaat.
Inderdaad:juliantje15 schreef op woensdag 18 maart 2026 @ 21:59:
[...]
Ik ben er vrijwel zeker van dat in jouw geval een nieuw magneetje het probleem oplost, gezien die van mij er ook zo uit zag, en hij nu weer als nieuw werkt. Als je het handmatig met een andere magneet probeert door op die plek vast te houden, kan het soms een beetje lastig zijn, maar in mijn geval heb ik en mijn vrouw de kraan toch wel 2 weken kunnen gebruiken met behulp van een koelkast magneetje. Je moet er voor zorgen dat je de magneet meedraait met de knop, dus gewoon altijd op de plek houdt waar het originele magneetje zit.
:strip_exif()/f/image/DWf6yTGuwdMWQ6WKUBabSs2B.jpg?f=fotoalbum_large)
Magneetje er in een gefixed. Absurd dat quooker dit toch niet aanbiedt. Of geven ze daar mee toe dat het product niet helemaal optimaal is.
[ Voor 7% gewijzigd door trekker22 op 21-03-2026 12:14 ]
Met alleen een magneetje kunnen ze geen geld verdienentrekker22 schreef op zaterdag 21 maart 2026 @ 12:12:
Magneetje er in een gefixed. Absurd dat quooker dit toch niet aanbiedt. Of geven ze daar mee toe dat het product niet helemaal optimaal is.
Mooi dat het opgelost is. Mochten er nog anderen zijn met dit probleem, ik heb nog magneten genoeg om te versturen.
Nog even een vraag betreft verwijderen van de ring. Ik heb een Fusion model kraan maar ik zie dat mensen de ring verwijderen door hem op de kokendwaterstand zetten en anderen weer door de ring in de basis stand te laten. Maakt dit nog uit? En moet de hals van de kraan er volledig af om dit te bewerkstelligen?
[ Voor 12% gewijzigd door Megaladonxxl op 05-04-2026 14:21 ]
In de basisstand. Wrikken + druk verticaal recht omhoog, totdat er steeds meer speling komt. En de hals hoeft er niet af.Megaladonxxl schreef op zondag 5 april 2026 @ 13:46:
Nog even een vraag betreft verwijderen van de ring. Ik heb een Fusion model kraan maar ik zie dat mensen de ring verwijderen door hem op de kokendwaterstand zetten en anderen weer door de ring in de basis stand te laten. Maakt dit nog uit? En moet de hals van de kraan er volledig af om dit te bewerkstelligen?
Ik had hem in de kokend waterstand staan, het zal dus niet uitmaken.Megaladonxxl schreef op zondag 5 april 2026 @ 13:46:
Nog even een vraag betreft verwijderen van de ring. Ik heb een Fusion model kraan maar ik zie dat mensen de ring verwijderen door hem op de kokendwaterstand zetten en anderen weer door de ring in de basis stand te laten. Maakt dit nog uit? En moet de hals van de kraan er volledig af om dit te bewerkstelligen?
Ik kon hem er met twee duimen omhoog duwend de ring los krijgen.
Zou het verscihillen ,et welk model kraan je hebt. Ik hen de Q0 Fusion,. Dit omdat de ene persoon de knop un rust stand heeft en de andere persoon heeft het gedaan in de kokenwaterstand.
Ik vermoed dat er wel verschil tussen zit, want van mijn kraan uit 2015 kreeg ik met geen mogelijkheid vertikale beweging in de ring, behalve de standaard druk draai beweging. Dus misschien dat het bij de nieuwere modellen makkelijker gaat, of zijn de toleranties zo verschillend tussen exemplaren. Of misschien zat die van mij gewoon muur-vast gecorrodeerd.
Mijn nieuwe huis heeft geen quooker, dus ook geen problemen er meer mee...
Mijn nieuwe huis heeft geen quooker, dus ook geen problemen er meer mee...
Net bericht gehad van quooker service en men geeft aan dat de kraan niet meer te maken is volgens hun. Kraan is overigens 9 jaar oud dus kans is aanwezig dat het meer kost om iemand lamgs te sturen met voorrijkosten en uurloon dan een nieuwe kraan. men heeft overigens wel een nieuwe kraan aangeboden met korting dus ik denk dat ik die maar gan aanschaffen en dan wellicht toch ga kijken als de kraan er af is om de oude quooker kraan zelf helemaal uit elkaar te halen en uivogelen wat het nou was. Wellicht kan ik de oude kraan op MP zetten en kan ik er nog iemand anders blij mee maken
Bij mijn kraan van destijds 4 jaar oud was er al sprake van vervanging, volgens mij repareren ze dit helemaal niet.Megaladonxxl schreef op dinsdag 14 april 2026 @ 12:32:
Net bericht gehad van quooker service en men geeft aan dat de kraan niet meer te maken is volgens hun. Kraan is overigens 9 jaar oud dus kans is aanwezig dat het meer kost om iemand lamgs te sturen met voorrijkosten en uurloon dan een nieuwe kraan. men heeft overigens wel een nieuwe kraan aangeboden met korting dus ik denk dat ik die maar gan aanschaffen en dan wellicht toch ga kijken als de kraan er af is om de oude quooker kraan zelf helemaal uit elkaar te halen en uivogelen wat het nou was. Wellicht kan ik de oude kraan op MP zetten en kan ik er nog iemand anders blij mee maken
Zogenaamd korting geven ze dan wel maar dat was maar een schijntje vergeleken met de winkelprijs.
Wat een topic! En over meerdere generaties Quooker. Goed dat de 'right to repair'-mentaliteit steeds sterker wordt.
Ik heb dus het nieuwe type kraan gekocht op MP, met de microcontroller in de kraan. Zonder aangesloten te zijn is er dus ook niets te meten met de multimeter. Nu mijn vraag: werkt deze op de oude kap, die eigenlijk voor de kraan met weerstandsschakelaar bedoeld is? Of werkt het alleen andersom, een oude kraan op de nieuwste kap?
Extra:
Ik heb de pennen eruit gekregen door met een "tandarts" haakje de pennen naar buiten te duwen. De gekartelde knop kon ik gewoon hard naar boven duwen, waardoor je het zwarte kunststof met de magneet en pennetjes te zien krijgt. Ik verdenk het magneetje, maar moet dus eerst zorgen dat de kap wel geschikt is.
Ik heb dus het nieuwe type kraan gekocht op MP, met de microcontroller in de kraan. Zonder aangesloten te zijn is er dus ook niets te meten met de multimeter. Nu mijn vraag: werkt deze op de oude kap, die eigenlijk voor de kraan met weerstandsschakelaar bedoeld is? Of werkt het alleen andersom, een oude kraan op de nieuwste kap?
Extra:
Ik heb de pennen eruit gekregen door met een "tandarts" haakje de pennen naar buiten te duwen. De gekartelde knop kon ik gewoon hard naar boven duwen, waardoor je het zwarte kunststof met de magneet en pennetjes te zien krijgt. Ik verdenk het magneetje, maar moet dus eerst zorgen dat de kap wel geschikt is.
This is an interesting topic! I can only write in English since I don't speak Dutch. I hope that's not too big of a problem.
I have a new Flex faucet, serial starting with TF, a PRO3-VAQ-B, a CUBE before Dec. of 2021 and an old Q0 faucet.
I can indeed confirm that PRO-VAQ-B works with Q0 models and new digital ones.
I want to find out how the protocol of the digital faucets works. By now I've found that the pinout is not much different.
Pin 1 = data
Pin 2 = not connected
Pin 3 = VCC
Pin 4 = GND
I took a capture of the data packets on pin 1 while only having the reservoir connected. If I can figure out what the protocol is there and can successfully replicate it, I will continue with CUBE attached as well.
But for now I thought maybe someone would like to take a look at the capture.
I couldn't figure out how to attach it to this post so I uploaded it to Mediafire: link
I have a new Flex faucet, serial starting with TF, a PRO3-VAQ-B, a CUBE before Dec. of 2021 and an old Q0 faucet.
I can indeed confirm that PRO-VAQ-B works with Q0 models and new digital ones.
I want to find out how the protocol of the digital faucets works. By now I've found that the pinout is not much different.
Pin 1 = data
Pin 2 = not connected
Pin 3 = VCC
Pin 4 = GND
I took a capture of the data packets on pin 1 while only having the reservoir connected. If I can figure out what the protocol is there and can successfully replicate it, I will continue with CUBE attached as well.
But for now I thought maybe someone would like to take a look at the capture.
I couldn't figure out how to attach it to this post so I uploaded it to Mediafire: link
very interesting! and thanks for sharing.intercook schreef op woensdag 22 juli 2026 @ 15:36:
This is an interesting topic! I can only write in English since I don't speak Dutch. I hope that's not too big of a problem.
I have a new Flex faucet, serial starting with TF, a PRO3-VAQ-B, a CUBE before Dec. of 2021 and an old Q0 faucet.
I can indeed confirm that PRO-VAQ-B works with Q0 models and new digital ones.
I want to find out how the protocol of the digital faucets works. By now I've found that the pinout is not much different.
Pin 1 = data
Pin 2 = not connected
Pin 3 = VCC
Pin 4 = GND
I took a capture of the data packets on pin 1 while only having the reservoir connected. If I can figure out what the protocol is there and can successfully replicate it, I will continue with CUBE attached as well.
But for now I thought maybe someone would like to take a look at the capture.
I couldn't figure out how to attach it to this post so I uploaded it to Mediafire: link
so you captured the data while tapping cooked water. is it just a repeating message it sends to the boiler? or is there back and forth communication? i like to learn more of how this all works.
and how did you replicate the data? somehow you got the data in an esp32 or something and let an transistor with a pullup resistor generate the same data on the data pin?
what's the voltage on that data pin?
what software do i need to open those files you shared?
i'm also very interested in the cube data.
it would be awesome if we can repair these faucets too, and stop being ripped off by quooker ;)
thanks!
I captured it with a logic analyzer. The file can be opened with Saleae Logic 2.
I was not able to replicate this signal by now since it is both way communication.
There's data present when the system is in idle, when the system is switched off (Q button on reservoir) and while tapping boiling / cooled water. This is not a simple command from the faucet like "turn on boiling water" or "turn on cooled / sparkling water".
What I got from the first capture by now is that Quooker built a 2-way communication protocol. It is half-duplex UART with a baud rate of 19200, 8 bits per frame, no parity bit and 1 stop bit. So UART 8N1 @ 19200. This means instead of regular UART having a send and receive wire, they only used one for send and receive. Therefore, data from the reservoir and the faucet are on the same data line (pin 1).
This alone does not help us much in figuring out how these systems work but should mean we can send these signals with an ESP or Arduino. Anyways, I made some more captures.
I connected only the faucet to my logic analyzer and gave it power. The faucet then goes into "two red flashes" mode, which is expected since no reservoir is present. But the interesting part here is that there is no data on the data line in this configuration. This means in this system the reservoir is the "master" and the faucet the "client" device.
I checked this by also connecting only the reservoir to my analyzer. In that capture I was able to see some data. But instead of seeing the same bursts of two data "packets" like in my first capture, which had everything connected, there were only bursts of one "packet". This means my theory of the reservoir being the "master" and the faucet being the "client" is correct.
What do we know by now?
Not much. The reservoir sends a "what is your status" command to which the faucet answers with whatever state it is in. Then the reservoir does what fits the status the faucet responded with. And this whole cycle repeats over and over many times per second.
To get any further here, we need to understand the protocol they built.
We can reverse engineer it with a good amount of effort. But this is where I would need some help since my knowledge in this area is sparse.
Still, I'll try to continue and post updates as I figure out more.
Also, here're the new captures I made: Capture of flex faucet with no reservoir connected. Capture of reservoir with nothing connected.
I was not able to replicate this signal by now since it is both way communication.
There's data present when the system is in idle, when the system is switched off (Q button on reservoir) and while tapping boiling / cooled water. This is not a simple command from the faucet like "turn on boiling water" or "turn on cooled / sparkling water".
What I got from the first capture by now is that Quooker built a 2-way communication protocol. It is half-duplex UART with a baud rate of 19200, 8 bits per frame, no parity bit and 1 stop bit. So UART 8N1 @ 19200. This means instead of regular UART having a send and receive wire, they only used one for send and receive. Therefore, data from the reservoir and the faucet are on the same data line (pin 1).
This alone does not help us much in figuring out how these systems work but should mean we can send these signals with an ESP or Arduino. Anyways, I made some more captures.
I connected only the faucet to my logic analyzer and gave it power. The faucet then goes into "two red flashes" mode, which is expected since no reservoir is present. But the interesting part here is that there is no data on the data line in this configuration. This means in this system the reservoir is the "master" and the faucet the "client" device.
I checked this by also connecting only the reservoir to my analyzer. In that capture I was able to see some data. But instead of seeing the same bursts of two data "packets" like in my first capture, which had everything connected, there were only bursts of one "packet". This means my theory of the reservoir being the "master" and the faucet being the "client" is correct.
What do we know by now?
Not much. The reservoir sends a "what is your status" command to which the faucet answers with whatever state it is in. Then the reservoir does what fits the status the faucet responded with. And this whole cycle repeats over and over many times per second.
To get any further here, we need to understand the protocol they built.
We can reverse engineer it with a good amount of effort. But this is where I would need some help since my knowledge in this area is sparse.
Still, I'll try to continue and post updates as I figure out more.
Also, here're the new captures I made: Capture of flex faucet with no reservoir connected. Capture of reservoir with nothing connected.
you know what funny is?intercook schreef op zondag 26 juli 2026 @ 14:58:
I captured it with a logic analyzer. The file can be opened with Saleae Logic 2.
I was not able to replicate this signal by now since it is both way communication.
There's data present when the system is in idle, when the system is switched off (Q button on reservoir) and while tapping boiling / cooled water. This is not a simple command from the faucet like "turn on boiling water" or "turn on cooled / sparkling water".
What I got from the first capture by now is that Quooker built a 2-way communication protocol. It is half-duplex UART with a baud rate of 19200, 8 bits per frame, no parity bit and 1 stop bit. So UART 8N1 @ 19200. This means instead of regular UART having a send and receive wire, they only used one for send and receive. Therefore, data from the reservoir and the faucet are on the same data line (pin 1).
This alone does not help us much in figuring out how these systems work but should mean we can send these signals with an ESP or Arduino. Anyways, I made some more captures.
I connected only the faucet to my logic analyzer and gave it power. The faucet then goes into "two red flashes" mode, which is expected since no reservoir is present. But the interesting part here is that there is no data on the data line in this configuration. This means in this system the reservoir is the "master" and the faucet the "client" device.
I checked this by also connecting only the reservoir to my analyzer. In that capture I was able to see some data. But instead of seeing the same bursts of two data "packets" like in my first capture, which had everything connected, there were only bursts of one "packet". This means my theory of the reservoir being the "master" and the faucet being the "client" is correct.
What do we know by now?
Not much. The reservoir sends a "what is your status" command to which the faucet answers with whatever state it is in. Then the reservoir does what fits the status the faucet responded with. And this whole cycle repeats over and over many times per second.
To get any further here, we need to understand the protocol they built.
We can reverse engineer it with a good amount of effort. But this is where I would need some help since my knowledge in this area is sparse.
Still, I'll try to continue and post updates as I figure out more.
Also, here're the new captures I made: Capture of flex faucet with no reservoir connected. Capture of reservoir with nothing connected.
i had the software already installed waiting for me to do the exact same thing as what you did.
the cheap logic analyzer was also waiting here under a layer of dust.
but this is also a first time for me so i chatted a bit with AI and got some good suggestions
to put it on hex codes, that way you can easily check the different packages by comparing the numbers.
to activate this go to the right side of the logic 2 software and press analyzers button, then select async serial and enter the 19200 8N1 and select the right channel.
i started with the boiler only so we see what the master is sending.
below you see i data packet, it contains 5 bytes. if you check the other packages you see that only byte 1 and 5 changes, they become each 1 higher. according to AI byte 1 is a counter and byte 5 is a checksum. byte 2 could be the amount of bytes in this package or an id for message from master. byte 3 is probably the address of the faucet. and byte 4 is the actual status message like standby no errors.
then the faucet. you said it did nothing but it did gave a low signal for 1,7 seconds. i think this is for letting the master know that the faucet is connected.
then the boiler and faucet connected:
this data you first shared was that only idle state or did you also use the faucet somewhere?
you see constantly these 2 packages, package 1 is the boiler and package 2 is the response from the faucet. in the packages below you see one difference in package 1 byte 5 it changes from 0x00 to 0x01. this is probably the heartbeat.
try using different AI and let them help you analyze this further.
also upload different captures of with boiler/cube or boiler/faucet/cube attached or cube only (i think that will be the same as the faucet) and when you do certain stuff like activating cooking water or cooled or sparkling. maybe then we can see what bytes change
Thanks a lot for having a look at it.
Yeah, sorry my description was incomplete. You're right it gave a low signal but it only did this while having no power. After turning on my lab bench supply it went high.JazekerXX schreef op zondag 26 juli 2026 @ 20:59:
[...]
[Afbeelding]
then the faucet. you said it did nothing but it did gave a low signal for 1,7 seconds. i think this is for letting the master know that the faucet is connected.
The first capture was a mix of idle state and the various functions.[Afbeelding]
then the boiler and faucet connected:
this data you first shared was that only idle state or did you also use the faucet somewhere?
you see constantly these 2 packages, package 1 is the boiler and package 2 is the response from the faucet. in the packages below you see one difference in package 1 byte 5 it changes from 0x00 to 0x01. this is probably the heartbeat.
I'll definitely do that! I'll upload new captures with more precise descriptions soon. At the moment I'm trying to send the packets we saw from the boiler to the faucet via an Arduino to see how the faucet responds, but I'm still writing the code for that (just had this idea some minutes ago).[Afbeelding]
try using different AI and let them help you analyze this further.
also upload different captures of with boiler/cube or boiler/faucet/cube attached or cube only (i think that will be the same as the faucet) and when you do certain stuff like activating cooking water or cooled or sparkling. maybe then we can see what bytes change
you are very welcome!intercook schreef op zondag 26 juli 2026 @ 21:47:
Thanks a lot for having a look at it.
ah, allright that changes things.Yeah, sorry my description was incomplete. You're right it gave a low signal but it only did this while having no power. After turning on my lab bench supply it went high.
it would be awesome if you could do a capture with those functions and make a list with what you did and the approximate time stamp.The first capture was a mix of idle state and the various functions.
nice one! so what's the actual voltage on that data pin? i assume 5v because you use an arduino?I'll definitely do that! I'll upload new captures with more precise descriptions soon. At the moment I'm trying to send the packets we saw from the boiler to the faucet via an Arduino to see how the faucet responds, but I'm still writing the code for that (just had this idea some minutes ago).
Yes, it's 5V on the data line.JazekerXX schreef op maandag 27 juli 2026 @ 00:29:
nice one! so what's the actual voltage on that data pin? i assume 5v because you use an arduino?
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.
One capture I forgot, which might be important:
Capture of everything in idle.
This capture was taken while the reservoir, faucet and cube were in idle. By this I mean, I touched nothing and the led ring on the faucet was off. The reservoir was not heating as it has reached its target temperature beforehand.
Capture of everything in idle.
This capture was taken while the reservoir, faucet and cube were in idle. By this I mean, I touched nothing and the led ring on the faucet was off. The reservoir was not heating as it has reached its target temperature beforehand.
great captures! very useful..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.
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):
:strip_exif()/f/image/O6Mp40NBl2P2lUtQBYGsXfDN.png?f=user_large)
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):
:strip_exif()/f/image/c6GxDC4YOwTseOAonjfm4szv.png?f=user_large)
---
:strip_exif()/f/image/c3pgTIrI4oWUU3PIGCo7rc4x.png?f=user_large)
---
i also asked to make an arduino script with 1 pin communication so you don't need extra electronics. just connect the right I/O. and that it resets the bus when there is an collision of data which i saw multiple times. also the leds should work. and you can test everything by using the serial monitor at 115200 speed. and you can give commands to request cooking, cold or sparkling water. Serial Monitor commands: 'k'=cooking, 'c'=cold, 'b'=sparkling, 's'=Stop
i don't know if it will work but you could test it... one way to find out
remember to download the used libraries...
i don't know if it will work but you could test it... one way to find out
remember to download the used libraries...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
| #include <SoftwareSerial.h>
// ============================================================================
// PIN DEFINITIES & COMMUNICATIE
// ============================================================================
const int BUS_PIN = 2; // Quooker datakabel (5V Half-Duplex)
const int RED_LED_PIN = 5; // Optioneel: RODE LED indicator
const int BLUE_LED_PIN = 6; // Optioneel: BLAUWE LED indicator
// SoftwareSerial instantie met RX en TX op exact dezelfde pin
SoftwareSerial quookerBus(BUS_PIN, BUS_PIN);
// ============================================================================
// KRAAN STATUS BUFFER (16 Bytes)
// ============================================================================
uint8_t kraanFrame[16] = {
0x01, 0x10, 0xEF, 0x42, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
};
// Luisterbuffer voor inkomende busberichten
uint8_t rxBuf[20];
uint8_t rxIdx = 0;
// Globale statusvariabele voor LEDweergave
enum LedState { LED_OFF, LED_RED_PULSE, LED_RED_SOLID, LED_BLUE_SOLID, LED_BLUE_BLINK };
LedState currentLedState = LED_OFF;
// ============================================================================
// HULPFUNCTIES
// ============================================================================
// XOR Checksum: Som van alle bytes inclusief checksum = 0xFF
uint8_t calculateChecksum(uint8_t* buffer, size_t len) {
uint8_t xorSum = 0x00;
for (size_t i = 0; i < len - 1; i++) {
xorSum ^= buffer[i];
}
return xorSum ^ 0xFF;
}
// Pas het Kraan-antwoordbericht aan op basis van gewenste functie
void setWaterType(const char* type) {
kraanFrame[6] = 0x00; // Reset Kokend water vlag
kraanFrame[7] = 0x00; // Reset Gekoeld / Bruis vlag
if (strcmp(type, "KOKEND") == 0) {
kraanFrame[6] = 0x20; // Kokend water inschakelen
} else if (strcmp(type, "GEKOELD") == 0) {
kraanFrame[7] = 0x02; // Gekoeld water inschakelen
} else if (strcmp(type, "BRUIS") == 0) {
kraanFrame[7] = 0x08; // Bruiswater inschakelen
}
// Herbereken Checksum in Byte 15
kraanFrame[15] = calculateChecksum(kraanFrame, 16);
}
// Analoge/Digitale LED sturing op basis van de status van de Boiler
void updatePhysicalLeds() {
switch (currentLedState) {
case LED_RED_SOLID:
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, LOW);
break;
case LED_RED_PULSE:
// Simpele knipper/puls indicatie voor opwarmen
digitalWrite(RED_LED_PIN, (millis() / 500) % 2);
digitalWrite(BLUE_LED_PIN, LOW);
break;
case LED_BLUE_SOLID:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, HIGH);
break;
case LED_BLUE_BLINK:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, (millis() / 250) % 2);
break;
case LED_OFF:
default:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, LOW);
break;
}
}
// ============================================================================
// SETUP
// ============================================================================
void setup() {
Serial.begin(115200);
quookerBus.begin(19200);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
setWaterType("IDLE");
Serial.println(F("=============================================="));
Serial.println(F(" Quooker Kraan Emulator + LED Sturing Gestart "));
Serial.println(F("=============================================="));
Serial.println(F("Gebruik Serial Monitor: 'k'=Kokend, 'c'=Gekoeld, 'b'=Bruis, 's'=Stop"));
}
// ============================================================================
// MAIN LOOP
// ============================================================================
void loop() {
// 1. COMMUNICATIE AFHANDELING
while (quookerBus.available()) {
uint8_t b = quookerBus.read();
if (rxIdx < sizeof(rxBuf)) {
rxBuf[rxIdx++] = b;
} else {
rxIdx = 0;
}
// Filter Start-Header (0x01 0x11)
if (rxIdx == 1 && rxBuf[0] != 0x01) { rxIdx = 0; continue; }
if (rxIdx == 2 && rxBuf[1] != 0x11) { rxIdx = 0; continue; }
// Bus Reset / Heartbeat detectie (xx 05 FA 10 CS)
if (rxIdx >= 4 && rxBuf[rxIdx - 3] == 0x05 && rxBuf[rxIdx - 2] == 0xFA && rxBuf[rxIdx - 1] == 0x10) {
rxIdx = 0;
continue;
}
// Volledig Master Request (17 Bytes) van Boiler ontvangen
if (rxIdx == 17) {
rxIdx = 0;
// --- DECODEER LED STATUS UIT BOILER BERICHT ---
uint8_t b7 = rxBuf[7];
uint8_t b8 = rxBuf[8];
uint8_t b11 = rxBuf[11];
if (b7 & 0x20) {
currentLedState = LED_RED_SOLID; // Kokend water actief
} else if (b7 & 0x02) {
currentLedState = LED_RED_PULSE; // Boiler is aan het opwarmen
} else if (b8 == 0x08 || b11 == 0x08) {
currentLedState = LED_BLUE_BLINK; // Bruiswater actief
} else if (b8 == 0x02 || b11 == 0x02) {
currentLedState = LED_BLUE_SOLID; // Gekoeld water actief
} else {
currentLedState = LED_OFF; // Stand-by / Uit
}
// Reageer direct met Kraan Statusbericht (16 Bytes)
quookerBus.write(kraanFrame, 16);
quookerBus.flush();
// Flush eigen echo van de 1-wire lijn
while (quookerBus.available() > 0) quookerBus.read();
}
}
// UPDATE LED INDICATOREN
updatePhysicalLeds();
// 2. SERIËLE MONITOR BEDIENING
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'k') { setWaterType("KOKEND"); Serial.println(F("-> KOKEND WATER")); }
if (cmd == 'c') { setWaterType("GEKOELD"); Serial.println(F("-> GEKOELD WATER")); }
if (cmd == 'b') { setWaterType("BRUIS"); Serial.println(F("-> BRUISWATER")); }
if (cmd == 's') { setWaterType("IDLE"); Serial.println(F("-> RUSTSTAND (IDLE)")); }
}
} |
ik vind het interessant om te zien hoe jullie het protocol ontleden. Ik zou het mooi vinden als we een opensource PCB op basis van een ESP32 met ESPHome kunnen maken uiteindelijk. Zou een mooie integratie zijn voor bijvoorbeeld Home Assistant. Dat je ook het verbruik, temperaturen etc kan inzien en misschien zelfs kan aansturen. Denk er bijvoorbeeld aan dat je een losse knop maakt die een perfect afgemeten glas gekoeld water voor je tapt zonder te draaien
I don't know how it would proof that. This is not how Cube is detected. This also changes without cube. The cube is discovered via another way. I made a capture during which the system was idle and at around 3.5 seconds I unplugged cube from the reservoir and at around 7.5 seconds I plugged it back in. This shows clearly that a cube attached to the system results in double the data between the faucet and reservoir. Also only one packet changes.JazekerXX schreef op dinsdag 28 juli 2026 @ 01:47:
[...]
## 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.
FF 0A F5 41 04 7F xx 00 00 CS
in this packet the xx byte changes according to the cube being plugged in or not.
7F for Cube available
75 for Cube unavailable
CS is the checksum.
More on that later. Remember this as 10 byte packet.
Remember this as a 5 byte packet. This is not only there for heart beat etc. it is used for initialization. It gets still sent after initialization but I dont know why.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.
I did inspect the packets myself and made many many more captures last evening and I got this by now:
Frame structure
[address] [length] [length XOR FF] [command] [payload...] [XOR checksum]
Byte 0 Address or device identifier
Byte 1 Total frame length
Byte 2 Byte 1 XOR 0xFF
Byte 3 Command/message type
Bytes... Payload
Last XOR checksum
Checksum
byte0 XOR byte1 XOR ... XOR checksum = 0xFF
--> checksum = 0xFF ^ byte0 ^ byte1 ^ ... ^ previousByte;
5 Byte packets
XX 05 FA CC CS
XX changes but what it indicates is unknown. It's first (after power on) 0x01 but after some time starts incrementing from sometimes 0x20 and sometimes 0x30
05 & FA are constant
CC is the command
CS checksum
These are also used to initialize communication between the reservoir and faucet. (Your code expected 0x01 0x11 packets which will not be sent until this initialization is done. I will say more about it later)
Initialization
To initialize the reservoir sends: 5 byte packet with XX = 0x01 and CC = 0x10
The flex faucet answers: 01 0A F5 10 01 11 05 00 03 07
The reservoir sends: 5 byte packet with XX = 0x01 and CC = 0x40
The faucet sends: 01 0C F3 40 01 11 04 57 70 00 00 72
Afterwards the reservoir sends the FF 0A F5 41 04 7F 7F 00 00 BA packet which contains cube information. Then normal communication with 0x01 0x11 starts.
10 byte packets
FF 0A F5 41 04 7F XX 00 00 CS
These contain the information about a cube being connected.
XX = 7F Cube connected
XX = 75 Cube disconnected
CS checksum
17 byte packets
01 11 EE 42 ... checksum
These are the packets sent by the reservoir after a faucet was initialized.
01 11 EE 42 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 B15 CS
Byte 0 Address / device identifier? It's mostly 0x01
Byte 1 Frame length
Byte 2 Frame length XOR FF
Byte 3 command
Byte 4 alternating between 0x00 and 0x01. Maybe for timing or heartbeat? Every time the reservoir sends this is changed from 0x00 to 0x01 or vice versa. (So if the reservoir sends 5 packets this would go 0x00 to 0x01 to 0x00 to 0x01 to 0x00...)
Byte 5 unknown mostly 0x00
Byte 6 unknown mostly 0x08
Byte 7 reservoir heating / boiling water activated status bitfield
Byte 8 cube water status bitfield
Byte 9 unknown mostly 0x00
Byte 10 unknown mostly 0x00
Byte 11 same as 7 but switches with some delay (maybe to signal the valves successfully opened?)
Byte 12 same as 8 but again with some delay (maybe to signal valve state?)
Byte 13 unknown mostly 0x00
Byte 14 unknown mostly 0x00
Byte 15 unknown mostly 0x00
Byte 16 checksum
Byte 7 / 11
0x40 Idle (reservoir holds hot water)
0x42 (0x40 + 0x02) reservoir heating
0x60 (0x40 + 0x20) dispensing boiling water
Byte 8 / 12
0x00 idle
0x02 dispensing cooled non sparkling water
0x08 dispensing cooled sparkling water
16 byte packets
01 10 EF 42 ... checksum
These are the packets from the faucet.
01 10 EF 42 B4 B5 B6 B7 B8 B9 B10 B11 B12 B13 B14 CS
Byte 0 Address / device identifier? mostly 0x01
Byte 1 Frame length
Byte 2 Frame length XOR FF
Byte 3 command (maybe the value of the command it's responding to?)
Byte 4 unknown mostly 0x00
Byte 5 unknown mostly 0x00
Byte 6 Boiling water request bitfield
Byte 7 cube water request bitfield
Byte 8 unknown mostly 0x00
Byte 9 unknown mostly 0x00
Byte 10 maybe a reaction to the reservoirs heating / heated up state?
Byte 11 unknown mostly 0x00
Byte 12 unknown mostly 0x00
Byte 13 unknown mostly 0x00
Byte 14 unknown mostly 0x00
Byte 15 checksum
Byte 6
0x00 idle
0x20 boiling water selected / dispensing
Byte 7
0x00 idle
0x02 cooled non sparkling water selected / dispensing
0x08 sparkling water selected / dispensing
Byte 10
0x40 maybe reservoir ready (heated up)
0x42 maybe reservoir heating
Now to the code you sent...
Well simply put it did not work. But not only because initialization was missing but also because SoftwareSerial does apparently not work for half-duplex UART. After changing it a bit to use a half duplex software serial library, (https://github.com/akira215/HalfDuplexSerial-for-Arduino/tree/master) I gave it another try. This time it did not work because the reservoir sent no 17 byte packets (with 0x01 0x11), which is not surprising since we have no initialization. So I just plugged in the flex faucet to do the initialization for me. And well, now we had data and your code worked, but when I requested any water it was toggling like crazy since the faucet send another signal... But it did activate each one (boiling / sparkling / non sparkling) exactly as wanted! So we are on the right path.
I did not try to implement the initialization yet but will do that in the next hours and post here if I am successful. I scrapped my plan of using the Arduino to interact with the faucet to validate our findings, since I think we have enough evidence that we are onto something.
Someting like that could be done, but for now we should get it working first.consolefreak schreef op dinsdag 28 juli 2026 @ 11:06:
ik vind het interessant om te zien hoe jullie het protocol ontleden. Ik zou het mooi vinden als we een opensource PCB op basis van een ESP32 met ESPHome kunnen maken uiteindelijk. Zou een mooie integratie zijn voor bijvoorbeeld Home Assistant. Dat je ook het verbruik, temperaturen etc kan inzien en misschien zelfs kan aansturen. Denk er bijvoorbeeld aan dat je een losse knop maakt die een perfect afgemeten glas gekoeld water voor je tapt zonder te draaien
By perfectly tapped glass of water, do you mean you want to select how much water is dispensed? Like, you can select the amount of water before it stops?
I guess with Home Assistant and ESPHome we could implement that, but I do not know how we would avoid the faucet from sending "no water requested" packets, which would collide with our "water requested" packets...
I think you're looking for a bridge with one cable to the faucet and another one to the boiler. You can filter and/or manipulate the messages which are send between them. I don't think you can just send conflicting messages on the communication bus, otherwise you'll get the behaviour as you've seen.
ja ik had uiteraard ook een ESP in gedachte of dat dan met ESPhome kan dat weet ik niet. ik heb wel eens gelezen dat je op een of andere manier eigen code in de esphome omgeving kan draaien maar dat moeten we dan uitzoeken. maar verbruik en temperaturen zijn geen onderdeel van de data voor zover ik het nu begrijp. een "losse knop" heb ik vannacht nog bedacht alleen dan aan de kraan vast, als een ring onder de kraan en dan een draaiknop aan de zijkant, die je ook in kan drukken. RGB voor indicatie en misschien nog zo'n mini 64x64px color oled schermpje. ik dacht dan voor de veiligheid gaat hij na iedere keer tappen uit en dan moet je eerst weer naar de gewenste stand draaien. er zijn 3 standen dus max 2 klikjes draaien (je kan omhoog en omlaag draaien). de kabel kan eventueel van de kraan afgeknipt worden (als die defect is) en dan kan er een stukje weg geslepen worden op de plek waar de kabel zit, dan kan daar de kabel door naar de nieuwe knop zonder een extra gat in je aanrecht te boren. wel zo fijn!consolefreak schreef op dinsdag 28 juli 2026 @ 11:06:
ik vind het interessant om te zien hoe jullie het protocol ontleden. Ik zou het mooi vinden als we een opensource PCB op basis van een ESP32 met ESPHome kunnen maken uiteindelijk. Zou een mooie integratie zijn voor bijvoorbeeld Home Assistant. Dat je ook het verbruik, temperaturen etc kan inzien en misschien zelfs kan aansturen. Denk er bijvoorbeeld aan dat je een losse knop maakt die een perfect afgemeten glas gekoeld water voor je tapt zonder te draaien
een preciese hoeveelheid tappen en dat die in de ochtend al klaar staat voor je had ik ook al bedacht. volgens mij is het een kwestie van testen hoeveel seconden je moet activeren. echt in ml gaat lastig worden maar je kunt wel wat timen en daar wat "presets" voor maken, denk ik..
hey google tap 500ml bruisend water
Voor het meten van verbruik zal extra hardware voor nodig zijn inderdaad op het PCB. Voor temperaturen is er nu al een sensor, immers hoe weet het huidige PCB nu of het water op de juiste temperatuur zit? De preciese hoeveelheid tappen zal inderdaad een kwestie van tijd zijn en aansturen. ESPHome kan UART praten in halfduplex: https://esphome.io/components/uart/
Maar eerst maar eens het protocol beter begrijpen
Maar eerst maar eens het protocol beter begrijpen
[ Voor 16% gewijzigd door consolefreak op 28-07-2026 15:22 ]
Awesome news! The fact that the boiler activated all water types confirms that our byte layout, checksum calculation, and command structure are 100% correct!intercook schreef op dinsdag 28 juli 2026 @ 13:52:
[...]
Now to the code you sent...
Well simply put it did not work. But not only because initialization was missing but also because SoftwareSerial does apparently not work for half-duplex UART. After changing it a bit to use a half duplex software serial library, (https://github.com/akira215/HalfDuplexSerial-for-Arduino/tree/master) I gave it another try. This time it did not work because the reservoir sent no 17 byte packets (with 0x01 0x11), which is not surprising since we have no initialization. So I just plugged in the flex faucet to do the initialization for me. And well, now we had data and your code worked, but when I requested any water it was toggling like crazy since the faucet send another signal... But it did activate each one (boiling / sparkling / non sparkling) exactly as wanted! So we are on the right path.
I did not try to implement the initialization yet but will do that in the next hours and post here if I am successful. I scrapped my plan of using the Arduino to interact with the faucet to validate our findings, since I think we have enough evidence that we are onto something.
after plugging in the faucet for the init, did you unplug it after init?
and what do you mean with scrapped your arduino plan?
Based on your feedback, we identified two key points to fix for standalone operation (without the physical faucet connected):
1. **Half-Duplex Hardware/Software:** Standard `SoftwareSerial` indeed gets confused when RX & TX are tied together on a single wire because it receives its own transmission. Switching to `HalfDuplexSerial` (or a board with hardware serial like ESP32/Mega) is the right move.
2. **The Missing Handshake/Initialization:** The reservoir stays dormant until a slave device announces itself on the bus. Before the reservoir starts emitting the 17-byte polling frames (`0x01 0x11...`), the faucet sends a **10-byte announcement frame** (`FF 0A F5...`).
---
### Updated Code (Standalone Kraan Emulator with Init + LED feedback)
Requirements:
- Install the **HalfDuplexSerial** library (https://github.com/akira215/HalfDuplexSerial-for-Arduino).
- Connect Pin D2 to the Quooker 5V Single-Wire Data line.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
| #include <HalfDuplexSerial.h>
// ============================================================================
// PIN DEFINITIONS & HARDWARE
// ============================================================================
const int BUS_PIN = 2; // Single-wire UART data line (5V)
const int RED_LED_PIN = 5; // Optional: Red LED pin
const int BLUE_LED_PIN = 6; // Optional: Blue LED pin
// Half-Duplex serial setup on single pin
HalfDuplexSerial quookerBus;
// ============================================================================
// PROTOCOL BUFFERS & FRAMES
// ============================================================================
// 10-byte Announcement/Wake-up frame sent to wake up the Reservoir
uint8_t initFrame[10] = {
0xFF, 0x0A, 0xF5, 0x41, 0x04, 0x7F, 0x75, 0x00, 0x00, 0xB0
};
// 16-byte Faucet Status Frame
uint8_t kraanFrame[16] = {
0x01, 0x10, 0xEF, 0x42, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
};
uint8_t rxBuf[20];
uint8_t rxIdx = 0;
bool isInitialized = false;
unsigned long lastInitTx = 0;
// LED State Machine
enum LedState { LED_OFF, LED_RED_PULSE, LED_RED_SOLID, LED_BLUE_SOLID, LED_BLUE_BLINK };
LedState currentLedState = LED_OFF;
// ============================================================================
// CHECKSUM CALCULATION
// ============================================================================
// XOR Sum including checksum byte always yields 0xFF
uint8_t calculateChecksum(uint8_t* buffer, size_t len) {
uint8_t xorSum = 0x00;
for (size_t i = 0; i < len - 1; i++) {
xorSum ^= buffer~[i];
}
return xorSum ^ 0xFF;
}
// Set water request command
void setWaterType(const char* type) {
kraanFrame[6] = 0x00; // Reset Boiling flag
kraanFrame[7] = 0x00; // Reset Cold/Sparkling flag
if (strcmp(type, "KOKEND") == 0) {
kraanFrame[6] = 0x20;
} else if (strcmp(type, "GEKOELD") == 0) {
kraanFrame[7] = 0x02;
} else if (strcmp(type, "BRUIS") == 0) {
kraanFrame[7] = 0x08;
}
kraanFrame[15] = calculateChecksum(kraanFrame, 16);
}
void updatePhysicalLeds() {
switch (currentLedState) {
case LED_RED_SOLID:
digitalWrite(RED_LED_PIN, HIGH);
digitalWrite(BLUE_LED_PIN, LOW);
break;
case LED_RED_PULSE:
digitalWrite(RED_LED_PIN, (millis() / 500) % 2);
digitalWrite(BLUE_LED_PIN, LOW);
break;
case LED_BLUE_SOLID:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, HIGH);
break;
case LED_BLUE_BLINK:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, (millis() / 250) % 2);
break;
case LED_OFF:
default:
digitalWrite(RED_LED_PIN, LOW);
digitalWrite(BLUE_LED_PIN, LOW);
break;
}
}
// ============================================================================
// SETUP
// ============================================================================
void setup() {
Serial.begin(115200);
quookerBus.begin(BUS_PIN, 19200);
pinMode(RED_LED_PIN, OUTPUT);
pinMode(BLUE_LED_PIN, OUTPUT);
setWaterType("IDLE");
Serial.println(F("=============================================="));
Serial.println(F(" Quooker Standalone Faucet Emulator Started "));
Serial.println(F("=============================================="));
Serial.println(F("Keys: 'k'=Boiling, 'c'=Cold, 'b'=Sparkling, 's'=Stop"));
}
// ============================================================================
// MAIN LOOP
// ============================================================================
void loop() {
// 1. INITIALIZATION HANDSHAKE
// If the reservoir hasn't sent 17-byte requests yet, send 10-byte announce frame every 500ms
if (!isInitialized && (millis() - lastInitTx > 500)) {
lastInitTx = millis();
Serial.println(F("Sending 10-byte Wake-Up / Announce frame to Reservoir..."));
quookerBus.write(initFrame, 10);
}
// 2. BUS RECEIVE & RESPONSE
while (quookerBus.available()) {
uint8_t b = quookerBus.read();
if (rxIdx < sizeof(rxBuf)) {
rxBuf[rxIdx++] = b;
} else {
rxIdx = 0;
}
// Header filter (Master Request starts with 0x01 0x11)
if (rxIdx == 1 && rxBuf[0] != 0x01) { rxIdx = 0; continue; }
if (rxIdx == 2 && rxBuf[1] != 0x11) { rxIdx = 0; continue; }
// Heartbeat / Bus Reset Frame (xx 05 FA 10 CS)
if (rxIdx >= 4 && rxBuf~[rxIdx - 3] == 0x05 && rxBuf~[rxIdx - 2] == 0xFA && rxBuf~[rxIdx - 1] == 0x10) {
rxIdx = 0;
continue;
}
// Master 17-byte Polling Request Received!
if (rxIdx == 17) {
rxIdx = 0;
if (!isInitialized) {
isInitialized = true;
Serial.println(F(" Reservoir Polling Detected! Handshake complete."));
}
// Decode LED feedback from Reservoir
uint8_t b7 = rxBuf[7];
uint8_t b8 = rxBuf[8];
uint8_t b11 = rxBuf[11];
if (b7 & 0x20) {
currentLedState = LED_RED_SOLID; // Boiling active
} else if (b7 & 0x02) {
currentLedState = LED_RED_PULSE; // Heating up
} else if (b8 == 0x08 || b11 == 0x08) {
currentLedState = LED_BLUE_BLINK; // Sparkling water active
} else if (b8 == 0x02 || b11 == 0x02) {
currentLedState = LED_BLUE_SOLID; // Cold water active
} else {
currentLedState = LED_OFF;
}
// Respond immediately with 16-byte Faucet Status
quookerBus.write(kraanFrame, 16);
}
}
updatePhysicalLeds();
// 3. SERIAL MONITOR CONTROLS
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'k') { setWaterType("KOKEND"); Serial.println(F("-> Request BOILING")); }
if (cmd == 'c') { setWaterType("GEKOELD"); Serial.println(F("-> Request COLD")); }
if (cmd == 'b') { setWaterType("BRUIS"); Serial.println(F("-> Request SPARKLING")); }
if (cmd == 's') { setWaterType("IDLE"); Serial.println(F("-> Request IDLE")); }
}
} |
voor energie verbruik heb ik gewoon zo'n shelly stekker er tussen. als je energie wilt meten moet dat op de 230v lijn, dus als je een pcb maakt om de kraan te vervangen wordt dat een beetje onlogisch toch? en de huidige temp sensor kun je toch niet gebruiken? als het op basis van I2C is kun je niet meeluisteren toch? en als het op basis van een weerstandswaarde is dan misschien, maar dan moet je op de pcb van de quooker dit er bij gaan solderen. eventueel met een opamp er tussen zodat je een high impedance input hebt zodat je de meting niet verstoort en eventueel nog een voor de gain zodat je de twee voltage ranges op elkaar afstemt voor de hoogste precisie.consolefreak schreef op dinsdag 28 juli 2026 @ 15:15:
Voor het meten van verbruik zal extra hardware voor nodig zijn inderdaad op het PCB. Voor temperaturen is er nu al een sensor, immers hoe weet het huidige PCB nu of het water op de juiste temperatuur zit? De preciese hoeveelheid tappen zal inderdaad een kwestie van tijd zijn en aansturen. ESPHome kan UART praten in halfduplex: https://esphome.io/components/uart/
Maar eerst maar eens het protocol beter begrijpen
dat esphome ook uart kan is wel interessant, alleen hoe je dan nog je eigen code toevoegd is me nog een raadsel.
maar inderdaad eerst het protocol verder werkend krijgen.
When I unplugged it, it stopped working. This is because one of the 5 byte packets, which is used for init, is sent continously.JazekerXX schreef op dinsdag 28 juli 2026 @ 15:34:
[...]
after plugging in the faucet for the init, did you unplug it after init?
and what do you mean with scrapped your arduino plan?
By scrapping my arduino plan I meant, that we are way further in understanding this than I thought after this little time. I did no longer need to interact with the faucet via arduino, because your code and some changes of it already prove that we have everything we need.
Also I got init working! I changed the code some more and now it is working. No faucet connected and every thing just works. Great!
The arduino even reinitializes after unplugging and replugging. All the functions work. I was able to request boiling / cooled / sparkling water all from my PC via serial to the arduino.
I used an Arduino Mega 2560 so I used pin 13.
Here's the code:
code:
As you can see, I removed the led logic, as this is most likely done by the microcontroler in the faucet via its ring input and only in case of boiler heating via the bus information. So this is something that was not really important in this test.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
| #include "SoftHalfDuplexSerial.h"
const int BUS_PIN = 13;
softHalfDuplexSerial quookerBus(BUS_PIN);
uint8_t kraanFrame[16] = {
0x01, 0x10, 0xEF, 0x42, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
};
uint8_t initFrame10[10] = {
0x01, 0x0A, 0xF5, 0x10, 0x01,
0x11, 0x05, 0x00, 0x03, 0x07
};
uint8_t initFrame40[12] = {
0x01, 0x0C, 0xF3, 0x40, 0x01,
0x11, 0x04, 0x57, 0x70, 0x00, 0x00, 0x72
};
uint8_t rxBuf[20];
uint8_t rxIdx = 0;
uint8_t calculateChecksum(uint8_t* buffer, size_t len) {
uint8_t xorSum = 0x00;
for (size_t i = 0; i < len - 1; i++) {
xorSum ^= buffer~[i];
}
return xorSum ^ 0xFF;
}
void setWaterType(const char* type) {
kraanFrame[6] = 0x00; // Reset Kokend water vlag
kraanFrame[7] = 0x00; // Reset Gekoeld / Bruis vlag
if (strcmp(type, "KOKEND") == 0) {
kraanFrame[6] = 0x20; // Kokend water inschakelen
} else if (strcmp(type, "GEKOELD") == 0) {
kraanFrame[7] = 0x02; // Gekoeld water inschakelen
} else if (strcmp(type, "BRUIS") == 0) {
kraanFrame[7] = 0x08; // Bruiswater inschakelen
}
// Herbereken Checksum in Byte 15
kraanFrame[15] = calculateChecksum(kraanFrame, 16);
}
void sendDataWithDelay(uint8_t* data, int length)
{
// wait we're answering to fast
delay(2);
quookerBus.write(data, length);
quookerBus.flush();
}
void setup()
{
Serial.begin(115200);
while(!Serial){}
quookerBus.begin(19200);
setWaterType("IDLE");
Serial.println(F("=============================================="));
Serial.println(F(" Quooker Kraan Emulator + LED Sturing Gestart "));
Serial.println(F("=============================================="));
Serial.println(F("Gebruik Serial Monitor: 'k'=Kokend, 'c'=Gekoeld, 'b'=Bruis, 's'=Stop"));
}
void loop()
{
while(quookerBus.available())
{
uint8_t byte = quookerBus.read();
if(rxIdx < sizeof(rxBuf))
{
rxBuf[rxIdx++] = byte;
}
else
{
rxIdx = 0;
}
// Filter Start-Header (0x01 0x11) and bus init header
if (rxIdx == 1 && !(rxBuf[0] == 0x01 || (rxBuf[0] >= 0x20 && rxBuf[0] < 0x50)))
{
rxIdx = 0; continue;
}
if (rxIdx == 2 && !(rxBuf[1] == 0x11 || rxBuf[1] == 0x05))
{
rxIdx = 0; continue;
}
// Bus init detectie (xx 05 FA 10 CS)
if (rxIdx >= 4 && rxBuf~[rxIdx - 3] == 0x05 && rxBuf~[rxIdx - 2] == 0xFA && rxBuf~[rxIdx - 1] == 0x10) {
rxIdx = 0;
Serial.println("gustav10");
sendDataWithDelay(initFrame10, 10);
continue;
}
if (rxIdx >= 4 && rxBuf~[rxIdx - 3] == 0x05 && rxBuf~[rxIdx - 2] == 0xFA && rxBuf~[rxIdx - 1] == 0x40) {
rxIdx = 0;
Serial.println("gustav12");
sendDataWithDelay(initFrame40, 12);
continue;
}
// Volledig Master Request (17 Bytes) van Boiler ontvangen
if (rxIdx == 17) {
rxIdx = 0;
// Reageer direct met Kraan Statusbericht (16 Bytes)
sendDataWithDelay(kraanFrame, 16);
// Flush eigen echo van de 1-wire lijn
while (quookerBus.available() > 0) quookerBus.read();
}
}
// 2. SERIËLE MONITOR BEDIENING
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'k') { setWaterType("KOKEND"); Serial.println(F("-> KOKEND WATER")); }
if (cmd == 'c') { setWaterType("GEKOELD"); Serial.println(F("-> GEKOELD WATER")); }
if (cmd == 'b') { setWaterType("BRUIS"); Serial.println(F("-> BRUISWATER")); }
if (cmd == 's') { setWaterType("IDLE"); Serial.println(F("-> RUSTSTAND (IDLE)")); }
}
} |
The rest of my changes is just adding init and some delay since we were answering way to fast.
This is where your code goes sideways:
code:
It does just skip over init packets and ignores them. I mean it trys to check for what it calls Hearbeat / Bus reset fream but it can never get there. These checks can never be true since it continues when rxIdx == 1 && rxBuf[0] != 0x01. 1
2
3
4
5
6
7
8
9
| // Header filter (Master Request starts with 0x01 0x11)
if (rxIdx == 1 && rxBuf[0] != 0x01) { rxIdx = 0; continue; }
if (rxIdx == 2 && rxBuf[1] != 0x11) { rxIdx = 0; continue; }
// Heartbeat / Bus Reset Frame (xx 05 FA 10 CS)
if (rxIdx >= 4 && rxBuf~~~[rxIdx - 3] == 0x05 && rxBuf~~~[rxIdx - 2] == 0xFA && rxBuf~~~[rxIdx - 1] == 0x10) {
rxIdx = 0;
continue;
} |
With the code you did most of the work already, it just needed some tweaking!
Nice work!intercook schreef op dinsdag 28 juli 2026 @ 16:13:
[...]
As you can see, I removed the led logic, as this is most likely done by the microcontroler in the faucet via its ring input and only in case of boiler heating via the bus information. So this is something that was not really important in this test.
The rest of my changes is just adding init and some delay since we were answering way to fast.
but removing the LED's because it's controlled by the faucet?
you mean you have the faucet connected together with the arduino? that cant be right..
thank you for the working code!With the code you did most of the work already, it just needed some tweaking!
so, what is next?
in the mean while i made a fast model of a nice 3D printed faucet add on to house the new button and if you like a tiny color oled screen.
/f/image/SR8wGDgs66uTLMyLzlIDY7Og.png?f=fotoalbum_large)
No, sorry. I meant normally, with just the Quooker system and no modifications, the faucet controls its leds on its own and does not tell the other devices (reservoir, cube) about it via the data bus. Therefore, controling leds was not important in this test, since we can implement that how ever we want. For example, we add 3 buttons to the arduino. One for each function. To control a led we can simply get the state of the buttons. We do not need the communications for that.JazekerXX schreef op dinsdag 28 juli 2026 @ 20:31:
[...]
Nice work!
but removing the LED's because it's controlled by the faucet?
The only thing, where we have to get data from the bus to light a led, is to turn it on when the reservoir is heating. And that should be easy to implement.
No, i had the faucet disconnected. I controlled the reservoir and cube with the arduino. So to say, the arduino replaced the faucet.you mean you have the faucet connected together with the arduino? that cant be right..
No problem. But I saw some strange "~" symbols appear after I posted it. Those are not part of the code, but I can not figure out what makes them appear when I post to this forum.thank you for the working code!
I do not know. I need to fix my cube next. It is leaking water. The fitting on the pump broke, and I am waiting for replacement parts to arrive. After that I will probably hook up my Q0 faucet to an arduino and make it able to dispense sparkling water. Maybe I'll just add some buttons, as my Q0 only gives me two resistance readings. One for normal and one for rotate. When I push / hold it, it just reads the same as when it is untouched. Might be somewhat broken, it was in use for so many years...so, what is next?
[ Voor 9% gewijzigd door intercook op 28-07-2026 21:13 ]
on line 97 and 104? how should it be?intercook schreef op dinsdag 28 juli 2026 @ 21:10:
[...]
No problem. But I saw some strange "~" symbols appear after I posted it. Those are not part of the code, but I can not figure out what makes them appear when I post to this forum.
i bought my cube like that, leaking. it's an easy fix.[...]
I do not know. I need to fix my cube next. It is leaking water. The fitting on the pump broke, and I am waiting for replacement parts to arrive. After that I will probably hook up my Q0 faucet to an arduino and make it able to dispense sparkling water. Maybe I'll just add some buttons, as my Q0 only gives me two resistance readings. One for normal and one for rotate. When I push / hold it, it just reads the same as when it is untouched. Might be somewhat broken, it was in use for so many years...
using a Q0 with cube is a cool idea, which is possible now. you only need an analog input and a known pull up resistor..
:strip_exif()/f/image/x6zs2UjpDNPp9aME6YM7E62M.jpg?f=fotoalbum_large)
i also opened a Q0 once and it's the same story with all of those, the platich housing cracks, water seeps in and disturbs the resistance value or rots down something and it looses connection. i think mine had the same issue as yours. als half of he leds did not work anymore.
but this entire ring is poored in resin, so to get to the pcb you need to grind everything away, mine had a lot of crack so there was a lot of damage on the pcb. after grinding al damaged parts away there was not much left to use. in my opinion it's best to just copy the design and order some new pcb's from JLCPCB. as well as for the plastic enclosure, just copy and print it in some transparant resin.
this is the scematic:
ik heb het model nog wat verbeterd scherm naar ware grootte (eigenlijk kleinte
)
en was nog wat vergeten te vertellen. je ziet de kraan in het lichtgrijs en het 3D model in het donker grijs. de kraan schuift dus eigenlijk in de 3D geprinte koker. met de kraan moer onder het aanrechtblad klem je het geheel zodat het vast komt te zitten. het witte stuk tussen de knop en het schermpje kan eventueel uit semitransparant PETG geprint worden om RGB doorheen te laten schijnen.
/f/image/7xJqzefzg93zN2Fr8E5FQEdP.png?f=fotoalbum_large)
:strip_exif()/f/image/wRrDcP9I9RcfEKg1DEmHgrBC.png?f=user_large)
en dan kan de draairing (voor druk draai) op 2 manieren het simpelste is met een rotary encoder maar voor een luxere feel kan het ook met een grote ball bearing en een stalen kogel met veer die over ribbeltjes heen gaat voor het klik effect en een hall effect sensor die een roterend magnetisch veld kan meten. en RGB kan tussen de ring uit schijnen en een leuk 0,66" color oled schermpje is misschien ook wel leuk.
werking kan dan op 2 manieren.
bijvoorbeeld draai naar gewenste stand (kokend, gekoeld of bruisend) dan met een lange druk totdat je los laat tappen (de standaard methode)
of met een korte druk krijg je een tweede menu met ml en kun je daar uit enkele presets kiezen en dan nog een korte druk om te starten. (de ml methode)
dit lijkt me een mooie aanpassing als je een defecte kraan hebt.
wat denken jullie hier van?
en was nog wat vergeten te vertellen. je ziet de kraan in het lichtgrijs en het 3D model in het donker grijs. de kraan schuift dus eigenlijk in de 3D geprinte koker. met de kraan moer onder het aanrechtblad klem je het geheel zodat het vast komt te zitten. het witte stuk tussen de knop en het schermpje kan eventueel uit semitransparant PETG geprint worden om RGB doorheen te laten schijnen.
/f/image/7xJqzefzg93zN2Fr8E5FQEdP.png?f=fotoalbum_large)
:strip_exif()/f/image/wRrDcP9I9RcfEKg1DEmHgrBC.png?f=user_large)
en dan kan de draairing (voor druk draai) op 2 manieren het simpelste is met een rotary encoder maar voor een luxere feel kan het ook met een grote ball bearing en een stalen kogel met veer die over ribbeltjes heen gaat voor het klik effect en een hall effect sensor die een roterend magnetisch veld kan meten. en RGB kan tussen de ring uit schijnen en een leuk 0,66" color oled schermpje is misschien ook wel leuk.
werking kan dan op 2 manieren.
bijvoorbeeld draai naar gewenste stand (kokend, gekoeld of bruisend) dan met een lange druk totdat je los laat tappen (de standaard methode)
of met een korte druk krijg je een tweede menu met ml en kun je daar uit enkele presets kiezen en dan nog een korte druk om te starten. (de ml methode)
dit lijkt me een mooie aanpassing als je een defecte kraan hebt.
wat denken jullie hier van?
Ik heb wel interesse hierin. heb je er nog liggen?juliantje15 schreef op dinsdag 17 februari 2026 @ 21:35:
Ik heb nu trouwens een hele zak met magneten besteld vanwege de minimale bestelwaarde...
Mocht je nog magneetjes nodig hebben, doe mij dan een berichtje, gewoon tegen de inkoopprijs, 7 euro voor 20 magneten + postzegel.
Heb er inmiddels nog maar 10 over, maar iedereen die mij een prive berichtje heeft gedaan zou er moeten hebben.schemert schreef op dinsdag 4 augustus 2026 @ 14:31:
[...]
Ik heb wel interesse hierin. heb je er nog liggen?
Nou, na een aantal weken aanzien ben ik toch maar (na flink aandringen) aan de slag gegaan om te zien of het magneetje vervangen zou helpen. Er werd flink aangedrongen op een nieuwe kraan door mijn huisgenoten, nu moeten ze een pannetje water opzetten voor de thee en de noedels.
De kraan is kwestie is een Fusion Square in combinatie met de combi 2.2
De kokend water functie viel enige weken terug uit, maar direct niet constant. Eerst meestal wel, toen meestal niet, daarna hield ie er helemaal mee op. In een maand ongeveer, misschien 3 weken. Ik had al eerder gelezen over een magneetje op de ring zetten die je draait, op de plek waar het magneetje aan de binnenkant zit. Misschien heeft dit een enkele keer geholpen, misschien ook niet. Het was in ieder geval geen oplossing.
Vanavond weer 's op zoek gegaan hoe ik zonder de hele kraan kon demonteren bij dat magneetje in de ring kon komen. Daarbij ben via een ander topic op een youtube filmpje gestuit. Het filmpje was niet direct helpend voor mij, maar daar las ik wel een comment die mij het vertouwen gaf om zelf aan de slag te gaan.
Eigenlijk ging de uitloop verwijderen verrassend eenvoudig. Heel voorzichtig te werk gaan, dat wel. Een aantal onderdelen zijn van plastic. Op sommige onderdelen moet je wat meer kracht zetten dan je zou willen, omwille van mogelijk beschadigen. Een foto verslagje op, volgens mij weer, een ander topic hier heeft mij bij het laatste zetje geholpen; de (plastic) ring met daarin het met daarin het magneetje uit de draairing verwijderen.
Dit lukte uiteindelijk en ik was enigszins verheugd en hoopvol om een verroest magneetje aan te treffen. Maar dat was dus niet het geval, het blinkte mij tegemoet (niet heel goed te zien op de foto). Ik had al eerder een vaag gevoel dat dat misschien niet het probleem was omdat ik nog wat magnetische kracht voelde. En de rode led-ring deed het al die ook al niet. Helaas...niet heel eenvoudig het magneetje vervangen voor mij dus.
Is er al iemand die ervaring heeft met het vervangen van de led-ring? Ik meen uit het youtubefilmpje dat dat eigenlijk niet kan door de constructie van het geheel. Dus heel hoopvol ben ik niet. Testen en solderen van de led-ring die er in zit is voor mij een aantal bruggen te ver.
De kraan is kwestie is een Fusion Square in combinatie met de combi 2.2
De kokend water functie viel enige weken terug uit, maar direct niet constant. Eerst meestal wel, toen meestal niet, daarna hield ie er helemaal mee op. In een maand ongeveer, misschien 3 weken. Ik had al eerder gelezen over een magneetje op de ring zetten die je draait, op de plek waar het magneetje aan de binnenkant zit. Misschien heeft dit een enkele keer geholpen, misschien ook niet. Het was in ieder geval geen oplossing.
Vanavond weer 's op zoek gegaan hoe ik zonder de hele kraan kon demonteren bij dat magneetje in de ring kon komen. Daarbij ben via een ander topic op een youtube filmpje gestuit. Het filmpje was niet direct helpend voor mij, maar daar las ik wel een comment die mij het vertouwen gaf om zelf aan de slag te gaan.
Eigenlijk ging de uitloop verwijderen verrassend eenvoudig. Heel voorzichtig te werk gaan, dat wel. Een aantal onderdelen zijn van plastic. Op sommige onderdelen moet je wat meer kracht zetten dan je zou willen, omwille van mogelijk beschadigen. Een foto verslagje op, volgens mij weer, een ander topic hier heeft mij bij het laatste zetje geholpen; de (plastic) ring met daarin het met daarin het magneetje uit de draairing verwijderen.
Dit lukte uiteindelijk en ik was enigszins verheugd en hoopvol om een verroest magneetje aan te treffen. Maar dat was dus niet het geval, het blinkte mij tegemoet (niet heel goed te zien op de foto). Ik had al eerder een vaag gevoel dat dat misschien niet het probleem was omdat ik nog wat magnetische kracht voelde. En de rode led-ring deed het al die ook al niet. Helaas...niet heel eenvoudig het magneetje vervangen voor mij dus.
Is er al iemand die ervaring heeft met het vervangen van de led-ring? Ik meen uit het youtubefilmpje dat dat eigenlijk niet kan door de constructie van het geheel. Dus heel hoopvol ben ik niet. Testen en solderen van de led-ring die er in zit is voor mij een aantal bruggen te ver.
Ter info deze magneetjes lijken wel minder lang mee te gaan.
5 maanden verder en kraan reageerde alweer soms niet.
Dop er af en magneetje zag er best goed uit, echter na er uit peuteren bleek die toch al half weg geroest.
Gelukkig kleine handeling en ik heb nog 12 magneetjes = 6 jaar.
Doen ook niks geks met de kraan en proberen zo droog mogelijk te houden…
5 maanden verder en kraan reageerde alweer soms niet.
Dop er af en magneetje zag er best goed uit, echter na er uit peuteren bleek die toch al half weg geroest.
Gelukkig kleine handeling en ik heb nog 12 magneetjes = 6 jaar.
Doen ook niks geks met de kraan en proberen zo droog mogelijk te houden…
Ik had het zelfde probleem met onze Quooker Flex. Aangezien er in dit topic vrij veel uitleg voorbij kwam over de Fusion en soms ook uitleg zonder te noemen welke kraan iemand heeft was het niet altijd duidelijk hoe ik nu met de Flex verder moest. De Flex gaat anders uit elkaar dan de Fusion.
Het is gelukt!
Ik heb het meteen even opgenomen en een youtube filmpje er van gemaakt (eerste public filmpje...) YouTube: Quooker Flex repair, cheap fix for a faulty boiling water control ring!
In het Engels, dan kan een breder publiek wat hebben aan mijn uitleg (je kan uiteraard vertaalde ondertitels aanzetten). Excuses voor de brakke audio van mijn voiceover, meteen geleerd geen Jabra kantoor headset te gebruiken voor zo iets.
Simpel klusje, 10 min werk. Wie weet heeft iemand er wat aan.
@juliantje15 , nog bedankt voor het toesturen van de magneetjes, helaas nooit aangekomen maar via jou wel de juiste webshop gevonden.
Ik heb er nu ook een stapeltje over dus als iemand nog een magneetje wil hebben maar niet 27 euro minimaal kwijt wil zijn bij Supermagnete.nl, dan kan je een PB sturen. Die website is verder prima maar ze hanteren een minimum bestelbedrag van 20 euro excl. verzendkosten.
Het is gelukt!
In het Engels, dan kan een breder publiek wat hebben aan mijn uitleg (je kan uiteraard vertaalde ondertitels aanzetten). Excuses voor de brakke audio van mijn voiceover, meteen geleerd geen Jabra kantoor headset te gebruiken voor zo iets.
Simpel klusje, 10 min werk. Wie weet heeft iemand er wat aan.
@juliantje15 , nog bedankt voor het toesturen van de magneetjes, helaas nooit aangekomen maar via jou wel de juiste webshop gevonden.
Ik heb er nu ook een stapeltje over dus als iemand nog een magneetje wil hebben maar niet 27 euro minimaal kwijt wil zijn bij Supermagnete.nl, dan kan je een PB sturen. Die website is verder prima maar ze hanteren een minimum bestelbedrag van 20 euro excl. verzendkosten.
[ Voor 4% gewijzigd door Wabs op 07-09-2026 20:44 ]
Helaas, de laatste 3 zendingen heb ik 2x opnieuw moeten doen (vastgeplakt aan magnetische busjes?), en nu zijn mijn magneten echt op..Wabs schreef op maandag 7 september 2026 @ 20:41:
@juliantje15 , nog bedankt voor het toesturen van de magneetjes, helaas nooit aangekomen maar via jou wel de juiste webshop gevonden.
Wel fijn dat je het alsnog hebt weten op te lossen!
het helpt als je wat isolatie materiaal om de magneten doet. dan plakken ze nergens meer aan en blijven ze goed heel.juliantje15 schreef op maandag 7 september 2026 @ 21:52:
[...]
Helaas, de laatste 3 zendingen heb ik 2x opnieuw moeten doen (vastgeplakt aan magnetische busjes?), en nu zijn mijn magneten echt op..
Wel fijn dat je het alsnog hebt weten op te lossen!
Ik heb ze nog een keer verstuurd met dikke tape er om heen, maar ook dat was schijnbaar niet genoeg. Vreemd, want daarvoor heb ik wel 7 enveloppen verstuurd zonder problemen.JazekerXX schreef op maandag 7 september 2026 @ 22:54:
[...]
het helpt als je wat isolatie materiaal om de magneten doet. dan plakken ze nergens meer aan en blijven ze goed heel.
Gezien het feit dat ik hier veel verhalen over verroeste magneten lees misschien handig om de magneetjes in te smeren met siliconenvet om te voorkomen dat ze verroesten?
Zou ook preventief kunnen.
Zou ook preventief kunnen.
All truth passes through three stages: First it is ridiculed, second it is violently opposed and third it is accepted as being self-evident.
Bij mij was het niet de magneet van de Quooker Flex. Na het plaatsen van een onderhoudset even geen problemen meer gehad. Daarna helaas steeds erger en erger tot hij constant in storing bleef staan.
Ik vind het een fijne oplossing zo. Weinig kans dat hij nog storing gaat geven op deze manier
- Printplaatje gemaakt met een 5600 weerstand en een jack plug (Houd hem uit de storing)
- Magneetventiel apart bedienbaar gemaakt via een Sonoff Basic
Ik vind het een fijne oplossing zo. Weinig kans dat hij nog storing gaat geven op deze manier
COZ schreef op vrijdag 19 december 2025 @ 18:35:
Hoe heb ik het werkend gekregen:
Mini-jack van de kraan uit de boiler gehaald.
Een 4 polige mini-jack terminal in de poort op de boiler gestoken.
Over pin 1 en 4 een weerstand van 5600 Ohm gezet. Paralel over dezelfde pinnen ook een weerstand van 470 Ohm gezet. Maar in dit parallelle circuit, ook een schakelaar opgenomen.
Ik kan de kraan dus nu bedienen met een klein drukknopje, dat ook nog eens rood verlicht is.
De bediening voor het kokende water, gaat dus helemaal buiten de kraan om. De ring op de kraan heeft in dit geval geen functie meer.
Ik heb een Quooker fusion square uit 2020 met microcontroller. In eerste instantie ook met een verroeste magneet en tijdelijk met extra magneetje aan de buitenzijde opgelost. Na een tijdje werkte dit niet meer en deed de led in de kraan het ook niet meer. Defecte sensor in de kraan dus.JazekerXX schreef op donderdag 30 juli 2026 @ 01:40:
ik heb het model nog wat verbeterd scherm naar ware grootte
dit lijkt me een mooie aanpassing als je een defecte kraan hebt.
wat denken jullie hier van?
Aangenomen dat vocht het probleem heeft veroorzaakt, vermoed ik dat eerder de o-ringen vervangen het had kunnen voorkomen. Blijkbaar lekt er een klein beetje vocht langs, want nat schoonmaken of erg nat wordt de kraan aan de buitenkant zelden.
Ik heb de kraan uit elkaar gehaald, magneet vervangen, maar de 2x knipper foutmelding blijft helaas.
De oplossing (hierboven geciteerd) met weerstanden en losse drukknop is vrij simpel, maar niet geintegreerd. Ik heb weinig verstand van electronica en hoewel ik onder de indruk ben van het andere voorstel voor een oplossing (ook geciteerd), vraag ik mij af hoe lastig het is de oplossing met weerstanden te houden (bij het boilervat), maar de losse drukknop te vervangen met een "knop"/magneetsensor in de kraan op de plek waar de microcontroller zit. Dat daarbij de druk-druk-draai beveiliging verloren gaat en gewoon een druk-draai wordt (dus eigenlijk gewoon na de draai schakelt, maakt mij niet uit.
Als het zou passen binnen de afmetingen, zou dan zoiets gecombineerd kunnen worden: https://opencircuit.nl/product/magnetic-switch? Of denk ik te simpel.
binnen de afmetingen van de huidige kraan zal lastig worden. dan moet je een printplaatje ontwerpen met exact dezelfde afmetingen en daar alle benodigdheden ook op kwijt kunnen. aangezien je de weerstand optie al te lastig vind, gaat dat hem zeker niet worden. maar de microprocessor (of toch het simpelste een paar weerstanden) onder het aanrechtblad en een extra knop op de een of andere manier. dan kun je het heel simpel weer werkend krijgen.fjorden schreef op donderdag 10 september 2026 @ 08:38:
[...]
[...]
Als het zou passen binnen de afmetingen, zou dan zoiets gecombineerd kunnen worden: https://opencircuit.nl/product/magnetic-switch? Of denk ik te simpel.
je hebt de microprocessor optie eigenlijk alleen nodig als je ook een cube gebruikt. anders is een paar weerstanden in elkaar draaien en een schakelaar veruit het eenvoudigste. gewoon de lijntjes volgen en zorgen dat alles aan elkaar zit. gewoon proberen!
About the microcontroller approach...
I fixed my cube and had a lot more issues with the code. Mostly I had bugs in it or got timing wrong. It took me the last weeks of sitting on the floor with my laptop and a logic analyzer but now I have stable working code that does:
1. Initialisation of the data bus.
2. Respond to pulls from the reservoir
3. Modify its response for boiling / cooled / sparkling water
4. Not make the reservoir go into fault state and disable its heater
At least I did not have any thing go wrong or stop working the last couple days....
I had to change some stuff related to the initialisation of the bus as there were some errors in it which sent init packets when they should not be sent.
I also figured out why my reservoir went into "4 times flashing" error mode after two hours, this was also fixed by the corrected init code.
After unplugging and plugging the system back in the reservoir sometimes went into "2 flashes" error mode. This was due to timing issues with the init packages sent. This is now also fixed.
I added code to check digital pins of the Arduino for push buttons. This was implemented with a debounce timer per button so we do not get fast toggling between a function and IDLE if the button gets faulty or bounces. For this I had to read from the corresponding PORT directly as the digitalRead() function of Arduino is simply to slow and throws of timing of the bus handling.
This still uses the library found here.
I fixed my cube and had a lot more issues with the code. Mostly I had bugs in it or got timing wrong. It took me the last weeks of sitting on the floor with my laptop and a logic analyzer but now I have stable working code that does:
1. Initialisation of the data bus.
2. Respond to pulls from the reservoir
3. Modify its response for boiling / cooled / sparkling water
4. Not make the reservoir go into fault state and disable its heater
At least I did not have any thing go wrong or stop working the last couple days....
I had to change some stuff related to the initialisation of the bus as there were some errors in it which sent init packets when they should not be sent.
I also figured out why my reservoir went into "4 times flashing" error mode after two hours, this was also fixed by the corrected init code.
After unplugging and plugging the system back in the reservoir sometimes went into "2 flashes" error mode. This was due to timing issues with the init packages sent. This is now also fixed.
I added code to check digital pins of the Arduino for push buttons. This was implemented with a debounce timer per button so we do not get fast toggling between a function and IDLE if the button gets faulty or bounces. For this I had to read from the corresponding PORT directly as the digitalRead() function of Arduino is simply to slow and throws of timing of the bus handling.
This still uses the library found here.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
| #include "SoftHalfDuplexSerial.h"
const int BUS_PIN = 13;
softHalfDuplexSerial quookerBus(BUS_PIN);
uint8_t armaturFrame[16] = {
0x01, 0x10, 0xEF, 0x42, 0x00, 0x08, 0x00, 0x00,
0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00
};
uint8_t initFrame10[10] = {
0x01, 0x0A, 0xF5, 0x10, 0x01,
0x11, 0x05, 0x00, 0x03, 0x07
};
uint8_t initFrame40[12] = {
0x01, 0x0C, 0xF3, 0x40, 0x01,
0x11, 0x04, 0x57, 0x70, 0x00, 0x00, 0x72
};
uint8_t rxBuf[20];
uint8_t rxIdx = 0;
uint8_t calculateChecksum(uint8_t* buffer, size_t len) {
uint8_t xorSum = 0x00;
for (size_t i = 0; i < len - 1; i++) {
xorSum ^= buffer[i];
}
return xorSum ^ 0xFF;
}
char* status;
void setWaterType(const char* type) {
status = type;
armaturFrame[6] = 0x00; // Reset KOCHEND water flag
armaturFrame[7] = 0x00; // Reset GEKUEHLT / SPRUDELND flag
if (strcmp(type, "KOCHEND") == 0) {
armaturFrame[6] = 0x20; // KOCHEND water einschalten
} else if (strcmp(type, "GEKUEHLT") == 0) {
armaturFrame[7] = 0x02; // GEKUEHLT water einschalten
} else if (strcmp(type, "SPRUDELND") == 0) {
armaturFrame[7] = 0x08; // SPRUDELND water einschalten
}
// recalculate Checksum in Byte 15
armaturFrame[15] = calculateChecksum(armaturFrame, 16);
}
void sendDataWithDelay(uint8_t* data, int length)
{
// wait we're answering to fast
// on mega 2 is good with no aditional code (onyl serial to control the quooker)
// else adjust it for the code
delay(2);
quookerBus.write(data, length);
quookerBus.flush();
}
void setup()
{
//buttons
pinMode(2, INPUT);
pinMode(3, INPUT);
pinMode(4, INPUT);
Serial.begin(115200);
//while(!Serial){}
quookerBus.begin(19200);
setWaterType("IDLE");
Serial.println(F("====================================="));
Serial.println(F(" Quooker Armatur Emulator gestartet "));
Serial.println(F("====================================="));
Serial.println(F("Gebrauch Serial Monitor: 'k'=kochend, 'c'=gekuehlt, 'b'=sprudelnd, 's'=stop"));
}
byte lastState = 0;
byte lastReading = 0;
unsigned long lastTime = 0;
void loop()
{
while(quookerBus.available())
{
uint8_t byte = quookerBus.read();
if(rxIdx < sizeof(rxBuf))
{
rxBuf[rxIdx++] = byte;
}
else
{
rxIdx = 0;
}
// Filter Start-Header (0x01 0x11) and bus init header
if (rxIdx == 1 && !(rxBuf[0] == 0x01 ))
{
rxIdx = 0; continue;
}
if (rxIdx == 2 && !(rxBuf[1] == 0x11 || rxBuf[1] == 0x05))
{
rxIdx = 0; continue;
}
// Bus init detectie (xx 05 FA 10 CS)
if (rxIdx == 4 && rxBuf[rxIdx - 3] == 0x05 && rxBuf[rxIdx - 2] == 0xFA && rxBuf[rxIdx - 1] == 0x10) {
rxIdx = 0;
sendDataWithDelay(initFrame10, 10);
continue;
}
// init part 2 (xx 05 FA 40 CS)
if (rxIdx == 4 && rxBuf[rxIdx - 3] == 0x05 && rxBuf[rxIdx - 2] == 0xFA && rxBuf[rxIdx - 1] == 0x40) {
rxIdx = 0;
sendDataWithDelay(initFrame40, 12);
continue;
}
// complete Master Request (17 Bytes) from Boiler received
if (rxIdx == 17) {
rxIdx = 0;
// Reageer direct met Kraan Statusbericht (16 Bytes)
sendDataWithDelay(armaturFrame, 16);
// Flush eigen echo van de 1-wire lijn
while (quookerBus.available() > 0) quookerBus.read();
}
}
// 2. SERIËLE MONITOR BEDIENING
if (Serial.available()) {
char cmd = Serial.read();
if (cmd == 'k') { setWaterType("KOCHEND"); Serial.println(F("-> KOCHEND WATER")); }
if (cmd == 'c') { setWaterType("GEKUEHLT"); Serial.println(F("-> GEKUEHLT WATER")); }
if (cmd == 'b') { setWaterType("SPRUDELND"); Serial.println(F("-> SPRUDELND WATER")); }
if (cmd == 's') { setWaterType("IDLE"); Serial.println(F("-> RUHESTAND (IDLE)")); }
}
// via push buttons
byte a = 0;
byte porte = PINE;
byte portg = PING;
if (!(porte & _BV(PE4))) a |= 0b001; // D2
if (!(porte & _BV(PE5))) a |= 0b010; // D3
if (!(portg & _BV(PG5))) a |= 0b100; // D4
// Raw input changed -> restart debounce timer
if (a != lastReading)
{
lastReading = a;
//Serial.println("input change");
lastTime = millis();
}
// Input has remained unchanged long enough
if ((millis() - lastTime >= 100) && (lastState != lastReading))
{
lastState = lastReading;
switch (lastState)
{
case 0b001:
setWaterType("KOCHEND");
break;
case 0b010:
setWaterType("GEKUEHLT");
break;
case 0b100:
setWaterType("SPRUDELND");
break;
default:
setWaterType("IDLE");
break;
}
//Serial.println(status);
}
} |
Je hoeft toch niets op een nieuw printplaatje te ontwerpen dat past in de kraan als je de weerstanden "onder het aanrecht" houdt en alleen de schakelaar als een magneetschakelaar in de kraan verwerkt waar het printplaatje origineel zit uit dit eerder gedeelde ontwerp? Dan is het toch alleen een kwestie van een geschikte (qua formaat en werking) schakelaar vinden?JazekerXX schreef op donderdag 10 september 2026 @ 10:57:
binnen de afmetingen van de huidige kraan zal lastig worden. dan moet je een printplaatje ontwerpen met exact dezelfde afmetingen en daar alle benodigdheden ook op kwijt kunnen. [...]
gewoon de lijntjes volgen en zorgen dat alles aan elkaar zit. gewoon proberen!
Wat je verliest is de led functie en de extra druk-druk-draai beveiliging wordt een druk-draai.
Wow, you've been busy! Great work.intercook schreef op donderdag 10 september 2026 @ 11:51:
About the microcontroller approach...
I fixed my cube and had a lot more issues with the code. Mostly I had bugs in it or got timing wrong. It took me the last weeks of sitting on the floor with my laptop and a logic analyzer but now I have stable working code that does:
1. Initialisation of the data bus.
2. Respond to pulls from the reservoir
3. Modify its response for boiling / cooled / sparkling water
4. Not make the reservoir go into fault state and disable its heater
At least I did not have any thing go wrong or stop working the last couple days....
I had to change some stuff related to the initialisation of the bus as there were some errors in it which sent init packets when they should not be sent.
I also figured out why my reservoir went into "4 times flashing" error mode after two hours, this was also fixed by the corrected init code.
After unplugging and plugging the system back in the reservoir sometimes went into "2 flashes" error mode. This was due to timing issues with the init packages sent. This is now also fixed.
I added code to check digital pins of the Arduino for push buttons. This was implemented with a debounce timer per button so we do not get fast toggling between a function and IDLE if the button gets faulty or bounces. For this I had to read from the corresponding PORT directly as the digitalRead() function of Arduino is simply to slow and throws of timing of the bus handling.
This still uses the library found here.code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189#include "SoftHalfDuplexSerial.h" const int BUS_PIN = 13; softHalfDuplexSerial quookerBus(BUS_PIN); uint8_t armaturFrame[16] = { 0x01, 0x10, 0xEF, 0x42, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 }; uint8_t initFrame10[10] = { 0x01, 0x0A, 0xF5, 0x10, 0x01, 0x11, 0x05, 0x00, 0x03, 0x07 }; uint8_t initFrame40[12] = { 0x01, 0x0C, 0xF3, 0x40, 0x01, 0x11, 0x04, 0x57, 0x70, 0x00, 0x00, 0x72 }; uint8_t rxBuf[20]; uint8_t rxIdx = 0; uint8_t calculateChecksum(uint8_t* buffer, size_t len) { uint8_t xorSum = 0x00; for (size_t i = 0; i < len - 1; i++) { xorSum ^= buffer[i]; } return xorSum ^ 0xFF; } char* status; void setWaterType(const char* type) { status = type; armaturFrame[6] = 0x00; // Reset KOCHEND water flag armaturFrame[7] = 0x00; // Reset GEKUEHLT / SPRUDELND flag if (strcmp(type, "KOCHEND") == 0) { armaturFrame[6] = 0x20; // KOCHEND water einschalten } else if (strcmp(type, "GEKUEHLT") == 0) { armaturFrame[7] = 0x02; // GEKUEHLT water einschalten } else if (strcmp(type, "SPRUDELND") == 0) { armaturFrame[7] = 0x08; // SPRUDELND water einschalten } // recalculate Checksum in Byte 15 armaturFrame[15] = calculateChecksum(armaturFrame, 16); } void sendDataWithDelay(uint8_t* data, int length) { // wait we're answering to fast // on mega 2 is good with no aditional code (onyl serial to control the quooker) // else adjust it for the code delay(2); quookerBus.write(data, length); quookerBus.flush(); } void setup() { //buttons pinMode(2, INPUT); pinMode(3, INPUT); pinMode(4, INPUT); Serial.begin(115200); //while(!Serial){} quookerBus.begin(19200); setWaterType("IDLE"); Serial.println(F("=====================================")); Serial.println(F(" Quooker Armatur Emulator gestartet ")); Serial.println(F("=====================================")); Serial.println(F("Gebrauch Serial Monitor: 'k'=kochend, 'c'=gekuehlt, 'b'=sprudelnd, 's'=stop")); } byte lastState = 0; byte lastReading = 0; unsigned long lastTime = 0; void loop() { while(quookerBus.available()) { uint8_t byte = quookerBus.read(); if(rxIdx < sizeof(rxBuf)) { rxBuf[rxIdx++] = byte; } else { rxIdx = 0; } // Filter Start-Header (0x01 0x11) and bus init header if (rxIdx == 1 && !(rxBuf[0] == 0x01 )) { rxIdx = 0; continue; } if (rxIdx == 2 && !(rxBuf[1] == 0x11 || rxBuf[1] == 0x05)) { rxIdx = 0; continue; } // Bus init detectie (xx 05 FA 10 CS) if (rxIdx == 4 && rxBuf[rxIdx - 3] == 0x05 && rxBuf[rxIdx - 2] == 0xFA && rxBuf[rxIdx - 1] == 0x10) { rxIdx = 0; sendDataWithDelay(initFrame10, 10); continue; } // init part 2 (xx 05 FA 40 CS) if (rxIdx == 4 && rxBuf[rxIdx - 3] == 0x05 && rxBuf[rxIdx - 2] == 0xFA && rxBuf[rxIdx - 1] == 0x40) { rxIdx = 0; sendDataWithDelay(initFrame40, 12); continue; } // complete Master Request (17 Bytes) from Boiler received if (rxIdx == 17) { rxIdx = 0; // Reageer direct met Kraan Statusbericht (16 Bytes) sendDataWithDelay(armaturFrame, 16); // Flush eigen echo van de 1-wire lijn while (quookerBus.available() > 0) quookerBus.read(); } } // 2. SERIËLE MONITOR BEDIENING if (Serial.available()) { char cmd = Serial.read(); if (cmd == 'k') { setWaterType("KOCHEND"); Serial.println(F("-> KOCHEND WATER")); } if (cmd == 'c') { setWaterType("GEKUEHLT"); Serial.println(F("-> GEKUEHLT WATER")); } if (cmd == 'b') { setWaterType("SPRUDELND"); Serial.println(F("-> SPRUDELND WATER")); } if (cmd == 's') { setWaterType("IDLE"); Serial.println(F("-> RUHESTAND (IDLE)")); } } // via push buttons byte a = 0; byte porte = PINE; byte portg = PING; if (!(porte & _BV(PE4))) a |= 0b001; // D2 if (!(porte & _BV(PE5))) a |= 0b010; // D3 if (!(portg & _BV(PG5))) a |= 0b100; // D4 // Raw input changed -> restart debounce timer if (a != lastReading) { lastReading = a; //Serial.println("input change"); lastTime = millis(); } // Input has remained unchanged long enough if ((millis() - lastTime >= 100) && (lastState != lastReading)) { lastState = lastReading; switch (lastState) { case 0b001: setWaterType("KOCHEND"); break; case 0b010: setWaterType("GEKUEHLT"); break; case 0b100: setWaterType("SPRUDELND"); break; default: setWaterType("IDLE"); break; } //Serial.println(status); } }
Thanks for sharing the updated code!
je had het over integreren hè.....fjorden schreef op donderdag 10 september 2026 @ 12:31:
[...]
Je hoeft toch niets op een nieuw printplaatje te ontwerpen dat past in de kraan als je de weerstanden "onder het aanrecht" houdt
maar later zei ik precies wat je hier voorstelt....
kort verhaal: alles kan als je een beetje handig en technisch bent.
de reed contacten zitten al in de kraan, dus die kun je hergebruiken.
Ah, sorry, dat had ik onduidelijk geformuleerd. Ik bedoelde de schakelaar in de kraan (zodat er niets zichtbaar extra op het keukenblad is) en de extra weerstanden eventueel onder de kap van de boiler wegwerken/integreren.JazekerXX schreef op donderdag 10 september 2026 @ 14:34:
[...]
je had het over integreren hè.....
maar later zei ik precies wat je hier voorstelt....
kort verhaal: alles kan als je een beetje handig en technisch bent.
de reed contacten zitten al in de kraan, dus die kun je hergebruiken.
De reed contacten die in de kraan zitten, dat is toch alleen bij de oudere versie zo, bij de nieuwere met chipmodule, zoals bij mij, kan ik die chipmodule toch niet hergebruiken? Ik meet in ieder geval geen verandering in weerstand tussen de verschillende standen: in rust, druk, draai. Of zie ik iets over het hoofd?
er zit toch een magneet in de kraan?... die werkt dus met een reedcontact of misschien een halleffect sensor. je kan dat onderdeel gebruiken door het van de originele printplaat af te halen of een eigen onderdeel gebruiken. het is allemaal mogelijk als je handig genoeg bent.fjorden schreef op vrijdag 11 september 2026 @ 10:48:
[...]
Ah, sorry, dat had ik onduidelijk geformuleerd. Ik bedoelde de schakelaar in de kraan (zodat er niets zichtbaar extra op het keukenblad is) en de extra weerstanden eventueel onder de kap van de boiler wegwerken/integreren.
De reed contacten die in de kraan zitten, dat is toch alleen bij de oudere versie zo, bij de nieuwere met chipmodule, zoals bij mij, kan ik die chipmodule toch niet hergebruiken? Ik meet in ieder geval geen verandering in weerstand tussen de verschillende standen: in rust, druk, draai. Of zie ik iets over het hoofd?
Ik heb dit topic teruggelezen en heb een voor velen herkenbaar probleem. Ik krijg even niet teruggelezen wat nu raadzaam is.
We hebben een Quooker flex met combi reservoir, 9 jaar oud. Sinds enige tijd knipperde de led op zowel reservoir als de kraan zelf 2x. Dit konden we verhelpen door 'm eens uit en aan te zetten, en het kabeltje te wisselen van ingang. Inmiddels is er geen led meer zichtbaar op de kraan, knippert het reservoir 2x en doet de kraan niets meer. We krijgen vanuit Quooker de volgende reactie:
Bedankt voor jullie advies!
We hebben een Quooker flex met combi reservoir, 9 jaar oud. Sinds enige tijd knipperde de led op zowel reservoir als de kraan zelf 2x. Dit konden we verhelpen door 'm eens uit en aan te zetten, en het kabeltje te wisselen van ingang. Inmiddels is er geen led meer zichtbaar op de kraan, knippert het reservoir 2x en doet de kraan niets meer. We krijgen vanuit Quooker de volgende reactie:
We hebben de kraan op de direct zichtbare plekken schoongemaakt, maar bijv. niet onder de ring. Wat is nu wijsheid om te doen? Ingaan op het voorstel? Of zelf openmaken en eventuele onderdelen schoonmaken en/of vervangen?Een 2x knipperstoring wordt mogelijk veroorzaakt door zeep- of vuilophopingen in de kraan. Wij wijzen u dan ook graag op onze schoonmaakadviezen om toekomstige problemen in de werking van de kraan te voorkomen:
https://www.quooker.nl/schoonmaakinstructies
Indien al deze stappen het euvel niet verhelpen, zal de chipmodule in de kraan vervangen moeten worden door één van onze monteurs.
Dit artikel kost €30 (incl. btw) en indien nodig de kartelknop €35,= de servicekosten (voorrij- en arbeidskosten) bedragen €110 (incl. btw). Indien u gebruik wenst te maken van dit aanbod vernemen wij dat graag per e-mail. Bovenstaand aanbod is 30 dagen geldig.
Bedankt voor jullie advies!
ik zou toch nog even wat meer terug lezen... en de magneet truuk eens proberen...Wacosta schreef op vrijdag 23 oktober 2026 @ 17:30:
Ik heb dit topic teruggelezen en heb een voor velen herkenbaar probleem. Ik krijg even niet teruggelezen wat nu raadzaam is.
We hebben een Quooker flex met combi reservoir, 9 jaar oud. Sinds enige tijd knipperde de led op zowel reservoir als de kraan zelf 2x. Dit konden we verhelpen door 'm eens uit en aan te zetten, en het kabeltje te wisselen van ingang. Inmiddels is er geen led meer zichtbaar op de kraan, knippert het reservoir 2x en doet de kraan niets meer. We krijgen vanuit Quooker de volgende reactie:
[...]
We hebben de kraan op de direct zichtbare plekken schoongemaakt, maar bijv. niet onder de ring. Wat is nu wijsheid om te doen? Ingaan op het voorstel? Of zelf openmaken en eventuele onderdelen schoonmaken en/of vervangen?
Bedankt voor jullie advies!
:strip_exif()/f/image/xyR5XvQxGxUpxfrbsV0WaUxu.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/stzamttNnCs1N1kKDso3y7go.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/bT0vzJMbPzIvrGMKSTG7P9Py.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/O6ck6QLxidSle6qe8L56wXDq.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/59AtJPmYnWhM9niBQoU9T7JO.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/eKR13l8kcsNWWjybo1B5Cnn8.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/ZzfQvjw3qgdCrUOTjD9EAwAe.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/7ZaNGqHAunJhAUMRCREZk83M.jpg?f=fotoalbum_large)
:strip_exif()/f/image/WO5z6k7irJmHm81L7W6cS6yR.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/RiLYrXHeNrXarv4Cq88MlBRK.jpg?f=fotoalbum_tile)
:strip_exif()/f/image/0PryNIaPn32f8LTHyu66Z7Bq.jpg?f=fotoalbum_large)