HowTo: Node Red – Bedien de FritzBox radiatorthermostaat vanuit Node Red

Onlangs heb ik uit nieuwsgierigheid een DECT-thermostaat voor de FritzBox besteld.

Zoals gebruikelijk met Fritz-producten was de installatie en ingebruikname super eenvoudig. Het installeren en instellen duurde minder dan tien minuten.

In de app en de FritzBox-interface kunnen allerlei opties worden ingesteld. Onder andere vaste tijden waarop de radiator moet worden ingeschakeld. Helaas is deze optie voor mij niet erg praktisch. Waar ik het in het verleden altijd heel goed mee heb gedaan, is de verwarming aanzetten als het buiten koud is (bijvoorbeeld kouder dan 15°C) en de tv in de woonkamer aan staat (als een soort aanwezigheidsdetectie).

Ik wilde dit "dynamische" schakelgedrag weer terug. In het verleden deed ik dit met een paar knooppunten in NodeRed. Gelukkig is er ook een geschikte node voor het aansturen van de Fritz-verwarmingsthermostaten. Je hoeft het alleen maar dienovereenkomstig te configureren.

In dit artikel vind je een voorbeeldschema voor het aansturen van een Fritz DECT radiatorthermostaat.


Veiligheidsinstructies

Ik weet dat de volgende opmerkingen altijd een beetje vervelend zijn en onnodig lijken. Helaas hebben veel mensen die "beter" wisten door onvoorzichtigheid ogen, vingers of andere dingen verloren of zichzelf verwond. Gegevensverlies is in vergelijking bijna te verwaarlozen, maar zelfs dit kan erg vervelend zijn. Neem daarom vijf minuten de tijd om de veiligheidsinstructies te lezen. Omdat zelfs het coolste project geen blessure of andere problemen waard is.
https://www.nerdiy.de/sicherheitshinweise/

Affiliate links / reclame links

De hier vermelde links naar online winkels zijn zogenaamde affiliate-links. Als u op zo'n affiliate-link klikt en via deze link een aankoop doet, ontvangt Nerdiy.de een commissie van de betreffende onlineshop of aanbieder. De prijs verandert voor jou niet. Als u via deze links uw aankopen doet, steunt u Nerdiy.de om in de toekomst andere nuttige projecten aan te kunnen bieden. 🙂 


Eisen

Handige artikelen:
Om nieuwe nodes te kunnen installeren, moet NodeRed natuurlijk al geïnstalleerd zijn.
Hoe je een RaspberryPi voorbereidt en vervolgens NodeRed erop installeert, wordt beschreven in de volgende artikelen.

In de volgende drie artikelen wordt beschreven wat er moet gebeuren om de RaspberryPi voor te bereiden:
RaspberryPi – setup voor nerds!
RaspberryPi – De eerste configuratie!
RaspberryPi – Bedien de RaspberryPi via SSH

NodeRed – NodeRed installeren op de RaspberryPi
NodeRed - importeer en exporteer knooppuntcode

Vereist gereedschap:
-Nee-

Benodigd materiaal:

In de volgende lijst vindt u alle onderdelen die u nodig heeft om dit artikel te implementeren.


Log in op de configuratie-interface van NodeRed

Voordat u uw NodeRed-configuratie kunt bewerken, moet u - indien geactiveerd - eerst inloggen op de NodeRed-configuratie-interface.

Weergave van het aanmeldingsvenster. Hier moet u de inloggegevens invoeren die u tijdens de configuratie van de login hebt opgegeven. Informatie hierover vind je in het artikel NodeRed - gebruikersaanmelding instellen.

Installeer het juiste FritzBox-knooppunt

Om NodeRed te laten communiceren met de aangesloten radiatorthermostaten, moet je de node "node-red-contrib-fritzapi" installeren. Hoe je nodes installeert staat beschreven in het artikel NodeRed – Installeer nieuwe knooppunten beschreven.


NodeCode voor het aansturen van een Fritz DECT radiatorthermostaat

