Fixxes and Add Tuya Dimmer

* Fix RfRaw and SerialSend5 regression from 6.2.1.15 (#4072)
 * Fix Sonoff Bridge RfRaw receive (#4080)
 * Add support for Tuya Dimmer (#469, #4075)
This commit is contained in:
Theo Arends 2018-10-16 11:21:44 +02:00
parent 36b8f5d293
commit d47ab92862
5 changed files with 32 additions and 28 deletions

View File

@ -2,6 +2,9 @@
* Add TasmotaModbus library for very basic modbus wrapper for TasmotaSerial
* Change xsns_17_senseair.ino to use TasmotaModbus library
* Fix xnrg_05_pzem2.ino for PZEM-014/016 support using TasmotaModbus library (#3694)
* Fix RfRaw and SerialSend5 regression from 6.2.1.15 (#4072)
* Fix Sonoff Bridge RfRaw receive (#4080)
* Add support for Tuya Dimmer (#469, #4075)
*
* 6.2.1.15 20181012
* Fix Color Temperature slider functionality regression from 6.2.1.5 (#4037)

View File

@ -1021,7 +1021,7 @@ void MqttDataHandler(char* topic, byte* data, unsigned int data_len)
Serial.printf("%s", Unescape(dataBuf, &dat_len)); // "Hello\f"
}
else if (5 == index) {
SerialSendRaw(RemoveSpace(dataBuf), strlen(dataBuf)); // "AA004566"
SerialSendRaw(RemoveSpace(dataBuf)); // "AA004566"
}
snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_DONE);
}
@ -2062,7 +2062,7 @@ void Every250mSeconds()
ota_result = (HTTP_UPDATE_FAILED != ESPhttpUpdate.update(mqtt_data));
#else
// If using core stage or 2.5.0+ the syntax has changed
WiFiClient OTAclient;
WiFiClient OTAclient;
ota_result = (HTTP_UPDATE_FAILED != ESPhttpUpdate.update(OTAclient, mqtt_data));
#endif
if (!ota_result) {
@ -2305,7 +2305,7 @@ void SerialInput()
}
/*-------------------------------------------------------------------------------------------*\
* Tuya based Dimmer with Serial Communications to MCU dimmer
* Tuya based Dimmer with Serial Communications to MCU dimmer at 9600 baud
\*-------------------------------------------------------------------------------------------*/
if (TUYA_DIMMER == Settings.module) {
if (serial_in_byte == '\x55') { // Start TUYA Packet

View File

@ -408,6 +408,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = {
NEO_COOLCAM, // Socket Relay Devices
OBI,
ESP_SWITCH, // Switch Devices
TUYA_DIMMER, // Dimmer Devices
H801, // Light Devices
MAGICHOME,
ARILUX_LC01,
@ -419,8 +420,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = {
AILIGHT, // Light Bulbs
PHILIPS,
WITTY, // Development Devices
WEMOS,
TUYA_DIMMER
WEMOS
};
// Default module settings
@ -1137,13 +1137,14 @@ const mytmplt kModules[MAXMODULE] PROGMEM = {
0, 0, 0
},
{ "Tuya Dimmer", // Tuya Dimmer (ESP8266 w/ separate MCU dimmer)
// https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1
0,
GPIO_TXD, // TX to dimmer MCU
0,
GPIO_RXD, // RX from dimmer MCU
0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0,
0, 0
0, 0,
0, 0, 0, 0, 0, 0, // Flash connection
0, 0, 0, 0, 0, 0
}
};

View File

@ -750,13 +750,13 @@ void ClaimSerial()
Settings.baudrate = baudrate / 1200;
}
void SerialSendRaw(char *codes, int size)
void SerialSendRaw(char *codes)
{
char *p;
char stemp[3];
uint8_t code;
size = strlen(codes); // Force size to be strlen of codes, if whitespace was removed it will overrun into unwanted buffer space
int size = strlen(codes);
while (size > 0) {
snprintf(stemp, sizeof(stemp), codes);

View File

@ -310,8 +310,8 @@ boolean SonoffBridgeSerialInput()
}
serial_in_buffer[serial_in_byte_counter++] = serial_in_byte;
if (serial_in_byte_counter == 3) {
if ((0xA6 == serial_in_buffer[serial_in_byte_counter - 2]) || (0xAB == serial_in_buffer[serial_in_byte_counter - 2])) { // AA A6 06 023908010155 55 - 06 is receive_len
receive_len = serial_in_buffer[serial_in_byte_counter - 1]; // Get at least receive_len bytes
if ((0xA6 == serial_in_buffer[1]) || (0xAB == serial_in_buffer[1])) { // AA A6 06 023908010155 55 - 06 is receive_len
receive_len = serial_in_buffer[2]; // Get at least receive_len bytes
}
}
if (((0 == receive_len) && (0x55 == serial_in_byte)) || (serial_in_byte_counter == receive_len + 4)) { // 0x55 - End of text
@ -345,7 +345,7 @@ boolean SonoffBridgeSerialInput()
serial_in_byte_counter = 0;
serial_in_byte = 0;
sonoff_bridge_receive_flag = 1;
receive_len = 0;
receive_len = 0;
}
return 0;
}
@ -537,12 +537,12 @@ boolean SonoffBridgeCommand()
sonoff_bridge_receive_raw_flag = 1;
break;
case 192: // 0xC0 - Beep
char beep[] = "AAC000C055";
SerialSendRaw(beep, sizeof(beep));
char beep[] = "AAC000C055\0";
SerialSendRaw(beep);
break;
}
} else {
SerialSendRaw(RemoveSpace(XdrvMailbox.data), strlen(XdrvMailbox.data));
SerialSendRaw(RemoveSpace(XdrvMailbox.data));
sonoff_bridge_receive_raw_flag = 1;
}
}