[{"data":1,"prerenderedAt":114},["ShallowReactive",2],{"project-smart-home":3},[4,28],{"id":5,"title":6,"body":7,"description":18,"extension":19,"github":20,"meta":21,"name":22,"navigation":23,"path":24,"seo":25,"stem":26,"__hash__":27},"projects/projects/nx-notion.md","Nx Notion",{"type":8,"value":9,"toc":14},"minimark",[10],[11,12,13],"p",{},"this is my project",{"title":15,"searchDepth":16,"depth":16,"links":17},"",5,[],"A library designed for managing various operations with Notion inside the NX workspace.","md","https://github.com/kochax/nx-notion",{},"nx-notion",true,"/projects/nx-notion",{"description":18},"projects/nx-notion","3x9uvkJ0CZddLAzVZ60XimjUhrx8f4bpAaMK4P_oBuA",{"id":29,"title":30,"body":31,"description":106,"extension":19,"github":107,"meta":108,"name":109,"navigation":23,"path":110,"seo":111,"stem":112,"__hash__":113},"projects/projects/smart-home.md","Smart Home",{"type":8,"value":32,"toc":102},[33,36,41,88,94],[11,34,35],{},"A heating controller I built for my own 220m2 house in Serbia. It decides when to heat, which source to use (heat pump or gas boiler) and which circulation pumps to run, based on per-circuit demand, outdoor conditions and Serbian EPS electricity tariffs.",[37,38,40],"h2",{"id":39},"highlights","Highlights",[42,43,44,52,58,64,70,76,82],"ul",{},[45,46,47,51],"li",{},[48,49,50],"strong",{},"ESP32-S3 firmware"," with FreeRTOS on two cores: real-time control on Core 1, WiFi/MQTT/NTP/OTA on Core 0. Heating works the same when the network is down",[45,53,54,57],{},[48,55,56],{},"Finite state machine"," with a reason code for every transition",[45,59,60,63],{},[48,61,62],{},"Pure C99 decision logic"," covered by around 100 native unit tests that run in about a second",[45,65,66,69],{},[48,67,68],{},"Demand-driven pumps",": a Romstal RWT15 wireless thermostat on the ground floor, Shelly 1PM Mini devices on the fan-coils, and a SALUS KL06-M wiring center with a SALUS PL07 pump-demand module in the attic, bridged over MQTT through a Shelly",[45,71,72,75],{},[48,73,74],{},"Safety",": alarm inputs, flow monitoring, emergency stop, anti short-cycling",[45,77,78,81],{},[48,79,80],{},"Backend",": Mosquitto, TimescaleDB, NestJS (MQTT bridge, REST, Socket.IO)",[45,83,84,87],{},[48,85,86],{},"Dashboard",": Nuxt 4 with live state, temperature trends, history and live firmware logs",[11,89,90],{},[91,92],"img",{"alt":86,"src":93},"/img/articles/smart-home/dashboard-overview.png",[11,95,96,97],{},"Read the full story: ",[98,99,101],"a",{"href":100},"/blog/building-a-smart-heating-controller-with-esp32-s3","Building a smart heating controller for my house with ESP32-S3",{"title":15,"searchDepth":16,"depth":16,"links":103},[104],{"id":39,"depth":105,"text":40},2,"ESP32-S3 controller for a hybrid heat pump + gas boiler heating system, with EPS tariff optimization, MQTT, TimescaleDB, NestJS and a Nuxt dashboard.",null,{},"smart-home","/projects/smart-home",{"description":106},"projects/smart-home","4KNvqAjkQlYWtLBy2N8qNB77dP6JO-npqKtd3vJYFUI",1792785207189]