From bb5251c2c860bea6d5eb17d5276c11ef42440eb6 Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 11 Feb 2017 15:06:23 +0100 Subject: [PATCH] v3.9.14 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) --- README.md | 2 +- api/arduino/sonoff.ino.bin | Bin 462176 -> 462224 bytes sonoff/_releasenotes.ino | 7 +- sonoff/sonoff.ino | 36 +++++----- sonoff/sonoff_template.h | 140 +++++++++++++++++++++---------------- sonoff/webserver.ino | 8 +-- sonoff/xsns_dht.ino | 6 +- sonoff/xsns_ds18x20.ino | 27 ++++--- 8 files changed, 129 insertions(+), 97 deletions(-) diff --git a/README.md b/README.md index ed0a3d07e..d668ce575 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.13** - See ```sonoff/_releasenotes.ino``` for change information. +Current version is **3.9.14** - 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 32ea96b180d5c9678d63b10c8b6e3c4e01b9286c..5e2ad3ee12e1be01b8d270b83cef1ccfe4567c8a 100644 GIT binary patch delta 58291 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 delta 58656 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 +#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) @@ -1147,8 +1144,8 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) if (!strcmp(dataBufUc,"?")) data_len = 0; int16_t payload = atoi(dataBuf); // -32766 - 32767 uint16_t payload16 = atoi(dataBuf); // 0 - 65535 - if (!strcmp(dataBufUc,"OFF") || !strcmp(dataBufUc,"STOP")) payload = 0; - if (!strcmp(dataBufUc,"ON") || !strcmp(dataBufUc,"START") || !strcmp(dataBufUc,"USER")) payload = 1; + if (!strcmp(dataBufUc,"OFF") || !strcmp(dataBufUc,"FALSE") || !strcmp(dataBufUc,"STOP")) payload = 0; + if (!strcmp(dataBufUc,"ON") || !strcmp(dataBufUc,"TRUE") || !strcmp(dataBufUc,"START") || !strcmp(dataBufUc,"USER")) payload = 1; if (!strcmp(dataBufUc,"TOGGLE") || !strcmp(dataBufUc,"ADMIN")) payload = 2; if (!strcmp(dataBufUc,"BLINK")) payload = 3; if (!strcmp(dataBufUc,"BLINKOFF")) payload = 4; @@ -1272,7 +1269,7 @@ void mqttDataCb(char* topic, byte* data, unsigned int data_len) else if (!strcmp(type,"GPIO") && (index < MAX_GPIO_PIN)) { mytmplt cmodule; memcpy_P(&cmodule, &modules[sysCfg.module], sizeof(cmodule)); - if ((data_len > 0) && (cmodule.gp.io[index] == GPIO_USER) && (payload >= GPIO_SENSOR_START) && (payload < GPIO_SENSOR_END)) { + if ((data_len > 0) && (cmodule.gp.io[index] == GPIO_USER) && (payload >= 0) && (payload < GPIO_SENSOR_END)) { for (byte i = 0; i < MAX_GPIO_PIN; i++) { if ((cmodule.gp.io[i] == GPIO_USER) && (sysCfg.my_module.gp.io[i] == payload)) sysCfg.my_module.gp.io[i] = 0; } @@ -1928,7 +1925,7 @@ void publish_status(uint8_t payload) uint8_t djson = 0; snprintf_P(svalue, sizeof(svalue), PSTR("{\"StatusSNS\":")); sensors_mqttPresent(svalue, sizeof(svalue), &djson); - if (!djson) snprintf_P(svalue, sizeof(svalue), PSTR("%s}"), svalue); + snprintf_P(svalue, sizeof(svalue), PSTR("%s}"), svalue); mqtt_publish_topic_P(option, PSTR("STATUS10"), svalue); } } @@ -1948,9 +1945,9 @@ void sensors_mqttPresent(char* svalue, uint16_t ssvalue, uint8_t* djson) ds18x20_mqttPresent(svalue, ssvalue, djson); #endif // USE_DS18x20 } -#if defined(USE_DHT) || defined(USE_DHT2) +#ifdef USE_DHT if (dht_type) dht_mqttPresent(svalue, ssvalue, djson); -#endif // USE_DHT/2 +#endif // USE_DHT #ifdef USE_I2C if (i2c_flg) { #ifdef USE_HTU @@ -2019,7 +2016,7 @@ void every_second() if (sysCfg.tele_period) { tele_period++; if (tele_period == sysCfg.tele_period -1) { - if (pin[GPIO_DSB]) { + if (pin[GPIO_DSB] < 99) { #ifdef USE_DS18B20 dsb_readTempPrep(); #endif // USE_DS18B20 @@ -2388,6 +2385,7 @@ void GPIO_init() if (sysCfg.my_module.gp.io[i] > GPIO_NONE) my_module.gp.io[i] = sysCfg.my_module.gp.io[i]; if ((def_module.gp.io[i] > GPIO_NONE) && (def_module.gp.io[i] < GPIO_USER)) my_module.gp.io[i] = def_module.gp.io[i]; } + for (byte i = 0; i < GPIO_MAX; i++) pin[i] = 99; for (byte i = 0; i < MAX_GPIO_PIN; i++) { mpin = my_module.gp.io[i]; @@ -2404,13 +2402,13 @@ void GPIO_init() led_inverted[mpin - GPIO_LED1_INV] = 1; mpin -= 4; } - else if (mpin == GPIO_DHT11) dht_type = DHT11; + else if (mpin == GPIO_DHT11) dht_type = mpin; else if (mpin == GPIO_DHT21) { - dht_type = DHT21; + dht_type = mpin; mpin--; } else if (mpin == GPIO_DHT22) { - dht_type = DHT22; + dht_type = mpin; mpin -= 2; } pin[mpin] = i; @@ -2460,9 +2458,13 @@ void GPIO_init() hlw_flg = ((pin[GPIO_HLW_SEL] < 99) && (pin[GPIO_HLW_CF1] < 99) && (pin[GPIO_HLW_CF] < 99)); if (hlw_flg) hlw_init(); -#if defined(USE_DHT) || defined(USE_DHT2) +#ifdef USE_DHT if (dht_type) dht_init(); -#endif // USE_DHT/2 +#endif // USE_DHT + +#ifdef USE_DS18x20 + if (pin[GPIO_DSB] < 99) ds18x20_init(); +#endif // USE_DS18x20 #ifdef USE_I2C i2c_flg = ((pin[GPIO_I2C_SCL] < 99) && (pin[GPIO_I2C_SDA] < 99)); diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 869629d3e..8df095811 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -2,73 +2,95 @@ * Template parameters \*********************************************************************************************/ -#define GPIO_SENSOR_START 0 -#define GPIO_NONE 0 // Not used -#define GPIO_DHT11 1 // DHT11 -#define GPIO_DHT21 2 // DHT21 -#define GPIO_AM2301 2 // AM2301 -#define GPIO_DHT22 3 // DHT22 -#define GPIO_AM2302 3 // AM2302 -#define GPIO_AM2321 3 // AM2321 -#define GPIO_DSB 4 // Single wire DS18B20 or DS18S20 -#define GPIO_I2C_SCL 5 // I2C SCL -#define GPIO_I2C_SDA 6 // I2C SDA -#define GPIO_WS2812 7 // WS2812 Led string -#define GPIO_SWT1 8 // User connected external switches -#define GPIO_SENSOR_END 9 +// User selectable GPIO functionality +enum upins_t { + GPIO_NONE, // Not used + GPIO_DHT11, // DHT11 + GPIO_DHT21, // DHT21, AM2301 + GPIO_DHT22, // DHT22, AM2302, AM2321 + GPIO_DSB, // Single wire DS18B20 or DS18S20 + GPIO_I2C_SCL, // I2C SCL + GPIO_I2C_SDA, // I2C SDA + GPIO_WS2812, // WS2812 Led string + GPIO_SWT1, // User connected external switches + GPIO_SENSOR_END }; -#define GPIO_SWT2 9 -#define GPIO_SWT3 10 -#define GPIO_SWT4 11 -#define GPIO_KEY1 12 // Button usually connected to GPIO0 -#define GPIO_KEY2 13 -#define GPIO_KEY3 14 -#define GPIO_KEY4 15 -#define GPIO_REL1 16 // Relays -#define GPIO_REL2 17 -#define GPIO_REL3 18 -#define GPIO_REL4 19 -#define GPIO_REL1_INV 20 -#define GPIO_REL2_INV 21 -#define GPIO_REL3_INV 22 -#define GPIO_REL4_INV 23 -#define GPIO_LED1 24 // Leds -#define GPIO_LED2 25 -#define GPIO_LED3 26 -#define GPIO_LED4 27 -#define GPIO_LED1_INV 28 -#define GPIO_LED2_INV 29 -#define GPIO_LED3_INV 30 -#define GPIO_LED4_INV 31 -#define GPIO_PWM0 32 // Cold -#define GPIO_PWM1 33 // Warm -#define GPIO_PWM2 34 // Red (swapped with Blue from original) -#define GPIO_PWM3 35 // Green -#define GPIO_PWM4 36 // Blue (swapped with Red from original) -#define GPIO_RXD 37 // Serial interface -#define GPIO_TXD 38 // Serial interface -#define GPIO_HLW_SEL 39 // HLW8012 Sel output (Sonoff Pow) -#define GPIO_HLW_CF1 40 // HLW8012 CF1 voltage / current (Sonoff Pow) -#define GPIO_HLW_CF 41 // HLW8012 CF power (Sonoff Pow) -#define GPIO_USER 42 // User configurable -#define GPIO_MAX 43 +// Text in webpage Module Parameters and commands GPIOS and GPIO +const char sensors[GPIO_SENSOR_END][8] PROGMEM = { + "None", + "DHT11", + "AM2301", + "DHT22", + "DS18x20", + "I2C SCL", + "I2C SDA", + "WS2812", + "Switch" }; +// Programmer selectable GPIO functionality offset by user selectable GPIOs +enum fpins_t { + GPIO_SWT2 = GPIO_SENSOR_END, + GPIO_SWT3, + GPIO_SWT4, + GPIO_KEY1, // Button usually connected to GPIO0 + GPIO_KEY2, + GPIO_KEY3, + GPIO_KEY4, + GPIO_REL1, // Relays + GPIO_REL2, + GPIO_REL3, + GPIO_REL4, + GPIO_REL1_INV, + GPIO_REL2_INV, + GPIO_REL3_INV, + GPIO_REL4_INV, + GPIO_LED1, // Leds + GPIO_LED2, + GPIO_LED3, + GPIO_LED4, + GPIO_LED1_INV, + GPIO_LED2_INV, + GPIO_LED3_INV, + GPIO_LED4_INV, + GPIO_PWM0, // Cold + GPIO_PWM1, // Warm + GPIO_PWM2, // Red (swapped with Blue from original) + GPIO_PWM3, // Green + GPIO_PWM4, // Blue (swapped with Red from original) + GPIO_RXD, // Serial interface + GPIO_TXD, // Serial interface + GPIO_HLW_SEL, // HLW8012 Sel output (Sonoff Pow) + GPIO_HLW_CF1, // HLW8012 CF1 voltage / current (Sonoff Pow) + GPIO_HLW_CF, // HLW8012 CF power (Sonoff Pow) + GPIO_USER, // User configurable + GPIO_MAX }; /********************************************************************************************/ -enum module_t {SONOFF_BASIC, SONOFF_RF, SONOFF_SV, SONOFF_TH, SONOFF_DUAL, SONOFF_POW, SONOFF_4CH, S20, SLAMPHER, SONOFF_TOUCH, SONOFF_LED, CH1, CH4, MOTOR, ELECTRODRAGON, USER_TEST, MAXMODULE}; +// Supported hardware modules +enum module_t { + SONOFF_BASIC, + SONOFF_RF, + SONOFF_SV, + SONOFF_TH, + SONOFF_DUAL, + SONOFF_POW, + SONOFF_4CH, + S20, + SLAMPHER, + SONOFF_TOUCH, + SONOFF_LED, + CH1, + CH4, + MOTOR, + ELECTRODRAGON, + USER_TEST, + MAXMODULE }; /********************************************************************************************/ #define MAX_GPIO_PIN 17 // Number of supported GPIO -#define DHT11 11 -#define DHT21 21 -#define AM2301 21 -#define DHT22 22 -#define AM2302 22 -#define AM2321 22 - typedef struct MYIO { uint8_t io[MAX_GPIO_PIN]; } myio; @@ -78,9 +100,7 @@ typedef struct MYTMPLT { myio gp; } mytmplt; -const char sensors[GPIO_SENSOR_END][8] PROGMEM = - { "None", "DHT11", "AM2301", "DHT22", "DS18x20", "I2C SCL", "I2C SDA", "WS2812", "Switch" }; - +// Default module settings const mytmplt modules[MAXMODULE] PROGMEM = { { "Sonoff Basic", // Sonoff Basic GPIO_KEY1, // GPIO00 Button diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 9784eb12e..2bcb25467 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -491,11 +491,11 @@ void handleRoot() if (pin[GPIO_DSB] < 99) tpage += dsb_webPresent(); #endif // USE_DS18B20 #ifdef USE_DS18x20 - if (pin[GPIO_DSB] < 99) page += ds18x20_webPresent(); + if (pin[GPIO_DSB] < 99) tpage += ds18x20_webPresent(); #endif // USE_DS18x20 -#if defined(USE_DHT) || defined(USE_DHT2) +#ifdef USE_DHT if (dht_type) tpage += dht_webPresent(); -#endif // USE_DHT/2 +#endif // USE_DHT #ifdef USE_I2C if (i2c_flg) { tpage += htu_webPresent(); @@ -570,7 +570,7 @@ void handleModule() for (byte i = 0; i < MAX_GPIO_PIN; i++) { if (cmodule.gp.io[i] == GPIO_USER) { page += F("
GPIO"); page += String(i); page += F("