mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 16:59:50 +03:00
render unsigned shorts correctly - #372
This commit is contained in:
102
src/ems-esp.cpp
102
src/ems-esp.cpp
@@ -370,7 +370,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -572,14 +572,14 @@ void showInfo() {
|
|||||||
myDebug_P(PSTR("")); // newline
|
myDebug_P(PSTR("")); // newline
|
||||||
myDebug_P(PSTR("%sMixing module data:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
|
myDebug_P(PSTR("%sMixing module data:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
|
||||||
myDebug_P(PSTR(" Mixing Module: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_MIXING, buffer_type, false));
|
myDebug_P(PSTR(" Mixing Module: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_MIXING, buffer_type, false));
|
||||||
if ((EMS_Boiler.switchTemp < EMS_VALUE_USHORT_NOTSET) && (EMS_Boiler.switchTemp != 0)) {
|
if ((EMS_Boiler.switchTemp != EMS_VALUE_USHORT_NOTSET) && (EMS_Boiler.switchTemp != 0)) {
|
||||||
_renderUShortValue("Switch temperature", "C", EMS_Boiler.switchTemp);
|
_renderUShortValue("Switch temperature", "C", EMS_Boiler.switchTemp);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint8_t hc_num = 1; hc_num <= EMS_MIXING_MAXHC; hc_num++) {
|
for (uint8_t hc_num = 1; hc_num <= EMS_MIXING_MAXHC; hc_num++) {
|
||||||
if (EMS_MixingModule.hc[hc_num - 1].active) {
|
if (EMS_MixingModule.hc[hc_num - 1].active) {
|
||||||
myDebug_P(PSTR(" Mixing Circuit %d"), hc_num);
|
myDebug_P(PSTR(" Mixing Circuit %d"), hc_num);
|
||||||
if (EMS_MixingModule.hc[hc_num - 1].flowTemp < EMS_VALUE_USHORT_NOTSET)
|
if (EMS_MixingModule.hc[hc_num - 1].flowTemp != EMS_VALUE_USHORT_NOTSET)
|
||||||
_renderUShortValue(" Current flow temperature", "C", EMS_MixingModule.hc[hc_num - 1].flowTemp);
|
_renderUShortValue(" Current flow temperature", "C", EMS_MixingModule.hc[hc_num - 1].flowTemp);
|
||||||
if (EMS_MixingModule.hc[hc_num - 1].flowSetTemp != EMS_VALUE_INT_NOTSET)
|
if (EMS_MixingModule.hc[hc_num - 1].flowSetTemp != EMS_VALUE_INT_NOTSET)
|
||||||
_renderIntValue(" Setpoint flow temperature", "C", EMS_MixingModule.hc[hc_num - 1].flowSetTemp);
|
_renderIntValue(" Setpoint flow temperature", "C", EMS_MixingModule.hc[hc_num - 1].flowSetTemp);
|
||||||
@@ -593,7 +593,7 @@ void showInfo() {
|
|||||||
for (uint8_t wwc_num = 1; wwc_num <= EMS_MIXING_MAXWWC; wwc_num++) {
|
for (uint8_t wwc_num = 1; wwc_num <= EMS_MIXING_MAXWWC; wwc_num++) {
|
||||||
if (EMS_MixingModule.wwc[wwc_num - 1].active) {
|
if (EMS_MixingModule.wwc[wwc_num - 1].active) {
|
||||||
myDebug_P(PSTR(" Warm Water Circuit %d"), wwc_num);
|
myDebug_P(PSTR(" Warm Water Circuit %d"), wwc_num);
|
||||||
if (EMS_MixingModule.wwc[wwc_num - 1].flowTemp < EMS_VALUE_USHORT_NOTSET)
|
if (EMS_MixingModule.wwc[wwc_num - 1].flowTemp != EMS_VALUE_USHORT_NOTSET)
|
||||||
_renderUShortValue(" Current warm water temperature", "C", EMS_MixingModule.wwc[wwc_num - 1].flowTemp);
|
_renderUShortValue(" Current warm water temperature", "C", EMS_MixingModule.wwc[wwc_num - 1].flowTemp);
|
||||||
if (EMS_MixingModule.wwc[wwc_num - 1].pumpMod != EMS_VALUE_INT_NOTSET)
|
if (EMS_MixingModule.wwc[wwc_num - 1].pumpMod != EMS_VALUE_INT_NOTSET)
|
||||||
_renderIntValue(" Current pump status", "", EMS_MixingModule.wwc[wwc_num - 1].pumpMod);
|
_renderIntValue(" Current pump status", "", EMS_MixingModule.wwc[wwc_num - 1].pumpMod);
|
||||||
@@ -748,55 +748,55 @@ bool publishEMSValues_boiler() {
|
|||||||
if (EMS_Boiler.wWCircPumpMode != EMS_VALUE_INT_NOTSET) {
|
if (EMS_Boiler.wWCircPumpMode != EMS_VALUE_INT_NOTSET) {
|
||||||
rootBoiler["wWCiPuMode"] = EMS_Boiler.wWCircPumpMode;
|
rootBoiler["wWCiPuMode"] = EMS_Boiler.wWCircPumpMode;
|
||||||
}
|
}
|
||||||
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_USHORT_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.wwStorageTemp1 < EMS_VALUE_USHORT_NOTSET) {
|
if (EMS_Boiler.wwStorageTemp1 != EMS_VALUE_USHORT_NOTSET) {
|
||||||
rootBoiler["wwStorageTemp1"] = (float)EMS_Boiler.wwStorageTemp1 / 10;
|
rootBoiler["wwStorageTemp1"] = (float)EMS_Boiler.wwStorageTemp1 / 10;
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wwStorageTemp2 < EMS_VALUE_USHORT_NOTSET) {
|
if (EMS_Boiler.wwStorageTemp2 != EMS_VALUE_USHORT_NOTSET) {
|
||||||
rootBoiler["wwStorageTemp2"] = (float)EMS_Boiler.wwStorageTemp2 / 10;
|
rootBoiler["wwStorageTemp2"] = (float)EMS_Boiler.wwStorageTemp2 / 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);
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWOneTime != 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.wWActivated != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWDesinfecting != EMS_VALUE_BOOL_NOTSET) {
|
||||||
rootBoiler["wWDesinfecting"] = _bool_to_char(s, EMS_Boiler.wWDesinfecting);
|
rootBoiler["wWDesinfecting"] = _bool_to_char(s, EMS_Boiler.wWDesinfecting);
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWReadiness != EMS_VALUE_BOOL_NOTSET) {
|
||||||
rootBoiler["wWReady"] = _bool_to_char(s, EMS_Boiler.wWReadiness);
|
rootBoiler["wWReady"] = _bool_to_char(s, EMS_Boiler.wWReadiness);
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWRecharging != EMS_VALUE_BOOL_NOTSET) {
|
||||||
rootBoiler["wWRecharge"] = _bool_to_char(s, EMS_Boiler.wWRecharging);
|
rootBoiler["wWRecharge"] = _bool_to_char(s, EMS_Boiler.wWRecharging);
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wWActivated != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWTemperatureOK != EMS_VALUE_BOOL_NOTSET) {
|
||||||
rootBoiler["wWTempOK"] = _bool_to_char(s, EMS_Boiler.wWTemperatureOK);
|
rootBoiler["wWTempOK"] = _bool_to_char(s, EMS_Boiler.wWTemperatureOK);
|
||||||
}
|
}
|
||||||
if (EMS_Boiler.wWCirc != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWCirc != EMS_VALUE_BOOL_NOTSET) {
|
||||||
@@ -805,7 +805,7 @@ bool publishEMSValues_boiler() {
|
|||||||
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) {
|
||||||
@@ -829,22 +829,22 @@ bool publishEMSValues_boiler() {
|
|||||||
if (EMS_Boiler.wWHeat != EMS_VALUE_BOOL_NOTSET) {
|
if (EMS_Boiler.wWHeat != EMS_VALUE_BOOL_NOTSET) {
|
||||||
rootBoiler["wWHeat"] = _bool_to_char(s, EMS_Boiler.wWHeat);
|
rootBoiler["wWHeat"] = _bool_to_char(s, EMS_Boiler.wWHeat);
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.wWStarts) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.wWStarts != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["wWStarts"] = EMS_Boiler.wWStarts;
|
rootBoiler["wWStarts"] = EMS_Boiler.wWStarts;
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.wWWorkM) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.wWWorkM != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["wWWorkM"] = EMS_Boiler.wWWorkM;
|
rootBoiler["wWWorkM"] = EMS_Boiler.wWWorkM;
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.UBAuptime) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.UBAuptime != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["UBAuptime"] = EMS_Boiler.UBAuptime;
|
rootBoiler["UBAuptime"] = EMS_Boiler.UBAuptime;
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.burnStarts) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.burnStarts != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["burnStarts"] = EMS_Boiler.burnStarts;
|
rootBoiler["burnStarts"] = EMS_Boiler.burnStarts;
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.burnWorkMin) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.burnWorkMin != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["burnWorkMin"] = EMS_Boiler.burnWorkMin;
|
rootBoiler["burnWorkMin"] = EMS_Boiler.burnWorkMin;
|
||||||
}
|
}
|
||||||
if (abs(EMS_Boiler.heatWorkMin) != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_Boiler.heatWorkMin != EMS_VALUE_LONG_NOTSET) {
|
||||||
rootBoiler["heatWorkMin"] = EMS_Boiler.heatWorkMin;
|
rootBoiler["heatWorkMin"] = EMS_Boiler.heatWorkMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -877,7 +877,7 @@ bool publishEMSValues_thermostat() {
|
|||||||
_EMS_Thermostat_HC * thermostat = &EMS_Thermostat.hc[hc_v - 1];
|
_EMS_Thermostat_HC * thermostat = &EMS_Thermostat.hc[hc_v - 1];
|
||||||
|
|
||||||
// only send if we have an active Heating Circuit with an actual setpoint temp temperature values
|
// only send if we have an active Heating Circuit with an actual setpoint temp temperature values
|
||||||
if ((thermostat->active) && (thermostat->setpoint_roomTemp > EMS_VALUE_SHORT_NOTSET)) {
|
if ((thermostat->active) && (thermostat->setpoint_roomTemp != EMS_VALUE_SHORT_NOTSET)) {
|
||||||
uint8_t model = ems_getThermostatFlags(); // fetch model flags
|
uint8_t model = ems_getThermostatFlags(); // fetch model flags
|
||||||
has_data = true;
|
has_data = true;
|
||||||
|
|
||||||
@@ -894,19 +894,19 @@ bool publishEMSValues_thermostat() {
|
|||||||
|
|
||||||
// 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_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
} else if ((model == EMS_DEVICE_FLAG_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
||||||
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)
|
||||||
@@ -1049,7 +1049,7 @@ bool publishEMSValues_mixing() {
|
|||||||
strlcpy(hc, MIXING_HC, sizeof(hc));
|
strlcpy(hc, MIXING_HC, sizeof(hc));
|
||||||
strlcat(hc, _int_to_char(s, mixingHC->hc), sizeof(hc));
|
strlcat(hc, _int_to_char(s, mixingHC->hc), sizeof(hc));
|
||||||
JsonObject dataMixingHC = rootMixing.createNestedObject(hc);
|
JsonObject dataMixingHC = rootMixing.createNestedObject(hc);
|
||||||
if (mixingHC->flowTemp < EMS_VALUE_USHORT_NOTSET)
|
if (mixingHC->flowTemp != EMS_VALUE_USHORT_NOTSET)
|
||||||
dataMixingHC["flowTemp"] = (float)mixingHC->flowTemp / 10;
|
dataMixingHC["flowTemp"] = (float)mixingHC->flowTemp / 10;
|
||||||
if (mixingHC->flowSetTemp != EMS_VALUE_INT_NOTSET)
|
if (mixingHC->flowSetTemp != EMS_VALUE_INT_NOTSET)
|
||||||
dataMixingHC["setflowTemp"] = mixingHC->flowSetTemp;
|
dataMixingHC["setflowTemp"] = mixingHC->flowSetTemp;
|
||||||
@@ -1069,7 +1069,7 @@ bool publishEMSValues_mixing() {
|
|||||||
strlcpy(wwc, MIXING_WWC, sizeof(wwc));
|
strlcpy(wwc, MIXING_WWC, sizeof(wwc));
|
||||||
strlcat(wwc, _int_to_char(s, mixingWWC->wwc), sizeof(wwc));
|
strlcat(wwc, _int_to_char(s, mixingWWC->wwc), sizeof(wwc));
|
||||||
JsonObject dataMixing = rootMixing.createNestedObject(wwc);
|
JsonObject dataMixing = rootMixing.createNestedObject(wwc);
|
||||||
if (mixingWWC->flowTemp < EMS_VALUE_USHORT_NOTSET)
|
if (mixingWWC->flowTemp != EMS_VALUE_USHORT_NOTSET)
|
||||||
dataMixing["wwTemp"] = (float)mixingWWC->flowTemp / 10;
|
dataMixing["wwTemp"] = (float)mixingWWC->flowTemp / 10;
|
||||||
if (mixingWWC->pumpMod != EMS_VALUE_INT_NOTSET)
|
if (mixingWWC->pumpMod != EMS_VALUE_INT_NOTSET)
|
||||||
dataMixing["pumpStatus"] = mixingWWC->pumpMod;
|
dataMixing["pumpStatus"] = mixingWWC->pumpMod;
|
||||||
@@ -1091,13 +1091,13 @@ bool publishEMSValues_solar() {
|
|||||||
StaticJsonDocument<MYESP_JSON_MAXSIZE_SMALL> doc;
|
StaticJsonDocument<MYESP_JSON_MAXSIZE_SMALL> doc;
|
||||||
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.bottomTemp2 > EMS_VALUE_SHORT_NOTSET) {
|
if (EMS_SolarModule.bottomTemp2 != EMS_VALUE_SHORT_NOTSET) {
|
||||||
rootSM[SM_BOTTOMTEMP2] = (float)EMS_SolarModule.bottomTemp2 / 10;
|
rootSM[SM_BOTTOMTEMP2] = (float)EMS_SolarModule.bottomTemp2 / 10;
|
||||||
}
|
}
|
||||||
if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET) {
|
if (EMS_SolarModule.pumpModulation != EMS_VALUE_INT_NOTSET) {
|
||||||
@@ -1114,13 +1114,13 @@ bool publishEMSValues_solar() {
|
|||||||
if (EMS_SolarModule.pumpWorkMin != EMS_VALUE_LONG_NOTSET) {
|
if (EMS_SolarModule.pumpWorkMin != EMS_VALUE_LONG_NOTSET) {
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2353,19 +2353,19 @@ void WebCallback(JsonObject root) {
|
|||||||
hc_num++; // first active hc
|
hc_num++; // first active hc
|
||||||
// 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_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
} else if ((model == EMS_DEVICE_FLAG_JUNKERS1) || (model == EMS_DEVICE_FLAG_JUNKERS2)) {
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2404,7 +2404,7 @@ void WebCallback(JsonObject root) {
|
|||||||
boiler["b4"] = EMS_Boiler.curFlowTemp / 10;
|
boiler["b4"] = EMS_Boiler.curFlowTemp / 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EMS_Boiler.wWCurTmp < EMS_VALUE_USHORT_NOTSET) {
|
if (EMS_Boiler.wWCurTmp != EMS_VALUE_USHORT_NOTSET) {
|
||||||
boiler["b5"] = (float)EMS_Boiler.wWCurTmp / 10;
|
boiler["b5"] = (float)EMS_Boiler.wWCurTmp / 10;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2420,10 +2420,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)
|
||||||
@@ -2434,13 +2434,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;
|
||||||
|
|||||||
@@ -31,8 +31,8 @@
|
|||||||
#define EMS_VALUE_BOOL_OFF 0x00 // boolean false
|
#define EMS_VALUE_BOOL_OFF 0x00 // boolean false
|
||||||
#define EMS_VALUE_BOOL_NOTSET 0xFE // random number that's not 0, 1 or FF
|
#define EMS_VALUE_BOOL_NOTSET 0xFE // random number that's not 0, 1 or FF
|
||||||
#define EMS_VALUE_INT_NOTSET 0xFF // for 8-bit unsigned ints/bytes
|
#define EMS_VALUE_INT_NOTSET 0xFF // for 8-bit unsigned ints/bytes
|
||||||
#define EMS_VALUE_SHORT_NOTSET -32000 // was -32768 for 2-byte signed shorts
|
#define EMS_VALUE_SHORT_NOTSET -32000 // 0x8300 for 2-byte signed shorts
|
||||||
#define EMS_VALUE_USHORT_NOTSET 32000 // was 0x8000 for 2-byte unsigned shorts
|
#define EMS_VALUE_USHORT_NOTSET 32000 // 0x7D00 (was 0x8000) for 2-byte unsigned shorts
|
||||||
#define EMS_VALUE_LONG_NOTSET 0xFFFFFF // for 3-byte longs
|
#define EMS_VALUE_LONG_NOTSET 0xFFFFFF // for 3-byte longs
|
||||||
|
|
||||||
// thermostat specific
|
// thermostat specific
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ char * _bool_to_char(char * s, uint8_t value) {
|
|||||||
// negative values are assumed stored as 1-compliment (https://medium.com/@LeeJulija/how-integers-are-stored-in-memory-using-twos-complement-5ba04d61a56c)
|
// negative values are assumed stored as 1-compliment (https://medium.com/@LeeJulija/how-integers-are-stored-in-memory-using-twos-complement-5ba04d61a56c)
|
||||||
char * _short_to_char(char * s, int16_t value, uint8_t decimals) {
|
char * _short_to_char(char * s, int16_t value, uint8_t decimals) {
|
||||||
// remove errors or invalid values
|
// remove errors or invalid values
|
||||||
if (value <= EMS_VALUE_SHORT_NOTSET) {
|
if (value == EMS_VALUE_SHORT_NOTSET) {
|
||||||
strlcpy(s, "?", 10);
|
strlcpy(s, "?", 10);
|
||||||
return (s);
|
return (s);
|
||||||
}
|
}
|
||||||
@@ -80,7 +80,7 @@ char * _short_to_char(char * s, int16_t value, uint8_t decimals) {
|
|||||||
// decimals: 0 = no division, 1=divide value by 10, 2=divide by 2, 10=divide value by 100
|
// decimals: 0 = no division, 1=divide value by 10, 2=divide by 2, 10=divide value by 100
|
||||||
char * _ushort_to_char(char * s, uint16_t value, uint8_t decimals) {
|
char * _ushort_to_char(char * s, uint16_t value, uint8_t decimals) {
|
||||||
// remove errors or invalid values
|
// remove errors or invalid values
|
||||||
if (value >= EMS_VALUE_USHORT_NOTSET) { // 0x7D00
|
if (value == EMS_VALUE_USHORT_NOTSET) { // 0x7D00
|
||||||
strlcpy(s, "?", 10);
|
strlcpy(s, "?", 10);
|
||||||
return (s);
|
return (s);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define APP_VERSION "1.9.5b59"
|
#define APP_VERSION "1.9.5b60"
|
||||||
|
|||||||
Reference in New Issue
Block a user