mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
Merge remote-tracking branch 'upstream/dev' into MM10
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -18,3 +18,6 @@ node_modules
|
|||||||
# project specfic
|
# project specfic
|
||||||
scripts/stackdmp.txt
|
scripts/stackdmp.txt
|
||||||
firmware
|
firmware
|
||||||
|
|
||||||
|
# firmware
|
||||||
|
*.bin
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
os: linux
|
os: linux
|
||||||
language: python
|
language: python
|
||||||
python:
|
python:
|
||||||
- "2.7"
|
- "3.8"
|
||||||
|
|
||||||
cache:
|
cache:
|
||||||
directories:
|
directories:
|
||||||
@@ -55,6 +55,7 @@ before_deploy:
|
|||||||
deploy:
|
deploy:
|
||||||
provider: releases
|
provider: releases
|
||||||
edge:
|
edge:
|
||||||
|
source: wenkokke/dpl
|
||||||
branch: master
|
branch: master
|
||||||
token: ${GITHUB_TOKEN}
|
token: ${GITHUB_TOKEN}
|
||||||
file_glob: true
|
file_glob: true
|
||||||
|
|||||||
@@ -110,5 +110,5 @@ board = d1_mini
|
|||||||
build_type = release
|
build_type = release
|
||||||
build_flags = ${common.build_flags} ${common.custom_flags}
|
build_flags = ${common.build_flags} ${common.custom_flags}
|
||||||
extra_scripts =
|
extra_scripts =
|
||||||
;pre:scripts/pre_script.py
|
pre:scripts/pre_script.py
|
||||||
scripts/main_script.py
|
scripts/main_script.py
|
||||||
|
|||||||
166
src/ems-esp.cpp
166
src/ems-esp.cpp
@@ -270,97 +270,101 @@ void showInfo() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
myDebug_P(PSTR(""));
|
myDebug_P(PSTR(""));
|
||||||
myDebug_P(PSTR("%sBoiler stats:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
|
|
||||||
|
|
||||||
// version details
|
// show boiler stats if connected
|
||||||
myDebug_P(PSTR(" Boiler: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_BOILER, buffer_type));
|
if (ems_getBoilerEnabled()) {
|
||||||
|
myDebug_P(PSTR("%sBoiler stats:%s"), COLOR_BOLD_ON, COLOR_BOLD_OFF);
|
||||||
|
|
||||||
// active stats
|
// version details
|
||||||
if (ems_getBusConnected()) {
|
myDebug_P(PSTR(" Boiler: %s"), ems_getDeviceDescription(EMS_DEVICE_TYPE_BOILER, buffer_type));
|
||||||
if (EMS_Boiler.tapwaterActive != EMS_VALUE_INT_NOTSET) {
|
|
||||||
myDebug_P(PSTR(" Hot tap water: %s"), EMS_Boiler.tapwaterActive ? "running" : "off");
|
// active stats
|
||||||
|
if (ems_getBusConnected()) {
|
||||||
|
if (EMS_Boiler.tapwaterActive != EMS_VALUE_INT_NOTSET) {
|
||||||
|
myDebug_P(PSTR(" Hot tap water: %s"), EMS_Boiler.tapwaterActive ? "running" : "off");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (EMS_Boiler.heatingActive != EMS_VALUE_INT_NOTSET) {
|
||||||
|
myDebug_P(PSTR(" Central heating: %s"), EMS_Boiler.heatingActive ? "active" : "off");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EMS_Boiler.heatingActive != EMS_VALUE_INT_NOTSET) {
|
// UBAParameterWW
|
||||||
myDebug_P(PSTR(" Central heating: %s"), EMS_Boiler.heatingActive ? "active" : "off");
|
_renderBoolValue("Warm Water activated", EMS_Boiler.wWActivated);
|
||||||
|
_renderBoolValue("Warm Water circulation pump available", EMS_Boiler.wWCircPump);
|
||||||
|
if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Hot) {
|
||||||
|
myDebug_P(PSTR(" Warm Water comfort setting: Hot"));
|
||||||
|
} else if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Eco) {
|
||||||
|
myDebug_P(PSTR(" Warm Water comfort setting: Eco"));
|
||||||
|
} else if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Intelligent) {
|
||||||
|
myDebug_P(PSTR(" Warm Water comfort setting: Intelligent"));
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// UBAParameterWW
|
_renderIntValue("Warm Water selected temperature", "C", EMS_Boiler.wWSelTemp);
|
||||||
_renderBoolValue("Warm Water activated", EMS_Boiler.wWActivated);
|
_renderIntValue("Warm Water desinfection temperature", "C", EMS_Boiler.wWDesinfectTemp);
|
||||||
_renderBoolValue("Warm Water circulation pump available", EMS_Boiler.wWCircPump);
|
|
||||||
if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Hot) {
|
|
||||||
myDebug_P(PSTR(" Warm Water comfort setting: Hot"));
|
|
||||||
} else if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Eco) {
|
|
||||||
myDebug_P(PSTR(" Warm Water comfort setting: Eco"));
|
|
||||||
} else if (EMS_Boiler.wWComfort == EMS_VALUE_UBAParameterWW_wwComfort_Intelligent) {
|
|
||||||
myDebug_P(PSTR(" Warm Water comfort setting: Intelligent"));
|
|
||||||
}
|
|
||||||
|
|
||||||
_renderIntValue("Warm Water selected temperature", "C", EMS_Boiler.wWSelTemp);
|
// UBAMonitorWWMessage
|
||||||
_renderIntValue("Warm Water desinfection temperature", "C", EMS_Boiler.wWDesinfectTemp);
|
_renderUShortValue("Warm Water current temperature", "C", EMS_Boiler.wWCurTmp);
|
||||||
|
_renderIntValue("Warm Water current tap water flow", "l/min", EMS_Boiler.wWCurFlow, 10);
|
||||||
|
_renderLongValue("Warm Water # starts", "times", EMS_Boiler.wWStarts);
|
||||||
|
if (EMS_Boiler.wWWorkM != EMS_VALUE_LONG_NOTSET) {
|
||||||
|
myDebug_P(PSTR(" Warm Water active time: %d days %d hours %d minutes"),
|
||||||
|
EMS_Boiler.wWWorkM / 1440,
|
||||||
|
(EMS_Boiler.wWWorkM % 1440) / 60,
|
||||||
|
EMS_Boiler.wWWorkM % 60);
|
||||||
|
}
|
||||||
|
_renderBoolValue("Warm Water 3-way valve", EMS_Boiler.wWHeat);
|
||||||
|
|
||||||
// UBAMonitorWWMessage
|
// UBAMonitorFast
|
||||||
_renderUShortValue("Warm Water current temperature", "C", EMS_Boiler.wWCurTmp);
|
_renderIntValue("Selected flow temperature", "C", EMS_Boiler.selFlowTemp);
|
||||||
_renderIntValue("Warm Water current tap water flow", "l/min", EMS_Boiler.wWCurFlow, 10);
|
_renderUShortValue("Current flow temperature", "C", EMS_Boiler.curFlowTemp);
|
||||||
_renderLongValue("Warm Water # starts", "times", EMS_Boiler.wWStarts);
|
_renderUShortValue("Return temperature", "C", EMS_Boiler.retTemp);
|
||||||
if (EMS_Boiler.wWWorkM != EMS_VALUE_LONG_NOTSET) {
|
_renderBoolValue("Gas", EMS_Boiler.burnGas);
|
||||||
myDebug_P(PSTR(" Warm Water active time: %d days %d hours %d minutes"),
|
_renderBoolValue("Boiler pump", EMS_Boiler.heatPmp);
|
||||||
EMS_Boiler.wWWorkM / 1440,
|
_renderBoolValue("Fan", EMS_Boiler.fanWork);
|
||||||
(EMS_Boiler.wWWorkM % 1440) / 60,
|
_renderBoolValue("Ignition", EMS_Boiler.ignWork);
|
||||||
EMS_Boiler.wWWorkM % 60);
|
_renderBoolValue("Circulation pump", EMS_Boiler.wWCirc);
|
||||||
}
|
_renderIntValue("Burner selected max power", "%", EMS_Boiler.selBurnPow);
|
||||||
_renderBoolValue("Warm Water 3-way valve", EMS_Boiler.wWHeat);
|
_renderIntValue("Burner current power", "%", EMS_Boiler.curBurnPow);
|
||||||
|
_renderShortValue("Flame current", "uA", EMS_Boiler.flameCurr);
|
||||||
|
_renderIntValue("System pressure", "bar", EMS_Boiler.sysPress, 10);
|
||||||
|
if (EMS_Boiler.serviceCode == EMS_VALUE_USHORT_NOTSET) {
|
||||||
|
myDebug_P(PSTR(" System service code: %s"), EMS_Boiler.serviceCodeChar);
|
||||||
|
} else {
|
||||||
|
myDebug_P(PSTR(" System service code: %s (%d)"), EMS_Boiler.serviceCodeChar, EMS_Boiler.serviceCode);
|
||||||
|
}
|
||||||
|
|
||||||
// UBAMonitorFast
|
// UBAParametersMessage
|
||||||
_renderIntValue("Selected flow temperature", "C", EMS_Boiler.selFlowTemp);
|
_renderIntValue("Heating temperature setting on the boiler", "C", EMS_Boiler.heating_temp);
|
||||||
_renderUShortValue("Current flow temperature", "C", EMS_Boiler.curFlowTemp);
|
_renderIntValue("Boiler circuit pump modulation max power", "%", EMS_Boiler.pump_mod_max);
|
||||||
_renderUShortValue("Return temperature", "C", EMS_Boiler.retTemp);
|
_renderIntValue("Boiler circuit pump modulation min power", "%", EMS_Boiler.pump_mod_min);
|
||||||
_renderBoolValue("Gas", EMS_Boiler.burnGas);
|
|
||||||
_renderBoolValue("Boiler pump", EMS_Boiler.heatPmp);
|
|
||||||
_renderBoolValue("Fan", EMS_Boiler.fanWork);
|
|
||||||
_renderBoolValue("Ignition", EMS_Boiler.ignWork);
|
|
||||||
_renderBoolValue("Circulation pump", EMS_Boiler.wWCirc);
|
|
||||||
_renderIntValue("Burner selected max power", "%", EMS_Boiler.selBurnPow);
|
|
||||||
_renderIntValue("Burner current power", "%", EMS_Boiler.curBurnPow);
|
|
||||||
_renderShortValue("Flame current", "uA", EMS_Boiler.flameCurr);
|
|
||||||
_renderIntValue("System pressure", "bar", EMS_Boiler.sysPress, 10);
|
|
||||||
if (EMS_Boiler.serviceCode == EMS_VALUE_USHORT_NOTSET) {
|
|
||||||
myDebug_P(PSTR(" System service code: %s"), EMS_Boiler.serviceCodeChar);
|
|
||||||
} else {
|
|
||||||
myDebug_P(PSTR(" System service code: %s (%d)"), EMS_Boiler.serviceCodeChar, EMS_Boiler.serviceCode);
|
|
||||||
}
|
|
||||||
|
|
||||||
// UBAParametersMessage
|
// UBAMonitorSlow
|
||||||
_renderIntValue("Heating temperature setting on the boiler", "C", EMS_Boiler.heating_temp);
|
if (EMS_Boiler.extTemp != EMS_VALUE_SHORT_NOTSET) {
|
||||||
_renderIntValue("Boiler circuit pump modulation max power", "%", EMS_Boiler.pump_mod_max);
|
_renderShortValue("Outside temperature", "C", EMS_Boiler.extTemp);
|
||||||
_renderIntValue("Boiler circuit pump modulation min power", "%", EMS_Boiler.pump_mod_min);
|
}
|
||||||
|
_renderUShortValue("Boiler temperature", "C", EMS_Boiler.boilTemp);
|
||||||
// UBAMonitorSlow
|
_renderUShortValue("Exhaust temperature", "C", EMS_Boiler.exhaustTemp);
|
||||||
if (EMS_Boiler.extTemp != EMS_VALUE_SHORT_NOTSET) {
|
_renderIntValue("Pump modulation", "%", EMS_Boiler.pumpMod);
|
||||||
_renderShortValue("Outside temperature", "C", EMS_Boiler.extTemp);
|
_renderLongValue("Burner # starts", "times", EMS_Boiler.burnStarts);
|
||||||
}
|
if (EMS_Boiler.burnWorkMin != EMS_VALUE_LONG_NOTSET) {
|
||||||
_renderUShortValue("Boiler temperature", "C", EMS_Boiler.boilTemp);
|
myDebug_P(PSTR(" Total burner operating time: %d days %d hours %d minutes"),
|
||||||
_renderUShortValue("Exhaust temperature", "C", EMS_Boiler.exhaustTemp);
|
EMS_Boiler.burnWorkMin / 1440,
|
||||||
_renderIntValue("Pump modulation", "%", EMS_Boiler.pumpMod);
|
(EMS_Boiler.burnWorkMin % 1440) / 60,
|
||||||
_renderLongValue("Burner # starts", "times", EMS_Boiler.burnStarts);
|
EMS_Boiler.burnWorkMin % 60);
|
||||||
if (EMS_Boiler.burnWorkMin != EMS_VALUE_LONG_NOTSET) {
|
}
|
||||||
myDebug_P(PSTR(" Total burner operating time: %d days %d hours %d minutes"),
|
if (EMS_Boiler.heatWorkMin != EMS_VALUE_LONG_NOTSET) {
|
||||||
EMS_Boiler.burnWorkMin / 1440,
|
myDebug_P(PSTR(" Total heat operating time: %d days %d hours %d minutes"),
|
||||||
(EMS_Boiler.burnWorkMin % 1440) / 60,
|
EMS_Boiler.heatWorkMin / 1440,
|
||||||
EMS_Boiler.burnWorkMin % 60);
|
(EMS_Boiler.heatWorkMin % 1440) / 60,
|
||||||
}
|
EMS_Boiler.heatWorkMin % 60);
|
||||||
if (EMS_Boiler.heatWorkMin != EMS_VALUE_LONG_NOTSET) {
|
}
|
||||||
myDebug_P(PSTR(" Total heat operating time: %d days %d hours %d minutes"),
|
if (EMS_Boiler.UBAuptime != EMS_VALUE_LONG_NOTSET) {
|
||||||
EMS_Boiler.heatWorkMin / 1440,
|
myDebug_P(PSTR(" Total UBA working time: %d days %d hours %d minutes"),
|
||||||
(EMS_Boiler.heatWorkMin % 1440) / 60,
|
EMS_Boiler.UBAuptime / 1440,
|
||||||
EMS_Boiler.heatWorkMin % 60);
|
(EMS_Boiler.UBAuptime % 1440) / 60,
|
||||||
}
|
EMS_Boiler.UBAuptime % 60);
|
||||||
if (EMS_Boiler.UBAuptime != EMS_VALUE_LONG_NOTSET) {
|
}
|
||||||
myDebug_P(PSTR(" Total UBA working time: %d days %d hours %d minutes"),
|
|
||||||
EMS_Boiler.UBAuptime / 1440,
|
|
||||||
(EMS_Boiler.UBAuptime % 1440) / 60,
|
|
||||||
EMS_Boiler.UBAuptime % 60);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// For SM10/SM100/SM200 Solar Module
|
// For SM10/SM100/SM200 Solar Module
|
||||||
|
|||||||
12
src/ems.cpp
12
src/ems.cpp
@@ -49,7 +49,7 @@ const uint8_t ems_crc_table[] = {0x00, 0x02, 0x04, 0x06, 0x08, 0x0A, 0x0C, 0x0E,
|
|||||||
0xF9, 0xFB, 0xFD, 0xFF, 0xF1, 0xF3, 0xF5, 0xF7, 0xE9, 0xEB, 0xED, 0xEF, 0xE1, 0xE3, 0xE5, 0xE7};
|
0xF9, 0xFB, 0xFD, 0xFF, 0xF1, 0xF3, 0xF5, 0xF7, 0xE9, 0xEB, 0xED, 0xEF, 0xE1, 0xE3, 0xE5, 0xE7};
|
||||||
|
|
||||||
const uint8_t TX_WRITE_TIMEOUT_COUNT = 2; // 3 retries before timeout
|
const uint8_t TX_WRITE_TIMEOUT_COUNT = 2; // 3 retries before timeout
|
||||||
const uint32_t EMS_BUS_TIMEOUT = 15000; // timeout in ms before recognizing the ems bus is offline (15 seconds)
|
const uint32_t EMS_BUS_TIMEOUT = 45000; // timeout in ms before recognizing the ems bus is offline (45 seconds)
|
||||||
const uint32_t EMS_POLL_TIMEOUT = 5000000; // timeout in microseconds before recognizing the ems bus is offline (5 seconds)
|
const uint32_t EMS_POLL_TIMEOUT = 5000000; // timeout in microseconds before recognizing the ems bus is offline (5 seconds)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -1195,8 +1195,9 @@ void _process_RC30StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
void _process_RC35StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
void _process_RC35StatusMessage(_EMS_RxTelegram * EMS_RxTelegram) {
|
||||||
// exit if...
|
// exit if...
|
||||||
// - the 15th byte (second from last) is 0x00, which I think is flow temp, means HC is not is use
|
// - the 15th byte (second from last) is 0x00, which I think is flow temp, means HC is not is use
|
||||||
// - its not a broadcast, so destination is 0x00
|
// - its not a broadcast, so destination is 0x00 (not in use since 6/1/2020 - issue #238)
|
||||||
if ((EMS_RxTelegram->data[14] == 0x00) || (EMS_RxTelegram->dest != EMS_ID_NONE)) {
|
// if ((EMS_RxTelegram->data[14] == 0x00) || (EMS_RxTelegram->dest != EMS_ID_NONE)) {
|
||||||
|
if (EMS_RxTelegram->data[14] == 0x00) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1369,6 +1370,11 @@ int8_t _getHeatingCircuit(_EMS_RxTelegram * EMS_RxTelegram) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ignore telegrams that have no data, or only a single byte
|
||||||
|
if (EMS_RxTelegram->data_length <= 1) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
int8_t hc;
|
int8_t hc;
|
||||||
|
|
||||||
switch (EMS_RxTelegram->type) {
|
switch (EMS_RxTelegram->type) {
|
||||||
|
|||||||
@@ -12,10 +12,10 @@
|
|||||||
#include "ems.h"
|
#include "ems.h"
|
||||||
|
|
||||||
// Fixed EMS Device IDs
|
// Fixed EMS Device IDs
|
||||||
#define EMS_ID_ME 0x0B // our device, hardcoded as the "Service Key"
|
#define EMS_ID_ME 0x0B // our device, hardcoded as the "Service Key"
|
||||||
#define EMS_ID_BOILER 0x08 // all UBA Boilers have 0x08
|
#define EMS_ID_BOILER 0x08 // all UBA Boilers have 0x08
|
||||||
|
|
||||||
#define EMS_ID_SM 0x30 // Solar Module SM10, SM100, SM200 and ISM1
|
#define EMS_ID_SM 0x30 // Solar Module SM10, SM100, SM200 and ISM1
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Common Type
|
* Common Type
|
||||||
@@ -237,22 +237,23 @@ static const _EMS_Device EMS_Devices[] = {
|
|||||||
// Other devices like controllers and modems
|
// Other devices like controllers and modems
|
||||||
// such as 0x11 for Switching, 0x09 for controllers, 0x02 for Connect, 0x48 for Gateway
|
// such as 0x11 for Switching, 0x09 for controllers, 0x02 for Connect, 0x48 for Gateway
|
||||||
//
|
//
|
||||||
{71, EMS_DEVICE_TYPE_SWITCH, "WM10 Switch Module", EMS_DEVICE_FLAG_NONE}, // 0x11
|
{71, EMS_DEVICE_TYPE_SWITCH, "WM10 Switch Module", EMS_DEVICE_FLAG_NONE}, // 0x11
|
||||||
{68, EMS_DEVICE_TYPE_CONTROLLER, "BC10/RFM20 Receiver", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{68, EMS_DEVICE_TYPE_CONTROLLER, "BC10/RFM20 Receiver", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{218, EMS_DEVICE_TYPE_CONTROLLER, "Junkers M200/Buderus RFM200 Receiver", EMS_DEVICE_FLAG_NONE}, // 0x50
|
{218, EMS_DEVICE_TYPE_CONTROLLER, "Junkers M200/Buderus RFM200 Receiver", EMS_DEVICE_FLAG_NONE}, // 0x50
|
||||||
{190, EMS_DEVICE_TYPE_CONTROLLER, "BC10 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{190, EMS_DEVICE_TYPE_CONTROLLER, "BC10 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{114, EMS_DEVICE_TYPE_CONTROLLER, "BC10 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{114, EMS_DEVICE_TYPE_CONTROLLER, "BC10 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{125, EMS_DEVICE_TYPE_CONTROLLER, "BC25 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{125, EMS_DEVICE_TYPE_CONTROLLER, "BC25 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{169, EMS_DEVICE_TYPE_CONTROLLER, "BC40 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{169, EMS_DEVICE_TYPE_CONTROLLER, "BC40 Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{152, EMS_DEVICE_TYPE_CONTROLLER, "Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{152, EMS_DEVICE_TYPE_CONTROLLER, "Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{95, EMS_DEVICE_TYPE_CONTROLLER, "HT3 Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{95, EMS_DEVICE_TYPE_CONTROLLER, "HT3 Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{209, EMS_DEVICE_TYPE_CONTROLLER, "W-B ErP Boiler Control Panel", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{209, EMS_DEVICE_TYPE_CONTROLLER, "W-B ErP Boiler Control Panel", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{230, EMS_DEVICE_TYPE_CONTROLLER, "BC Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
{230, EMS_DEVICE_TYPE_CONTROLLER, "BC Base Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||||
{205, EMS_DEVICE_TYPE_CONNECT, "Nefit Moduline Easy Connect", EMS_DEVICE_FLAG_NONE}, // 0x02
|
{205, EMS_DEVICE_TYPE_CONNECT, "Nefit Moduline Easy Connect", EMS_DEVICE_FLAG_NONE}, // 0x02
|
||||||
{206, EMS_DEVICE_TYPE_CONNECT, "Bosch Easy Connect", EMS_DEVICE_FLAG_NONE}, // 0x02
|
{206, EMS_DEVICE_TYPE_CONNECT, "Bosch Easy Connect", EMS_DEVICE_FLAG_NONE}, // 0x02
|
||||||
{171, EMS_DEVICE_TYPE_CONNECT, "EMS-OT OpenTherm converter", EMS_DEVICE_FLAG_NONE}, // 0x02
|
{171, EMS_DEVICE_TYPE_CONNECT, "EMS-OT OpenTherm converter", EMS_DEVICE_FLAG_NONE}, // 0x02
|
||||||
{189, EMS_DEVICE_TYPE_GATEWAY, "Web Gateway KM200", EMS_DEVICE_FLAG_NONE}, // 0x48
|
{189, EMS_DEVICE_TYPE_GATEWAY, "Web Gateway KM200", EMS_DEVICE_FLAG_NONE}, // 0x48
|
||||||
{94, EMS_DEVICE_TYPE_GATEWAY, "RC Remote Device", EMS_DEVICE_FLAG_NONE}, // 0x18
|
{94, EMS_DEVICE_TYPE_GATEWAY, "RC Remote Device", EMS_DEVICE_FLAG_NONE}, // 0x18
|
||||||
|
{207, EMS_DEVICE_TYPE_CONTROLLER, "Worcester Sense II/Bosch CS200 Solar Controller", EMS_DEVICE_FLAG_NONE}, // 0x10
|
||||||
|
|
||||||
//
|
//
|
||||||
// Thermostats, typically device id of 0x10, 0x17, 0x18, 0x38 (RC100), 0x39 (Easy)
|
// Thermostats, typically device id of 0x10, 0x17, 0x18, 0x38 (RC100), 0x39 (Easy)
|
||||||
@@ -263,7 +264,7 @@ static const _EMS_Device EMS_Devices[] = {
|
|||||||
{203, EMS_DEVICE_TYPE_THERMOSTAT, "Bosch EasyControl CT200", EMS_DEVICE_FLAG_EASY | EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write
|
{203, EMS_DEVICE_TYPE_THERMOSTAT, "Bosch EasyControl CT200", EMS_DEVICE_FLAG_EASY | EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write
|
||||||
{157, EMS_DEVICE_TYPE_THERMOSTAT, "Buderus RC200/Bosch CW100/Junkers CW100", EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write
|
{157, EMS_DEVICE_TYPE_THERMOSTAT, "Buderus RC200/Bosch CW100/Junkers CW100", EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write
|
||||||
|
|
||||||
// Buderus/Nefit
|
// Buderus/Nefit specific
|
||||||
{79, EMS_DEVICE_TYPE_THERMOSTAT, "RC10/Moduline 100", EMS_DEVICE_FLAG_RC10}, // 0x17
|
{79, EMS_DEVICE_TYPE_THERMOSTAT, "RC10/Moduline 100", EMS_DEVICE_FLAG_RC10}, // 0x17
|
||||||
{77, EMS_DEVICE_TYPE_THERMOSTAT, "RC20/Moduline 300", EMS_DEVICE_FLAG_RC20}, // 0x17
|
{77, EMS_DEVICE_TYPE_THERMOSTAT, "RC20/Moduline 300", EMS_DEVICE_FLAG_RC20}, // 0x17
|
||||||
{67, EMS_DEVICE_TYPE_THERMOSTAT, "RC30", EMS_DEVICE_FLAG_RC30}, // 0x10
|
{67, EMS_DEVICE_TYPE_THERMOSTAT, "RC30", EMS_DEVICE_FLAG_RC30}, // 0x10
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
#define APP_VERSION "1.9.5b14"
|
#define APP_VERSION "1.9.5b16"
|
||||||
|
|||||||
Reference in New Issue
Block a user