From 533855c21032abd55d523eb50ed23a77621bc7db Mon Sep 17 00:00:00 2001 From: arendst Date: Mon, 13 Feb 2017 17:25:46 +0100 Subject: [PATCH] v3.9.15 3.9.15 20170213 * Change JSON float values from string to number according to http://json.org (#56) * Add support for exs latched relay module https://ex-store.de/ESP8266-WiFi-Relay-V31 (#58) * Add support for inverted relays * Changed MAX_LOG_LINES from 70 to 60 to preserve memory --- README.md | 2 +- api/arduino/sonoff.ino.bin | Bin 462224 -> 462416 bytes sonoff/_releasenotes.ino | 10 +++- sonoff/sonoff.ino | 118 +++++++++++++++++++++++++++++-------- sonoff/sonoff_template.h | 16 +++++ sonoff/user_config.h | 6 +- sonoff/xsns_bmp.ino | 4 +- sonoff/xsns_dht.ino | 2 +- sonoff/xsns_ds18b20.ino | 2 +- sonoff/xsns_ds18x20.ino | 2 +- sonoff/xsns_hlw8012.ino | 3 +- sonoff/xsns_htu21.ino | 2 +- 12 files changed, 125 insertions(+), 42 deletions(-) diff --git a/README.md b/README.md index d668ce575..cabcc4a62 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 **3.9.14** - See ```sonoff/_releasenotes.ino``` for change information. +Current version is **3.9.15** - See ```sonoff/_releasenotes.ino``` for change information. - This version provides all (Sonoff) modules in one file and starts up with Sonoff Basic. - Once uploaded select module using the configuration webpage or the commands ```Modules``` and ```Module```. diff --git a/api/arduino/sonoff.ino.bin b/api/arduino/sonoff.ino.bin index 5e2ad3ee12e1be01b8d270b83cef1ccfe4567c8a..a44873b6e41279c50deefa74851c4d829e07e3fc 100644 GIT binary patch delta 67674 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 x6*U)!@|ccN#;9+`0Fh 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≤ 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 diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index a7cc6f25c..0c4a996dc 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,10 +1,16 @@ -/* 3.9.14 20170211 +/* 3.9.15 20170213 + * Change JSON float values from string to number according to http://json.org (#56) + * Add support for exs latched relay module https://ex-store.de/ESP8266-WiFi-Relay-V31 (#58) + * Add support for inverted relays + * Changed MAX_LOG_LINES from 70 to 60 to preserve memory + * + * 3.9.14 20170211 * Add False and True as alternatives for 0/Off and 1/On (#49) * Fix Status10 JSON format (#52) * Fix DS18x20 using OneWire library (#53) * * 3.9.13 20170210 - * Add FlashChipSize to Status 4 + * Add FlashChipMode to Status 4 * Removed redundant DHT2 option and code * Add Sonoff SV GPIO pin 05 configuration (#40) * Add configuration file backup and restore via web page diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 4e0bcc01d..697c41bdd 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -10,7 +10,10 @@ * ==================================================== */ -#define VERSION 0x03090E00 // 3.9.14 +#define VERSION 0x03090F00 // 3.9.15 + +//#define BE_MINIMAL // Compile a minimal version if upgrade memory gets tight (still 404k) + // To be used as step 1. Next step is compile and use desired version enum log_t {LOG_LEVEL_NONE, LOG_LEVEL_ERROR, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_DEBUG_MORE, LOG_LEVEL_ALL}; enum week_t {Last, First, Second, Third, Fourth}; @@ -38,6 +41,41 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; #define MODULE SONOFF_BASIC // [Module] Select default model +#define USE_DHT // Default DHT11 sensor needs no external library +#ifndef USE_DS18x20 +#define USE_DS18B20 // Default DS18B20 sensor needs no external library +#endif + +#ifdef BE_MINIMAL +//#ifdef USE_MQTT_TLS +//#undef USE_MQTT_TLS // Disable TLS support won't work as the MQTTHost is not set +//#endif +#ifdef USE_DISCOVERY +#undef USE_DISCOVERY // Disable Discovery services for both MQTT and web server +#endif +#ifdef USE_DOMOTICZ +#undef USE_DOMOTICZ // Disable Domoticz +#endif +#ifdef USE_EMULATION +#undef USE_EMULATION // Disable Wemo or Hue emulation +#endif +#ifdef USE_DS18x20 +#undef USE_DS18x20 // Disable DS18x20 sensor +#endif +#ifdef USE_I2C +#undef USE_I2C // Disable all I2C sensors +#endif +#ifdef USE_WS2812 +#undef USE_WS2812 // Disable WS2812 Led string +#endif +#ifdef USE_DS18B20 +#undef USE_DS18B20 // Disable internal DS18B20 sensor +#endif +#ifdef USE_DHT +#undef USE_DHT // Disable internal DHT sensor +#endif +#endif // BE_MINIMAL + #ifndef SWITCH_MODE #define SWITCH_MODE TOGGLE // TOGGLE, FOLLOW or FOLLOW_INV (the wall switch state) #endif @@ -46,16 +84,11 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; #define MQTT_FINGERPRINT "A5 02 FF 13 99 9F 8B 39 8E F1 83 4F 11 23 65 0B 32 36 FC 07" #endif -#ifndef USE_DS18x20 -#define USE_DS18B20 // Default DS18B20 sensor needs no external library -#endif - #ifndef WS2812_LEDS #define WS2812_LEDS 30 // [Pixels] Number of LEDs #endif #define WIFI_HOSTNAME "%s-%04d" // Expands to - -#define USE_DHT // Default DHT11 sensor needs no external library #define CONFIG_FILE_SIGN 0xA5 // Configuration file signature #define CONFIG_FILE_XOR 0x5A // Configuration file xor (0 = No Xor) @@ -88,7 +121,7 @@ enum emul_t {EMUL_NONE, EMUL_WEMO, EMUL_HUE, EMUL_MAX}; #ifdef USE_MQTT_TLS #define MAX_LOG_LINES 10 // Max number of lines in weblog #else - #define MAX_LOG_LINES 70 // Max number of lines in weblog + #define MAX_LOG_LINES 60 // Max number of lines in weblog #endif #define APP_BAUDRATE 115200 // Default serial baudrate @@ -371,6 +404,8 @@ uint8_t blink_power; // Blink power state uint8_t blink_mask = 0; // Blink relay active mask uint8_t blink_powersave; // Blink start power save state uint16_t mqtt_cmnd_publish = 0; // ignore flag for publish command +uint8_t latching_power = 0; // Power state at latching start +uint8_t latching_relay_pulse = 0; // Latching relay pulse timer #ifdef USE_MQTT_TLS WiFiClientSecure espClient; // Wifi Secure Client @@ -751,8 +786,26 @@ void getClient(char* output, const char* input, byte size) if (!digits) strlcpy(output, input, size); } +void setLatchingRelay(uint8_t power, uint8_t state) +{ + power &= 1; + if (state == 2) { // Init relay + state = 0; + } + else if (state == 1) { // Set port power to On + latching_power = power; + latching_relay_pulse = 2; // max 200mS (initiated by stateloop()) + } + else { // Set saved port to Off + power = latching_power; + } + if (pin[GPIO_REL1 +power] < 99) digitalWrite(pin[GPIO_REL1 +power], rel_inverted[power] ? !state : state); +} + void setRelay(uint8_t power) { + uint8_t state; + if ((sysCfg.module == SONOFF_DUAL) || (sysCfg.module == CH4)) { Serial.write(0xA0); Serial.write(0x04); @@ -760,14 +813,18 @@ void setRelay(uint8_t power) Serial.write(0xA1); Serial.write('\n'); Serial.flush(); - } else { - if (sysCfg.module == SONOFF_LED) { - sl_setColor(power &1); - } else { - for (byte i = 0; i < Maxdevice; i++) { - if (pin[GPIO_REL1 +i] < 99) digitalWrite(pin[GPIO_REL1 +i], power & 0x1); - power >>= 1; - } + } + else if (sysCfg.module == SONOFF_LED) { + sl_setColor(power &1); + } + else if (sysCfg.module == EXS_RELAY) { + setLatchingRelay(power, 1); + } + else { + for (byte i = 0; i < Maxdevice; i++) { + state = power &1; + if (pin[GPIO_REL1 +i] < 99) digitalWrite(pin[GPIO_REL1 +i], rel_inverted[i] ? !state : state); + power >>= 1; } } hlw_setPowerSteadyCounter(2); @@ -1513,7 +1570,7 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) if ((data_len > 0) && (((payload >= -12) && (payload <= 12)) || (payload == 99))) { sysCfg.timezone = payload; } - snprintf_P(svalue, sizeof(svalue), PSTR("{\"Timezone\":\"%d%s\"}"), sysCfg.timezone, (sysCfg.value_units) ? " Hr" : ""); + snprintf_P(svalue, sizeof(svalue), PSTR("{\"Timezone\":%d}"), sysCfg.timezone); } else if (!strcmp(type,"LEDPOWER")) { if ((data_len > 0) && (payload >= 0) && (payload <= 2)) { @@ -2090,6 +2147,11 @@ void stateloop() if (mqtt_cmnd_publish) mqtt_cmnd_publish--; // Clean up + if (latching_relay_pulse) { + latching_relay_pulse--; + if (!latching_relay_pulse) setLatchingRelay(0, 0); + } + if ((pulse_timer > 0) && (pulse_timer < 112)) { pulse_timer--; if (!pulse_timer) do_cmnd_power(1, 0); @@ -2431,16 +2493,16 @@ void GPIO_init() if ((sysCfg.module == SONOFF_DUAL) || (sysCfg.module == CH4)) { Baudrate = 19200; - } else { - if (sysCfg.module == SONOFF_LED) { - for (byte i = 0; i < 5; i++) { - if (pin[GPIO_PWM0 +i] < 99) pinMode(pin[GPIO_PWM0 +i], OUTPUT); - } - } else { - for (byte i = 0; i < 4; i++) { - if (pin[GPIO_KEY1 +i] < 99) pinMode(pin[GPIO_KEY1 +i], INPUT_PULLUP); - if (pin[GPIO_REL1 +i] < 99) pinMode(pin[GPIO_REL1 +i], OUTPUT); - } + } + else if (sysCfg.module == SONOFF_LED) { + for (byte i = 0; i < 5; i++) { + if (pin[GPIO_PWM0 +i] < 99) pinMode(pin[GPIO_PWM0 +i], OUTPUT); + } + } + else { + for (byte i = 0; i < 4; i++) { + if (pin[GPIO_KEY1 +i] < 99) pinMode(pin[GPIO_KEY1 +i], INPUT_PULLUP); + if (pin[GPIO_REL1 +i] < 99) pinMode(pin[GPIO_REL1 +i], OUTPUT); } } for (byte i = 0; i < 4; i++) { @@ -2453,6 +2515,10 @@ void GPIO_init() lastwallswitch[i] = digitalRead(pin[GPIO_SWT1 +i]); // set global now so doesn't change the saved power state on first switch check } } + if (sysCfg.module == EXS_RELAY) { + setLatchingRelay(0,2); + setLatchingRelay(1,2); + } setLed(sysCfg.ledstate &8); hlw_flg = ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)); diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 8df095811..532345a81 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -84,6 +84,7 @@ enum module_t { CH4, MOTOR, ELECTRODRAGON, + EXS_RELAY, USER_TEST, MAXMODULE }; @@ -253,6 +254,21 @@ const mytmplt modules[MAXMODULE] PROGMEM = { 0, GPIO_LED1 // GPIO16 Green/Blue Led (1 = On, 0 = Off) }, + { "EXS Relay", // Latching relay https://ex-store.de/ESP8266-WiFi-Relay-V31 + // Module Pin 1 VCC 3V3, Module Pin 6 GND + GPIO_KEY1, // GPIO00 Module Pin 8 - Button (firmware flash) + GPIO_USER, // GPIO01 Module Pin 2 = UART0_TXD + GPIO_USER, // GPIO02 Module Pin 7 + GPIO_USER, // GPIO03 Module Pin 3 = UART0_RXD + GPIO_USER, // GPIO04 Module Pin 10 + GPIO_USER, // GPIO05 Module Pin 9 + 0, 0, 0, 0, 0, 0, + GPIO_REL1, // GPIO12 Relay1 ( 1 = Off) + GPIO_REL2, // GPIO13 Relay1 ( 1 = On) + GPIO_USER, // GPIO14 Module Pin 5 + 0, + GPIO_USER // GPIO16 Module Pin 4 + }, { "User Test", // Sonoff Basic User Test GPIO_KEY1, // GPIO00 Button 0, diff --git a/sonoff/user_config.h b/sonoff/user_config.h index d428bee39..1e6c6b0da 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -106,7 +106,7 @@ #define APP_POWERON_STATE 3 // [PowerOnState] Power On Relay state (0 = Off, 1 = On, 2 = Toggle Saved state, 3 = Saved state) #define APP_BLINKTIME 10 // [BlinkTime] Time in 0.1 Sec to blink/toggle power for relay 1 #define APP_BLINKCOUNT 10 // [BlinkCount] Number of blinks (0 = 32000) -#define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec) +#define APP_SLEEP 0 // [Sleep] Sleep time to lower energy consumption (0 = Off, 1 - 250 mSec) #define SWITCH_MODE TOGGLE // [SwitchMode] TOGGLE, FOLLOW, FOLLOW_INV, PUSHBUTTON or PUSHBUTTON_INV (the wall switch state) #define WS2812_LEDS 30 // [Pixels] Number of WS2812 LEDs to start with @@ -133,10 +133,6 @@ * No user configurable items below \*********************************************************************************************/ -#if defined(USE_WEMO_EMULATION) && defined(USE_HUE_EMULATION) - #error "Select either USE_WEMO_EMULATION or USE_HUE_EMULATION" -#endif - #if (ARDUINO < 10610) #error "This software is supported with Arduino IDE starting from 1.6.10 and ESP8266 Release 2.3.0" #endif diff --git a/sonoff/xsns_bmp.ino b/sonoff/xsns_bmp.ino index 6475895b6..4ac3d7d17 100644 --- a/sonoff/xsns_bmp.ino +++ b/sonoff/xsns_bmp.ino @@ -437,10 +437,10 @@ void bmp_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) dtostrf(p, 1, PRESSURE_RESOLUTION &3, stemp2); dtostrf(h, 1, HUMIDITY_RESOLUTION &3, stemp3); if (!strcmp(bmpstype,"BME280")) { - snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":\"%s\", \"Humidity\":\"%s\", \"Pressure\":\"%s\"}"), + snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":%s, \"Humidity\":%s, \"Pressure\":%s}"), svalue, bmpstype, stemp1, stemp3, stemp2); } else { - snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":\"%s\", \"Pressure\":\"%s\"}"), + snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":%s, \"Pressure\":%s}"), svalue, bmpstype, stemp1, stemp2); } *djson = 1; diff --git a/sonoff/xsns_dht.ino b/sonoff/xsns_dht.ino index 0429446e6..e1b9f9793 100644 --- a/sonoff/xsns_dht.ino +++ b/sonoff/xsns_dht.ino @@ -186,7 +186,7 @@ void dht_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) if (dht_readTempHum(TEMP_CONVERSION, t, h)) { // Read temperature dtostrf(t, 1, TEMP_RESOLUTION &3, stemp1); dtostrf(h, 1, HUMIDITY_RESOLUTION &3, stemp2); - snprintf_P(svalue, ssvalue, PSTR("%s, \"DHT\":{\"Temperature\":\"%s\", \"Humidity\":\"%s\"}"), svalue, stemp1, stemp2); + snprintf_P(svalue, ssvalue, PSTR("%s, \"DHT\":{\"Temperature\":%s, \"Humidity\":%s}"), svalue, stemp1, stemp2); *djson = 1; #ifdef USE_DOMOTICZ domoticz_sensor2(stemp1, stemp2); diff --git a/sonoff/xsns_ds18b20.ino b/sonoff/xsns_ds18b20.ino index b77d89f69..18375531e 100644 --- a/sonoff/xsns_ds18b20.ino +++ b/sonoff/xsns_ds18b20.ino @@ -179,7 +179,7 @@ void dsb_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) if (dsb_readTemp(TEMP_CONVERSION, t)) { // Check if read failed dtostrf(t, 1, TEMP_RESOLUTION &3, stemp1); - snprintf_P(svalue, ssvalue, PSTR("%s, \"DS18B20\":{\"Temperature\":\"%s\"}"), svalue, stemp1); + snprintf_P(svalue, ssvalue, PSTR("%s, \"DS18B20\":{\"Temperature\":%s}"), svalue, stemp1); *djson = 1; #ifdef USE_DOMOTICZ domoticz_sensor1(stemp1); diff --git a/sonoff/xsns_ds18x20.ino b/sonoff/xsns_ds18x20.ino index fa38cb686..22fc92654 100644 --- a/sonoff/xsns_ds18x20.ino +++ b/sonoff/xsns_ds18x20.ino @@ -175,7 +175,7 @@ void ds18x20_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) stemp1[0] = '\0'; } dsxflg++; - snprintf_P(svalue, ssvalue, PSTR("%s%s\"DS%d\":{\"Type\":\"%s\", \"Address\":\"%s\", \"Temperature\":\"%s\"}"), + snprintf_P(svalue, ssvalue, PSTR("%s%s\"DS%d\":{\"Type\":\"%s\", \"Address\":\"%s\", \"Temperature\":%s}"), svalue, stemp1, i +1, ds18x20_type(i).c_str(), ds18x20_address(i).c_str(), stemp2); strcpy(stemp1, ", "); #ifdef USE_DOMOTICZ diff --git a/sonoff/xsns_hlw8012.ino b/sonoff/xsns_hlw8012.ino index 097969e7a..3ed5e24c3 100644 --- a/sonoff/xsns_hlw8012.ino +++ b/sonoff/xsns_hlw8012.ino @@ -530,7 +530,7 @@ void hlw_mqttStat(byte option, char* svalue, uint16_t ssvalue) dtostrf(pc, 1, 2, stemp2); dtostrf(pi, 1, 3, stemp3); snprintf_P(speriod, sizeof(speriod), PSTR(", \"Period\":%d"), pe); - snprintf_P(svalue, ssvalue, PSTR("%s\"Yesterday\":\"%s\", \"Today\":\"%s\"%s, \"Power\":%d, \"Factor\":\"%s\", \"Voltage\":%d, \"Current\":\"%s\"}"), + snprintf_P(svalue, ssvalue, PSTR("%s\"Yesterday\":%s, \"Today\":%s%s, \"Power\":%d, \"Factor\":%s, \"Voltage\":%d, \"Current\":%s}"), svalue, stemp0, stemp1, (option) ? speriod : "", pw, stemp2, pu, stemp3); #ifdef USE_DOMOTICZ dtostrf(ped * 1000, 1, 1, stemp1); @@ -540,7 +540,6 @@ void hlw_mqttStat(byte option, char* svalue, uint16_t ssvalue) void hlw_mqttPresent() { -// char stopic[TOPSZ], svalue[MESSZ], stime[21]; char svalue[MESSZ], stime[21]; snprintf_P(stime, sizeof(stime), PSTR("%04d-%02d-%02dT%02d:%02d:%02d"), diff --git a/sonoff/xsns_htu21.ino b/sonoff/xsns_htu21.ino index 36e26f8be..64ea0cde4 100644 --- a/sonoff/xsns_htu21.ino +++ b/sonoff/xsns_htu21.ino @@ -240,7 +240,7 @@ void htu_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) h = htu21_compensatedHumidity(h, t); dtostrf(t, 1, TEMP_RESOLUTION &3, stemp1); dtostrf(h, 1, HUMIDITY_RESOLUTION &3, stemp2); - snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":\"%s\", \"Humidity\":\"%s\"}"), svalue, htustype, stemp1, stemp2); + snprintf_P(svalue, ssvalue, PSTR("%s, \"%s\":{\"Temperature\":%s, \"Humidity\":%s}"), svalue, htustype, stemp1, stemp2); *djson = 1; #ifdef USE_DOMOTICZ domoticz_sensor2(stemp1, stemp2);