diff --git a/platformio.ini b/platformio.ini index f721a496a..6efc00e30 100644 --- a/platformio.ini +++ b/platformio.ini @@ -11,7 +11,7 @@ src_dir = sonoff ; *** Uncomment one of the lines below to build/upload only one environment -;env_default = sonoff +env_default = sonoff ;env_default = sonoff-minimal ;env_default = sonoff-basic ;env_default = sonoff-classic @@ -57,7 +57,7 @@ platform = espressif8266@1.8.0 build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m0.ld -lstdc++ -lsupc++ -; lwIP 1.4 +; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY @@ -65,19 +65,12 @@ build_flags = ${esp82xx_defaults.build_flags} -DPIO_FRAMEWORK_ARDUINO_LWIP2_HIGHER_BANDWIDTH -DVTABLES_IN_FLASH -[core_2_5_1] -; *** Esp8266 core for Arduino version 2.5.1 -platform = espressif8266@~2.1.1 +[core_2_5_0] +; *** Esp8266 core for Arduino version 2.5.0 +platform = espressif8266@2.0.1 build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m.ld -; Code optimization see https://github.com/esp8266/Arduino/issues/5790#issuecomment-475672473 - -O2 - -DBEARSSL_SSL_BASIC -; nonos-sdk 22x - -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x -; nonos-sdk-pre-v3 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 -; lwIP 1.4 +; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY @@ -96,14 +89,11 @@ build_flags = ${esp82xx_defaults.build_flags} platform = https://github.com/platformio/platform-espressif8266.git#feature/stage build_flags = ${esp82xx_defaults.build_flags} -Wl,-Teagle.flash.1m.ld -; Code optimization see https://github.com/esp8266/Arduino/issues/5790#issuecomment-475672473 - -O2 - -DBEARSSL_SSL_BASIC ; nonos-sdk 22x -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK22x ; nonos-sdk-pre-v3 -; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 -; lwIP 1.4 +; -DPIO_FRAMEWORK_ARDUINO_ESPRESSIF_SDK3 +; lwIP 1.4 (Default) ; -DPIO_FRAMEWORK_ARDUINO_LWIP_HIGHER_BANDWIDTH ; lwIP 2 - Low Memory ; -DPIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY @@ -129,12 +119,12 @@ build_flags = ${esp82xx_defaults.build_flags} [core_active] ; Select one core set for platform and build_flags -;platform = ${core_2_3_0.platform} -;build_flags = ${core_2_3_0.build_flags} +platform = ${core_2_3_0.platform} +build_flags = ${core_2_3_0.build_flags} ;platform = ${core_2_4_2.platform} ;build_flags = ${core_2_4_2.build_flags} -platform = ${core_2_5_1.platform} -build_flags = ${core_2_5_1.build_flags} +;platform = ${core_2_5_0.platform} +;build_flags = ${core_2_5_0.build_flags} ;platform = ${core_stage.platform} ;build_flags = ${core_stage.build_flags} @@ -165,7 +155,7 @@ upload_speed = 115200 upload_resetmethod = nodemcu ; *** Upload Serial reset method for Wemos and NodeMCU -upload_port = COM5 +upload_port = COM4 extra_scripts = pio/strip-floats.py ; *** Upload file to OTA server using SCP @@ -353,7 +343,7 @@ board = ${common.board} board_build.flash_mode = ${common.board_build.flash_mode} board_build.f_cpu = ${common.board_build.f_cpu} build_unflags = ${common.build_unflags} -build_flags = ${common.build_flags} -DMY_LANGUAGE=es-ES +build_flags = ${common.build_flags} -DMY_LANGUAGE=es-AR monitor_speed = ${common.monitor_speed} upload_port = ${common.upload_port} upload_resetmethod = ${common.upload_resetmethod} diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 945261e1c..f9081e881 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -62,10 +62,10 @@ #define WIFI_SUBNETMASK "255.255.255.0" // [IpAddress3] If not using DHCP set Network mask #define WIFI_DNS "192.168.1.1" // [IpAddress4] If not using DHCP set DNS IP address (might be equal to WIFI_GATEWAY) -#define STA_SSID1 "" // [Ssid1] Wifi SSID -#define STA_PASS1 "" // [Password1] Wifi password -#define STA_SSID2 "" // [Ssid2] Optional alternate AP Wifi SSID -#define STA_PASS2 "" // [Password2] Optional alternate AP Wifi password +#define STA_SSID1 "H-Net-2G_SHD" // [Ssid1] Wifi SSID +#define STA_PASS1 "abcd1234" // [Password1] Wifi password +#define STA_SSID2 "H-Net-2G" // [Ssid2] Optional alternate AP Wifi SSID +#define STA_PASS2 "abcd1234" // [Password2] Optional alternate AP Wifi password #define WIFI_CONFIG_TOOL WIFI_RETRY // [WifiConfig] Default tool if wifi fails to connect // (WIFI_RESTART, WIFI_SMARTCONFIG, WIFI_MANAGER, WIFI_WPSCONFIG, WIFI_RETRY, WIFI_WAIT, WIFI_SERIAL) #define WIFI_CONFIG_NO_SSID WIFI_WPSCONFIG // Default tool if wifi fails to connect and no SSID is configured @@ -87,12 +87,12 @@ // -- MQTT ---------------------------------------- #define MQTT_USE 1 // [SetOption3] Select default MQTT use (0 = Off, 1 = On) -#define MQTT_HOST "" // [MqttHost] +#define MQTT_HOST "192.168.1.10" // [MqttHost] #define MQTT_FINGERPRINT1 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint1] #define MQTT_FINGERPRINT2 "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" // [MqttFingerprint2] #define MQTT_PORT 1883 // [MqttPort] MQTT port (10123 on CloudMQTT) -#define MQTT_USER "DVES_USER" // [MqttUser] MQTT user -#define MQTT_PASS "DVES_PASS" // [MqttPassword] MQTT password +#define MQTT_USER "shd_mqtt_user" // [MqttUser] MQTT user +#define MQTT_PASS "abcd1234" // [MqttPassword] MQTT password #define MQTT_BUTTON_RETAIN 0 // [ButtonRetain] Button may send retain flag (0 = off, 1 = on) #define MQTT_POWER_RETAIN 0 // [PowerRetain] Power status message may send retain flag (0 = off, 1 = on) diff --git a/sonoff/settings.h b/sonoff/settings.h index c08c3e041..185880a00 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -78,7 +78,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t no_hold_retain : 1; // bit 12 (v6.4.1.19) - SetOption62 - Don't use retain flag on HOLD messages uint32_t no_power_feedback : 1; // bit 13 (v6.5.0.9) - SetOption63 - Don't scan relay power state at restart uint32_t use_underscore : 1; // bit 14 (v6.5.0.12) - SetOption64 - Enable "_" instead of "-" as sensor index separator - uint32_t spare15 : 1; + uint32_t tuya_show_dimmer : 1; // bit 15 (v6.5.0.12) - SetOption65 - Enable or Disable Dimmer slider control uint32_t spare16 : 1; uint32_t spare17 : 1; uint32_t spare18 : 1; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 6e1260c78..d58955234 100755 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -1535,6 +1535,8 @@ void ExecuteCommandPower(uint8_t device, uint8_t state, int source) // ShowSource(source); + XdrvMailbox.notused = device; + if (SONOFF_IFAN02 == my_module_type) { blink_mask &= 1; // No blinking on the fan relays Settings.flag.interlock = 0; // No interlock mode as it is already done by the microcontroller diff --git a/sonoff/xdrv_01_webserver.ino b/sonoff/xdrv_01_webserver.ino index dfbce53ba..0b33152a6 100644 --- a/sonoff/xdrv_01_webserver.ino +++ b/sonoff/xdrv_01_webserver.ino @@ -890,7 +890,10 @@ void HandleRoot(void) if ((LST_COLDWARM == (light_type &7)) || (LST_RGBWC == (light_type &7))) { WSContentSend_P(HTTP_MSG_SLIDER1, LightGetColorTemp()); } - WSContentSend_P(HTTP_MSG_SLIDER2, Settings.light_dimmer); + if(Settings.flag3.tuya_show_dimmer == 1) + { + WSContentSend_P(HTTP_MSG_SLIDER2, Settings.light_dimmer); + } } WSContentSend_P(HTTP_TABLE100); WSContentSend_P(PSTR("")); diff --git a/sonoff/xdrv_16_tuyadimmer.ino b/sonoff/xdrv_16_tuyadimmer.ino index ffb44adab..5e883b12c 100644 --- a/sonoff/xdrv_16_tuyadimmer.ino +++ b/sonoff/xdrv_16_tuyadimmer.ino @@ -123,16 +123,26 @@ bool TuyaSetPower(void) int16_t source = XdrvMailbox.payload; if (source != SRC_SWITCH && TuyaSerial) { // ignore to prevent loop from pushing state from faceplate interaction - - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: SetDevicePower.rpower=%d"), rpower); - - TuyaSendBool(TUYA_POWER_ID, rpower); + boolean Bin[] = {0,0,0,0}; + convertDecToBin(rpower, Bin); + TuyaSendBool(XdrvMailbox.notused, Bin[XdrvMailbox.notused-1]); status = true; } return status; } +void convertDecToBin(int Dec, boolean Bin[]) { + for(int i = 3 ; i >= 0 ; i--) { + if(pow(2, i)<=Dec) { + Dec = Dec - pow(2, i); + Bin[(i)] = 1; + } else { + } + } +} + + bool TuyaSetChannels(void) { LightSerialDuty(((uint8_t*)XdrvMailbox.data)[0]); @@ -146,14 +156,19 @@ void LightSerialDuty(uint8_t duty) duty = 25; // dimming acts odd below 25(10%) - this mirrors the threshold set on the faceplate itself } - AddLog_P2(LOG_LEVEL_DEBUG, PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); - - TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); + + if(Settings.flag3.tuya_show_dimmer == 1) // no Dimmer for 4 relay + { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR( "TYA: Send Serial Packet Dim Value=%d (id=%d)"), duty, Settings.param[P_TUYA_DIMMER_ID]); + TuyaSendValue(Settings.param[P_TUYA_DIMMER_ID], duty); + } } else { tuya_ignore_dim = false; // reset flag - + if(Settings.flag3.tuya_show_dimmer == 1) // no Dimmer for 4 relay + { AddLog_P2(LOG_LEVEL_DEBUG, PSTR( "TYA: Send Dim Level skipped due to 0 or already set. Value=%d"), duty); + } } } @@ -194,11 +209,11 @@ void TuyaPacketProcess(void) case TUYA_CMD_STATE: if (tuya_buffer[5] == 5) { // on/off packet - AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX - %s State"),tuya_buffer[10]?"On":"Off"); - - if((power || Settings.light_dimmer > 0) && (power != tuya_buffer[10])) { + AddLog_P2(LOG_LEVEL_DEBUG, PSTR("TYA: RX Device -%d --> %s State"),tuya_buffer[6],tuya_buffer[10]?"On":"Off"); + ExecuteCommandPower(tuya_buffer[6], tuya_buffer[10], SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction + /*if((power || Settings.light_dimmer > 0) && (power != tuya_buffer[10])) { ExecuteCommandPower(1, tuya_buffer[10], SRC_SWITCH); // send SRC_SWITCH? to use as flag to prevent loop from inbound states from faceplate interaction - } + }*/ } else if (tuya_buffer[5] == 8) { // dim packet @@ -281,6 +296,7 @@ bool TuyaModuleSelected(void) void TuyaInit(void) { + devices_present = Settings.param[6] == 0 ? 1 : Settings.param[6]; if (!Settings.param[P_TUYA_DIMMER_ID]) { Settings.param[P_TUYA_DIMMER_ID] = TUYA_DIMMER_ID; } diff --git a/tools/decode-config.py b/tools/decode-config.py index d05b8ff49..b2ea6f5d9 100755 --- a/tools/decode-config.py +++ b/tools/decode-config.py @@ -903,7 +903,14 @@ Setting_6_5_0_9['flag3'][0].update ({ 'no_power_feedback': ('