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. Het enige wat je hoeft te doen, is het dienovereenkomstig 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.
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.
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. 🙂
Hallo, je kunt de boost-functie als volgt aanpakken.
[{"id":"1faf9813.1db958","type":"fritzbox-in","z":"c47fd6d2.77c058","device":"fae20a49.af3108","name":""," " service":"urn:dslforum-org:service:DeviceConfig:1","action":"X_AVM-DE_CreateUrlSID","arguments":"{}","x":490,"y":2440," draden ":[["b31af515.e51bd8"]]},{"id":"f8af624a.17eda","type":"injecteren","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":"stuur","syntax":"snor","template":"/webservices/homeautoswitch.lua?ain={ { ain}}&switchcmd=gettemperature&sid={{pa yload.NewX_AVM-DE_UrlSID}}","output":"str","x":800,"y":2580,"wires":[["4abfff85.997b8"]]},{"id":" 4abfff85.997b8″,"type":"http-verzoek","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 = rounding(Date. nu() / 1000 + 60 * 5, 0)\nretour bericht;\n\nfunctie afronding(getal, decimalePlaatsen = 0) {\n num = Math.rond(getal + \"e\" + decimalePlaatsen);\n return Number(num + \"e\" + -decimalPlaces);\n}","outputs":1,"noerr":0,"initialize":"","" finalize":"","x":450,"y":2680,"wires":[["2e6db71e.28fe78"]]},{"id":"b31af515.e51bd8","type":"wijzigen ","z":"c47fd6d2.77c058","name":"schone SID","regels":[{"t":"wijzigen","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":"stuur","syntax":"snor","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":"stuur","syntax":"snor","template":"/webservices/homeautoswitch.lua?ain={{ain}}&switchcmd=sethkrboost&sid={{payload.NewX_AVM-DE_UrlSID}}&end tijdstempel=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":"injecteren","z":"c47fd6d2.77c058","name":"noboost","props":[{"p ":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay": "3″,"topic":"noboost","payload":"","payloadType":"datum","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,"onc eDelay":"3","topic":"temp","payload":"","payloadType":"datum","x":140,"y":2440,"wires":[["7e0e1632 .c31dd8"]]},{"id":"4c9b3c7b.984124″,"type":"template","z":"c47fd6d2.77c058","name":"window to","field":" payload","fieldType":"msg","format":"stuur","syntax":"snor","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":"venster open","field":"payload","fieldType":" msg","format":"stuur","syntax":"snor","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":fa lse,"onceDelay":"3","topic":"window","payload":"","payloadType":"datum","x":130,"y":2560,"wires":[ ["cda59701.f28878"]]},{"id":"18250461.024fbc","type":"injecteren","z":"c47fd6d2.77c058″,"name":"venster naar","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":"venster open","tooltip":"","color":" ","bgcolor":"","icon":"","payload":"","payloadType":"datum","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":"window gesloten","tooltip":"","color":"","bgcolor":"","icon":"","payload":"","payloadType":"datum","onderwerp": "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","name":"","group":"5a2c927c.ba1edc", "order":3,"width":0,"height":0,"passthru":true,"label":"boost off","tooltip":"","color":"","bgcolor" :"","icon":"","payload":"","payloadType":"datum","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":"datum","topic":"tijdelijk ","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} ]
Hallo Dietrich,
Bedankt voor de tip. 🙂 Ik zal dat toevoegen aan het artikel.
Hartelijke groeten
Fabian
Hallo, goed voorbeeld! Ik heb veel kunnen doen met mijn Fritz-apparaten. Maar ik krijg de Fritz Dect 500 lamp niet aan de praat. Kan de status lezen, maar kan niet schakelen of van kleur veranderen. Heb al alles afgezocht maar geen voorbeelden gevonden van FritzDect500. Heb je een voorbeeldstroom, zoals het gebruik van de eenvoudige aan/uit-node?
Groetjes, Mathias
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
Hallo Mathias,
Ik heb nu ook een voorbeeldstroom gemaakt voor de FRITZ!DECT 500 Smart Home-lamp. Alle informatie vind je hier: https://nerdiy.de/howto-nodered-fritzdect-500-rgb-lampe-mithilfe-von-nodered-und-fritzbox-steuern/
Ik hoop dat alles werkt en ik kijk uit naar feedback. 🙂
Hartelijke groeten
Fabian
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
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
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
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
Hoi,
Ik heb ook mijn problemen met het gebruik van de "Fritz nodes" en kan hier misschien een tip krijgen. De hulp Z. Het knooppunt "thermostaat" is bijvoorbeeld op zich vrij slecht. Dus gaat ze b.v. Bijvoorbeeld niet op wat voelt als 20 opties in het vervolgkeuzeveld voor acties. Het is dus volstrekt onduidelijk hoe bijvoorbeeld de raam open detectie wordt aangestuurd. Wat verwacht dit knooppunt bij de ingang? In dit speciale geval van raamdetectie een "true"/ "false", "TRUE"/ "FALSE", "on"/ "off", "ON"/ "OFF" of zelfs gewoon "1"/ "0"? In het geval van vensterdetectie klinkt de documentatie alsof u de time-out zelfs als een tweede parameter zou kunnen specificeren. Als. Hoe werkt het?
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
Ok, het gaf me geen rust.
Als je kiest voor de actie 'Zet "Venster open" modus voor het gegeven aantal minuten', dan moet je een nummer geven voor de time-out van de thermostaat 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
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
Hallo,
Even een vraagje over het “raampje open”: wordt de nieuwe temperatuur dan meteen doorgestuurd naar de thermostaat of pas laat? Tot nu toe werden de waarden altijd met vertraging naar de thermostaat gestuurd.
Hartelijke groeten
de kleine
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
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
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
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 ’self‘; img-src ’self‘ 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…
Hallo,
Weet iemand hier waarom node-red-contrib-fritzapi de dect 302 thermostaat niet kan aanspreken?
Er verschijnt altijd een foutmelding: onbekend apparaat: xxxxxxxxxxxxxxxxxxx
{„Valid devices“:{„Thermostat Küche“:“xxxxxxxxxxxxx“}}
Groeten Friedrich