Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand Down
4 changes: 0 additions & 4 deletions SystaRESTServer/bin/.gitignore

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -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-02T23:31:38+00:00";
}
}

Expand Down Expand Up @@ -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-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;
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
20 changes: 17 additions & 3 deletions SystaRESTServer/src/de/freaklamarsch/systarest/SystaIndex.java
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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;

Expand Down
35 changes: 35 additions & 0 deletions SystaRESTServer/src/de/freaklamarsch/systarest/SystaStatus.java
Original file line number Diff line number Diff line change
Expand Up @@ -475,6 +475,16 @@ public class SystaStatus {
* heatingOperationModes = { "off", "normal", "comfort", "reduced" }
*/
public final String[] heatingOperationModes = { "off", "normal", "comfort", "reduced" };
/**
* Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ???<br/>
* <br/>
* heating off=0; normal=1, comfort=2, reduced=3 ???
*/
public int circuit2HeatingOperationMode;
/**
* heatingOperationModes = { "off", "normal", "comfort", "reduced" }
*/
public final String[] circuit2HeatingOperationModes = { "off", "normal", "comfort", "reduced" };
/**
* Regelung HK nach:<br/>
* 0 = Aussentemperatur<br/>
Expand Down Expand Up @@ -908,6 +918,12 @@ public class SystaStatus {
* Operating mode ???
*/
public int operationModeX;
/**
* Betriebsart ???<br/>
* <br/>
* Operating mode ???
*/
public int circuit2OperationModeX;
/**
* Heizung aus=0; normal=1, komfort=2, abgesenkt=3 ???<br/>
* <br/>
Expand Down Expand Up @@ -1070,6 +1086,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"
Expand Down
Loading