minor updates to solar cfg - #616

This commit is contained in:
proddy
2020-11-17 18:12:29 +01:00
parent 4504f25016
commit 52e120aea2
3 changed files with 35 additions and 32 deletions

View File

@@ -7,6 +7,7 @@
- `wwonetime` for RC300 thermostat - `wwonetime` for RC300 thermostat
- expose test framework via api (#611) - expose test framework via api (#611)
- SysLog has enable/disable flag in WebUI - SysLog has enable/disable flag in WebUI
- Add solar configuration telegrams (#616) [thanks @hpanther]
### Fixed ### Fixed
- mixer IPM pumpstatus - mixer IPM pumpstatus

View File

@@ -39,7 +39,7 @@ Solar::Solar(uint8_t device_type, uint8_t device_id, uint8_t product_id, const s
register_telegram_type(0x07AA, F("SM100wwStatus"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100wwStatus(t); }); register_telegram_type(0x07AA, F("SM100wwStatus"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100wwStatus(t); });
register_telegram_type(0x07AB, F("SM100wwCommand"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100wwCommand(t); }); register_telegram_type(0x07AB, F("SM100wwCommand"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100wwCommand(t); });
} else { } else {
register_telegram_type(EMS_TYPE_ParamCfg, F("ParamCfg"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100ParamCfg(t); }); register_telegram_type(0xF9, F("ParamCfg"), false, [&](std::shared_ptr<const Telegram> t) { process_SM100ParamCfg(t); });
register_telegram_type(0x0358, F("SM100SystemConfig"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100SystemConfig(t); }); register_telegram_type(0x0358, F("SM100SystemConfig"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100SystemConfig(t); });
register_telegram_type(0x035A, F("SM100SolarCircuitConfig"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100SolarCircuitConfig(t); }); register_telegram_type(0x035A, F("SM100SolarCircuitConfig"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100SolarCircuitConfig(t); });
register_telegram_type(0x0362, F("SM100Monitor"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100Monitor(t); }); register_telegram_type(0x0362, F("SM100Monitor"), true, [&](std::shared_ptr<const Telegram> t) { process_SM100Monitor(t); });
@@ -338,8 +338,7 @@ void Solar::process_SM100ParamCfg(std::shared_ptr<const Telegram> telegram) {
telegram->read_value(max, 13); telegram->read_value(max, 13);
telegram->read_value(cur, 17); telegram->read_value(cur, 17);
LOG_DEBUG(F("SM100ParamCfg param=0x%04X, offset=%d, min=%d, default=%d, max=%d, current=%d"), // LOG_DEBUG(F("SM100ParamCfg param=0x%04X, offset=%d, min=%d, default=%d, max=%d, current=%d"), t_id, of, min, def, max, cur);
t_id, of, min, def, max, cur);
} }
/* /*
@@ -378,11 +377,13 @@ void Solar::process_SM100wwTemperature(std::shared_ptr<const Telegram> telegram)
// changed_ |= telegram->read_value(wwTemp_5_, 8); // changed_ |= telegram->read_value(wwTemp_5_, 8);
// changed_ |= telegram->read_value(wwTemp_7_, 12); // changed_ |= telegram->read_value(wwTemp_7_, 12);
} }
// SM100wwStatus - 0x07AA // SM100wwStatus - 0x07AA
// Solar Module(0x2A) -> (0x00), (0x7AA), data: 64 00 04 00 03 00 28 01 0F // Solar Module(0x2A) -> (0x00), (0x7AA), data: 64 00 04 00 03 00 28 01 0F
void Solar::process_SM100wwStatus(std::shared_ptr<const Telegram> telegram) { void Solar::process_SM100wwStatus(std::shared_ptr<const Telegram> telegram) {
// changed_ |= telegram->read_value(wwPump_, 0); // changed_ |= telegram->read_value(wwPump_, 0);
} }
// SM100wwCommand - 0x07AB // SM100wwCommand - 0x07AB
// Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01 // Thermostat(0x10) -> Solar Module(0x2A), (0x7AB), data: 01 00 01
void Solar::process_SM100wwCommand(std::shared_ptr<const Telegram> telegram) { void Solar::process_SM100wwCommand(std::shared_ptr<const Telegram> telegram) {
@@ -444,7 +445,6 @@ void Solar::process_SM100CollectorConfig(std::shared_ptr<const Telegram> telegra
changed_ |= telegram->read_value(collector1Type_, 5, 1); changed_ |= telegram->read_value(collector1Type_, 5, 1);
} }
/* /*
* SM100Energy - type 0x038E EMS+ for energy readings * SM100Energy - type 0x038E EMS+ for energy readings
* e.g. 30 00 FF 00 02 8E 00 00 00 00 00 00 06 C5 00 00 76 35 * e.g. 30 00 FF 00 02 8E 00 00 00 00 00 00 06 C5 00 00 76 35
@@ -489,15 +489,19 @@ void Solar::process_ISM1Set(std::shared_ptr<const Telegram> telegram) {
changed_ |= telegram->read_value(setpoint_maxBottomTemp_, 6); changed_ |= telegram->read_value(setpoint_maxBottomTemp_, 6);
} }
// set temperature for tank
bool Solar::set_SM100Tank1MaxTemp(const char * value, const int8_t id) { bool Solar::set_SM100Tank1MaxTemp(const char * value, const int8_t id) {
int temperature; int temperature;
if(! Helpers::value2number(value, temperature)) return false; if (!Helpers::value2number(value, temperature)) {
tank1MaxTempCurrent_=temperature; return false;
uint8_t data=(uint8_t) temperature; }
// write value
// 90 30 FF 03 02 5A 59 B3 // 90 30 FF 03 02 5A 59 B3
EMSdevice::write_command(0x35A, 0x03, &data, sizeof(data), 0); // note: optionally add the validate to 0x035A which will pick up the adjusted tank1MaxTempCurrent_
write_command(0x35A, 0x03, (uint8_t)temperature);
return true; return true;
} }
} // namespace emsesp } // namespace emsesp

View File

@@ -234,14 +234,12 @@ class EMSdevice {
UNKNOWN UNKNOWN
}; };
// device IDs // static device IDs
static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA static constexpr uint8_t EMS_DEVICE_ID_BOILER = 0x08; // fixed device_id for Master Boiler/UBA
static constexpr uint8_t EMS_DEVICE_ID_MODEM = 0x48; // gateways like the KM200
// type IDs // generic type IDs
static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices. static constexpr uint16_t EMS_TYPE_VERSION = 0x02; // type ID for Version information. Generic across all EMS devices.
static constexpr uint16_t EMS_TYPE_UBADevices = 0x07; // EMS connected devices static constexpr uint16_t EMS_TYPE_UBADevices = 0x07; // EMS connected devices
static constexpr uint16_t EMS_TYPE_ParamCfg = 0xF9; // EMS parameter min/default/max/current
// device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags // device flags: The lower 4 bits hold the unique identifier, the upper 4 bits are used for specific flags
static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0; static constexpr uint8_t EMS_DEVICE_FLAG_NONE = 0;