From ff846a7f5fbd72ae987969d5b0ffc948fabed38c Mon Sep 17 00:00:00 2001 From: beep-projects Date: Sun, 2 Nov 2025 23:24:04 +0100 Subject: [PATCH 1/3] add operation mode info for circuit 2 --- SystaRESTServer/bin/.gitignore | 4 --- .../freaklamarsch/systarest/FakeSystaWeb.java | 7 +++-- .../freaklamarsch/systarest/SystaIndex.java | 20 ++++++++++-- .../freaklamarsch/systarest/SystaStatus.java | 31 +++++++++++++++++++ 4 files changed, 53 insertions(+), 9 deletions(-) diff --git a/SystaRESTServer/bin/.gitignore b/SystaRESTServer/bin/.gitignore index 093c81e..fd04598 100644 --- a/SystaRESTServer/bin/.gitignore +++ b/SystaRESTServer/bin/.gitignore @@ -1,5 +1 @@ -/SystaREST.properties /de/ -/fakeremoteportal.html -/rawdatamonitor.html -/systapidashboard.html diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java b/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java index 7fdb6bc..fff965b 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java @@ -97,7 +97,7 @@ public FakeSystaWebStatus(boolean running, boolean connected, long udpPacketsRec this.loggerFileRootPath = logFileRootPath; this.loggerFileCount = writerFileCount; this.loggerBufferedEntries = bufferedEntries; - this.commitDate = "2025-08-06T21:01:33+00:00"; + this.commitDate = "2025-11-02T22:24:04+00:00"; } } @@ -149,7 +149,7 @@ public SystaComfortInfo(String systawebIp, int systawebPort, String systaBcastIp } // Constants - private static final String commitDate = "2025-08-06T21:01:33+00:00"; + private static final String commitDate = "2025-11-02T22:24:04+00:00"; private static final int PORT = 22460; private static final int MAX_DATA_LENGTH = 1048; private static final int MAX_NUMBER_ENTRIES = 256; @@ -340,6 +340,7 @@ public SystaStatus getParadigmaStatus() { status.circulationTemp = intData[i][SystaIndex.CIRCULATION_TEMP] / 10.0; status.circuit2FlowTemp = intData[i][SystaIndex.CIRCUIT_2_FLOW_TEMP] / 10.0; status.circuit2ReturnTemp = intData[i][SystaIndex.CIRCUIT_2_RETURN_TEMP] / 10.0; + status.circuit2OperationMode = intData[i][SystaIndex.CIRCUIT_2_OPERATION_MODE]; status.roomTempActual1 = intData[i][SystaIndex.ROOM_TEMP_ACTUAL_1] / 10.0; status.roomTempActual2 = intData[i][SystaIndex.ROOM_TEMP_ACTUAL_2] / 10.0; status.collectorTempActual = intData[i][SystaIndex.COLLECTOR_TEMP_ACTUAL] / 10.0; @@ -363,6 +364,7 @@ public SystaStatus getParadigmaStatus() { status.roomTempSetComfort = intData[i][SystaIndex.ROOM_TEMP_SET_COMFORT] / 10.0; status.roomTempSetReduced = intData[i][SystaIndex.ROOM_TEMP_SET_REDUCED] / 10.0; status.heatingOperationMode = intData[i][SystaIndex.HEATING_OPERATION_MODE]; + status.circuit2HeatingOperationMode = intData[i][SystaIndex.CIRCUIT_2_HEATING_OPERATION_MODE]; status.controlledBy = intData[i][SystaIndex.CONTROLLED_BY]; status.heatingCurveBasePoint = intData[i][SystaIndex.HEATING_CURVE_BASE_POINT] / 10.0; status.heatingCurveGradient = intData[i][SystaIndex.HEATING_CURVE_GRADIENT] / 10.0; @@ -428,6 +430,7 @@ public SystaStatus getParadigmaStatus() { status.unknowRelayState5IsOn = (status.relay & SystaStatus.UNKNOWN_5_MASK) != 0; status.error = intData[i][SystaIndex.ERROR]; status.operationModeX = intData[i][SystaIndex.OPERATION_MODE_X]; + status.circuit2OperationModeX = intData[i][SystaIndex.CIRCUIT_2_OPERATION_MODE_X]; status.heatingOperationModeX = intData[i][SystaIndex.HEATING_OPERATION_MODE_X]; status.logBoilerBufferTempMin = intData[i][SystaIndex.LOG_BOILER_BUFFER_TEMP_MIN] / 10.0; status.logBoilerTempMin = intData[i][SystaIndex.LOG_BOILER_TEMP_MIN] / 10.0; diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaIndex.java b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaIndex.java index 840ebc3..6ef27ee 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaIndex.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaIndex.java @@ -591,9 +591,23 @@ private SystaIndex() { final static int CIRCUIT_1_OPERATION_MODE = 232; // final static int = 233 // final static int = 234 - // final static int = 235 - // final static int = 236 - // final static int = 237 + /** + * Status HK 1 0="Aus" 1="Aus Heizgrenze" 2="Aus TI" 3="Gesperrt TPO" 4="Aus + * WW-Vorrang" 5="Ein" 6="Frostschutz" 7=,"K\u00fchlen" 8="Vorhaltezeit" + * 9="Heizbetrieb" 10="Komfortbetrieb" 11="Absenkbetrieb" 12="Aus TSB" + * 13="Gesperrt" 14="Normal" 15="Erh\u00f6ht" 16="WW-Modus" 17="Estrich + * trocknen" 18="K\u00fchlbetrieb" + */ + // added on request https://github.com/beep-projects/SystaPi/issues/35 + final static int CIRCUIT_2_OPERATION_MODE = 235; + /** + * Betriebsart ??? + */ + final static int CIRCUIT_2_OPERATION_MODE_X = 236; + /** + * Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ??? + */ + final static int CIRCUIT_2_HEATING_OPERATION_MODE = 237; // final static int = 238 // final static int = 239 // final static int = 240 diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java index 130b43d..9cf093c 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java @@ -471,6 +471,12 @@ public class SystaStatus { * Heating off=0, normal=1, comfort=2, reduced=3 */ public int heatingOperationMode; + /** + * Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ???
+ *
+ * heating off=0; normal=1, comfort=2, reduced=3 ??? + */ + public int circuit2HeatingOperationMode; /** * heatingOperationModes = { "off", "normal", "comfort", "reduced" } */ @@ -908,6 +914,12 @@ public class SystaStatus { * Operating mode ??? */ public int operationModeX; + /** + * Betriebsart ???
+ *
+ * Operating mode ??? + */ + public int circuit2OperationModeX; /** * Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ???
*
@@ -1070,6 +1082,25 @@ public class SystaStatus { "heating", "comfort", "reduced", "off (temp swimming pool)", "locked", "normal", "raised", "hot water", "screed heating", "cooling mode" }; + /** + * 0 = "Aus" 1 = "Aus Heizgrenze" 2 = "Aus TI" 3 = "Gesperrt TPO" 4 = "Aus + * WW-Vorrang" 5 = "Ein" 6 = "Frostschutz" 7 = "Kühlen" 8 = "Vorhaltezeit" 9 = + * "Heizbetrieb" 10 = "Komfortbetrieb" 11 = "Absenkbetrieb" 12 = "Aus TSB" 13 = + * "Gesperrt" 14 = "Normal" 15 = "Erhöht" 16 = "WW-Modus" 17 = "Estrich + * trocknen" 18 = "Kühlbetrieb" + * + * 0 = "off" 1 = "off (heating limit)" 2 = "off (room temperature)" 3 = "locked + * (buffer temp top)" 4 = "off (yield hot water)" 5 = "on" 6 = "anti freeze" 7 = + * "cooling" 8 = "lead time heat up" 9 = "heating" 10 = "comfort" 11 = + * "reduced" 12 = "off (temp swimming pool)" 13 = "locked" 14 = "normal" 15 = + * "raised" 16 = "hot water" 17 = "screed heating" 18 = "cooling mode" + */ + public int circuit2OperationMode; + public final String[] circuit2OperationModeNames = { "off", "off (heating limit)", "off (room temperature)", + "locked (buffer temp top)", "off (yield hot water)", "on", "anti freeze", "cooling", "lead time heat up", + "heating", "comfort", "reduced", "off (temp swimming pool)", "locked", "normal", "raised", "hot water", + "screed heating", "cooling mode" }; + /** * Status Zirkulation 0="Aus" 1="Nachlauf" 2="Sperrzeit" 3="Gesperrt" 4="Aus * F\u00fchler TZR" 5="Ein" 6="Frost" From 883b3804a149028487d976cb0056998f77af3638 Mon Sep 17 00:00:00 2001 From: beep-projects Date: Mon, 3 Nov 2025 00:31:38 +0100 Subject: [PATCH 2/3] add operation mode info for circuit 2 to SystaRESTAPI --- .../src/de/freaklamarsch/systarest/FakeSystaWeb.java | 4 ++-- .../src/de/freaklamarsch/systarest/SystaRESTAPI.java | 9 ++++++++- .../src/de/freaklamarsch/systarest/SystaStatus.java | 6 +++++- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java b/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java index fff965b..51f78fd 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/FakeSystaWeb.java @@ -97,7 +97,7 @@ public FakeSystaWebStatus(boolean running, boolean connected, long udpPacketsRec this.loggerFileRootPath = logFileRootPath; this.loggerFileCount = writerFileCount; this.loggerBufferedEntries = bufferedEntries; - this.commitDate = "2025-11-02T22:24:04+00:00"; + this.commitDate = "2025-11-02T23:31:38+00:00"; } } @@ -149,7 +149,7 @@ public SystaComfortInfo(String systawebIp, int systawebPort, String systaBcastIp } // Constants - private static final String commitDate = "2025-11-02T22:24:04+00:00"; + private static final String commitDate = "2025-11-02T23:31:38+00:00"; private static final int PORT = 22460; private static final int MAX_DATA_LENGTH = 1048; private static final int MAX_NUMBER_ENTRIES = 256; diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaRESTAPI.java b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaRESTAPI.java index 71b33fb..afe2df0 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaRESTAPI.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaRESTAPI.java @@ -355,7 +355,10 @@ public JsonObject getStatus() { .add("circulationLockoutTimePushButton", ps.circulationLockoutTimePushButton) .add("circulationHysteresis", ps.circulationHysteresis).add("circuit2FlowTemp", ps.circuit2FlowTemp) .add("circuit2FlowTemp", ps.circuit2FlowTemp).add("circuit2ReturnTemp", ps.circuit2ReturnTemp) - .add("circuit2FlowTempSet", ps.circuit2FlowTempSet).add("roomTempActual1", ps.roomTempActual1) + .add("circuit2FlowTempSet", ps.circuit2FlowTempSet) + .add("circuit2OperationMode", ps.circuit2OperationMode) + .add("circuit2OperationModeName", ps.circuit2OperationModeNames[ps.circuit2OperationMode]) + .add("roomTempActual1", ps.roomTempActual1) .add("roomTempSet1", ps.roomTempSet1).add("roomTempActual2", ps.roomTempActual2) .add("roomTempSet2", ps.roomTempSet2).add("roomTempSetNormal", ps.roomTempSetNormal) .add("roomTempSetComfort", ps.roomTempSetComfort).add("roomTempSetReduced", ps.roomTempSetReduced) @@ -365,6 +368,8 @@ public JsonObject getStatus() { .add("swimmingpoolReturnTemp", ps.swimmingpoolReturnTemp) .add("heatingOperationMode", ps.heatingOperationMode) .add("heatingOperationModeName", ps.heatingOperationModes[ps.heatingOperationMode]) + .add("circuit2HeatingOperationMode", ps.circuit2HeatingOperationMode) + .add("circuit2HeatingOperationModeName", ps.circuit2HeatingOperationModes[ps.circuit2HeatingOperationMode]) .add("heatingCurveBasePoint", ps.heatingCurveBasePoint) .add("heatingCurveGradient", ps.heatingCurveGradient).add("heatingLimitTemp", ps.heatingLimitTemp) .add("heatingLimitTeampReduced", ps.heatingLimitTeampReduced) @@ -391,6 +396,8 @@ public JsonObject getStatus() { .add("unknowRelayState2IsOn", ps.unknowRelayState2IsOn) .add("unknowRelayState5IsOn", ps.unknowRelayState5IsOn).add("error", ps.error) .add("operationModeX", ps.operationModeX).add("heatingOperationModeX", ps.heatingOperationModeX) + .add("circuit2OperationModeX", ps.circuit2OperationModeX) + .add("heatingOperationModeX", ps.heatingOperationModeX) .add("timestamp", ps.timestamp).add("timestampString", ps.timestampString).build(); return jo; diff --git a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java index 9cf093c..e94bab0 100644 --- a/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java +++ b/SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java @@ -471,6 +471,10 @@ public class SystaStatus { * Heating off=0, normal=1, comfort=2, reduced=3 */ public int heatingOperationMode; + /** + * heatingOperationModes = { "off", "normal", "comfort", "reduced" } + */ + public final String[] heatingOperationModes = { "off", "normal", "comfort", "reduced" }; /** * Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ???
*
@@ -480,7 +484,7 @@ public class SystaStatus { /** * heatingOperationModes = { "off", "normal", "comfort", "reduced" } */ - public final String[] heatingOperationModes = { "off", "normal", "comfort", "reduced" }; + public final String[] circuit2HeatingOperationModes = { "off", "normal", "comfort", "reduced" }; /** * Regelung HK nach:
* 0 = Aussentemperatur
From 57a58658cec0af88e22c6b93d55f720f112d6e83 Mon Sep 17 00:00:00 2001 From: beep <85742605+beep-projects@users.noreply.github.com> Date: Fri, 3 Apr 2026 12:04:52 +0200 Subject: [PATCH 3/3] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 924425a..7ec230d 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ This project is updated irregularly or provided with new features. * **Latest Release:** [3.1](https://github.com/beep-projects/SystaPi/releases/tag/3.1) * **Unreleased Changes on main:** - * none + * added operation modes for heating circuit 2 * **Future Development:** New releases are always prepared on the **main** branch. If you want to get a sneak peek on it, check it out and [contribute](#contribute) your test results. You can also update your running version to main, by executing `helpers/update.sh -b main` but you should backup you system before that. * **Known Limitations:** Compatibility with any SystaComfort software or Raspberry Pi OS versions is not guaranteed. See [Known Issues](#known-issues) and [Contribute](#contribute) for more details.