From 410e49a3c7e8f628fa943b7f8690515f6d92ee1d Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sat, 10 Nov 2018 16:30:29 +0100 Subject: [PATCH 01/10] Added Armtronix dimmer support --- sonoff/settings.h | 2 +- sonoff/sonoff.h | 4 +- sonoff/sonoff_template.h | 28 ++- sonoff/support.ino | 4 +- sonoff/xdrv_04_light.ino | 9 + sonoff/xdrv_18_armtronixDualDimmer.ino | 256 +++++++++++++++++++++++++ 6 files changed, 297 insertions(+), 6 deletions(-) create mode 100644 sonoff/xdrv_18_armtronixDualDimmer.ino diff --git a/sonoff/settings.h b/sonoff/settings.h index f185004c4..fcffe681f 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -68,7 +68,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t gui_hostname_ip : 1; // bit 3 (v6.2.1.20) uint32_t tuya_apply_o20 : 1; // bit 4 (v6.3.0.4) - uint32_t spare05 : 1; + uint32_t armtronix_apply_o20 : 1; // bit 5 (v????) uint32_t spare06 : 1; uint32_t spare07 : 1; uint32_t spare08 : 1; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index d13460e64..ed23f80f2 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -221,13 +221,13 @@ enum ButtonStates { PRESSED, NOT_PRESSED }; enum Shortcuts { SC_CLEAR, SC_DEFAULT, SC_USER }; -enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) +enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_ARMTRONIX_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) enum DomoticzSensors {DZ_TEMP, DZ_TEMP_HUM, DZ_TEMP_HUM_BARO, DZ_POWER_ENERGY, DZ_ILLUMINANCE, DZ_COUNT, DZ_VOLTAGE, DZ_CURRENT, DZ_AIRQUALITY, DZ_MAX_SENSORS}; enum Ws2812ClockIndex { WS_SECOND, WS_MINUTE, WS_HOUR, WS_MARKER }; enum Ws2812Color { WS_RED, WS_GREEN, WS_BLUE }; -enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, LT_PWM7, LT_SERIAL, LT_NU9, LT_NU10, LT_WS2812, LT_RGBW, LT_RGBWC}; +enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, LT_PWM7, LT_SERIAL, LT_SERIAL2, LT_NU9, LT_NU10, LT_WS2812, LT_RGBW, LT_RGBWC}; enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_RGBWC}; enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 642914a53..f94c716de 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -133,6 +133,8 @@ enum UserSelectablePins { GPIO_RFRECV, // RF receiver GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX, // Tuya Serial interface + GPIO_ARMTRONIX_TX, // ARMTRONIX Serial interface + GPIO_ARMTRONIX_RX, // ARMTRONIX Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -190,8 +192,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" D_SENSOR_TX20_TX "|" D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX; - + D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" + D_SENSOR_ARMTRONIX_TX "|" D_SENSOR_ARMTRONIX_RX; /********************************************************************************************/ // Supported hardware modules @@ -250,6 +252,7 @@ enum SupportedModules { TECKIN, APLIC_WDP303075, TUYA_DIMMER, + ARMTRONIX_DIMMERS, GOSUND, MAXMODULE }; @@ -426,6 +429,10 @@ const uint8_t kGpioNiceList[] PROGMEM = { GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX // Tuya Serial interface #endif +#ifdef USE_ARMTRONIX_DIMMERS + GPIO_ARMTRONIX_TX, // Tuya Serial interface + GPIO_ARMTRONIX_RX // Tuya Serial interface +#endif }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { @@ -472,6 +479,7 @@ const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { OBI, ESP_SWITCH, // Switch Devices TUYA_DIMMER, // Dimmer Devices + ARMTRONIX_DIMMERS, H801, // Light Devices MAGICHOME, ARILUX_LC01, @@ -1217,6 +1225,22 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, GPIO_USER, 0 + }, + { "ARMTR Dimmr", // ARMTRONIX Dimmer (ESP8266 w/ separate MCU dimmer) + // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 + GPIO_USER, // Virtual Button (controlled by MCU) + GPIO_USER, // GPIO01 MCU serial control + GPIO_USER, + GPIO_USER, // GPIO03 MCU serial control + GPIO_USER, + GPIO_USER, + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_USER, + GPIO_USER, + GPIO_USER, // GPIO14 Green Led + GPIO_USER, + GPIO_USER, + 0 }, { "Gosund SP1_v23", // https://www.amazon.de/gp/product/B0777BWS1P 0, diff --git a/sonoff/support.ino b/sonoff/support.ino index bbc81b1a3..68c091f29 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -985,7 +985,9 @@ void GetFeatures() #ifdef USE_RC_SWITCH feature_drv2 |= 0x00010000; // xdrv_17_rcswitch.ino #endif - +#ifdef USE_ARMTRONIX_DIMMERS + feature_drv2 |= 0x00020000; // xdrv_18_armtronixdimmer.ino +#endif #ifdef NO_EXTRA_4K_HEAP diff --git a/sonoff/xdrv_04_light.ino b/sonoff/xdrv_04_light.ino index 9bd88e2cb..b627e9758 100644 --- a/sonoff/xdrv_04_light.ino +++ b/sonoff/xdrv_04_light.ino @@ -396,6 +396,9 @@ void LightInit() else if (LT_SERIAL == light_type) { light_subtype = LST_SINGLE; } + else if (LT_SERIAL2 == light_type) { + light_subtype = LST_COLDWARM; + } else { light_pdi_pin = pin[GPIO_DI]; light_pdcki_pin = pin[GPIO_DCKI]; @@ -831,6 +834,12 @@ void LightAnimate() LightSerialDuty(cur_col[0]); } #endif // USE_TUYA_DIMMER +#ifdef USE_ARMTRONIX_DIMMERS + if (light_type == LT_SERIAL2) { + LightSerial2Duty(cur_col[0],cur_col[1]); + } +#endif // USE_ARMTRONIX_DIMMERS + } } } diff --git a/sonoff/xdrv_18_armtronixDualDimmer.ino b/sonoff/xdrv_18_armtronixDualDimmer.ino new file mode 100644 index 000000000..8b4c2ea83 --- /dev/null +++ b/sonoff/xdrv_18_armtronixDualDimmer.ino @@ -0,0 +1,256 @@ +/* + xdrv_16_armtronixdimmer.ino - Armtronix dimmer support for Sonoff-Tasmota + + Copyright (C) 2018 digiblur, Joel Stein and Theo Arends + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#define USE_ARMTRONIX_DIMMERS + +#ifdef USE_ARMTRONIX_DIMMERS + +#define XDRV_18 18 + +#ifndef ARMTRONIX_DIMMER_ID +#define ARMTRONIX_DIMMER_ID 0 +#endif + +#define ARMTRONIX_POWER_ID 1 + +#include + +TasmotaSerial *ArmtronixSerial = nullptr; + +boolean armtronix_ignore_dim = false; // Flag to skip serial send to prevent looping when processing inbound states from the faceplate interaction +int8_t armtronix_wifi_state = -2; // Keep MCU wifi-status in sync with WifiState() +int8_t armtronix_dimState[2]; //Dimmer state values. +int8_t armtronix_knobState[2]; //Dimmer state values. + + +/*********************************************************************************************\ + * Internal Functions +\*********************************************************************************************/ + + + +boolean ArmtronixSetPower() +{ + boolean status = false; + + uint8_t rpower = XdrvMailbox.index; + int16_t source = XdrvMailbox.payload; + + if (source != SRC_SWITCH && ArmtronixSerial) { // ignore to prevent loop from pushing state from faceplate interaction + + snprintf_P(log_data, sizeof(log_data), PSTR("ARM: SetDevicePower.rpower=%d"), rpower); + AddLog(LOG_LEVEL_DEBUG); + //ArmtronixSendBool(ARMTRONIX_POWER_ID, rpower); + + status = true; + } + return status; +} + + +void LightSerial2Duty(uint8_t duty1, uint8_t duty2) +{ + if (ArmtronixSerial && !armtronix_ignore_dim) { + duty1 = ((float)duty1)/2.575757; //max 99 + duty2 = ((float)duty2)/2.575757; //max 99 + armtronix_dimState[0] = duty1; + armtronix_dimState[1] = duty2; + ArmtronixSerial->print("Dimmer1:"); + ArmtronixSerial->print(duty1); + ArmtronixSerial->print("\nDimmer2:"); + ArmtronixSerial->println(duty2); + + snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Serial Packet Dim Values=%d,%d (id=%d)"), armtronix_dimState[0],armtronix_dimState[1], Settings.param[P_ARMTRONIX_DIMMER_ID]); + AddLog(LOG_LEVEL_DEBUG); + + } else { + armtronix_ignore_dim = false; + snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Dim Level skipped due to already set. Value=%d,%d"), armtronix_dimState[0],armtronix_dimState[1]); + AddLog(LOG_LEVEL_DEBUG); + + } +} + +void ArmtronixRequestState(){ + if(ArmtronixSerial) { + // Get current status of MCU + snprintf_P(log_data, sizeof(log_data), "TYA: Request MCU state"); + AddLog(LOG_LEVEL_DEBUG); + ArmtronixSerial->println("Status"); + + } +} + +void ArmtronixResetWifi() +{ + if (!Settings.flag.button_restrict) { + char scmnd[20]; + snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); + ExecuteCommand(scmnd, SRC_BUTTON); + } +} + +/*********************************************************************************************\ + * API Functions +\*********************************************************************************************/ + +boolean ArmtronixModuleSelected() +{ + if (!(pin[GPIO_ARMTRONIX_RX] < 99) || !(pin[GPIO_ARMTRONIX_TX] < 99)) { // fallback to hardware-serial if not explicitly selected + pin[GPIO_ARMTRONIX_TX] = 1; + pin[GPIO_ARMTRONIX_RX] = 3; + Settings.my_gp.io[1] = GPIO_ARMTRONIX_TX; + Settings.my_gp.io[3] = GPIO_ARMTRONIX_RX; + restart_flag = 2; + } + light_type = LT_SERIAL2; + return true; +} + +void ArmtronixInit() +{ + armtronix_dimState[0] = -1; + armtronix_dimState[1] = -1; + armtronix_knobState[0] = -1; + armtronix_knobState[1] = -1; + if (!Settings.param[P_ARMTRONIX_DIMMER_ID]) { + Settings.param[P_ARMTRONIX_DIMMER_ID] = ARMTRONIX_DIMMER_ID; + } + ArmtronixSerial = new TasmotaSerial(pin[GPIO_ARMTRONIX_RX], pin[GPIO_ARMTRONIX_TX], 2); + if (ArmtronixSerial->begin(115200)) { + if (ArmtronixSerial->hardwareSerial()) { ClaimSerial(); } + ArmtronixSerial->println("Status"); + } +} + +void ArmtronixSerialInput() +{ + String answer; + int8_t newDimState[2]; + uint8_t temp; + int commaIndex; + char scmnd[20]; + if (ArmtronixSerial->available()) { + yield(); + answer = ArmtronixSerial->readStringUntil('\n'); + if(answer.substring(0,7) == "Status:"){ + commaIndex = 6; + for(int i =0;i<2;i++){ + newDimState[i] = answer.substring(commaIndex+1,answer.indexOf(',',commaIndex+1)).toInt(); + if(newDimState[i] != armtronix_dimState[i]){ + temp = ((float)newDimState[i])*1.01010101010101; //max 255 + armtronix_dimState[i] = newDimState[i]; + armtronix_ignore_dim = true; + snprintf_P(scmnd, sizeof(scmnd), PSTR(D_CMND_CHANNEL "%d %d"),i+1, temp); + ExecuteCommand(scmnd,SRC_SWITCH); + snprintf_P(log_data, sizeof(log_data), PSTR("ARM: Send CMND_CHANNEL=%s"), scmnd ); + AddLog(LOG_LEVEL_DEBUG); + } + commaIndex = answer.indexOf(',',commaIndex+1); + } + armtronix_knobState[0] = answer.substring(commaIndex+1,answer.indexOf(',',commaIndex+1)).toInt(); + commaIndex = answer.indexOf(',',commaIndex+1); + armtronix_knobState[1] = answer.substring(commaIndex+1,answer.indexOf(',',commaIndex+1)).toInt(); + } + } +} + +boolean ArmtronixButtonPressed() +{ + if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { + snprintf_P(log_data, sizeof(log_data), PSTR("ARM: Reset GPIO triggered")); + AddLog(LOG_LEVEL_DEBUG); + ArmtronixResetWifi(); + return true; // Reset GPIO served here + } + return false; // Don't serve other buttons +} + +void ArmtronixSetWifiLed(){ + uint8_t wifi_state = 0x02; + switch(WifiState()){ + case WIFI_SMARTCONFIG: + wifi_state = 0x00; + break; + case WIFI_MANAGER: + case WIFI_WPSCONFIG: + wifi_state = 0x01; + break; + case WIFI_RESTART: + wifi_state = 0x03; + break; + } + + snprintf_P(log_data, sizeof(log_data), "ARM: Set WiFi LED to state %d (%d)", wifi_state, WifiState()); + AddLog(LOG_LEVEL_DEBUG); + + char state = '0' + (wifi_state & 1 > 0); + ArmtronixSerial->print("Setled:"); + ArmtronixSerial->write(state); + ArmtronixSerial->write(','); + state = '0' + (wifi_state & 2 > 0); + ArmtronixSerial->write(state); + ArmtronixSerial->write(10); + armtronix_wifi_state = WifiState(); + + +} + + +/*********************************************************************************************\ + * Interface +\*********************************************************************************************/ +bool flip; + +boolean Xdrv18(byte function) +{ + boolean result = false; + + if (ARMTRONIX_DIMMERS == Settings.module) { + switch (function) { + case FUNC_MODULE_INIT: + result = ArmtronixModuleSelected(); + break; + case FUNC_INIT: + ArmtronixInit(); + break; + case FUNC_LOOP: + if (ArmtronixSerial) { ArmtronixSerialInput(); } + break; + case FUNC_SET_DEVICE_POWER: + result = ArmtronixSetPower(); + break; + case FUNC_BUTTON_PRESSED: + result = ArmtronixButtonPressed(); + break; + case FUNC_EVERY_SECOND: + if(ArmtronixSerial){ + flip = !flip; + if (armtronix_wifi_state!=WifiState()) { ArmtronixSetWifiLed(); } + if(flip){ + ArmtronixSerial->println("Status"); + } + } + break; + } + } + return result; +} + +#endif // USE_ARMTRONIX_DIMMERS From fd8622d546454597575dabf9bbf62c1d9fd98fc3 Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sat, 10 Nov 2018 16:39:58 +0100 Subject: [PATCH 02/10] Added language strings for uart TX/RX --- sonoff/language/bg-BG.h | 2 ++ sonoff/language/cs-CZ.h | 2 ++ sonoff/language/de-DE.h | 2 ++ sonoff/language/el-GR.h | 2 ++ sonoff/language/en-GB.h | 4 ++++ sonoff/language/es-AR.h | 2 ++ sonoff/language/fr-FR.h | 2 ++ sonoff/language/he-HE.h | 2 ++ sonoff/language/hu-HU.h | 2 ++ sonoff/language/it-IT.h | 2 ++ sonoff/language/nl-NL.h | 2 ++ sonoff/language/pl-PL.h | 2 ++ sonoff/language/pt-BR.h | 2 ++ sonoff/language/pt-PT.h | 2 ++ sonoff/language/ru-RU.h | 2 ++ sonoff/language/tr-TR.h | 2 ++ sonoff/language/uk-UK.h | 2 ++ sonoff/language/zh-CN.h | 2 ++ sonoff/language/zh-TW.h | 2 ++ 19 files changed, 40 insertions(+) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 1503884c3..75f9178b0 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index 2b667cec1..bb1de8fa4 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 9c2f7c24e..e69a5fb09 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index 79558615d..d84f566bf 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -530,6 +530,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 1a9304a7d..accc7ab90 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -529,6 +529,10 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index e5c3135fe..cc4eb3da7 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 0dfb2929c..29dd9f213 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index cb041ffba..3ccbade21 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 5cee46a52..4913a8597 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 0eaca9337..05d151c0c 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 0567e0849..99d7985aa 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 678a7b770..077b23feb 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index 712ea6a74..e587bbedf 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index 0bba501bd..ee71a81cf 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index f9062a572..12288e899 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index f892fafbb..512f7f885 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index 4c290613a..ed981ce53 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index fe6dabe8d..36662cd4d 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index 92a805587..d286e4b7a 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -529,6 +529,8 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" +#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" +#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" From c2e1e0344db8320a85374652e2789519f87ef53f Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sun, 11 Nov 2018 15:20:10 +0100 Subject: [PATCH 03/10] Revert "Added language strings for uart TX/RX" This reverts commit fd8622d546454597575dabf9bbf62c1d9fd98fc3. --- sonoff/language/bg-BG.h | 2 -- sonoff/language/cs-CZ.h | 2 -- sonoff/language/de-DE.h | 2 -- sonoff/language/el-GR.h | 2 -- sonoff/language/en-GB.h | 4 ---- sonoff/language/es-AR.h | 2 -- sonoff/language/fr-FR.h | 2 -- sonoff/language/he-HE.h | 2 -- sonoff/language/hu-HU.h | 2 -- sonoff/language/it-IT.h | 2 -- sonoff/language/nl-NL.h | 2 -- sonoff/language/pl-PL.h | 2 -- sonoff/language/pt-BR.h | 2 -- sonoff/language/pt-PT.h | 2 -- sonoff/language/ru-RU.h | 2 -- sonoff/language/tr-TR.h | 2 -- sonoff/language/uk-UK.h | 2 -- sonoff/language/zh-CN.h | 2 -- sonoff/language/zh-TW.h | 2 -- 19 files changed, 40 deletions(-) diff --git a/sonoff/language/bg-BG.h b/sonoff/language/bg-BG.h index 75f9178b0..1503884c3 100644 --- a/sonoff/language/bg-BG.h +++ b/sonoff/language/bg-BG.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/cs-CZ.h b/sonoff/language/cs-CZ.h index bb1de8fa4..2b667cec1 100644 --- a/sonoff/language/cs-CZ.h +++ b/sonoff/language/cs-CZ.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index e69a5fb09..9c2f7c24e 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/el-GR.h b/sonoff/language/el-GR.h index d84f566bf..79558615d 100644 --- a/sonoff/language/el-GR.h +++ b/sonoff/language/el-GR.h @@ -530,8 +530,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index accc7ab90..1a9304a7d 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -529,10 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/es-AR.h b/sonoff/language/es-AR.h index cc4eb3da7..e5c3135fe 100644 --- a/sonoff/language/es-AR.h +++ b/sonoff/language/es-AR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h index 29dd9f213..0dfb2929c 100644 --- a/sonoff/language/fr-FR.h +++ b/sonoff/language/fr-FR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/he-HE.h b/sonoff/language/he-HE.h index 3ccbade21..cb041ffba 100644 --- a/sonoff/language/he-HE.h +++ b/sonoff/language/he-HE.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/hu-HU.h b/sonoff/language/hu-HU.h index 4913a8597..5cee46a52 100644 --- a/sonoff/language/hu-HU.h +++ b/sonoff/language/hu-HU.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 05d151c0c..0eaca9337 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 99d7985aa..0567e0849 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index 077b23feb..678a7b770 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-BR.h b/sonoff/language/pt-BR.h index e587bbedf..712ea6a74 100644 --- a/sonoff/language/pt-BR.h +++ b/sonoff/language/pt-BR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pt-PT.h b/sonoff/language/pt-PT.h index ee71a81cf..0bba501bd 100644 --- a/sonoff/language/pt-PT.h +++ b/sonoff/language/pt-PT.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/ru-RU.h b/sonoff/language/ru-RU.h index 12288e899..f9062a572 100644 --- a/sonoff/language/ru-RU.h +++ b/sonoff/language/ru-RU.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/tr-TR.h b/sonoff/language/tr-TR.h index 512f7f885..f892fafbb 100755 --- a/sonoff/language/tr-TR.h +++ b/sonoff/language/tr-TR.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/uk-UK.h b/sonoff/language/uk-UK.h index ed981ce53..4c290613a 100644 --- a/sonoff/language/uk-UK.h +++ b/sonoff/language/uk-UK.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "А" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h index 36662cd4d..fe6dabe8d 100644 --- a/sonoff/language/zh-CN.h +++ b/sonoff/language/zh-CN.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" diff --git a/sonoff/language/zh-TW.h b/sonoff/language/zh-TW.h index d286e4b7a..92a805587 100644 --- a/sonoff/language/zh-TW.h +++ b/sonoff/language/zh-TW.h @@ -529,8 +529,6 @@ #define D_SENSOR_RFRECV "RFrecv" #define D_SENSOR_TUYA_TX "Tuya Tx" #define D_SENSOR_TUYA_RX "Tuya Rx" -#define D_SENSOR_ARMTRONIX_TX "Armtronix Tx" -#define D_SENSOR_ARMTRONIX_RX "Armtronix Rx" // Units #define D_UNIT_AMPERE "安" From a3ee9e74920db86652ddf125ba542dd2e0f3a8f3 Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Sun, 11 Nov 2018 16:58:21 +0100 Subject: [PATCH 04/10] Cleaned up code and settings --- sonoff/settings.h | 2 +- sonoff/sonoff.h | 2 +- sonoff/sonoff_template.h | 23 ++++----- sonoff/xdrv_18_armtronixDualDimmer.ino | 68 ++------------------------ 4 files changed, 14 insertions(+), 81 deletions(-) diff --git a/sonoff/settings.h b/sonoff/settings.h index fcffe681f..cde1b2283 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -68,7 +68,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t time_append_timezone : 1; // bit 2 (v6.2.1.2) uint32_t gui_hostname_ip : 1; // bit 3 (v6.2.1.20) uint32_t tuya_apply_o20 : 1; // bit 4 (v6.3.0.4) - uint32_t armtronix_apply_o20 : 1; // bit 5 (v????) + uint32_t spare05 : 1; uint32_t spare06 : 1; uint32_t spare07 : 1; uint32_t spare08 : 1; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index ed23f80f2..1050557c0 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -221,7 +221,7 @@ enum ButtonStates { PRESSED, NOT_PRESSED }; enum Shortcuts { SC_CLEAR, SC_DEFAULT, SC_USER }; -enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_ARMTRONIX_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) +enum SettingsParmaIndex {P_HOLD_TIME, P_MAX_POWER_RETRY, P_TUYA_DIMMER_ID, P_MDNS_DELAYED_START, P_MAX_PARAM8}; // Max is PARAM8_SIZE (18) enum DomoticzSensors {DZ_TEMP, DZ_TEMP_HUM, DZ_TEMP_HUM_BARO, DZ_POWER_ENERGY, DZ_ILLUMINANCE, DZ_COUNT, DZ_VOLTAGE, DZ_CURRENT, DZ_AIRQUALITY, DZ_MAX_SENSORS}; diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 412717677..be6b18085 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -133,8 +133,6 @@ enum UserSelectablePins { GPIO_RFRECV, // RF receiver GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX, // Tuya Serial interface - GPIO_ARMTRONIX_TX, // ARMTRONIX Serial interface - GPIO_ARMTRONIX_RX, // ARMTRONIX Serial interface GPIO_SENSOR_END }; // Programmer selectable GPIO functionality offset by user selectable GPIOs @@ -192,8 +190,8 @@ const char kSensorNames[] PROGMEM = D_SENSOR_HX711_SCK "|" D_SENSOR_HX711_DAT "|" D_SENSOR_TX20_TX "|" D_SENSOR_RFSEND "|" D_SENSOR_RFRECV "|" - D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX "|" - D_SENSOR_ARMTRONIX_TX "|" D_SENSOR_ARMTRONIX_RX; + D_SENSOR_TUYA_TX "|" D_SENSOR_TUYA_RX; + /********************************************************************************************/ // Supported hardware modules @@ -429,10 +427,6 @@ const uint8_t kGpioNiceList[] PROGMEM = { GPIO_TUYA_TX, // Tuya Serial interface GPIO_TUYA_RX // Tuya Serial interface #endif -#ifdef USE_ARMTRONIX_DIMMERS - GPIO_ARMTRONIX_TX, // Tuya Serial interface - GPIO_ARMTRONIX_RX // Tuya Serial interface -#endif }; const uint8_t kModuleNiceList[MAXMODULE] PROGMEM = { @@ -1226,18 +1220,19 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, 0 }, - { "ARMTR Dimmr", // ARMTRONIX Dimmer (ESP8266 w/ separate MCU dimmer) - // https://www.amazon.com/gp/product/B07CTNSZZ8/ref=oh_aui_detailpage_o00_s00?ie=UTF8&psc=1 - GPIO_USER, // Virtual Button (controlled by MCU) - GPIO_USER, // GPIO01 MCU serial control + { "ARMTR Dimmer", // ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) + // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-two-triac-board/ + // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-esp8266-one-triac-board-alexaecho/ + GPIO_USER, + GPIO_TXD, // GPIO01 MCU serial control GPIO_USER, - GPIO_USER, // GPIO03 MCU serial control + GPIO_RXD, // GPIO03 MCU serial control GPIO_USER, GPIO_USER, 0, 0, 0, 0, 0, 0, // Flash connection GPIO_USER, GPIO_USER, - GPIO_USER, // GPIO14 Green Led + GPIO_USER, GPIO_USER, GPIO_USER, 0 diff --git a/sonoff/xdrv_18_armtronixDualDimmer.ino b/sonoff/xdrv_18_armtronixDualDimmer.ino index 8b4c2ea83..0e440bd7e 100644 --- a/sonoff/xdrv_18_armtronixDualDimmer.ino +++ b/sonoff/xdrv_18_armtronixDualDimmer.ino @@ -23,12 +23,6 @@ #define XDRV_18 18 -#ifndef ARMTRONIX_DIMMER_ID -#define ARMTRONIX_DIMMER_ID 0 -#endif - -#define ARMTRONIX_POWER_ID 1 - #include TasmotaSerial *ArmtronixSerial = nullptr; @@ -45,25 +39,6 @@ int8_t armtronix_knobState[2]; //Dimmer state values. -boolean ArmtronixSetPower() -{ - boolean status = false; - - uint8_t rpower = XdrvMailbox.index; - int16_t source = XdrvMailbox.payload; - - if (source != SRC_SWITCH && ArmtronixSerial) { // ignore to prevent loop from pushing state from faceplate interaction - - snprintf_P(log_data, sizeof(log_data), PSTR("ARM: SetDevicePower.rpower=%d"), rpower); - AddLog(LOG_LEVEL_DEBUG); - //ArmtronixSendBool(ARMTRONIX_POWER_ID, rpower); - - status = true; - } - return status; -} - - void LightSerial2Duty(uint8_t duty1, uint8_t duty2) { if (ArmtronixSerial && !armtronix_ignore_dim) { @@ -76,7 +51,7 @@ void LightSerial2Duty(uint8_t duty1, uint8_t duty2) ArmtronixSerial->print("\nDimmer2:"); ArmtronixSerial->println(duty2); - snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Serial Packet Dim Values=%d,%d (id=%d)"), armtronix_dimState[0],armtronix_dimState[1], Settings.param[P_ARMTRONIX_DIMMER_ID]); + snprintf_P(log_data, sizeof(log_data), PSTR( "ARM: Send Serial Packet Dim Values=%d,%d"), armtronix_dimState[0],armtronix_dimState[1]); AddLog(LOG_LEVEL_DEBUG); } else { @@ -97,28 +72,12 @@ void ArmtronixRequestState(){ } } -void ArmtronixResetWifi() -{ - if (!Settings.flag.button_restrict) { - char scmnd[20]; - snprintf_P(scmnd, sizeof(scmnd), D_CMND_WIFICONFIG " %d", 2); - ExecuteCommand(scmnd, SRC_BUTTON); - } -} - /*********************************************************************************************\ * API Functions \*********************************************************************************************/ boolean ArmtronixModuleSelected() { - if (!(pin[GPIO_ARMTRONIX_RX] < 99) || !(pin[GPIO_ARMTRONIX_TX] < 99)) { // fallback to hardware-serial if not explicitly selected - pin[GPIO_ARMTRONIX_TX] = 1; - pin[GPIO_ARMTRONIX_RX] = 3; - Settings.my_gp.io[1] = GPIO_ARMTRONIX_TX; - Settings.my_gp.io[3] = GPIO_ARMTRONIX_RX; - restart_flag = 2; - } light_type = LT_SERIAL2; return true; } @@ -129,10 +88,7 @@ void ArmtronixInit() armtronix_dimState[1] = -1; armtronix_knobState[0] = -1; armtronix_knobState[1] = -1; - if (!Settings.param[P_ARMTRONIX_DIMMER_ID]) { - Settings.param[P_ARMTRONIX_DIMMER_ID] = ARMTRONIX_DIMMER_ID; - } - ArmtronixSerial = new TasmotaSerial(pin[GPIO_ARMTRONIX_RX], pin[GPIO_ARMTRONIX_TX], 2); + ArmtronixSerial = new TasmotaSerial(pin[GPIO_RXD], pin[GPIO_TXD], 2); if (ArmtronixSerial->begin(115200)) { if (ArmtronixSerial->hardwareSerial()) { ClaimSerial(); } ArmtronixSerial->println("Status"); @@ -171,17 +127,6 @@ void ArmtronixSerialInput() } } -boolean ArmtronixButtonPressed() -{ - if (!XdrvMailbox.index && ((PRESSED == XdrvMailbox.payload) && (NOT_PRESSED == lastbutton[XdrvMailbox.index]))) { - snprintf_P(log_data, sizeof(log_data), PSTR("ARM: Reset GPIO triggered")); - AddLog(LOG_LEVEL_DEBUG); - ArmtronixResetWifi(); - return true; // Reset GPIO served here - } - return false; // Don't serve other buttons -} - void ArmtronixSetWifiLed(){ uint8_t wifi_state = 0x02; switch(WifiState()){ @@ -233,17 +178,10 @@ boolean Xdrv18(byte function) case FUNC_LOOP: if (ArmtronixSerial) { ArmtronixSerialInput(); } break; - case FUNC_SET_DEVICE_POWER: - result = ArmtronixSetPower(); - break; - case FUNC_BUTTON_PRESSED: - result = ArmtronixButtonPressed(); - break; case FUNC_EVERY_SECOND: if(ArmtronixSerial){ - flip = !flip; if (armtronix_wifi_state!=WifiState()) { ArmtronixSetWifiLed(); } - if(flip){ + if(uptime&1){ ArmtronixSerial->println("Status"); } } From c2dfd559ebc0b84025655ca726c2ede3ae780804 Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Fri, 16 Nov 2018 09:48:55 +0100 Subject: [PATCH 05/10] Added user config define to enable armtronix dimmers --- sonoff/my_user_config.h | 1 + 1 file changed, 1 insertion(+) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index e1f6e364a..2145d0458 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -356,6 +356,7 @@ #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) #define USE_TUYA_DIMMER // Add support for Tuya Serial Dimmer #define TUYA_DIMMER_ID 0 // Default dimmer Id +#define USE_ARMTRONIX_DIMMERS //Add support for Armtronix Dimmers // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) From 9ab3eb05bd55d8c6576a0228b6b3fca33656975c Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Fri, 16 Nov 2018 09:53:23 +0100 Subject: [PATCH 06/10] Renamed driver so it is more clear that it is not only for the dual dimmer --- ...armtronixDualDimmer.ino => xdrv_18_armtronixDimmers.ino} | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) rename sonoff/{xdrv_18_armtronixDualDimmer.ino => xdrv_18_armtronixDimmers.ino} (98%) diff --git a/sonoff/xdrv_18_armtronixDualDimmer.ino b/sonoff/xdrv_18_armtronixDimmers.ino similarity index 98% rename from sonoff/xdrv_18_armtronixDualDimmer.ino rename to sonoff/xdrv_18_armtronixDimmers.ino index 0e440bd7e..0de7fac77 100644 --- a/sonoff/xdrv_18_armtronixDualDimmer.ino +++ b/sonoff/xdrv_18_armtronixDimmers.ino @@ -1,5 +1,5 @@ /* - xdrv_16_armtronixdimmer.ino - Armtronix dimmer support for Sonoff-Tasmota + xdrv_18_armtronixdimmer.ino - Armtronix dimmers support for Sonoff-Tasmota Copyright (C) 2018 digiblur, Joel Stein and Theo Arends @@ -17,8 +17,6 @@ along with this program. If not, see . */ -#define USE_ARMTRONIX_DIMMERS - #ifdef USE_ARMTRONIX_DIMMERS #define XDRV_18 18 @@ -161,8 +159,6 @@ void ArmtronixSetWifiLed(){ /*********************************************************************************************\ * Interface \*********************************************************************************************/ -bool flip; - boolean Xdrv18(byte function) { boolean result = false; From 45cc387748246798729ced9102ac43c879d95d5f Mon Sep 17 00:00:00 2001 From: wvdv2002 Date: Fri, 16 Nov 2018 09:58:14 +0100 Subject: [PATCH 07/10] Added small description in the driver --- sonoff/xdrv_18_armtronixDimmers.ino | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sonoff/xdrv_18_armtronixDimmers.ino b/sonoff/xdrv_18_armtronixDimmers.ino index 0de7fac77..9fae00ff0 100644 --- a/sonoff/xdrv_18_armtronixDimmers.ino +++ b/sonoff/xdrv_18_armtronixDimmers.ino @@ -17,6 +17,10 @@ along with this program. If not, see . */ +/*This code can be used for Armtronix dimmers. The dimmers contain a Atmega328 to do the actual dimming. + Checkout the Tasmota Wiki for information on how to flash this Atmega328 with the firmware to work together with this driver. +*/ + #ifdef USE_ARMTRONIX_DIMMERS #define XDRV_18 18 From 04cc11b46d05c8737e562f2e2915fa80b1a43aea Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 16 Nov 2018 10:36:43 +0100 Subject: [PATCH 08/10] Use correct index --- sonoff/sonoff.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index d63ce9d35..fb59eac68 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -227,7 +227,7 @@ enum DomoticzSensors {DZ_TEMP, DZ_TEMP_HUM, DZ_TEMP_HUM_BARO, DZ_POWER_ENERGY, D enum Ws2812ClockIndex { WS_SECOND, WS_MINUTE, WS_HOUR, WS_MARKER }; enum Ws2812Color { WS_RED, WS_GREEN, WS_BLUE }; -enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, LT_PWM7, LT_SERIAL, LT_SERIAL2, LT_NU9, LT_NU10, LT_WS2812, LT_RGBW, LT_RGBWC}; +enum LightTypes {LT_BASIC, LT_PWM1, LT_PWM2, LT_PWM3, LT_PWM4, LT_PWM5, LT_PWM6, LT_PWM7, LT_SERIAL, LT_SERIAL2, LT_NU10, LT_WS2812, LT_RGBW, LT_RGBWC}; enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_RGBWC}; enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; From 5d798e3381568e71ade3fdbd244ba6a5f5c96ae4 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 16 Nov 2018 10:37:52 +0100 Subject: [PATCH 09/10] Make it optional on first implementation --- sonoff/my_user_config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sonoff/my_user_config.h b/sonoff/my_user_config.h index 2145d0458..8e3050a4e 100644 --- a/sonoff/my_user_config.h +++ b/sonoff/my_user_config.h @@ -356,7 +356,7 @@ #define MP3_VOLUME 10 // Set the startup volume on init, the range can be 0..30(max) #define USE_TUYA_DIMMER // Add support for Tuya Serial Dimmer #define TUYA_DIMMER_ID 0 // Default dimmer Id -#define USE_ARMTRONIX_DIMMERS //Add support for Armtronix Dimmers +//#define USE_ARMTRONIX_DIMMERS //Add support for Armtronix Dimmers // Power monitoring sensors ----------------------- #define USE_PZEM004T // Add support for PZEM004T Energy monitor (+2k code) From 77e76691b65ab4ba7b425783d350ea6deeaf1ae1 Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Fri, 16 Nov 2018 10:39:57 +0100 Subject: [PATCH 10/10] Fix correct module index --- sonoff/sonoff_template.h | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index be6b18085..f2595c82c 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -250,8 +250,8 @@ enum SupportedModules { TECKIN, APLIC_WDP303075, TUYA_DIMMER, - ARMTRONIX_DIMMERS, GOSUND, + ARMTRONIX_DIMMERS, MAXMODULE }; /********************************************************************************************/ @@ -1220,7 +1220,20 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, 0 }, - { "ARMTR Dimmer", // ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) + { "Gosund SP1_v23", // https://www.amazon.de/gp/product/B0777BWS1P + 0, + GPIO_LED1_INV, // GPIO01 Serial RXD and LED1 (blue) inv + 0, + GPIO_KEY1, // GPIO03 Serial TXD and Button + GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power + GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) + GPIO_LED2_INV, // GPIO13 LED2 (red) inv + GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) + 0, 0, 0 + }, + { "ARMTR Dimmer", // ARMTRONIX Dimmer, one or two channel (ESP8266 w/ separate MCU dimmer) // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-two-triac-board/ // https://www.tindie.com/products/Armtronix/wifi-ac-dimmer-esp8266-one-triac-board-alexaecho/ GPIO_USER, @@ -1236,19 +1249,6 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_USER, GPIO_USER, 0 - }, - { "Gosund SP1_v23", // https://www.amazon.de/gp/product/B0777BWS1P - 0, - GPIO_LED1_INV, // GPIO01 Serial RXD and LED1 (blue) inv - 0, - GPIO_KEY1, // GPIO03 Serial TXD and Button - GPIO_HJL_CF, // GPIO04 BL0937 or HJL-01 CF power - GPIO_NRG_CF1, // GPIO05 BL0937 or HJL-01 CF1 current / voltage - 0, 0, 0, 0, 0, 0, // Flash connection - GPIO_NRG_SEL_INV, // GPIO12 BL0937 or HJL-01 Sel output (0 = Voltage) - GPIO_LED2_INV, // GPIO13 LED2 (red) inv - GPIO_REL1, // GPIO14 Relay (0 = Off, 1 = On) - 0, 0, 0 } };