change command for WW-OneTime

This commit is contained in:
MichaelDvP
2020-01-12 09:59:19 +01:00
parent 4be2383ad8
commit 1c424d372f
2 changed files with 49 additions and 46 deletions

View File

@@ -302,6 +302,7 @@ void showInfo() {
_renderIntValue("Warm Water selected temperature", "C", EMS_Boiler.wWSelTemp); _renderIntValue("Warm Water selected temperature", "C", EMS_Boiler.wWSelTemp);
_renderIntValue("Warm Water desinfection temperature", "C", EMS_Boiler.wWDesinfectTemp); _renderIntValue("Warm Water desinfection temperature", "C", EMS_Boiler.wWDesinfectTemp);
_renderBoolValue("Warm Water Circulation active",EMS_Boiler.wWCirc);
// UBAMonitorWWMessage // UBAMonitorWWMessage
_renderUShortValue("Warm Water current temperature", "C", EMS_Boiler.wWCurTmp); _renderUShortValue("Warm Water current temperature", "C", EMS_Boiler.wWCurTmp);
@@ -340,7 +341,7 @@ void showInfo() {
_renderIntValue("Boiler circuit pump modulation min power", "%", EMS_Boiler.pump_mod_min); _renderIntValue("Boiler circuit pump modulation min power", "%", EMS_Boiler.pump_mod_min);
// UBAMonitorSlow // UBAMonitorSlow
if (EMS_Boiler.extTemp != EMS_VALUE_SHORT_NOTSET) { if (EMS_Boiler.extTemp > EMS_VALUE_SHORT_NOTSET) {
_renderShortValue("Outside temperature", "C", EMS_Boiler.extTemp); _renderShortValue("Outside temperature", "C", EMS_Boiler.extTemp);
} }
_renderUShortValue("Boiler temperature", "C", EMS_Boiler.boilTemp); _renderUShortValue("Boiler temperature", "C", EMS_Boiler.boilTemp);
@@ -445,7 +446,7 @@ void showInfo() {
_renderIntValue(" Night temperature", "C", EMS_Thermostat.hc[hc_num - 1].nighttemp, 2); // convert to a single byte * 2 _renderIntValue(" Night temperature", "C", EMS_Thermostat.hc[hc_num - 1].nighttemp, 2); // convert to a single byte * 2
_renderIntValue(" Vacation temperature", "C", EMS_Thermostat.hc[hc_num - 1].holidaytemp, 2); // convert to a single byte * 2 _renderIntValue(" Vacation temperature", "C", EMS_Thermostat.hc[hc_num - 1].holidaytemp, 2); // convert to a single byte * 2
} }
if (EMS_Thermostat.hc[hc_num - 1].circuitcalctemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].circuitcalctemp < EMS_VALUE_USHORT_NOTSET)
_renderIntValue(" Calculatet flow temperature", "C",EMS_Thermostat.hc[hc_num - 1].circuitcalctemp); _renderIntValue(" Calculatet flow temperature", "C",EMS_Thermostat.hc[hc_num - 1].circuitcalctemp);
// Render Thermostat Mode // Render Thermostat Mode
@@ -479,13 +480,13 @@ void showInfo() {
myDebug_P(PSTR("")); // newline myDebug_P(PSTR("")); // newline
myDebug_P(PSTR("%sMixing module stats:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF); myDebug_P(PSTR("%sMixing module stats:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
myDebug_P(PSTR(" Mixing: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_MIXING, buffer_type,false)); myDebug_P(PSTR(" Mixing: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_MIXING, buffer_type,false));
//if (EMS_Boiler.switchTemp != EMS_VALUE_SHORT_NOTSET) //if (EMS_Boiler.switchTemp > EMS_VALUE_SHORT_NOTSET)
_renderShortValue("Switch temperature", "C", EMS_Boiler.switchTemp); _renderShortValue("Switch temperature", "C", EMS_Boiler.switchTemp);
for (uint8_t hc_num = 1; hc_num <= EMS_THERMOSTAT_MAXHC; hc_num++) { for (uint8_t hc_num = 1; hc_num <= EMS_THERMOSTAT_MAXHC; hc_num++) {
if (EMS_Mixing.hc[hc_num - 1].active) { if (EMS_Mixing.hc[hc_num - 1].active) {
myDebug_P(PSTR(" Mixing Circuit %d"), hc_num); myDebug_P(PSTR(" Mixing Circuit %d"), hc_num);
//if (EMS_Mixing.hc[hc_num - 1].flowTemp != EMS_VALUE_SHORT_NOTSET) //if (EMS_Mixing.hc[hc_num - 1].flowTemp > EMS_VALUE_SHORT_NOTSET)
_renderShortValue(" Current flow temperature", "C", EMS_Mixing.hc[hc_num - 1].flowTemp); _renderShortValue(" Current flow temperature", "C", EMS_Mixing.hc[hc_num - 1].flowTemp);
//if (EMS_Mixing.hc[hc_num - 1].flowSetTemp != EMS_VALUE_INT_NOTSET) //if (EMS_Mixing.hc[hc_num - 1].flowSetTemp != EMS_VALUE_INT_NOTSET)
_renderIntValue(" Setpoint flow temperature", "C", EMS_Mixing.hc[hc_num - 1].flowSetTemp); _renderIntValue(" Setpoint flow temperature", "C", EMS_Mixing.hc[hc_num - 1].flowSetTemp);
@@ -588,23 +589,23 @@ void publishEMSValues(bool force) {
if (EMS_Boiler.wWCircPump != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.wWCircPump != EMS_VALUE_BOOL_NOTSET)
rootBoiler["wWCircPump"] = EMS_Boiler.wWCircPump; rootBoiler["wWCircPump"] = EMS_Boiler.wWCircPump;
if (EMS_Boiler.extTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Boiler.extTemp > EMS_VALUE_SHORT_NOTSET)
rootBoiler["outdoorTemp"] = (float)EMS_Boiler.extTemp / 10; rootBoiler["outdoorTemp"] = (float)EMS_Boiler.extTemp / 10;
if (EMS_Boiler.wWCurTmp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.wWCurTmp < EMS_VALUE_USHORT_NOTSET)
rootBoiler["wWCurTmp"] = (float)EMS_Boiler.wWCurTmp / 10; rootBoiler["wWCurTmp"] = (float)EMS_Boiler.wWCurTmp / 10;
if (EMS_Boiler.wWCurFlow != EMS_VALUE_INT_NOTSET) if (EMS_Boiler.wWCurFlow != EMS_VALUE_INT_NOTSET)
rootBoiler["wWCurFlow"] = (float)EMS_Boiler.wWCurFlow / 10; rootBoiler["wWCurFlow"] = (float)EMS_Boiler.wWCurFlow / 10;
if (EMS_Boiler.curFlowTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.curFlowTemp < EMS_VALUE_USHORT_NOTSET)
rootBoiler["curFlowTemp"] = (float)EMS_Boiler.curFlowTemp / 10; rootBoiler["curFlowTemp"] = (float)EMS_Boiler.curFlowTemp / 10;
if (EMS_Boiler.retTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.retTemp < EMS_VALUE_USHORT_NOTSET)
rootBoiler["retTemp"] = (float)EMS_Boiler.retTemp / 10; rootBoiler["retTemp"] = (float)EMS_Boiler.retTemp / 10;
if (EMS_Boiler.switchTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.switchTemp > EMS_VALUE_SHORT_NOTSET)
rootBoiler["switchTemp"] = (float)EMS_Boiler.switchTemp / 10; rootBoiler["switchTemp"] = (float)EMS_Boiler.switchTemp / 10;
if (EMS_Boiler.sysPress != EMS_VALUE_INT_NOTSET) if (EMS_Boiler.sysPress != EMS_VALUE_INT_NOTSET)
rootBoiler["sysPress"] = (float)EMS_Boiler.sysPress / 10; rootBoiler["sysPress"] = (float)EMS_Boiler.sysPress / 10;
if (EMS_Boiler.boilTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.boilTemp < EMS_VALUE_USHORT_NOTSET)
rootBoiler["boilTemp"] = (float)EMS_Boiler.boilTemp / 10; rootBoiler["boilTemp"] = (float)EMS_Boiler.boilTemp / 10;
if (EMS_Boiler.exhaustTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.exhaustTemp < EMS_VALUE_USHORT_NOTSET)
rootBoiler["exhaustTemp"] = (float)EMS_Boiler.exhaustTemp / 10; rootBoiler["exhaustTemp"] = (float)EMS_Boiler.exhaustTemp / 10;
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET)
rootBoiler["wWActivated"] = _bool_to_char(s, EMS_Boiler.wWActivated); rootBoiler["wWActivated"] = _bool_to_char(s, EMS_Boiler.wWActivated);
@@ -612,10 +613,13 @@ void publishEMSValues(bool force) {
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET)
rootBoiler["wWOnetime"] = _bool_to_char(s, EMS_Boiler.wWOneTime); rootBoiler["wWOnetime"] = _bool_to_char(s, EMS_Boiler.wWOneTime);
if (EMS_Boiler.wWCirc != EMS_VALUE_BOOL_NOTSET)
rootBoiler["wWCirc"] = _bool_to_char(s, EMS_Boiler.wWCirc);
if (EMS_Boiler.burnGas != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.burnGas != EMS_VALUE_BOOL_NOTSET)
rootBoiler["burnGas"] = _bool_to_char(s, EMS_Boiler.burnGas); rootBoiler["burnGas"] = _bool_to_char(s, EMS_Boiler.burnGas);
if (EMS_Boiler.flameCurr != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.flameCurr < EMS_VALUE_USHORT_NOTSET)
rootBoiler["flameCurr"] = (float)(int16_t)EMS_Boiler.flameCurr / 10; rootBoiler["flameCurr"] = (float)(int16_t)EMS_Boiler.flameCurr / 10;
if (EMS_Boiler.heatPmp != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.heatPmp != EMS_VALUE_BOOL_NOTSET)
@@ -627,9 +631,6 @@ void publishEMSValues(bool force) {
if (EMS_Boiler.ignWork != EMS_VALUE_BOOL_NOTSET) if (EMS_Boiler.ignWork != EMS_VALUE_BOOL_NOTSET)
rootBoiler["ignWork"] = _bool_to_char(s, EMS_Boiler.ignWork); rootBoiler["ignWork"] = _bool_to_char(s, EMS_Boiler.ignWork);
if (EMS_Boiler.wWCirc != EMS_VALUE_BOOL_NOTSET)
rootBoiler["wWCirc"] = _bool_to_char(s, EMS_Boiler.wWCirc);
if (EMS_Boiler.heating_temp != EMS_VALUE_INT_NOTSET) if (EMS_Boiler.heating_temp != EMS_VALUE_INT_NOTSET)
rootBoiler["heating_temp"] = EMS_Boiler.heating_temp; rootBoiler["heating_temp"] = EMS_Boiler.heating_temp;
if (EMS_Boiler.pump_mod_max != EMS_VALUE_INT_NOTSET) if (EMS_Boiler.pump_mod_max != EMS_VALUE_INT_NOTSET)
@@ -654,7 +655,7 @@ void publishEMSValues(bool force) {
if (abs(EMS_Boiler.heatWorkMin) != EMS_VALUE_LONG_NOTSET) if (abs(EMS_Boiler.heatWorkMin) != EMS_VALUE_LONG_NOTSET)
rootBoiler["heatWorkMin"] = (float)EMS_Boiler.heatWorkMin; rootBoiler["heatWorkMin"] = (float)EMS_Boiler.heatWorkMin;
if (EMS_Boiler.serviceCode != EMS_VALUE_USHORT_NOTSET) { if (EMS_Boiler.serviceCode < EMS_VALUE_USHORT_NOTSET) {
rootBoiler["ServiceCode"] = EMS_Boiler.serviceCodeChar; rootBoiler["ServiceCode"] = EMS_Boiler.serviceCodeChar;
rootBoiler["ServiceCodeNumber"] = EMS_Boiler.serviceCode; rootBoiler["ServiceCodeNumber"] = EMS_Boiler.serviceCode;
} }
@@ -696,19 +697,19 @@ void publishEMSValues(bool force) {
// different logic depending on thermostat types // different logic depending on thermostat types
if (model == EMS_DEVICE_FLAG_EASY) { if (model == EMS_DEVICE_FLAG_EASY) {
if (thermostat->setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 100; dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 100;
if (thermostat->curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 100; dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 100;
} else if (model == EMS_DEVICE_FLAG_JUNKERS) { } else if (model == EMS_DEVICE_FLAG_JUNKERS) {
if (thermostat->setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 10; dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 10;
if (thermostat->curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 10; dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 10;
} else { } else {
if (thermostat->setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 2; dataThermostat[THERMOSTAT_SELTEMP] = (float)thermostat->setpoint_roomTemp / 2;
if (thermostat->curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (thermostat->curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 10; dataThermostat[THERMOSTAT_CURRTEMP] = (float)thermostat->curr_roomTemp / 10;
if (thermostat->daytemp != EMS_VALUE_INT_NOTSET) if (thermostat->daytemp != EMS_VALUE_INT_NOTSET)
@@ -764,7 +765,7 @@ void publishEMSValues(bool force) {
strlcat(hc, _int_to_char(s, mixing->hc), sizeof(hc)); strlcat(hc, _int_to_char(s, mixing->hc), sizeof(hc));
JsonObject dataMixing = rootMixing.createNestedObject(hc); JsonObject dataMixing = rootMixing.createNestedObject(hc);
if (mixing->flowTemp != EMS_VALUE_SHORT_NOTSET) if (mixing->flowTemp > EMS_VALUE_SHORT_NOTSET)
dataMixing["flowTemp"] = (float)mixing->flowTemp / 10; dataMixing["flowTemp"] = (float)mixing->flowTemp / 10;
if (mixing->flowSetTemp != EMS_VALUE_INT_NOTSET) if (mixing->flowSetTemp != EMS_VALUE_INT_NOTSET)
dataMixing["setflowTemp"] = mixing->flowSetTemp; dataMixing["setflowTemp"] = mixing->flowSetTemp;
@@ -788,10 +789,10 @@ void publishEMSValues(bool force) {
doc.clear(); doc.clear();
JsonObject rootSM = doc.to<JsonObject>(); JsonObject rootSM = doc.to<JsonObject>();
if (EMS_SolarModule.collectorTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_SolarModule.collectorTemp > EMS_VALUE_SHORT_NOTSET)
rootSM[SM_COLLECTORTEMP] = (float)EMS_SolarModule.collectorTemp / 10; rootSM[SM_COLLECTORTEMP] = (float)EMS_SolarModule.collectorTemp / 10;
if (EMS_SolarModule.bottomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_SolarModule.bottomTemp > EMS_VALUE_SHORT_NOTSET)
rootSM[SM_BOTTOMTEMP] = (float)EMS_SolarModule.bottomTemp / 10; rootSM[SM_BOTTOMTEMP] = (float)EMS_SolarModule.bottomTemp / 10;
if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET) if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET)
@@ -805,13 +806,13 @@ void publishEMSValues(bool force) {
rootSM[SM_PUMPWORKMIN] = (float)EMS_SolarModule.pumpWorkMin; rootSM[SM_PUMPWORKMIN] = (float)EMS_SolarModule.pumpWorkMin;
} }
if (EMS_SolarModule.EnergyLastHour != EMS_VALUE_USHORT_NOTSET) if (EMS_SolarModule.EnergyLastHour < EMS_VALUE_USHORT_NOTSET)
rootSM[SM_ENERGYLASTHOUR] = (float)EMS_SolarModule.EnergyLastHour / 10; rootSM[SM_ENERGYLASTHOUR] = (float)EMS_SolarModule.EnergyLastHour / 10;
if (EMS_SolarModule.EnergyToday != EMS_VALUE_USHORT_NOTSET) if (EMS_SolarModule.EnergyToday < EMS_VALUE_USHORT_NOTSET)
rootSM[SM_ENERGYTODAY] = EMS_SolarModule.EnergyToday; rootSM[SM_ENERGYTODAY] = EMS_SolarModule.EnergyToday;
if (EMS_SolarModule.EnergyTotal != EMS_VALUE_USHORT_NOTSET) if (EMS_SolarModule.EnergyTotal < EMS_VALUE_USHORT_NOTSET)
rootSM[SM_ENERGYTOTAL] = (float)EMS_SolarModule.EnergyTotal / 10; rootSM[SM_ENERGYTOTAL] = (float)EMS_SolarModule.EnergyTotal / 10;
data[0] = '\0'; // reset data for next package data[0] = '\0'; // reset data for next package
@@ -1694,24 +1695,24 @@ void WebCallback(JsonObject root) {
char buffer[200]; char buffer[200];
thermostat["tm"] = ems_getDeviceDescription(EMS_DEVICE_TYPE_THERMOSTAT, buffer, true); thermostat["tm"] = ems_getDeviceDescription(EMS_DEVICE_TYPE_THERMOSTAT, buffer, true);
uint8_t hc_num = EMS_THERMOSTAT_DEFAULTHC; // default to HC1 uint8_t hc_num = 1; // default to HC1
uint8_t model = ems_getThermostatModel(); uint8_t model = ems_getThermostatModel();
while (hc_num <= EMS_THERMOSTAT_MAXHC && !EMS_Thermostat.hc[hc_num - 1].active) hc_num++;
// Render Current & Setpoint Room Temperature // Render Current & Setpoint Room Temperature
if (model == EMS_DEVICE_FLAG_EASY) { if (model == EMS_DEVICE_FLAG_EASY) {
if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 100; thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 100;
if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 100; thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 100;
} else if (model == EMS_DEVICE_FLAG_JUNKERS) { } else if (model == EMS_DEVICE_FLAG_JUNKERS) {
if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 10; thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 10;
if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 10; thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 10;
} else { } else {
if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 2; thermostat["ts"] = (float)EMS_Thermostat.hc[hc_num - 1].setpoint_roomTemp / 2;
if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_Thermostat.hc[hc_num - 1].curr_roomTemp > EMS_VALUE_SHORT_NOTSET)
thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 10; thermostat["tc"] = (float)EMS_Thermostat.hc[hc_num - 1].curr_roomTemp / 10;
} }
@@ -1744,10 +1745,10 @@ void WebCallback(JsonObject root) {
if (EMS_Boiler.curFlowTemp != EMS_VALUE_INT_NOTSET) if (EMS_Boiler.curFlowTemp != EMS_VALUE_INT_NOTSET)
boiler["b4"] = EMS_Boiler.curFlowTemp / 10; boiler["b4"] = EMS_Boiler.curFlowTemp / 10;
if (EMS_Boiler.boilTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.boilTemp < EMS_VALUE_USHORT_NOTSET)
boiler["b5"] = (float)EMS_Boiler.boilTemp / 10; boiler["b5"] = (float)EMS_Boiler.boilTemp / 10;
if (EMS_Boiler.retTemp != EMS_VALUE_USHORT_NOTSET) if (EMS_Boiler.retTemp < EMS_VALUE_USHORT_NOTSET)
boiler["b6"] = (float)EMS_Boiler.retTemp / 10; boiler["b6"] = (float)EMS_Boiler.retTemp / 10;
} else { } else {
@@ -1762,10 +1763,10 @@ void WebCallback(JsonObject root) {
char buffer[200]; char buffer[200];
sm["sm"] = ems_getDeviceDescription(EMS_DEVICE_TYPE_SOLAR, buffer, true); sm["sm"] = ems_getDeviceDescription(EMS_DEVICE_TYPE_SOLAR, buffer, true);
if (EMS_SolarModule.collectorTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_SolarModule.collectorTemp > EMS_VALUE_SHORT_NOTSET)
sm["sm1"] = (float)EMS_SolarModule.collectorTemp / 10; // Collector temperature oC sm["sm1"] = (float)EMS_SolarModule.collectorTemp / 10; // Collector temperature oC
if (EMS_SolarModule.bottomTemp != EMS_VALUE_SHORT_NOTSET) if (EMS_SolarModule.bottomTemp > EMS_VALUE_SHORT_NOTSET)
sm["sm2"] = (float)EMS_SolarModule.bottomTemp / 10; // Bottom temperature oC sm["sm2"] = (float)EMS_SolarModule.bottomTemp / 10; // Bottom temperature oC
if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET) if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET)
@@ -1776,13 +1777,13 @@ void WebCallback(JsonObject root) {
sm["sm4"] = _bool_to_char(s, EMS_SolarModule.pump); // Pump active on/off sm["sm4"] = _bool_to_char(s, EMS_SolarModule.pump); // Pump active on/off
} }
if (EMS_SolarModule.EnergyLastHour != EMS_VALUE_USHORT_NOTSET) if (EMS_SolarModule.EnergyLastHour < EMS_VALUE_USHORT_NOTSET)
sm["sm5"] = (float)EMS_SolarModule.EnergyLastHour / 10; // Energy last hour Wh sm["sm5"] = (float)EMS_SolarModule.EnergyLastHour / 10; // Energy last hour Wh
if (EMS_SolarModule.EnergyToday != EMS_VALUE_USHORT_NOTSET) // Energy today Wh if (EMS_SolarModule.EnergyToday < EMS_VALUE_USHORT_NOTSET) // Energy today Wh
sm["sm6"] = EMS_SolarModule.EnergyToday; sm["sm6"] = EMS_SolarModule.EnergyToday;
if (EMS_SolarModule.EnergyTotal != EMS_VALUE_USHORT_NOTSET) // Energy total KWh if (EMS_SolarModule.EnergyTotal < EMS_VALUE_USHORT_NOTSET) // Energy total KWh
sm["sm7"] = (float)EMS_SolarModule.EnergyTotal / 10; sm["sm7"] = (float)EMS_SolarModule.EnergyTotal / 10;
} else { } else {
sm["ok"] = false; sm["ok"] = false;

View File

@@ -123,7 +123,7 @@ void ems_init() {
// init all mixing modules // init all mixing modules
for (uint8_t i = 0; i < EMS_THERMOSTAT_MAXHC; i++) { for (uint8_t i = 0; i < EMS_THERMOSTAT_MAXHC; i++) {
EMS_Mixing.hc[i].hc = i + 1; EMS_Mixing.hc[i].hc = i + 1;
EMS_Mixing.hc[i].flowTemp = EMS_VALUE_USHORT_NOTSET; EMS_Mixing.hc[i].flowTemp = EMS_VALUE_SHORT_NOTSET;
EMS_Mixing.hc[i].pumpMod = EMS_VALUE_INT_NOTSET; EMS_Mixing.hc[i].pumpMod = EMS_VALUE_INT_NOTSET;
EMS_Mixing.hc[i].valveStatus = EMS_VALUE_INT_NOTSET; EMS_Mixing.hc[i].valveStatus = EMS_VALUE_INT_NOTSET;
EMS_Mixing.hc[i].flowSetTemp = EMS_VALUE_INT_NOTSET; EMS_Mixing.hc[i].flowSetTemp = EMS_VALUE_INT_NOTSET;
@@ -1011,9 +1011,11 @@ void ems_setWarmWaterOnetime(bool activated) {
EMS_TxTelegram.dest = EMS_Boiler.device_id; EMS_TxTelegram.dest = EMS_Boiler.device_id;
EMS_TxTelegram.type = EMS_TYPE_UBAFlags; EMS_TxTelegram.type = EMS_TYPE_UBAFlags;
EMS_TxTelegram.offset = EMS_OFFSET_UBAParameterWW_wwOneTime; EMS_TxTelegram.offset = EMS_OFFSET_UBAParameterWW_wwOneTime;
EMS_TxTelegram.length = EMS_MIN_TELEGRAM_LENGTH; EMS_TxTelegram.length = EMS_MIN_TELEGRAM_LENGTH+1;
EMS_TxTelegram.type_validate = EMS_ID_NONE; // don't validate EMS_TxTelegram.type_validate = EMS_ID_NONE; // don't validate
EMS_TxTelegram.dataValue = (activated ? 0x22 : 0x02); // 0x22 is on, 0x02 is off for RC20RF // EMS_TxTelegram.dataValue = (activated ? 0x22 : 0x02); // 0x22 is on, 0x02 is off for RC20RF
EMS_TxTelegram.data[4] = 0x11;
EMS_TxTelegram.data[5] = (activated ? 0x33 : 0x11);
EMS_TxQueue.push(EMS_TxTelegram); EMS_TxQueue.push(EMS_TxTelegram);
} }