From 7b6dc38c3daba9dcd3ef97579c41709789f8d125 Mon Sep 17 00:00:00 2001 From: Paul Derbyshire Date: Mon, 15 Jul 2019 10:54:15 +0200 Subject: [PATCH] https://github.com/proddy/EMS-ESP/issues/145 --- src/ems.cpp | 21 +++++++++++++-------- src/ems_devices.h | 1 + src/version.h | 2 +- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/ems.cpp b/src/ems.cpp index f05540c17..f5eaa5cea 100644 --- a/src/ems.cpp +++ b/src/ems.cpp @@ -1300,9 +1300,7 @@ void _process_RCPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) { EMS_Thermostat.day_mode = _bitRead(EMS_OFFSET_RCPLUSGet_mode_day, 1); // get day mode flag - // room night setpoint is _toByte(2) (value is *2) - // boiler set temp is _toByte(4) (value is *2) - // day night is byte(8), 0x01 for night, 0x00 for day + EMS_Thermostat.mode = _bitRead(EMS_OFFSET_RCPLUSStatusMessage_mode, 1); // bit 1, mode (auto or manual) } // actual set point @@ -1316,6 +1314,13 @@ void _process_RCPLUSStatusMessage(_EMS_RxTelegram * EMS_RxTelegram) { if (EMS_RxTelegram->offset == 6) { // to add... } + + // thermostat mode auto/manual, examples: + // manual : 10 00 FF 0A 01 A5 02 (CRC=16) #data=1 + // auto : Thermostat -> all, type 0x01A5 telegram: 10 00 FF 0A 01 A5 03 (CRC=17) #data=1 + if (EMS_RxTelegram->offset == EMS_OFFSET_RCPLUSStatusMessage_mode) { + EMS_Thermostat.mode = _bitRead(0, 1); // bit 1 + } } /** @@ -1480,18 +1485,18 @@ void _process_SM100Energy(_EMS_RxTelegram * EMS_RxTelegram) { * Type 0xE3 - HeatPump Monitor 1 */ void _process_HPMonitor1(_EMS_RxTelegram * EMS_RxTelegram) { - EMS_HeatPump.HPModulation = _toByte(14); // modulation % + EMS_HeatPump.HPModulation = _toByte(14); // modulation % - EMS_Sys_Status.emsRefreshed = true; // triggers a send the values back via MQTT + EMS_Sys_Status.emsRefreshed = true; // triggers a send the values back via MQTT } /* * Type 0xE5 - HeatPump Monitor 2 */ void _process_HPMonitor2(_EMS_RxTelegram * EMS_RxTelegram) { - EMS_HeatPump.HPSpeed = _toByte(25); // speed % - - EMS_Sys_Status.emsRefreshed = true; // triggers a send the values back via MQTT + EMS_HeatPump.HPSpeed = _toByte(25); // speed % + + EMS_Sys_Status.emsRefreshed = true; // triggers a send the values back via MQTT } /* diff --git a/src/ems_devices.h b/src/ems_devices.h index 21e154f3d..882f859bb 100644 --- a/src/ems_devices.h +++ b/src/ems_devices.h @@ -112,6 +112,7 @@ #define EMS_OFFSET_RCPLUSStatusMessage_setpoint 3 // setpoint temp #define EMS_OFFSET_RCPLUSStatusMessage_curr 0 // current temp #define EMS_OFFSET_RCPLUSGet_mode_day 8 // day/night mode +#define EMS_OFFSET_RCPLUSStatusMessage_mode 0x0A // thermostat mode (auto, manual) // Junkers FR10, FW100 (EMS Plus) #define EMS_TYPE_JunkersStatusMessage 0x6F // is an automatic thermostat broadcast giving us temps diff --git a/src/version.h b/src/version.h index cec3620a1..56c7f85f6 100644 --- a/src/version.h +++ b/src/version.h @@ -6,5 +6,5 @@ #pragma once #define APP_NAME "EMS-ESP" -#define APP_VERSION "1.8.1b15" +#define APP_VERSION "1.8.1b16" #define APP_HOSTNAME "ems-esp"