mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-08 00:39:50 +03:00
code optimizations on EMS device library
This commit is contained in:
@@ -155,155 +155,106 @@
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_pump_mod 5 // pump modulation
|
||||
#define EMS_OFFSET_MMPLUSStatusMessage_valve_status 2 // valve in percent
|
||||
|
||||
|
||||
// Known EMS devices
|
||||
typedef enum {
|
||||
EMS_MODEL_NONE, // unset
|
||||
EMS_MODEL_ALL, // common for all devices
|
||||
|
||||
EMS_MODEL_HP, // heatpump
|
||||
EMS_MODEL_SM, // solar module
|
||||
EMS_MODEL_MM, // mixer module
|
||||
EMS_MODEL_UBA, // boiler
|
||||
|
||||
// and the various thermostats
|
||||
EMS_MODEL_ES73,
|
||||
EMS_MODEL_RC10,
|
||||
EMS_MODEL_RC20,
|
||||
EMS_MODEL_RC20RF,
|
||||
EMS_MODEL_RC30,
|
||||
EMS_MODEL_RC35,
|
||||
EMS_MODEL_EASY,
|
||||
EMS_MODEL_RC300,
|
||||
EMS_MODEL_CW100,
|
||||
EMS_MODEL_RC100,
|
||||
EMS_MODEL_OT,
|
||||
EMS_MODEL_FW100,
|
||||
EMS_MODEL_FR10,
|
||||
EMS_MODEL_FR50,
|
||||
EMS_MODEL_FR100,
|
||||
EMS_MODEL_FR110,
|
||||
EMS_MODEL_FW120,
|
||||
EMS_MODEL_FW200,
|
||||
EMS_MODEL_FR120
|
||||
|
||||
} _EMS_MODEL_ID;
|
||||
|
||||
// EMS types for known boilers. This list will be extended when new devices are recognized.
|
||||
// The device_id is always 0x08
|
||||
// format is PRODUCT ID, DESCRIPTION
|
||||
const _Boiler_Device Boiler_Devices[] = {
|
||||
|
||||
{72, "MC10 Module"},
|
||||
{123, "Buderus GBx72/Nefit Trendline/Junkers Cerapur/Worcester Greenstar Si/27i"},
|
||||
{133, "Buderus GB125/Logamatic MC110"},
|
||||
{115, "Nefit Topline/Buderus GB162"},
|
||||
{203, "Buderus Logamax U122/Junkers Cerapur"},
|
||||
{208, "Buderus Logamax plus/GB192/Bosch Condens GC9000"},
|
||||
{64, "Sieger BK13,BK15/Nefit Smartline/Buderus GB1x2"},
|
||||
{234, "Buderus Logamax Plus GB122"},
|
||||
{95, "Bosch Condens 2500/Buderus Logamax GB062/Junkers Cerapur Top/Worcester Greenstar i/Generic HT3"},
|
||||
{122, "Nefit Proline"},
|
||||
{170, "Buderus Logano GB212"},
|
||||
{172, "Nefit Enviline"}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Known Solar Module types, device id is 0x30
|
||||
* format is PRODUCT ID, DESCRIPTION
|
||||
* Table of all known EMS Devices
|
||||
* ProductID, DeviceType, Description, Flags
|
||||
*/
|
||||
const _SolarModule_Device SolarModule_Devices[] = {
|
||||
const _EMS_Device EMS_Devices[] = {
|
||||
|
||||
{EMS_PRODUCTID_SM10, "SM10 Solar Module"},
|
||||
{EMS_PRODUCTID_SM100, "SM100 Solar Module"},
|
||||
{EMS_PRODUCTID_ISM1, "Junkers ISM1 Solar Module"},
|
||||
{EMS_PRODUCTID_SM50, "SM50 Solar Module"}
|
||||
//
|
||||
// UBA Masters - typically with device_id of 0x08
|
||||
//
|
||||
|
||||
};
|
||||
{72, EMS_DEVICE_TYPE_BOILER, "MC10 Module", EMS_DEVICE_FLAG_NONE},
|
||||
{123, EMS_DEVICE_TYPE_BOILER, "Buderus GBx72/Nefit Trendline/Junkers Cerapur/Worcester Greenstar Si/27i", EMS_DEVICE_FLAG_NONE},
|
||||
{133, EMS_DEVICE_TYPE_BOILER, "Buderus GB125/Logamatic MC110", EMS_DEVICE_FLAG_NONE},
|
||||
{115, EMS_DEVICE_TYPE_BOILER, "Nefit Topline/Buderus GB162", EMS_DEVICE_FLAG_NONE},
|
||||
{203, EMS_DEVICE_TYPE_BOILER, "Buderus Logamax U122/Junkers Cerapur", EMS_DEVICE_FLAG_NONE},
|
||||
{208, EMS_DEVICE_TYPE_BOILER, "Buderus Logamax plus/GB192/Bosch Condens GC9000", EMS_DEVICE_FLAG_NONE},
|
||||
{64, EMS_DEVICE_TYPE_BOILER, "Sieger BK13,BK15/Nefit Smartline/Buderus GB1x2", EMS_DEVICE_FLAG_NONE},
|
||||
{234, EMS_DEVICE_TYPE_BOILER, "Buderus Logamax Plus GB122", EMS_DEVICE_FLAG_NONE},
|
||||
{95, EMS_DEVICE_TYPE_BOILER, "Bosch Condens 2500/Buderus Logamax GB062/Junkers Cerapur Top/Worcester Greenstar i/Generic HT3", EMS_DEVICE_FLAG_NONE},
|
||||
{122, EMS_DEVICE_TYPE_BOILER, "Nefit Proline", EMS_DEVICE_FLAG_NONE},
|
||||
{170, EMS_DEVICE_TYPE_BOILER, "Buderus Logano GB212", EMS_DEVICE_FLAG_NONE},
|
||||
{172, EMS_DEVICE_TYPE_BOILER, "Nefit Enviline", EMS_DEVICE_FLAG_NONE},
|
||||
|
||||
/*
|
||||
* Mixing Units
|
||||
* Typically device id is 0x20 or 0x21
|
||||
* format is PRODUCT ID, DESCRIPTION
|
||||
*/
|
||||
const _Mixing_Device Mixing_Devices[] = {
|
||||
//
|
||||
// Solar Modules - type 0x30
|
||||
//
|
||||
|
||||
{160, "MM100 Mixing Module"},
|
||||
{161, "MM200 Mixing Module"},
|
||||
{69, "MM10 Mixer Module"},
|
||||
{159, "MM50 Mixing Module"},
|
||||
{79, "MM100 Mixer Module"},
|
||||
{80, "MM200 Mixer Module"},
|
||||
{78, "MM400 Mixer Module"}
|
||||
{73, EMS_DEVICE_TYPE_SOLAR, "SM10 Solar Module", EMS_DEVICE_FLAG_SM10},
|
||||
{163, EMS_DEVICE_TYPE_SOLAR, "SM100 Solar Module", EMS_DEVICE_FLAG_SM100},
|
||||
{101, EMS_DEVICE_TYPE_SOLAR, "Junkers ISM1 Solar Module", EMS_DEVICE_FLAG_SM100},
|
||||
{162, EMS_DEVICE_TYPE_SOLAR, "SM50 Solar Module", EMS_DEVICE_FLAG_SM100},
|
||||
|
||||
};
|
||||
//
|
||||
// Mixing Devices - type 0x20 or 0x21
|
||||
//
|
||||
|
||||
// Other EMS devices which are not considered boilers, thermostats or solar modules
|
||||
// format is PRODUCT ID, DEVICE ID, DESCRIPTION
|
||||
const _Other_Device Other_Devices[] = {
|
||||
{160, EMS_DEVICE_TYPE_MIXING, "MM100 Mixing Module", EMS_DEVICE_FLAG_NONE},
|
||||
{161, EMS_DEVICE_TYPE_MIXING, "MM200 Mixing Module", EMS_DEVICE_FLAG_NONE},
|
||||
{69, EMS_DEVICE_TYPE_MIXING, "MM10 Mixer Module", EMS_DEVICE_FLAG_NONE},
|
||||
{159, EMS_DEVICE_TYPE_MIXING, "MM50 Mixing Module", EMS_DEVICE_FLAG_NONE},
|
||||
{79, EMS_DEVICE_TYPE_MIXING, "MM100 Mixer Module", EMS_DEVICE_FLAG_NONE},
|
||||
{80, EMS_DEVICE_TYPE_MIXING, "MM200 Mixer Module", EMS_DEVICE_FLAG_NONE},
|
||||
{78, EMS_DEVICE_TYPE_MIXING, "MM400 Mixer Module", EMS_DEVICE_FLAG_NONE},
|
||||
|
||||
{71, 0x11, "WM10 Switch Module"},
|
||||
//
|
||||
// HeatPump - type 0x38
|
||||
//
|
||||
|
||||
{68, 0x09, "BC10/RFM20 Receiver"},
|
||||
{190, 0x09, "BC10 Base Controller"},
|
||||
{114, 0x09, "BC10 Base Controller"},
|
||||
{125, 0x09, "BC25 Base Controller"},
|
||||
{169, 0x09, "BC40 Base Controller"},
|
||||
{152, 0x09, "Controller"},
|
||||
{95, 0x09, "HT3 Controller"},
|
||||
{230, 0x09, "BC Base Controller"},
|
||||
{252, EMS_DEVICE_TYPE_HEATPUMP, "HeatPump Module", EMS_DEVICE_FLAG_NONE},
|
||||
{200, EMS_DEVICE_TYPE_HEATPUMP, "HeatPump Module", EMS_DEVICE_FLAG_NONE},
|
||||
|
||||
{205, 0x02, "Nefit Moduline Easy Connect"},
|
||||
{206, 0x02, "Bosch Easy Connect"},
|
||||
{171, 0x02, "EMS-OT OpenTherm converter"},
|
||||
//
|
||||
// Other devices, like 0x11 for Switching, 0x09 for controllers, 0x02 for Connect, 0x48 for Gateway
|
||||
//
|
||||
|
||||
{189, EMS_ID_GATEWAY, "Web Gateway KM200"}
|
||||
{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
|
||||
{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
|
||||
{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
|
||||
{152, EMS_DEVICE_TYPE_CONTROLLER, "Controller", EMS_DEVICE_FLAG_NONE}, // 0x09
|
||||
{95, EMS_DEVICE_TYPE_CONTROLLER, "HT3 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
|
||||
{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
|
||||
{189, EMS_DEVICE_TYPE_GATEWAY, "Web Gateway KM200", EMS_DEVICE_FLAG_NONE}, // 0x48
|
||||
|
||||
};
|
||||
|
||||
// heatpump, device ID 0x38
|
||||
// format is PRODUCT ID, DEVICE ID, DESCRIPTION
|
||||
const _HeatPump_Device HeatPump_Devices[] = {
|
||||
|
||||
{252, "HeatPump Module"},
|
||||
{200, "HeatPump Module"}
|
||||
|
||||
};
|
||||
|
||||
/*
|
||||
* Known thermostat types and their capabilities
|
||||
* format is MODEL_ID, PRODUCT ID, DEVICE ID, DESCRIPTION
|
||||
* Typically on DeviceID 0x10 or 0x18
|
||||
*/
|
||||
const _Thermostat_Device Thermostat_Devices[] = {
|
||||
//
|
||||
// Thermostats, typically device id of 0x10, 0x17 and 0x18
|
||||
//
|
||||
|
||||
// Easy devices - not currently supporting write operations
|
||||
{EMS_MODEL_EASY, 202, 0x18, "Logamatic TC100/Nefit Moduline Easy", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_EASY, 203, 0x18, "Bosch EasyControl CT200", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_CW100, 157, 0x18, "Buderus RC200/Bosch CW100/Junkers CW100", EMS_THERMOSTAT_WRITE_NO},
|
||||
{202, EMS_DEVICE_TYPE_THERMOSTAT, "Logamatic TC100/Nefit Moduline Easy", 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
|
||||
|
||||
// Buderus/Nefit
|
||||
{EMS_MODEL_RC10, 79, 0x17, "RC10/Moduline 100", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC20, 77, 0x17, "RC20/Moduline 300", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC20RF, 93, 0x18, "RC20RF", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC30, 67, 0x10, "RC30", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC30, 78, 0x10, "RC30/Moduline 400", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC35, 86, 0x10, "RC35", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC300, 158, 0x10, "RC300/RC310/Moduline 3000/Bosch CW400", EMS_THERMOSTAT_WRITE_YES},
|
||||
{EMS_MODEL_RC100, 165, 0x18, "RC100/Moduline 1010", EMS_THERMOSTAT_WRITE_NO},
|
||||
{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
|
||||
{93, EMS_DEVICE_TYPE_THERMOSTAT, "RC20RF", EMS_DEVICE_FLAG_RC20}, // 0x18
|
||||
{67, EMS_DEVICE_TYPE_THERMOSTAT, "RC30", EMS_DEVICE_FLAG_RC30}, // 0x10
|
||||
{78, EMS_DEVICE_TYPE_THERMOSTAT, "RC30/Moduline 400", EMS_DEVICE_FLAG_RC30}, // 0x10
|
||||
{86, EMS_DEVICE_TYPE_THERMOSTAT, "RC35", EMS_DEVICE_FLAG_RC35}, // 0x10
|
||||
{158, EMS_DEVICE_TYPE_THERMOSTAT, "RC300/RC310/Moduline 3000/Bosch CW400", EMS_DEVICE_FLAG_RC300}, // 0x10
|
||||
{165, EMS_DEVICE_TYPE_THERMOSTAT, "RC100/Moduline 1010", EMS_DEVICE_FLAG_RC300 & EMS_DEVICE_FLAG_NO_WRITE}, // 0x18, cannot write
|
||||
|
||||
// Sieger
|
||||
{EMS_MODEL_ES73, 76, 0x10, "Sieger ES73", EMS_THERMOSTAT_WRITE_YES},
|
||||
{076, EMS_DEVICE_TYPE_THERMOSTAT, "Sieger ES73", EMS_DEVICE_FLAG_RC35}, // 0x10
|
||||
|
||||
// Junkers
|
||||
{EMS_MODEL_FW100, 105, 0x10, "Junkers FW100", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FW200, 106, 0x10, "Junkers FW200", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FR100, 107, 0x18, "Junkers FR100", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FR110, 108, 0x18, "Junkers FR110", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FR10, 111, 0x18, "Junkers FR10", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FR120, 191, 0x10, "Junkers FR120", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FW120, 192, 0x10, "Junkers FW120", EMS_THERMOSTAT_WRITE_NO},
|
||||
{EMS_MODEL_FR50, 147, 0x10, "Junkers FR50", EMS_THERMOSTAT_WRITE_NO}
|
||||
{105, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FW100", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{106, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FW200", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{107, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FR100", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{108, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FR110", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{111, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FR10", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{191, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FR120", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{192, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FW120", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE}, // 0x10, cannot write
|
||||
{147, EMS_DEVICE_TYPE_THERMOSTAT, "Junkers FR50", EMS_DEVICE_FLAG_JUNKERS & EMS_DEVICE_FLAG_NO_WRITE} // 0x10, cannot write
|
||||
|
||||
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user