A desktop engineering tool built in collaboration with Danfoss to automate and optimize district heating production for around 1,600 buildings. The system runs hour-by-hour calculations across two-week seasonal periods to find the cheapest unit configuration while factoring in volatile and negative electricity market prices. Built in C# and .NET using Avalonia UI and the MVVM architecture, it replaces error-prone manual spreadsheets with an interactive simulation interface.
The Problem
Operators previously scheduled district heating units entirely by hand. Comparing operational costs, heat output, fuel usage, and emissions while tracking fluctuating hourly power prices was tedious and inefficient. When market electricity prices dropped into negative territory, manual calculations struggled to adapt quickly to turn electric boilers into profitable heat sources. Danfoss needed an automated tool capable of selecting the most cost-effective production units instantly without human calculation errors.
How It Works
Follows a strict MVVM pattern in Avalonia UI to cleanly separate complex mathematical optimization from interface rendering.
Handles two distinct operational setups, toggling between gas/oil boilers and hybrid configurations featuring electric boilers and gas motors.
Calculates hourly net production costs and weights profit-generating units, prioritizing units that consume cheap or negative-price electricity.
Provides an interactive maintenance scheduler that locks individual units offline for 30 to 60 hours while recalculating production loads in real time.
Uses OxyPlot with ReactiveUI data bindings to chart heat demand, production curves, emissions, and expenses with instant visual updates.
Manages local JSON and CSV pipelines through dedicated, isolated loaders that enforce invariant decimal parsing and cache configuration data.
Engineering & Team Process
Delivered across six two-week Scrum sprints in a cross-functional international team using Jira and GitHub.
Adopted rotating Scrum Master and meeting coordinator roles alongside pair programming to keep code standards aligned across frontend and backend modules.
Enforced strict clean-code guidelines, capping method nesting to three layers and extracting shared time-series logic across managers.
Covered data integrity and business rules with xUnit, using headless UI testing and sequential collection execution to prevent concurrency conflicts.
Desktopová aplikácia vytvorená v spolupráci s firmou Danfoss na automatizáciu a optimalizáciu výroby tepla pre približne 1600 budov. Systém prepočítava produkciu hodinu po hodine počas dvojtýždňových období, aby našiel najlacnejšiu konfiguráciu výrobných jednotiek s ohľadom na nestále a často záporné ceny na trhu s elektrinou. Postavený je v jazyku C# a .NET pomocou Avalonia UI a MVVM architektúry. Nahrádza chybové manuálne počítanie v tabuľkách interaktívnym simulačným rozhraním.
Problém
Operátori predtým plánovali využitie výrobných jednotiek tepla úplne ručne. Porovnávanie prevádzkových nákladov, tepelného výkonu, spotreby paliva a emisií pri sledovaní kolísajúcich hodinových cien elektriny bolo zdĺhavé a neefektívne. Keď trhové ceny elektriny klesli do mínusu, pri manuálnych výpočtoch bolo ťažké rýchlo zareagovať a premeniť elektrické kotly na ziskové zdroje tepla. Danfoss potreboval automatizovaný nástroj, ktorý by dokázal okamžite vybrať nákladovo najefektívnejšie výrobné jednotky bez rizika chýb ľudského faktora.
Ako to funguje
Striktne dodržiava návrhový vzor MVVM v Avalonia UI, čo čisto oddeľuje zložitú matematickú optimalizáciu od vykresľovania rozhrania.
Zvláda dva odlišné prevádzkové scenáre, pričom dokáže prepínať medzi plynovými/olejovými kotlami a hybridnými konfiguráciami s elektrickými kotlami a plynovými motormi.
Počíta hodinové čisté výrobné náklady a uprednostňuje jednotky generujúce zisk, najmä tie, ktoré spotrebúvajú lacnú elektrinu alebo elektrinu so zápornou cenou.
Poskytuje interaktívny plánovač údržby, ktorý umožňuje odstaviť jednotlivé jednotky na 30 až 60 hodín a v reálnom čase prepočítava produkčné zaťaženie pre zvyšné jednotky.
Využíva knižnicu OxyPlot s data bindingom z ReactiveUI na vykresľovanie požiadaviek na teplo, produkčných kriviek, emisií a nákladov s okamžitými vizuálnymi aktualizáciami.
Spravuje lokálne JSON a CSV súbory pomocou dedikovaných, izolovaných loaderov, ktoré zabezpečujú správne parsovanie desatinných čísel (invariants) a udržiavajú konfiguračné dáta v pamäti.
Vývoj a práca v tíme
Projekt bol dodaný v rámci šiestich dvojtýždňových Scrum šprintov v medzinárodnom tíme s využitím Jiry a GitHubu.
Rotovali sme si role Scrum Mastra a koordinátora mítingov, pričom sme využívali pair programming na zladenie štandardov kódu medzi frontendom a backendom.
Striktne sme dodržiavali pravidlá čistého kódu (clean-code), obmedzili zanorenie metód na maximálne tri úrovne a zdieľanú logiku pre prácu s časovými radmi sme abstrahovali.
Zabezpečili sme integritu dát a biznis logiku pomocou xUnit s využitím headless UI testovania a sekvenčného spúšťania kolekcií na zamedzenie problémov so súbežnosťou (concurrency).
Et ingeniør-desktopværktøj bygget i samarbejde med Danfoss til at automatisere og optimere fjernvarmeproduktionen for omkring 1.600 bygninger. Systemet kører time-for-time beregninger over to-ugers sæsonperioder for at finde den billigste enhedskonfiguration under hensyntagen til de svingende og til tider negative priser på elmarkedet. Det er bygget i C# og .NET ved hjælp af Avalonia UI og MVVM-arkitekturen, og erstatter fejlbehæftede manuelle regneark med en interaktiv simuleringsgrænseflade.
Problemet
Operatører planlagde tidligere fjernvarmeenheder fuldstændig manuelt. Det var trættende og ineffektivt at sammenligne driftsomkostninger, varmeproduktion, brændstofforbrug og emissioner og samtidig holde øje med fluktuerende timepriser på strøm. Når elpriserne på markedet faldt til negative værdier, havde manuelle beregninger svært ved hurtigt at tilpasse sig for at gøre elkedler til profitable varmekilder. Danfoss havde brug for et automatiseret værktøj, der øjeblikkeligt kunne vælge de mest omkostningseffektive produktionsenheder uden menneskelige regnefejl.
Sådan fungerer det
Følger et strengt MVVM-mønster i Avalonia UI for at adskille kompleks matematisk optimering fuldstændigt fra grænsefladen.
Håndterer to forskellige driftsopsætninger med mulighed for at skifte mellem gas-/oliekedler og hybridkonfigurationer med elkedler og gasmotorer.
Beregner timebaserede nettoproduktionsomkostninger og vægter overskudsskabende enheder ved at prioritere enheder, der forbruger billig elektricitet eller elektricitet til negativ pris.
Tilbyder en interaktiv vedligeholdelsesplanlægger, der låser enkelte enheder offline i 30 til 60 timer, mens produktionsbelastningerne genberegnes i realtid.
Bruger OxyPlot med ReactiveUI-databindinger til at kortlægge varmebehov, produktionskurver, emissioner og udgifter med øjeblikkelige visuelle opdateringer.
Håndterer lokale JSON- og CSV-pipelines gennem dedikerede, isolerede loadere, der håndhæver invariant decimalparsing og cacher konfigurationsdata.
Ingeniørarbejde & Teamproces
Leveret over seks to-ugers Scrum-sprints i et tværfagligt internationalt team ved hjælp af Jira og GitHub.
Vi skiftedes til at have rollerne som Scrum Master og mødekoordinator sammen med parprogrammering for at holde kodestandarder afstemt på tværs af frontend- og backend-moduler.
Håndhævede strenge retningslinjer for ren kode (clean-code), begrænsede indlejring af metoder til tre lag og udtrak delt logik for tidsserier på tværs af managere.
Dækkede dataintegritet og forretningsregler med xUnit ved hjælp af headless UI-test og sekventiel udførelse af collections for at forhindre samtidighedsproblemer (concurrency conflicts).