De huidige staat van de knooppuntcode is mijn eerste ontwerp van een besturingssysteem. Ik zal er zeker aan blijven werken. Vraag dus gerust om updates als deze post al lang niet meer is bijgewerkt.

In de huidige versie kun je de gemeten temperatuur bij de radiator en het instelpunt of de doeltemperatuur weergeven. Daarnaast kan natuurlijk de gewenste temperatuur worden ingesteld.

Last but not least wordt de ladingstoestand van de accu's ook weergegeven in de radiatorthermostaat. Ik neem aan dat dit als percentage wordt weergegeven. Maar omdat het laadniveau momenteel 100 is en heel langzaam daalt, moet ik nog observeren hoe deze waarde zich ontwikkelt terwijl hij daalt.

Wat ik al heb geïnstalleerd maar nog niet heb kunnen activeren is de boostfunctie. Deze functie kan worden geactiveerd op de thermostaat zelf door twee seconden op de menuknop te drukken. Hierdoor wordt de radiator voor een korte periode volledig verwarmd. Het zou natuurlijk praktisch zijn als dit ook vanaf NodeRed zou kunnen worden geactiveerd om een kamer snel automatisch op te warmen.

Hieronder vindt u enkele weergaven van de configuratie en de daadwerkelijke NodeCode.

Weergave van de stroom in de configuratieweergave van NodeRed.

Weergave van de bedieningselementen in de dashboardweergave.

Hoe je de NodeCode hieronder importeert, staat beschreven in het artikel NodeRed - importeer en exporteer knooppuntcode beschreven.

Zoals altijd kun je de NodeCode vinden in de Nerdiy Git-repository onder de volgende link:


Veel plezier met het project

Ik hoop dat alles werkte zoals beschreven. Zo niet, of als je vragen of suggesties hebt, laat het me weten in de commentaren. Ik zal dit dan zo nodig aan het artikel toevoegen.
Ideeën voor nieuwe projecten zijn altijd welkom. 🙂

PS Veel van deze projecten - vooral de hardwareprojecten - kosten veel tijd en geld. Natuurlijk doe ik dit omdat ik het leuk vind, maar als je het cool vindt dat ik de informatie met je deel, dan zou ik blij zijn met een kleine donatie aan het koffiefonds. 🙂

Koop Me a Coffee op ko-fi.com       

