Merge pull request #15256 from benjaminnestler/tuya-option-137

Tuya option 137
This commit is contained in:
Theo Arends 2022-03-31 14:04:07 +02:00 committed by GitHub
commit eabb95d164
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 2 deletions

View File

@ -346,6 +346,7 @@
#define TUYA_SETOPTION_20 false // [SetOption54] Apply SetOption20 settings to Tuya device #define TUYA_SETOPTION_20 false // [SetOption54] Apply SetOption20 settings to Tuya device
#define TUYA_ALLOW_DIMMER_0 false // [SetOption131] Allow save dimmer = 0 receved by MCU #define TUYA_ALLOW_DIMMER_0 false // [SetOption131] Allow save dimmer = 0 receved by MCU
#define TUYA_TEMP_SET_RES 1 // [TuyaTempSetRes] Maximum number of decimals (0 - 3) showing sensor TemperatureSet #define TUYA_TEMP_SET_RES 1 // [TuyaTempSetRes] Maximum number of decimals (0 - 3) showing sensor TemperatureSet
#define TUYA_SETOPTION_137 false // [SetOption137] Avoid mqtt-publish of Tuya MCU heartbeat responses
#define IR_ADD_RAW_DATA false // [SetOption58] Add IR Raw data to JSON message #define IR_ADD_RAW_DATA false // [SetOption58] Add IR Raw data to JSON message
#define BUZZER_ENABLE false // [SetOption67] Enable buzzer when available #define BUZZER_ENABLE false // [SetOption67] Enable buzzer when available
#define DS18X20_PULL_UP false // [SetOption74] Enable internal pullup for single DS18x20 sensor #define DS18X20_PULL_UP false // [SetOption74] Enable internal pullup for single DS18x20 sensor

View File

@ -166,7 +166,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu
uint32_t pwm_force_same_phase : 1; // bit 20 (v10.1.0.6) - SetOption134 - (PWM) force PWM lights to start at same phase, default is to spread phases to minimze overlap (also needed for H-bridge) uint32_t pwm_force_same_phase : 1; // bit 20 (v10.1.0.6) - SetOption134 - (PWM) force PWM lights to start at same phase, default is to spread phases to minimze overlap (also needed for H-bridge)
uint32_t display_no_splash : 1; // bit 21 (v11.0.0.2) - SetOption135 - (Display & LVGL) forece disbabling default splash screen uint32_t display_no_splash : 1; // bit 21 (v11.0.0.2) - SetOption135 - (Display & LVGL) forece disbabling default splash screen
uint32_t tuyasns_no_immediate : 1; // bit 22 (v11.0.0.4) - SetOption136 - (TuyaSNS) When ON disable publish single SNS value on Tuya Receive (keep Teleperiod) uint32_t tuyasns_no_immediate : 1; // bit 22 (v11.0.0.4) - SetOption136 - (TuyaSNS) When ON disable publish single SNS value on Tuya Receive (keep Teleperiod)
uint32_t spare23 : 1; // bit 23 uint32_t tuya_exclude_heartbeat : 1; // bit 23 (v11.0.0.5) - SetOption137 - (Tuya) When Set, avoid the (mqtt-) publish of Tuya MCU Heartbeat response if SetOption66 is active
uint32_t spare24 : 1; // bit 24 uint32_t spare24 : 1; // bit 24
uint32_t spare25 : 1; // bit 25 uint32_t spare25 : 1; // bit 25
uint32_t spare26 : 1; // bit 26 uint32_t spare26 : 1; // bit 26

View File

@ -1208,6 +1208,7 @@ void SettingsDefaultSet2(void) {
// Tuya // Tuya
flag3.tuya_apply_o20 |= TUYA_SETOPTION_20; flag3.tuya_apply_o20 |= TUYA_SETOPTION_20;
flag5.tuya_allow_dimmer_0 |= TUYA_ALLOW_DIMMER_0; flag5.tuya_allow_dimmer_0 |= TUYA_ALLOW_DIMMER_0;
flag5.tuya_exclude_heartbeat |= TUYA_SETOPTION_137;
flag3.tuya_serial_mqtt_publish |= MQTT_TUYA_RECEIVED; flag3.tuya_serial_mqtt_publish |= MQTT_TUYA_RECEIVED;
mbflag2.temperature_set_res |= TUYA_TEMP_SET_RES; mbflag2.temperature_set_res |= TUYA_TEMP_SET_RES;

View File

@ -1243,6 +1243,7 @@ void TuyaSerialInput(void)
uint8_t dpId = 0; uint8_t dpId = 0;
uint8_t dpDataType = 0; uint8_t dpDataType = 0;
char DataStr[15]; char DataStr[15];
bool isHeartbeat = false;
if (len > 0) { if (len > 0) {
ResponseAppend_P(PSTR(",\"CmndData\":\"%s\""), ToHex_P((unsigned char*)&Tuya.buffer[6], len, hex_char, sizeof(hex_char))); ResponseAppend_P(PSTR(",\"CmndData\":\"%s\""), ToHex_P((unsigned char*)&Tuya.buffer[6], len, hex_char, sizeof(hex_char)));
@ -1286,11 +1287,16 @@ void TuyaSerialInput(void)
dpidStart += dpDataLen + 4; dpidStart += dpDataLen + 4;
} }
} }
else if (TUYA_CMD_HEARTBEAT == Tuya.buffer[3]) {
isHeartbeat = true;
}
} }
ResponseAppend_P(PSTR("}}")); ResponseAppend_P(PSTR("}}"));
if (Settings->flag3.tuya_serial_mqtt_publish) { // SetOption66 - Enable TuyaMcuReceived messages over Mqtt if (Settings->flag3.tuya_serial_mqtt_publish) { // SetOption66 - Enable TuyaMcuReceived messages over Mqtt
if (!(isHeartbeat && Settings->flag5.tuya_exclude_heartbeat)) { // SetOption137 - (Tuya) When Set, avoid the (mqtt-) publish of Tuya MCU Heartbeat response if SetOption66 is active
MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_TUYA_MCU_RECEIVED)); MqttPublishPrefixTopic_P(RESULT_OR_TELE, PSTR(D_JSON_TUYA_MCU_RECEIVED));
}
} else { } else {
AddLog(LOG_LEVEL_DEBUG, ResponseData()); AddLog(LOG_LEVEL_DEBUG, ResponseData());
} }