From 66d9ff14ac804ea6f63fe6e2f371357a138d3bba Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 14 Oct 2017 11:26:49 +0200 Subject: [PATCH] v5.8.0l - Update module config webpage 5.8.0l * Update HTML/CSS to enable nicer form field entry * Fix inverted relay status after restart or power on as regression from 5.8.0d (#909) * Add send protocol Panasonic to IRsend (#1014) * Fix relay power control when light power control is also configured as regression from 5.8.0 (#1016) --- README.md | 2 +- sonoff/_releasenotes.ino | 8 ++++++- sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 38 +++++++++++++++-------------- sonoff/sonoff_template.h | 2 ++ sonoff/webserver.ino | 52 ++++++++++++++++++++++------------------ sonoff/xdrv_domoticz.ino | 14 +++++------ sonoff/xdrv_ir_send.ino | 2 ++ 8 files changed, 69 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index c7881caa7..d77d9cff7 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **5.8.0k** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.8.0l** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### ATTENTION All versions diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 62b428163..b179f5f31 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,10 @@ -/* 5.8.0k +/* 5.8.0l + * Update HTML/CSS to enable nicer form field entry + * Fix inverted relay status after restart or power on as regression from 5.8.0d (#909) + * Add send protocol Panasonic to IRsend (#1014) + * Fix relay power control when light power control is also configured as regression from 5.8.0 (#1016) + * + * 5.8.0k * Add support for up to 8 relays (#995) * Fix Blocked Loop when erasing large flash using command reset 2 (#1002) * Add retain to ENERGY messages controlled by command SensorRetain (#1013) diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index c70b8b78e..ddd0831ad 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -22,7 +22,7 @@ \*********************************************************************************************/ typedef unsigned long power_t; // Power (Relay) type -#define POWER_MASK 0xFFFFFFFF // Power (Relay) full mask +#define POWER_MASK 0xffffffffUL // Power (Relay) full mask /*********************************************************************************************\ * Defines diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 2e288a257..0502388f1 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,7 +25,7 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x0508000B // 5.8.0k +#define VERSION 0x0508000C // 5.8.0l #include "sonoff.h" #include "user_config.h" @@ -352,6 +352,9 @@ void setRelay(power_t rpower) rpower = 0; } } + if (sfl_flg) { + sl_setPower(rpower); + } if ((SONOFF_DUAL == sysCfg.module) || (CH4 == sysCfg.module)) { Serial.write(0xA0); Serial.write(0x04); @@ -360,13 +363,18 @@ void setRelay(power_t rpower) Serial.write('\n'); Serial.flush(); } - else if (sfl_flg) { - sl_setPower(rpower); - } else if (EXS_RELAY == sysCfg.module) { setLatchingRelay(rpower, 1); } else { + for (byte i = 0; i < Maxdevice; i++) { + state = rpower &1; + if ((i < MAX_RELAYS) && (pin[GPIO_REL1 +i] < 99)) { + digitalWrite(pin[GPIO_REL1 +i], bitRead(rel_inverted, i) ? !state : state); + } + rpower >>= 1; + } +/* uint8_t maxdev = (Maxdevice > MAX_RELAYS) ? MAX_RELAYS : Maxdevice; for (byte i = 0; i < maxdev; i++) { state = rpower &1; @@ -375,6 +383,7 @@ void setRelay(power_t rpower) } rpower >>= 1; } +*/ } hlw_setPowerSteadyCounter(2); } @@ -750,7 +759,7 @@ boolean mqtt_command(boolean grpflg, char *type, uint16_t index, char *dataBuf, if ((payload >= 0) && (payload <= 1)) { strlcpy(sysCfg.button_topic, sysCfg.mqtt_topic, sizeof(sysCfg.button_topic)); if (!payload) { - for(i = 1; i <= Maxdevice; i++) { + for(i = 1; i <= MAX_KEYS; i++) { send_button_power(0, i, 9); // Clear MQTT retain in broker } } @@ -2722,7 +2731,6 @@ extern struct rst_info resetInfo; void setup() { byte idx; - uint8_t maxdev; Serial.begin(Baudrate); delay(10); @@ -2815,19 +2823,13 @@ void setup() } } - // Issue #526 - maxdev = (Maxdevice > MAX_RELAYS) ? MAX_RELAYS : Maxdevice; - for (byte i = 0; i < maxdev; i++) { - if (pin[GPIO_REL1 +i] < 99) { - if (digitalRead(pin[GPIO_REL1 +i]) ^ bitRead(rel_inverted, i)) { - bitSet(power, i); - } + // Issue #526 and #909 + for (byte i = 0; i < Maxdevice; i++) { + if ((i < MAX_RELAYS) && (pin[GPIO_REL1 +i] < 99)) { + bitWrite(power, i, digitalRead(pin[GPIO_REL1 +i]) ^ bitRead(rel_inverted, i)); } - } - maxdev = (Maxdevice > MAX_PULSETIMERS) ? MAX_PULSETIMERS : Maxdevice; - for (byte i = 0; i < maxdev; i++) { - if (bitRead(power, i)) { - pulse_timer[i] = sysCfg.pulsetime[i]; // MAX_PULSETIMERS must be equal to MAX_RELAYS for this to work here + if ((i < MAX_PULSETIMERS) && bitRead(power, i)) { + pulse_timer[i] = sysCfg.pulsetime[i]; } } diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 2b18becd2..e80ff1fc4 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -195,6 +195,8 @@ enum module_t { #define MAX_GPIO_PIN 18 // Number of supported GPIO +const char PINS_WEMOS[] PROGMEM = "D3TXD4RXD2D1flashcontrolD6D7D5D8D0A0"; + typedef struct MYIO { uint8_t io[MAX_GPIO_PIN]; } myio; diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 5e0728ea3..1ab24a8b6 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -77,7 +77,7 @@ const char HTTP_HEAD[] PROGMEM = "