18 comments

  1. Hallo, je kunt de boost-functie als volgt aanpakken.

    [{“id”:”1faf9813.1db958″,”type”:”fritzbox-in”,”z”:”c47fd6d2.77c058″,”device”:”fae20a49.af3108″,"naam":"","service":"urn:dslforum-org:service:DeviceConfig:1″,"action":"X_AVM-DE_CreateUrlSID","arguments":"{}","x":490,"y":2440,"wires":["b31af515.e51bd8"]]},{"id":"f8af624a.17eda", "type":"inject", "z":"c47fd6d2.77c058","name":"boost","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false, "onceDelay":"3″,"topic":"boost","payload":"","payloadType":"date","x":130,"y":2480,"wires":["64d9a853.09dca8”]]},{“id”:”864f66c3.198ed8″,”type”:”debug”,”z”:”c47fd6d2.77c058″,"name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1250,"y":2660,"wires":[]},{"id":"e82c0e1.b773af","type":"template","z":"c47fd6d2.77c058″,"name":"gettemp","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=gettemperature&sid={{payload.NewX_AVM-DE_UrlSID}}","output":"str","x":800,"y":2580,"wires":["4abfff85.997b8"]]},{"id":"4abfff85.997b8″,"type":"http request","z":"c47fd6d2.77c058″,"name":"","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://fritz.box:443{{payload}}","tls":"402169f3.8da818″,”persist”:false,”proxy”:””,”authType”:””,”x”:1050,”y”:2660,”wires”:[[“864f66c3.198ed8”]]},{“id”:”75765e63.210fb","type":"change","z":"c47fd6d2.77c058″,"name":"set ain","rules":[{"t":"set","p":"ain","pt":"msg","to":"099950642052″,"tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":850,"y":2440,"wires":["4ca0ace7.858544"]]},{"id":"4ca0ace7.858544″,"type":"function","z":"c47fd6d2.77c058″,"name":"now() + 5min","func":"//node.warn(Date.now());\nmsg.endtime = afronding(Date.now() / 1000 + 60 * 5, 0)\return msg;\nfunctie afronding(num, decimalPlaces = 0) {\n num = Math.round(num + decimalPlaces);\n return Number(num + decimalPlaces);\n}","outputs":1,"noerr":0,"initialise":"","finalize":"","x":450,"y":2680,"wires":["2e6db71e.28fe78"]]},{"id":"b31af515.e51bd8″,"type":"change","z":"c47fd6d2.77c058″,"name":"clean SID","rules":[{"t":"change","p":"payload.NewX_AVM-DE_UrlSID","pt":"msg","from":"sid=","fromt":"str","to":"","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":700,"y":2440,"wires":["75765e63.210fb"]]},{"id":"34097198.32a5ae","type":"template","z":"c47fd6d2.77c058″,"name":"Boost an","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=sethkrboost&sid={{payload.NewX_AVM-DE_UrlSID}}&endtimestamp={{endtime}}", "output": "str", "x":800, "y":2620, "wires":[["4abfff85.997b8”]]},{“id”:”a0bfa44f.b806e8″,”type”:”template”,”z”:”c47fd6d2.77c058″,"name":"Boost off","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=sethkrboost&sid={{payload.NewX_AVM-DE_UrlSID}}&endtimestamp=0″, "output":"str", "x":800, "y":2660, "wires":["4abfff85.997b8"]]},{"id":"2e6db71e.28fe78″, "type":"switch", "z":"c47fd6d2.77c058″,"name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"temp","vt":"str"},{"t":"eq","v":"boost","vt":"str"},{"t":"eq","v":"noboost","vt":"str"},{"t":"eq","v":"window","vt":"str"},{"t":"eq","v":"nowindow","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":610,"y":2680,"wires":["e82c0e1.b773af”],[“34097198.32a5ae”],[“a0bfa44f.b806e8”],[“7d4888cf.55f988”],[“4c9b3c7b.984124”]]},{“id”:”27537213.66face”,”type”:”inject”,”z”:”c47fd6d2.77c058″,"name":"noboost","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false, "onceDelay":"3″,"topic":"noboost","payload":"","payloadType":"date","x":140,"y":2520,"wires":["e0f67d6.2def88”]]},{“id”:”56ba18bf.b2f828″, "type":"injecteren", "z":"c47fd6d2.77c058″,"name":"get temp","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false, "onceDelay":"3″,"topic":"temp","payload":"","payloadType":"date","x":140,"y":2440,"wires":["7e0e1632.c31dd8”]]},{“id”:”4c9b3c7b.984124,"type":"template","z":"c47fd6d2.77c058″,"name":"Window closed","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=sethkrwindowopen&sid={{payload.NewX_AVM-DE_UrlSID}}&endtimestamp=0″, "output":"str","x":810,"y":2740,"wires":["4abfff85.997b8"]]},{"id":"7d4888cf.55f988″,"type":"template","z":"c47fd6d2.77c058″,"name":"Window open","field":"payload","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=sethkrwindowopen&sid={{payload.NewX_AVM-DE_UrlSID}}&endtimestamp={{endtime}}", "output": "str", "x":810, "y":2700, "wires":[["4abfff85.997b8"]]},{"id": "5560a2ca.10bc6c", "type":"injecteren", "z":"c47fd6d2.77c058","name":"window","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false, "onceDelay":"3″,"topic":"window","payload":"","payloadType":"date","x":130,"y":2560,"wires":["cda59701.f28878”]]},{“id”:”18250461.024fbc", "type":"injecteren", "z":"c47fd6d2.77c058″, "name":"window closed", "props":[{"p":"payload"},{"p":"topic", "vt":"str"}],"repeat":"","crontab":"","once":false, "onceDelay":"3″,"topic":"nowindow","payload":"","payloadType":"date","x":140,"y":2600,"wires":["804b42ac.172b3”]]},{“id”:”cda59701.f28878″,”type”:”ui_button”,”z”:”c47fd6d2.77c058″,”name”:””,”group”:”5a2c927c.ba1edc","order":5,"width":0,"height":0,"passthru":true,"label":"window open","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"window","topicType":"str","x":320,"y":2560,"wires":["1faf9813.1db958”]]},{“id”:”804b42ac.172b3″, "type":"ui_button", "z":"c47fd6d2.77c058″, "name":"", "group":"5a2c927c.ba1edc","order":6,"width":0,"height":0,"passthru":true,"label":"venster gesloten","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"nowindow","topicType":"str","x":320,"y":2600,"wires":["1faf9813.1db958”]]},{“id”:”64d9a853.09dca8″,”type”:”ui_button”,”z”:”c47fd6d2.77c058″,”name”:””,”group”:”5a2c927c.ba1edc","order":2,"width":0,"height":0,"passthru":true,"label":"boost 5m","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"boost","topicType":"str","x":300,"y":2480,"wires":["1faf9813.1db958”]]},{“id”:”e0f67d6.2def88″,”type”:”ui_button”,”z”:”c47fd6d2.77c058","naam":"","groep":"5a2c927c.ba1edc","order":3,"width":0,"height":0,"passthru":true,"label":"boost off","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"noboost","topicType":"str","x":300,"y":2520,"wires":["1faf9813.1db958”]]},{“id”:”7e0e1632.c31dd8″,”type”:”ui_button”,”z”:”c47fd6d2.77c058″,”name”:””,”group”:”5a2c927c.ba1edc","order":2,"width":0,"height":0,"passthru":true,"label":"get temp","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"date","topic":"temp","topicType":"str","x":300,"y":2440,"wires":["1faf9813.1db958"]]},{"id":"fae20a49.af3108″,"type":"fritzbox-config","name":"fritz","host":"fritz.box", "port": "49443″, "ssl":true, "user": "user"},{"id":"402169f3.8da818″,"type":"tls-config","name":"","cert":"","key":"","ca":"","certname":"","keyname":"","caname":"","servername":"","verifyservercert":false},{"id":"5a2c927c.ba1edc","type":"ui_group","name":"test","tab":"42b914b0.66a0ac","order":null,"disp":true,"width":"6″,"collapse":false},{"id":"42b914b0.66a0ac","type":"ui_tab","name":"Main","icon":"dashboard","order":1,"disabled":false,"hidden":false}]

  2. Hallo, geweldig voorbeeld! Ik heb al veel kunnen implementeren met mijn Fritz apparaten. Maar ik krijg de Fritz Dect 500 lamp niet aan de praat. Ik kan wel de status uitlezen, maar ik kan niet schakelen of de kleur veranderen. Ik heb al van alles doorzocht maar heb geen voorbeelden gevonden voor de Fritz Dect 500. Hebt u een voorbeeldstroom, bijvoorbeeld hoe het knooppunt "Eenvoudig aan/uit" wordt gebruikt?

    Groetjes, Mathias

    1. Hallo, Mathias,
      helaas heb ik de DECT500 nog niet getest. Maar ik heb hem net besteld en ik zal eens kijken. Dat zou eigenlijk ook moeten kunnen. 🙂
      Hartelijke groeten
      Fabian

  3. Hallo Fab,
    Bedankt voor je geweldige voorbeelden.
    Ik heb jouw voorbeeld voor de Fritz radiatorkraan bij mij geprobeerd. Het werkt zo ver dat ik de werkelijke en doeltemperaturen op het dashboard kan zien. Pas als ik in het dashboard een nieuwe doeltemperatuur selecteer, schakelt het display heel snel terug naar de oorspronkelijke temperatuur die in de Fritzbox was ingesteld. Het schrijven van de streeftemperatuur lijkt niet te werken.
    Heb je een tip voor mij? Helaas ben ik nog een beginner met Nodered..
    Bedankt en vriendelijke groeten
    Jaochim

    1. Hallo Joachim,
      hmm eerlijk gezegd kan ik het niet uitleggen. Ik heb het zojuist op de mijne geprobeerd en daar lijkt het te werken.
      Kunt u grofweg inschatten na hoeveel tijd de streefwaarde gereset zal worden? Zou dat ongeveer 5 seconden kunnen zijn?
      Hartelijke groeten
      Fabian

  4. Hallo Fabian
    Ik ben erg enthousiast over je projecten en uitleg.....
    Helaas ben ik een absolute beginner op dit gebied en zoek ik een manier om de vochtigheid en de 4-knopssignalen in Node Red uit de Fritz Dect 440 te halen.

    Mfg snoer

    1. hallo kabel,
      helaas heb ik de DECT 440 niet beschikbaar, dus ik heb nog niet kunnen proberen de code ervoor te maken. Zodra ik het in handen heb zal ik het hier ook posten. 🙂
      Hartelijke groeten
      Fabian

  5. Hoi,

    Ik heb ook problemen met het gebruik van de "Fritz-knooppunten" en misschien kan ik hier een tip krijgen. De hulp voor het knooppunt "thermostaat" is bijvoorbeeld nogal slecht. Er wordt bijvoorbeeld niet ingegaan op wat wel 20 selectiemogelijkheden lijken te zijn in het vervolgkeuzemenu voor acties. Het is daarom volstrekt onduidelijk hoe bijvoorbeeld de detectie van open ramen wordt geregeld. Wat verwacht dit knooppunt van de invoer? In dit specifieke geval van raamdetectie, een "true"/"false", "TRUE"/"FALSE", "on"/"off", "ON"/"OFF" of zelfs gewoon "1"/"0"? In het geval van vensterdetectie klinkt het in de documentatie alsof je zelfs de time-out als tweede parameter kunt opgeven. Als dat het geval is. Hoe werkt dat dan?
    Over de temperatuurinstelling zelf zou ik nog meer vragen hebben, maar aangezien deze instelling via FritzBox en DECT natuurlijk extreem traag is, heb ik de neiging om alleen de raamdetectie voor mijn bestaande Fritz-thermostaten te automatiseren (via extern Zigbee-raamcontact).
    Ik heb hier niet per se een lange roman nodig over hoe iets werkt. Een link naar een actuele, werkende documentatie zou nuttig zijn. Ofwel ben ik te dom om het te vinden, ofwel bestaat het gewoon niet.

    Groetjes, Frank

  6. Ok, het gaf me geen rust.
    Als je de actie 'Stel "Venster open" modus in voor het opgegeven aantal minuten' selecteert, moet je een getal voor de thermostaat timeout invoeren als payload. Bijvoorbeeld "5" voor 5 minuten.
    Moge het degenen helpen die de beschrijving van het knooppunt niet meteen begrijpen en hier vinden wat ze zoeken. 🙂

    Groetjes, Frank

    1. Hé Frank,
      bedankt voor de wenk. Ik ken het gevoel (dat er geen rust is). 😀
      En ook de overdracht van de instellingen met de FritzBox vind ik een beetje traag. Een van de redenen waarom ik ben overgestapt op Zigbee. Maar ik kan me ook goed voorstellen om terug te gaan naar de FritzBox. Ik ben benieuwd naar hun Matter-implementatie. 🙂
      Nogmaals bedankt en vriendelijke groeten
      Fabian

  7. Hallo,

    Een korte vraag over "Raam open": wordt de nieuwe temperatuur dan onmiddellijk doorgegeven aan de thermostaat of is er een tijdvertraging? Tot nu toe zijn de waarden alleen met een vertraging doorgegeven aan de thermostaat.

    Hartelijke groeten

    de kleine

    1. Hallo Matthew,
      Helaas denk ik dat er om technische redenen een kleine vertraging is. Voor zover ik weet kan de FritzBox maar een bepaalde tijd per tijdslot data over het DECT-systeem versturen. Afhankelijk van hoeveel dataverkeer er op dat moment plaatsvindt, kunnen de berichten dan met een kleine vertraging aankomen.
      (Maar dat is ook een beetje gevaarlijke halve kennis. :/) Ik zou daar nog eens moeten inlezen.
      Deze vertragingen (en de prijzen voor de Fritz-actuatoren) waren ook een van de redenen waarom ik voor de andere thermostaten ben overgestapt op het Zigbee-systeem. 🙂
      Hartelijke groeten
      Fabian

      1. Goedemorgen Fabien,

        Naar welke thermostaten met Zigbee ben je overgestapt?
        Bedien je ze dan ook via NodeRed?
        De prijzen die ik ervoor heb gevonden zijn momenteel niet betaalbaar 🙁

        Ik zou daar erg in geïnteresseerd zijn en zou het geleidelijk ombouwen als de prijs goed was!

        Hartelijke groeten

        Mathias

        1. Hallo, Mathias,
          Ja dat klopt, dat viel mij laatst ook op. Begin vorig jaar was ik al overgestapt op deze thermostaten: https://www.zigbee2mqtt.io/devices/SPZB0001.html#eurotronic-spzb0001
          In die tijd kostten ze zo'n 20 euro per thermostaat. Dankzij Zigbee2mqtt kunnen de thermostaten vervolgens via MQTT worden geconfigureerd en aangestuurd. De nieuwe waarden worden dan direct overgenomen. Ik vind het hele Zigbee-systeem nu echt leuk omdat het gewoon werkt. Ook heb ik geen bereikproblemen, want permanent gevoede Zigbee-deelnemers fungeren automatisch als repeaters.
          Hartelijke groeten
          Fabian

  8. De besturing werkt tot nu toe. Temperaturen worden alleen geaccepteerd met een vertraging door Fritz, maar dit was al bekend en is ook het geval bij bediening via de Fitzz interface.
    Helaas wordt de boost-functie uitgevoerd met een fout. Enig idee waarom dit zou kunnen?

    Uitgang bij boost:
    {"error":null,"response":{"statusCode":500,"body":"","headers":{"cache-control":"no-cache","connection":"close","content-length":"0″,"content-type":"text/plain; charset=utf-8″,"expires":"-1″,"pragma":"no-cache","x-frame-options":"SAMEORIGIN","x-xss-protection":"1; mode=block","x-content-type-options":"nosniff","content-security-policy":"default-src 'none'; connect-src 'self'; font-src 'self'; frame-src https://service.avm.de https://fritzhelp.avm.de/help/ https://help.avm.de https://www.avm.de https://avm.de https://assets.avm.de https://clickonce.avm.de http://clickonce.avm.de http://download.avm.de https://download.avm.de "zelf"; img-src "zelf https://tv.avm.de https://help.avm.de/images/ http://help.avm.de/images/ data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; media-src 'self'"},"request":{"uri":{"protocol":"http:","slashes":true,"auth":null,"host":"192.168.178.1″,”port”:80,”hostname”:”192.168.178.1″,”hash”:null,”search”:”?0=0&si…

  9. Hallo,
    Weet iemand hier waarom node-red-contrib-fritzapi de dect 302 thermostaat niet kan aanspreken?
    Er verschijnt altijd een foutmelding: onbekend apparaat: xxxxxxxxxxxxxxxxxxx
    {"Geldige apparaten":{"Thermostaatkeuken": "xxxxxxxxxxxxxxx"}}
    Groeten Friedrich

Kommentar hinterlassen

Het e-mailadres wordt niet gepubliceerd. Erforderliche Felder sind mit * markiert

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.