{"id":1122,"date":"2026-01-01T09:00:30","date_gmt":"2026-01-01T08:00:30","guid":{"rendered":"https:\/\/www.factorysensesoftware.at\/?p=1122"},"modified":"2026-02-08T15:26:13","modified_gmt":"2026-02-08T14:26:13","slug":"loxone-integration","status":"publish","type":"post","link":"https:\/\/www.factorysensesoftware.at\/index.php\/2026\/01\/01\/loxone-integration\/","title":{"rendered":"Loxone Integration Energieoptimierung"},"content":{"rendered":"\n<p>Auch wenn die Intelligenz des beschriebenen Systems nicht \u00fcber die Loxone Heimautomatisierung bereitgestellt wird, so stellen die Loxone Komponenten doch das zentrale Element in der Energieoptimierung. Folgende Aufgaben m\u00fcssen durch unsere Loxone bewerkstelligt werden:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Integration Awattar API<\/li>\n\n\n\n<li>Integration Wetterservice (bei Bedarf)<\/li>\n\n\n\n<li>Integration Optimization Web API<\/li>\n\n\n\n<li>Steuerung Vaillant W\u00e4rmepumpe<\/li>\n\n\n\n<li>Statiskikaufzeichnung<\/li>\n<\/ul>\n\n\n\n<p>Wir wollen diese Komplexe nun der Reihe nach beschreiben und vor allem praktische L\u00f6sungen pr\u00e4sentieren, um die \u00fcblichen Probleme bei der Systemintegration zu l\u00f6sen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integration Awattar API<\/h2>\n\n\n\n<p>Um in der Optimierung den Faktor Stromkosten bewerten zu k\u00f6nnen, habe ich mich entschieden die Ermittlung eben dieser \u00fcber Loxone durchzuf\u00fchren, und diese dann an den Optimierungs-Request zu \u00fcbergeben.<\/p>\n\n\n\n<p>F\u00fcr die Ermittlung der Stromkosten stellt mein Stromanbieter gl\u00fccklicherweise eine API zur Verf\u00fcgung um \u00fcber einen HTTP Request die Stromkosten f\u00fcr den folgenden Tag abgefragt werden k\u00f6nnen:<\/p>\n\n\n\n<p><a href=\"http:\/\/api.awattar.at\/v1\/marketdata\/current.yaml?tomorrow=include\" target=\"_blank\" rel=\"noreferrer noopener\">http:\/\/api.awattar.at\/v1\/marketdata\/current.yaml?tomorrow=include<\/a><\/p>\n\n\n\n<p>Um die Daten \u00fcber Loxone abzufragen, verwenden wir einen Virtuellen HTTP Eingang und geben f\u00fcr die URL den obigen Link an.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-1024x550.png\" alt=\"\" class=\"wp-image-1321\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-1024x550.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-300x161.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-768x413.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-1140x612.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26-830x446.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-26.png 1439w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Die Abfrage liefert folglich nachstehendes Ergebnis, bei dem uns die zuk\u00fcnftigen relativen Preise interessieren.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>date_now: 2026-01-04 12:41:21\ndate_now_epoch: 1767526881860\ndate_now_day: 4\ndate_now_month: 1\ndate_now_year: 2026\ndate_start: 2026-01-04 00:00:00\ndate_end: 2026-01-04 23:59:59\nprice_low: 8.25600\nprice_high: 12.11800\nprice_median: 9.02100\nprice_average: 9.57608\nprice_current: 8.95400\nprice_unit: Cent\/kWh\nprice_threshold_00: 8.25600\nprice_threshold_01: 8.34100\nprice_threshold_02: 8.38900\nprice_threshold_03: 8.39700\nprice_threshold_04: 8.50400\nprice_threshold_05: 8.53300\nprice_threshold_06: 8.67800\nprice_threshold_07: 8.68600\nprice_threshold_08: 8.84600\nprice_threshold_09: 8.88200\nprice_threshold_10: 8.92100\nprice_threshold_11: 8.95400\nprice_threshold_12: 9.08800\nprice_threshold_13: 9.31400\nprice_threshold_14: 9.43000\nprice_threshold_15: 9.47600\nprice_threshold_16: 9.55300\nprice_threshold_17: 10.04300\nprice_threshold_18: 10.56300\nprice_threshold_19: 11.24500\nprice_threshold_20: 11.79400\nprice_threshold_21: 11.84300\nprice_threshold_22: 11.97200\nprice_threshold_23: 12.11800\ndata_price_hour_rel_-12_amount: 8.88200\ndata_price_hour_abs_00_amount: 8.88200\ndata_price_hour_rel_-11_amount: 8.53300\ndata_price_hour_abs_01_amount: 8.53300\ndata_price_hour_rel_-10_amount: 8.50400\ndata_price_hour_abs_02_amount: 8.50400\ndata_price_hour_rel_-09_amount: 8.38900\ndata_price_hour_abs_03_amount: 8.38900\ndata_price_hour_rel_-08_amount: 8.25600\ndata_price_hour_abs_04_amount: 8.25600\ndata_price_hour_rel_-07_amount: 8.34100\ndata_price_hour_abs_05_amount: 8.34100\ndata_price_hour_rel_-06_amount: 8.39700\ndata_price_hour_abs_06_amount: 8.39700\ndata_price_hour_rel_-05_amount: 8.68600\ndata_price_hour_abs_07_amount: 8.68600\ndata_price_hour_rel_-04_amount: 8.84600\ndata_price_hour_abs_08_amount: 8.84600\ndata_price_hour_rel_-03_amount: 9.43000\ndata_price_hour_abs_09_amount: 9.43000\ndata_price_hour_rel_-02_amount: 9.47600\ndata_price_hour_abs_10_amount: 9.47600\ndata_price_hour_rel_-01_amount: 9.08800\ndata_price_hour_abs_11_amount: 9.08800\ndata_price_hour_rel_+00_amount: 8.95400\ndata_price_hour_abs_12_amount: 8.95400\ndata_price_hour_rel_+01_amount: 8.67800\ndata_price_hour_abs_13_amount: 8.67800\ndata_price_hour_rel_+02_amount: 9.31400\ndata_price_hour_abs_14_amount: 9.31400\ndata_price_hour_rel_+03_amount: 9.55300\ndata_price_hour_abs_15_amount: 9.55300\ndata_price_hour_rel_+04_amount: 11.79400\ndata_price_hour_abs_16_amount: 11.79400\ndata_price_hour_rel_+05_amount: 11.84300\ndata_price_hour_abs_17_amount: 11.84300\ndata_price_hour_rel_+06_amount: 12.11800\ndata_price_hour_abs_18_amount: 12.11800\ndata_price_hour_rel_+07_amount: 11.97200\ndata_price_hour_abs_19_amount: 11.97200\ndata_price_hour_rel_+08_amount: 11.24500\ndata_price_hour_abs_20_amount: 11.24500\ndata_price_hour_rel_+09_amount: 10.04300\ndata_price_hour_abs_21_amount: 10.04300\ndata_price_hour_rel_+10_amount: 10.56300\ndata_price_hour_abs_22_amount: 10.56300\ndata_price_hour_rel_+11_amount: 8.92100\ndata_price_hour_abs_23_amount: 8.92100<\/code><\/pre>\n\n\n\n<p>Zus\u00e4tzlich bedarf es noch einer Anmerkung zur weiteren Aufbereitung der st\u00fcndlichen Awattar Strompreise. Zuz\u00fcglich zu den von Awattar angegebenen Netto-Strompreisen werden noch weitere Geb\u00fchren und Kosten schlagend, womit sind nachstehende Stromkostenstruktur f\u00fcr Endbenutzer ergibt:<\/p>\n\n\n\n<p>St\u00fcndliche Preise EPEX Spot \u00ae AT<\/p>\n\n\n\n<p>+ |Betrag St\u00fcndliche Preise EPEX Spot \u00ae AT | * 0.03<\/p>\n\n\n\n<p>+ 1,500 Cent\/kWh<\/p>\n\n\n\n<p>+ 20% MwSt.<\/p>\n\n\n\n<p>Eine Besonderheit der Awattar API ist, dass die st\u00fcndlichen Daten t\u00e4glich jeweils um 14:00 Uhr aktualisiert werden und dann f\u00fcr den Folgetag von 00:00-24:00 zur Verf\u00fcgung stehen, das bedeuted jedoch auch, dass bis 13:59:59 Uhr st\u00fcndliche Strompreis Forecasts nur bis 24:00 Uhr des selben Tages verf\u00fcgbar sind, also zumindest 10 Stunden im vorhinein, was den Optimierungshorizont tempor\u00e4r auf diesen Bereich einschr\u00e4nkt. Diese Einschr\u00e4nkung ist auch in den obigen Response Daten ersichtlich. Dieser Reduzierung wird aber im Optimierungsservice Rechnung getragen, in dem der Horizont mangels Input Daten angepasst wird. Durch st\u00fcndlichen rollierenden Aufruf der Optimierung, entstehen in der Regel aber dadurch keine gravierenden Einschr\u00e4nkung bzw. Fehler im Ergebnis.<\/p>\n\n\n\n<p>F\u00fcr den Virtuellen HTTP Eingang m\u00fcssen nun 24 Befehlskennungen (Virtueller HTTP Eingang Befehl) f\u00fcr die relativen Preise angelegt werden. Als Beispiel f\u00fcr den Strompreis in 4 Stunden verwenden wir den Befehl.<\/p>\n\n\n\n<p>data_price_hour_rel_+04_amount: \\v<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-1024x551.png\" alt=\"\" class=\"wp-image-1323\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-1024x551.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-300x161.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-768x413.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-1140x613.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27-830x446.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-27.png 1441w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Die verf\u00fcgbaren Befehlskennungen sind sehr gut in der Loxone Dokumentation beschrieben:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.loxone.com\/dede\/kb\/befehlserkennung\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.loxone.com\/dede\/kb\/befehlserkennung<\/a><\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"628\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-2.png\" alt=\"\" class=\"wp-image-1232\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-2.png 602w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-2-288x300.png 288w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p>Somit sind die entscheidenden Strompreisinformation nun in unserer Loxone verf\u00fcgbar. Wie diese weiterverwendet werden, wird an sp\u00e4terer Stelle beschrieben. Um dem Loxone Benutzer auch noch etwas visuelles Feedback zum Strompreis zu geben wird nachstehender Link auf die Awattar Website genutzt:<\/p>\n\n\n\n<p><a href=\"https:\/\/www.awattar.at\/services\/charts\/hourly\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/www.awattar.at\/services\/charts\/hourly<\/a><\/p>\n\n\n\n<p>Diesen binden wir als Webpage Control in unsere Visualisierung ein.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"550\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-1024x550.png\" alt=\"\" class=\"wp-image-1325\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-1024x550.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-300x161.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-768x412.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-1140x612.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28-830x446.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-28.png 1438w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Aus der Loxone Visualisierung springt man somit auf folgende Seite ab, welche eine recht ansprechende Darstellung der vergangenen und kommenden Tage bietet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"498\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-1024x498.png\" alt=\"\" class=\"wp-image-1327\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-1024x498.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-300x146.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-768x373.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-1140x554.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29-830x403.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-29.png 1434w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>In der Loxone App sieht das nun folgenderma\u00dfen aus.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"602\" height=\"332\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-3.png\" alt=\"\" class=\"wp-image-1233\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-3.png 602w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-3-300x165.png 300w\" sizes=\"auto, (max-width: 602px) 100vw, 602px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integration Wetterservice<\/h2>\n\n\n\n<p>Da die selbst erstellte Optimization Web API die M\u00f6glichkeit bietet, eigenst\u00e4ndig Wetterdaten und Vorhersagen abzufragen falls diese nicht \u00fcber den Request bereitgestellt werden, wird diese M\u00f6glichkeit an der Stelle auch genutzt. Insofern besteht keine Notwendigkeit diese Daten \u00fcber Loxone einzubinden.<\/p>\n\n\n\n<p>Nichts desto trotz mag es f\u00fcr den ein oder anderen von Vorteil sein auch Wetterdaten in der Loxone Visualisierung darzustellen bzw. auch f\u00fcr Berechnungen in Loxone zu verwenden, bietet Loxone auch einen hervorragenden eigenen Wetterservice. Dieser kann nat\u00fcrlich ebenso eingebunden werden, um die entsprechenden Werte in der Folge an die Optimization Web API zu \u00fcbergeben.<\/p>\n\n\n\n<p>Zur Anzeige aktueller Wetterdaten wird in Loxone lediglich ein Webpage Baustein zum Absprung auf den Link<\/p>\n\n\n\n<p><a href=\"https:\/\/open-meteo.com\/en\/docs#latitude=48.1200&amp;longitude=16.2200&amp;hourly=temperature_2m,rain&amp;timezone=Europe%2FBerlin&amp;forecast_days=3\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/open-meteo.com\/en\/docs#latitude=48.1200&amp;longitude=16.2200&amp;hourly=temperature_2m,rain&amp;timezone=Europe%2FBerlin&amp;forecast_days=3<\/a><\/p>\n\n\n\n<p>bereitgestellt.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integration Optimization Web API<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Loxone Script Programming PicoC<\/h3>\n\n\n\n<p>F\u00fcr die Einbindung des Optimierungsservers wird ein Loxone Script Programm verwendet, welches unter \u201eBaustein einf\u00fcgen\u201c -&gt; \u201eAllgemein\u201c zu finden ist. Eine ausf\u00fchrliche Dokumentation der m\u00f6glichen Befehle ist unter folgendem Link zu finden.<\/p>\n\n\n\n<p><a href=\"https:\/\/updatefiles.loxone.com\/KnowledgeBase\/Online\/Common\/Documents\/CustomScriptProgramming.pdf\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/updatefiles.loxone.com\/KnowledgeBase\/Online\/Common\/Documents\/CustomScriptProgramming.pdf<\/a><\/p>\n\n\n\n<p>Alles in allem eine sehr m\u00e4chtige Funktionalit\u00e4t, die viele zus\u00e4tzliche T\u00fcren in der Loxone Config \u00f6ffnet.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"258\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-1024x258.png\" alt=\"\" class=\"wp-image-1329\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-1024x258.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-300x76.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-768x193.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-1140x287.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30-830x209.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-30.png 1441w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Letztendlich l\u00e4uft das Programm in einer Endlosschleife, wobei alle 5s die erforderlichen Daten von Loxone Datenpunkten (virtuelle Eing\u00e4nge, virtuelle HTTP Eing\u00e4nge, \u2026) gesammelt und in einen Request String zusammengebaut werden (siehe Request Dokumentation <a href=\"https:\/\/www.factorysensesoftware.at\/energyoptimization\/redoc-static.html\">https:\/\/www.factorysensesoftware.at\/energyoptimization\/redoc-static.html<\/a>) Durch einen Stundenimpuls wird ein Trigger Eingang I4 gesetzt, welcher im Programm den Request auf einen Programmausgang legt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"601\" height=\"186\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-5.png\" alt=\"\" class=\"wp-image-1235\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-5.png 601w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-5-300x93.png 300w\" sizes=\"auto, (max-width: 601px) 100vw, 601px\" \/><\/figure>\n\n\n\n<p>Der Stundenimpuls wird um 65s verz\u00f6gert, um sicherzustellen, dass andere st\u00fcndliche Updates von Datenpunkten (z.B. Awattar API Requests) abgeschlossen sind, und der Optimization Web API Request mit aktuellen Daten durchgef\u00fchrt wird. Um sicherzugehen, dass der Impuls vom Programm aufgefangen wird, sollte die L\u00e4nge ausreichend gew\u00e4hlt werden, in unserem Fall 10s. Wenn somit der Optimization Request \u00fcbergeben wird, stellt eine weitere Wartezeit von 15s sicher, dass die \u00dcbergabe nur 1 mal durchgef\u00fchrt wird.<\/p>\n\n\n\n<p>Das vollst\u00e4ndige Programm sieht folgenderma\u00dfen aus:<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>char req&#91;2048];\nchar time&#91;32];\nchar k&#91;32];\nchar d&#91;32];\nchar dt1&#91;32];\nchar dt2&#91;32];\nchar t1&#91;32];\nchar t2&#91;32];\nchar dem1&#91;128];\nchar dem2&#91;128];\nchar min1&#91;128];\nchar min2&#91;128];\nchar e&#91;256];\nfloat c&#91;24];\n\nwhile(true)\n{\nif(getinput(3)&gt;0)\n{\nsprintf(time, \"\\\"unixTimestamp\\\": %d,\", getinput(0));\n\nsprintf(k, \"\\\"slopeHeatingCurve\\\": %f,\", getio(\"VI36\"));\nsprintf(d, \"\\\"offsetHeatingCurve\\\": %d,\", getio(\"VI15\"));\n\nsprintf(dt1, \"\\\"maxDeltaTemperature1\\\": %d,\", getio(\"VI18\"));\nsprintf(dt2, \"\\\"maxDeltaTemperature2\\\": %d,\", getio(\"VI18\"));\n\nsprintf(t1, \"\\\"currentTemperature1\\\": %f,\", round(getinput(1)*10)\/10);\nsprintf(t2, \"\\\"currentTemperature2\\\": %f,\", round(getinput(2)*10)\/10);\n\nsprintf(dem1, \"\\\"demandPowerProfile1\\\": &#91; %s ],\", getinputtext(0));\nsprintf(dem2, \"\\\"demandPowerProfile2\\\": &#91; %s ],\", getinputtext(1));\n\nsprintf(min1, \"\\\"minTemperatureSetPointsProfile1\\\": &#91; %s ],\", \"0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\");\nsprintf(min2, \"\\\"minTemperatureSetPointsProfile2\\\": &#91; %s ],\", getinputtext(2));\n\nc&#91;0]=getio(\"VCI124\");\nc&#91;1]=getio(\"VCI125\");\nc&#91;2]=getio(\"VCI126\");\nc&#91;3]=getio(\"VCI127\");\nc&#91;4]=getio(\"VCI128\");\nc&#91;5]=getio(\"VCI129\");\nc&#91;6]=getio(\"VCI130\");\nc&#91;7]=getio(\"VCI131\");\nc&#91;8]=getio(\"VCI132\");\nc&#91;9]=getio(\"VCI133\");\nc&#91;10]=getio(\"VCI134\");\nc&#91;11]=getio(\"VCI135\");\nc&#91;12]=getio(\"VCI136\");\nc&#91;13]=getio(\"VCI137\");\nc&#91;14]=getio(\"VCI138\");\nc&#91;15]=getio(\"VCI139\");\nc&#91;16]=getio(\"VCI140\");\nc&#91;17]=getio(\"VCI141\");\nc&#91;18]=getio(\"VCI142\");\nc&#91;19]=getio(\"VCI143\");\nc&#91;20]=getio(\"VCI144\");\nc&#91;21]=getio(\"VCI145\");\nc&#91;22]=getio(\"VCI146\");\nc&#91;23]=getio(\"VCI147\");\n\nsprintf(e, \"\\\"electricityCosts\\\": &#91;%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f],\", \nround((c&#91;0]+fabs(c&#91;0])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;1]+fabs(c&#91;1])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;2]+fabs(c&#91;2])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;3]+fabs(c&#91;3])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;4]+fabs(c&#91;4])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;5]+fabs(c&#91;5])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;6]+fabs(c&#91;6])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;7]+fabs(c&#91;7])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;8]+fabs(c&#91;8])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;9]+fabs(c&#91;9])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;10]+fabs(c&#91;10])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;11]+fabs(c&#91;11])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;12]+fabs(c&#91;12])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;13]+fabs(c&#91;13])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;14]+fabs(c&#91;14])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;15]+fabs(c&#91;15])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;16]+fabs(c&#91;16])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;17]+fabs(c&#91;17])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;18]+fabs(c&#91;18])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;19]+fabs(c&#91;19])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;20]+fabs(c&#91;20])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;21]+fabs(c&#91;21])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;22]+fabs(c&#91;22])*0.03+1.5+6.7)*1.2*100)\/100,\nround((c&#91;23]+fabs(c&#91;23])*0.03+1.5+6.7)*1.2*100)\/100);\n\nreq = \"\";\nstrcat(req, \"{\");\nstrcat(req, \"\\\"heatPumpEnvironment\\\":{\");\nstrcat(req, time);\nstrcat(req, \"\\\"timeZoneInfoId\\\": \\\"W. Europe Standard Time\\\",\");\nstrcat(req, \"\\\"latitude\\\": 43.59,\");\nstrcat(req, \"\\\"longitude\\\": 12.37,\");\nstrcat(req, \"\\\"heatPumpModel\\\": \\\"Vaillant_125_6_Linear\\\",\");\nstrcat(req, \"\\\"ratedPower\\\": 12,\");\nstrcat(req, \"\\\"minPower\\\": 2,\");\nstrcat(req, \"\\\"bufferSize1\\\": 500,\");\nstrcat(req, \"\\\"bufferSize2\\\": 500,\");\nstrcat(req, \"\\\"bufferHeatDissipation1\\\": 0.50,\");\nstrcat(req, \"\\\"bufferHeatDissipation2\\\": 0.25,\");\nstrcat(req, t1);\nstrcat(req, t2);\nstrcat(req, dt1);\nstrcat(req, dt2);\nstrcat(req, k);\nstrcat(req, d);\nstrcat(req, e);\nstrcat(req, \"\\\"spotPriceRenewalTime\\\": \\\"14:00:00\\\",\");\nstrcat(req, dem1);\nstrcat(req, dem2);\nstrcat(req, min1);\nstrcat(req, min2);\nstrcat(req, \"\\\"intakeAirTemperatures\\\": &#91; ]\");\nstrcat(req, \"}\");\nstrcat(req, \"}\");\n\nsetoutputtext(0, req);\n\nsleep(15000);\n}\n\nsleep(5000);\n}<\/code><\/pre>\n\n\n\n<p>Wie im Programmlisting erkennbar, wird f\u00fcr die Datenermittlung gro\u00dfteils die getio(string) Funktion genutzt, wobei als Parameter der interne Name eines Virtuellen HTTP Eingangsbefehls gefordert wird. Dieser ist in der Loxone Config \u00fcber das rechte Maus Kontextmen\u00fc des virtuellen Eingangs im Men\u00fceintrag \u201eEigenschaften bearbeiten\u201c auffindbar. Dort findet sich die Spalte Anschluss, mit jener Bezeichnung, die als getio-Parameter gefordert wird.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"551\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-1024x551.png\" alt=\"\" class=\"wp-image-1331\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-1024x551.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-300x162.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-768x414.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-1140x614.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31-830x447.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-31.png 1441w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Der Vollst\u00e4ndigkeit halber noch eine Warnung: Der Programmbaustein erfordert ausreichend Kenntnisse, da durch fehlerhafte Programmierung der Miniserver crashen kann. Eine M\u00f6glichkeit der Wiederherstellung einer fehlerfreien Programmversion kann nicht garantiert werden. Insofern empfiehlt es sich auch ein Backup der SD Karte bereit zu halten, wenn man mit dem Programmbaustein experimentiert.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Loxone HTTP Request senden<\/h3>\n\n\n\n<p>Um nun den Request tats\u00e4chlich in den Ether zu senden, wird ein Virtueller Ausgang ben\u00f6tigt, dessen Adresse mit der IP-Adresse und Port des Host Rechners der Optimization Web API belegt wird. Das k\u00f6nnte beispielhaft folgenderma\u00dfen aussehen: <a href=\"http:\/\/64.203.158.23:39764\">http:\/\/64.203.158.23:39764<\/a> (IP Adressse und Port aus Sicherheitsgr\u00fcnden ge\u00e4ndert).<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"873\" height=\"873\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32.png\" alt=\"\" class=\"wp-image-1333\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32.png 873w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32-300x300.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32-150x150.png 150w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32-768x768.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32-830x830.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-32-75x75.png 75w\" sizes=\"auto, (max-width: 873px) 100vw, 873px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Ma\u00dfgeblicher Bedeutung ist dem Virtuellen Ausgangsbefehl zu schenken, welcher unter dem Virtuellen Ausgang angelegt wird. Die entsprechenden Request Parameter korrekt zu setzen, erforderte doch erhebliche Zeit und Dutzende Versuche. Letztendlich f\u00fchrte folgende Konfiguration zum gew\u00fcnschten Ergebnis:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>Befehl bei ein:<\/td><td>\/FactorysenseHeatPumpService\/PostOptimization<\/td><\/tr><tr><td>HTTP Header bei ein:<\/td><td>Content-Type: application\/json<\/td><\/tr><tr><td>HTTP Body bei ein:<\/td><td>&lt;v&gt;<\/td><\/tr><tr><td>HTTP Methode bei ein:<\/td><td>POST<\/td><\/tr><tr><td>HTTP Antwort speichern:<\/td><td>\/user\/common\/FactorysenseHeatPumpServiceResponse.json<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>An und f\u00fcr sich sieht das plausibel aus. Problematisch war vor allem die Erfordernis eines POST Requests anstatt eines GET Requests, um den Body korrekt \u00fcbergeben zu k\u00f6nnen. Ein in C# erstellter Client verh\u00e4lt sich hier um einiges verzeihlicher. Letztendlich aber ist die Definition einer POST Methode, wie durch Loxone hier gefordert vollends gerechtfertigt und hier auch korrekt.<\/p>\n\n\n\n<p>Unter Befehl wird der REST Endpoint definiert. Zus\u00e4tzliche k\u00f6nnen Header Parameter angegeben werden. Body ist in diesem Fall der am Eingang anliegende Wert, welcher mit dem Ausgang unseres Programmbausteins (Txt1) verbunden wurde und den Request String enth\u00e4lt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"822\" height=\"300\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-33.png\" alt=\"\" class=\"wp-image-1335\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-33.png 822w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-33-300x109.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-33-768x280.png 768w\" sizes=\"auto, (max-width: 822px) 100vw, 822px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Wichtig an dieser Stelle auch das Verzeichnis am Miniserver, in dem der Response abgelegt wird. Zu Testzwecken kann das File mit Hilfe eines Filezilla FTP Clients downgeloadet werden um den Response zu inspizieren. In der weiteren Ergebnisverarbeitung wird dieses JSON File in der Folge durch Loxone Logik ausgelesen.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"519\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-1024x519.png\" alt=\"\" class=\"wp-image-1337\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-1024x519.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-300x152.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-768x389.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-1140x578.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34-830x420.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-34.png 1441w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Loxone HTTP Response auslesen<\/h3>\n\n\n\n<p>Das Auslesen des JSON Responses erfolgt wiederum \u00fcber einen Virtuellen HTTP Eingang und zugeh\u00f6rigen Virtuellen HTTP Eingang Befehlen (siehe Bild unten) unter Einstellung folgender Parameter:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td colspan=\"2\">Virtueller HTTP Eingang (FactorysenseHeatPumpServiceResponse)<\/td><\/tr><tr><td>URL:<\/td><td>http:\/\/<em>UserName<\/em>:<em>Password<\/em>@<em>MiniserverIP<\/em>:80\/dev\/fsget\/user\/<br>          common\/FactorysenseHeatPumpServiceResponse.json<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td colspan=\"3\">Virtueller HTTP Eingang Befehlskennung (Einheit &lt;v.1&gt;, Werteinterpretation mit Vorzeichen)<\/td><\/tr><tr><td>p1_00<\/td><td>WP Leistung HZ (Periode 0)<\/td><td>\\i&#8220;power1&#8243;:\\i\\v<\/td><\/tr><tr><td>p2_00<\/td><td>WP Leistung WW (Periode 0)<\/td><td>\\i&#8220;power2&#8243;:\\i\\v<\/td><\/tr><tr><td>t1_01<\/td><td>Temp. HZ Puffer (Periode 1 Start)<\/td><td>\\i&#8220;temperature1&#8243;:\\i\\i&#8220;temperature1&#8243;:\\i\\v<\/td><\/tr><tr><td>t2_01<\/td><td>Temp. WW Puffer (Periode 1 Start)<\/td><td>\\i&#8220;temperature2&#8243;:\\i\\i&#8220;temperature1&#8243;:\\i\\v<\/td><\/tr><tr><td>cop1_00<\/td><td>WP COP HZ (Periode 0)<\/td><td>\\i&#8220;cop1&#8243;:\\i\\v<\/td><\/tr><tr><td>cop2_00<\/td><td>WP COP WW (Periode 0)<\/td><td>\\i&#8220;cop2&#8243;:\\i\\v<\/td><\/tr><tr><td>Status<\/td><td>Status<\/td><td>\\i&#8220;Status \\i\\v<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Vor allem die obigen Parameter des Responses sind relevant f\u00fcr die weitere Verarbeitung. \u00dcber die Ausgangsleistungen und COP Werte k\u00f6nnen \u00fcber einen Formel Baustein die Eingangsleistungen der W\u00e4rmepumpe errechnet werden.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"552\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-1024x552.png\" alt=\"\" class=\"wp-image-1339\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-1024x552.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-300x162.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-768x414.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-1140x615.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35-830x447.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-35.png 1443w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Oben ist ersichtlich, dass neben den beschriebenen Befehlskennungen auch noch weitere Variablen zus\u00e4tzlicher Perioden im Optimierungshorizont ausgelesen werden. Dies dient haupts\u00e4chlich der Visualisierung des Optimierungsergebnisses in der Loxonevisualisierung.<\/p>\n\n\n\n<p>F\u00fcr die Ermittlung der korrekten Befehlskennungen f\u00fcr einen vorgegeben Text ist vor allem der Editor hilfreich, der einerseits den gesamten Response Body im File anzeigt und der gleichzeitig on-the-fly den gefundenen Wert farblich laut Befehlskennung hinterlegt und damit den von Trial and Error gepr\u00e4gten Entwicklungsprozess f\u00fcr Befehlskennungen doch erheblich beschleunigt.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"609\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-1024x609.png\" alt=\"\" class=\"wp-image-1342\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-1024x609.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-300x178.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-768x457.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-1140x678.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36-830x493.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-36.png 1438w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Zusammenfassend zur Integration der Request und Response Strukturen ist zu sagen, dass sich im Laufe des Projekts einige Best Practices etabliert haben:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Unix Timestamps zur Zeitsynchronisierung (einfache Aufbereitung und Verarbeitung in Loxone)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Werte Arrays anstatt Object Arrays (ansonsten teilweise kompliziert \u00fcber Befehlskennungen zu lesen)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Nutzung Miniserver Gen 2 wenn HTTPS Kommunikation erforderlich (zum Beispiel beim senden von sensiblen Anmelde Daten \u00fcber den Request)<\/li>\n<\/ul>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Authorisierung bei HTTP Zugriff von Miniserver 1 empfangsseitig \u00fcber Sender IP Adresse und Firewall m\u00f6glich<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Loxone HTTP Schnittstellen \u00dcberwachung mit Mailer<\/h3>\n\n\n\n<p>Eine Sache die w\u00e4hrend des ersten Jahres im Betrieb etwas st\u00f6rend auffiel, war, dass entweder das Programm zum Request-Aufbau oder aber der Virtuelle Ausgangsbefehl f\u00fcr PostOptimization nach einigen Monaten unter Umst\u00e4nden pl\u00f6tzlich den Dienst verweigern kann. Ein simpler Restart des Miniservers, manuell getriggert \u00fcber die Loxone Mobile App l\u00f6st das Problem und man kann sich wieder f\u00fcr einige Monate in Sicherheit wiegen. Um jedoch zu verhindern, dass das Heizsystem ohne neue Setpoints auskommen muss und im schlimmsten Fall sogar mit \u00e4u\u00dferst ung\u00fcnstigen weil zur niedrigen oder \u00fcberschie\u00dfenden Temperaturen und Leistungen arbeitet, sollte derartiges Verhalten zumindest zeitnah identifiziert werden.<\/p>\n\n\n\n<p>Hierf\u00fcr bietet sich in Loxone der Status Baustein ein, der abh\u00e4ngig vom Status des letzten Optimization Responses, ausgelesen aus dem JSON File, und abh\u00e4ngig von den vergangenen Sekunden seit Erhalt des letzten Responses, den Status der Verbindung zur Optimization Web API ermittelt und visualisiert.<\/p>\n\n\n\n<p>Wenn sich der Status \u00e4ndert wird zus\u00e4tzlich \u00fcber den hinterlegten Mailer ein E-Mail an eine definierte Adresse gesendet. Somit wird unmittelbar ersichtlich wenn der Status von Feasible oder Optimal auf einen fehlerhaften Status wechselt, worauf der Miniserver kurz mal durchgestartet werden kann.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"553\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-1024x553.png\" alt=\"\" class=\"wp-image-1344\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-1024x553.png 1024w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-300x162.png 300w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-768x415.png 768w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-1140x616.png 1140w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37-830x448.png 830w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-37.png 1440w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Die Definition des Mailers f\u00fcr meinen E-Mail Dienst GMX sieht dabei folgenderma\u00dfen aus.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"692\" height=\"638\" src=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-38.png\" alt=\"\" class=\"wp-image-1346\" srcset=\"https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-38.png 692w, https:\/\/www.factorysensesoftware.at\/wp-content\/uploads\/2026\/01\/image-38-300x277.png 300w\" sizes=\"auto, (max-width: 692px) 100vw, 692px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Loxone HTTP Timeouts<\/h3>\n\n\n\n<p>Eine weitere Herausforderung ist die HTTP Timeout Zeit von 5s. Da mathematische Optimierungen durchaus einiges an Rechenzeit ben\u00f6tigen k\u00f6nnen (Industrieanwendungen laufen h\u00e4ufig n\u00e4chtlich \u00fcber mehrere Stunden), kommt einer effizienten Modellierung, wie im Beitrag <a href=\"https:\/\/www.factorysensesoftware.at\/index.php\/2026\/01\/01\/optimierungsmodell\/\">https:\/\/www.factorysensesoftware.at\/index.php\/2026\/01\/01\/optimierungsmodell\/<\/a> beschrieben, umso gr\u00f6\u00dfere Bedeutung zu. Durch die Performanceoptimierungen im Modell war es m\u00f6glich innerhalb der gegebenen 5s sehr gute L\u00f6sungen f\u00fcr das mathematische Problem zu finden.<\/p>\n\n\n\n<p>Eine M\u00f6glichkeit den Timeout Parameter anzupassen, konnte ich bislang in der Loxone Config leider nicht finden. Man muss allerdings auch einr\u00e4umen, dass diese Einstellung f\u00fcr die meisten Anwendungsf\u00e4lle ausreichend sein wird. Dennoch w\u00e4re es w\u00fcnschenswert auch hier Anpassungsm\u00f6glichkeiten vorzufinden.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Integration Vaillant W\u00e4rmepumpe<\/h2>\n\n\n\n<p>Die Einbindung der Vaillant W\u00e4rmepumpe \u00fcber das EEBUS Interface ein wesentlicher Bestandteil des Energieoptimierungssystem ist, wird diese Thematik in einem eigenen Beitrag behandelt, der unter nachstehenden Link verf\u00fcgbar ist.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Auch wenn die Intelligenz des beschriebenen Systems nicht \u00fcber die Loxone Heimautomatisierung bereitgestellt wird, so stellen die Loxone Komponenten doch das zentrale Element in der Energieoptimierung. Folgende Aufgaben m\u00fcssen durch unsere Loxone bewerkstelligt werden: Wir wollen diese Komplexe nun der Reihe nach beschreiben und vor allem praktische L\u00f6sungen pr\u00e4sentieren, um die \u00fcblichen Probleme bei der [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":971,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[],"class_list":["post-1122","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-energieoptimierung"],"_links":{"self":[{"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/posts\/1122","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/comments?post=1122"}],"version-history":[{"count":23,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/posts\/1122\/revisions"}],"predecessor-version":[{"id":1347,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/posts\/1122\/revisions\/1347"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/media\/971"}],"wp:attachment":[{"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/media?parent=1122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/categories?post=1122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.factorysensesoftware.at\/index.php\/wp-json\/wp\/v2\/tags?post=1122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}