Skip to content

Commit 4756908

Browse files
grzegorz914josef109
authored andcommitted
New feature Auto Clear Remote Temp for MiElHVAC (arendst#22370)
* Add prohibit function for MiElHVAC Add Prohibit functions: * Power * Temperature * Mode and all combinations of this functions Updated VaneV names for better identify * Fixed Compressor and Operation for MiElHVAC Changed Widevane position name from ISEE to AUTO sam as in MELCLoud * Revert "Fixed Compressor and Operation for MiElHVAC" This reverts commit f0973c8. * New feature for MiElHVAC * Added Compressor map * Added Operation Power in Watts * Added Operation Energy in kWh * Changed Widevane position name from ISEE to AUTO, displays sam as in * Changed all map value to lover case MELCloud * New feature for MiElHVAC * Add device operation time in minutes * New feature Outdoor Temperature for MiElHVAC * Add Outdoor Temperature * New feature Compressor Frequency for MiElHVAC * Added Outdoor Temperature * Renamed internal properties due typo operating and oprating to operation * New feature Auto Clear Remote Temp for MiElHVAC * This PR add auto clear remote temperature function * This funcion is call on first run and after 10 sec the remote temperature stop refresh its value * Send manually Clear command is also available * change function name, small corrections * added auto clear time configurable using cmnd
1 parent 3a23be4 commit 4756908

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

tasmota/tasmota_xdrv_driver/xdrv_44_miel_hvac.ino

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,15 @@
4444
#define D_CMND_MIEL_HVAC_SETAIRDIRECTION "HVACSetAirDirection"
4545
#define D_CMND_MIEL_HVAC_SETPROHIBIT "HVACSetProhibit"
4646
#define D_CMND_MIEL_HVAC_REMOTETEMP "HVACRemoteTemp"
47+
#define D_CMND_MIEL_HVAC_REMOTETEMP_AUTO_CLEAR_TIME "HVACRemoteTempClearTime"
4748

4849
#include <TasmotaSerial.h>
4950

5051
/* from hvac */
5152
bool temp_type = false;
53+
bool remotetemp_clear = true;
54+
unsigned long remotetemp_auto_clear_time = 10000;
55+
unsigned long remotetemp_last_call_time = 0;
5256

5357
struct miel_hvac_header {
5458
uint8_t start;
@@ -944,6 +948,39 @@ miel_hvac_remotetemp_degc2old(long degc)
944948
MIEL_HVAC_REMOTETEMP_OLD_FACTOR);
945949
}
946950

951+
static void
952+
miel_hvac_auto_clear_remotetemp(void)
953+
{
954+
struct miel_hvac_softc *sc = miel_hvac_sc;
955+
struct miel_hvac_msg_remotetemp *rt = &sc->sc_remotetemp;
956+
uint8_t control = MIEL_HVAC_REMOTETEMP_CLR;
957+
long degc = 0;
958+
959+
memset(rt, 0, sizeof(*rt));
960+
rt->seven = 0x7;
961+
rt->control = control;
962+
rt->temp_old = miel_hvac_remotetemp_degc2old(degc);
963+
rt->temp = (degc + MIEL_HVAC_REMOTETEMP_OFFSET) * MIEL_HVAC_REMOTETEMP_OLD_FACTOR;
964+
965+
remotetemp_clear = false;
966+
}
967+
968+
static void
969+
miel_hvac_cmnd_remotetemp_auto_clear_time(void)
970+
{
971+
if (XdrvMailbox.data_len == 0)
972+
return;
973+
974+
unsigned long clear_time = strtoul(XdrvMailbox.data, nullptr, 10);
975+
if (clear_time == 0) {
976+
miel_hvac_respond_unsupported();
977+
return;
978+
}
979+
remotetemp_auto_clear_time = clear_time;
980+
981+
ResponseCmndNumber(remotetemp_auto_clear_time);
982+
}
983+
947984
static void
948985
miel_hvac_cmnd_remotetemp(void)
949986
{
@@ -960,6 +997,8 @@ miel_hvac_cmnd_remotetemp(void)
960997
degc = 0;
961998

962999
ResponseCmndChar_P("clear");
1000+
remotetemp_clear = false;
1001+
remotetemp_last_call_time = 0;
9631002
} else {
9641003
degc = strtol(XdrvMailbox.data, nullptr, 0);
9651004

@@ -970,6 +1009,8 @@ miel_hvac_cmnd_remotetemp(void)
9701009
degc = MIEL_HVAC_REMOTETEMP_MAX;
9711010

9721011
ResponseCmndNumber(degc);
1012+
remotetemp_clear = true;
1013+
remotetemp_last_call_time = millis();
9731014
}
9741015

9751016
memset(rt, 0, sizeof(*rt));
@@ -1539,6 +1580,7 @@ static const char miel_hvac_cmnd_names[] PROGMEM =
15391580
"|" D_CMND_MIEL_HVAC_SETAIRDIRECTION
15401581
"|" D_CMND_MIEL_HVAC_SETPROHIBIT
15411582
"|" D_CMND_MIEL_HVAC_REMOTETEMP
1583+
"|" D_CMND_MIEL_HVAC_REMOTETEMP_AUTO_CLEAR_TIME
15421584
#ifdef MIEL_HVAC_DEBUG
15431585
"|" "HVACRequest"
15441586
#endif
@@ -1554,6 +1596,7 @@ static void (*const miel_hvac_cmnds[])(void) PROGMEM = {
15541596
&miel_hvac_cmnd_setairdirection,
15551597
&miel_hvac_cmnd_setprohibit,
15561598
&miel_hvac_cmnd_remotetemp,
1599+
&miel_hvac_cmnd_remotetemp_auto_clear_time,
15571600
#ifdef MIEL_HVAC_DEBUG
15581601
&miel_hvac_cmnd_request,
15591602
#endif
@@ -1592,6 +1635,9 @@ bool Xdrv44(uint32_t function) {
15921635
case FUNC_EVERY_100_MSECOND:
15931636
case FUNC_EVERY_200_MSECOND:
15941637
case FUNC_EVERY_SECOND:
1638+
if (remotetemp_clear && ((millis() - remotetemp_last_call_time) > remotetemp_auto_clear_time || remotetemp_last_call_time == 0)) {
1639+
miel_hvac_auto_clear_remotetemp();
1640+
}
15951641
break;
15961642

15971643
case FUNC_JSON_APPEND:

0 commit comments

Comments
 (0)