diff --git a/README.md b/README.md index 3ca862b8..6dc1d4b8 100644 --- a/README.md +++ b/README.md @@ -215,8 +215,8 @@ Here is the list of supported hardware. For more information please refer to the |**Maxcio W-US002S**|**HEYGO HY02**|**YiDian XS-SSA05**| |![WiOn 50055](images/devices/wion-50055.jpg)|![LINGAN SWA1](images/devices/lingan-swa1.jpg)|![Tonbux PowerStrip02](images/devices/tonbux-powerstrip02.jpg)| |**WiOn 50055**|**LINGAN SWA1**|**Tonbux PowerStrip02** -|![Itead Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![Itead Sonoff T1](images/devices/itead-sonoff-t1.jpg)|![Swifitch](images/devices/swifitch.png)| -|**Itead Sonoff Touch**|**Itead Sonoff T1**|Swifitch| +|![Itead Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![Itead Sonoff T1](images/devices/itead-sonoff-t1.jpg)|![YJZK 2-gang switch](images/devices/yjzk-2gang-switch.jpg)| +|**Itead Sonoff Touch**|**Itead Sonoff T1**|**YJZK 2-gang switch**| |![Itead Slampher](images/devices/itead-slampher.jpg)||| |**Itead Slampher**||| |![Itead Sonoff B1](images/devices/itead-sonoff-b1.jpg)|![AI-Thinker Wifi Light / Noduino OpenLight](images/devices/aithinker-ai-light.jpg)|![Authometion LYT8266](images/devices/authometion-lyt8266.jpg)| @@ -235,10 +235,12 @@ Here is the list of supported hardware. For more information please refer to the |**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge GarcĂ­a Wifi + Relays Board Kit**|**EXS Wifi Relay v3.1**| |![ManCaveMade ESP-Live](images/devices/mancavemade-esp-live.jpg)|![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Witty Cloud](images/devices/witty-cloud.jpg)| |**ManCaveMade ESP-Live**|**Wemos D1 Mini Relay Shield**|**Witty Cloud**| +|![IKE ESPike](images/devices/ike-espike.jpg)||![Arniex Swifitch](images/devices/arniex-swifitch.jpg)| +|**IKE ESPike**|**STM_RELAY**|**Arniex Swifitch**| |![Heltec Touch Relay](images/devices/heltec-touch-relay.jpg)|![Generic Relay v4.0](images/devices/generic-relay-40.jpg)|![Generic RGBLed v1.0](images/devices/generic-rgbled-10.jpg)| |**Heltec Touch Relay**|**Generic Relay v4.0**|**Generic RGBLed v1.0**| -||| -|**YJZK 2-gang switch**|**STM_RELAY**|| +|![Generic DHT11 v1.0](images/devices/generic-dht11-10.jpg)|![Generic DS18B20 v1.0](images/devices/generic-ds18b20-10.jpg)|| +|**Generic DHT11 v1.0**|**Generic DS18B20 v1.0**|| **Other supported boards:** *TODO* diff --git a/code/build.sh b/code/build.sh index 6e6dcaf0..caf2670a 100755 --- a/code/build.sh +++ b/code/build.sh @@ -64,7 +64,7 @@ echo "Building firmware images..." mkdir -p ../firmware/espurna-$version for environment in $environments; do echo "* espurna-$version-$environment.bin" - platformio run --silent --environment $environment || break + platformio run --silent --environment $environment || exit 1 mv .pioenvs/$environment/firmware.bin ../firmware/espurna-$version/espurna-$version-$environment.bin done echo "--------------------------------------------------------------" diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index 18059bc8..d995139a 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -72,8 +72,10 @@ //#define GREEN_ESP8266RELAY //#define IKE_ESPIKE //#define ARNIEX_SWIFITCH -//#define GENERIC_ESP01SRELAY40 -//#define GENERIC_ESP01SRGBLED10 +//#define GENERIC_ESP01S_RELAY_V40 +//#define GENERIC_ESP01S_RGBLED_V10 +//#define GENERIC_ESP01S_DHT11_V10 +//#define GENERIC_ESP01S_DS18B20_V10 //#define HELTEC_TOUCHRELAY //-------------------------------------------------------------------------------- diff --git a/code/espurna/config/general.h b/code/espurna/config/general.h index 1dee94d3..0a228696 100644 --- a/code/espurna/config/general.h +++ b/code/espurna/config/general.h @@ -933,6 +933,11 @@ PROGMEM const char* const custom_reset_string[] = { #define LIGHT_USE_RGB 0 // Use RGB color selector (1=> RGB, 0=> HSV) #endif +#ifndef LIGHT_WHITE_FACTOR +#define LIGHT_WHITE_FACTOR 1 // When using LIGHT_USE_WHITE with uneven brightness LEDs, + // this factor is used to scale the white channel to match brightness +#endif + #ifndef LIGHT_USE_TRANSITIONS #define LIGHT_USE_TRANSITIONS 1 // Transitions between colors diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index 440249e5..53f5a9c0 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -636,6 +636,7 @@ #define MY92XX_DCKI_PIN 14 #define MY92XX_COMMAND MY92XX_COMMAND_DEFAULT #define MY92XX_MAPPING 4, 3, 5, 0, 1 + #define LIGHT_WHITE_FACTOR (0.1) // White LEDs are way more bright in the B1 #elif defined(ITEAD_SONOFF_LED) @@ -1223,7 +1224,7 @@ #define RELAY1_TYPE RELAY_TYPE_NORMAL #define RELAY2_TYPE RELAY_TYPE_NORMAL - // DB18B20 + // DS18B20 #ifndef DALLAS_SUPPORT #define DALLAS_SUPPORT 1 #endif @@ -1829,7 +1830,7 @@ // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180404024035&SearchText=esp-01s+relay // ----------------------------------------------------------------------------- -#elif defined(GENERIC_ESP01SRELAY40) +#elif defined(GENERIC_ESP01S_RELAY_V40) // Info #define MANUFACTURER "GENERIC" @@ -1848,7 +1849,7 @@ // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180404023816&SearchText=esp-01s+led+controller // ----------------------------------------------------------------------------- -#elif defined(GENERIC_ESP01SRGBLED10) +#elif defined(GENERIC_ESP01S_RGBLED_V10) // Info #define MANUFACTURER "GENERIC" @@ -1866,6 +1867,41 @@ // LEDs #define LED1_PIN 2 + +// ----------------------------------------------------------------------------- +// ESP-01S DHT11 v1.0 +// https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180410105907&SearchText=esp-01s+dht11 +// ----------------------------------------------------------------------------- + +#elif defined(GENERIC_ESP01S_DHT11_V10) + + // Info + #define MANUFACTURER "GENERIC" + #define DEVICE "ESP01S_DHT11_10" + + // DHT11 + #ifndef DHT_SUPPORT + #define DHT_SUPPORT 1 + #endif + #define DHT_PIN 2 + +// ----------------------------------------------------------------------------- +// ESP-01S DS18B20 v1.0 +// https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180410105933&SearchText=esp-01s+ds18b20 +// ----------------------------------------------------------------------------- + +#elif defined(GENERIC_ESP01S_DS18B20_V10) + + // Info + #define MANUFACTURER "GENERIC" + #define DEVICE "ESP01S_DS18B20_10" + + // DB18B20 + #ifndef DALLAS_SUPPORT + #define DALLAS_SUPPORT 1 + #endif + #define DALLAS_PIN 2 + // ----------------------------------------------------------------------------- // Heltec Touch Relay // https://www.aliexpress.com/wholesale?catId=0&initiative_id=SB_20180408043114&SearchText=esp8266+touch+relay diff --git a/code/espurna/light.ino b/code/espurna/light.ino index 01505764..017ce428 100644 --- a/code/espurna/light.ino +++ b/code/espurna/light.ino @@ -89,30 +89,28 @@ void _generateBrightness() { // Convert RGB to RGBW if (_light_has_color && _light_use_white) { - unsigned char white, max_in, max_out; - double factor = 0; - - white = std::min(_light_channel[0].inputValue, std::min(_light_channel[1].inputValue, _light_channel[2].inputValue)); - max_in = std::max(_light_channel[0].inputValue, std::max(_light_channel[1].inputValue, _light_channel[2].inputValue)); - + // Substract the common part from RGB channels and add it to white channel. So [250,150,50] -> [200,100,0,50 + unsigned char white = std::min(_light_channel[0].inputValue, std::min(_light_channel[1].inputValue, _light_channel[2].inputValue)); for (unsigned int i=0; i < 3; i++) { _light_channel[i].value = _light_channel[i].inputValue - white; } _light_channel[3].value = white; - - max_out = std::max(std::max(_light_channel[0].value, _light_channel[1].value), std::max(_light_channel[2].value, _light_channel[3].value)); - if (max_out > 0) { - factor = (double) (max_in / max_out); - } + _light_channel[3].inputValue = 0; // Scale up to equal input values. So [250,150,50] -> [200,100,0,50] -> [250, 125, 0, 63] + unsigned char max_in = std::max(_light_channel[0].inputValue, std::max(_light_channel[1].inputValue, _light_channel[2].inputValue)); + unsigned char max_out = std::max(std::max(_light_channel[0].value, _light_channel[1].value), std::max(_light_channel[2].value, _light_channel[3].value)); + double factor = (max_out > 0) ? (double) (max_in / max_out) : 0; for (unsigned int i=0; i < 4; i++) { _light_channel[i].value = round((double) _light_channel[i].value * factor * brightness); } - // Don't apply brightness, it is already in the inputValue: - if (_light_channel.size() == 5) { - _light_channel[4].value = _light_channel[4].inputValue; + // Scale white channel to match brightness + _light_channel[3].value = constrain(_light_channel[3].value * LIGHT_WHITE_FACTOR, 0, 255); + + // For the rest of channels, don't apply brightness, it is already in the inputValue: + for (unsigned char i=4; i < _light_channel.size(); i++) { + _light_channel[i].value = _light_channel[i].inputValue; } } else { diff --git a/code/espurna/migrate.ino b/code/espurna/migrate.ino index 81f79c1b..104ca56d 100644 --- a/code/espurna/migrate.ino +++ b/code/espurna/migrate.ino @@ -859,7 +859,7 @@ void migrate() { setSetting("relayGPIO", 0, 5); setSetting("relayType", 0, RELAY_TYPE_INVERSE); - #elif defined(GENERIC_ESP01SRELAY40) + #elif defined(GENERIC_ESP01S_RELAY_V40) setSetting("board", 65); setSetting("ledGPIO", 0, 2); @@ -867,7 +867,7 @@ void migrate() { setSetting("relayGPIO", 0, 0); setSetting("relayType", 0, RELAY_TYPE_NORMAL); - #elif defined(GENERIC_ESP01SRGBLED10) + #elif defined(GENERIC_ESP01S_RGBLED_V10) setSetting("board", 66); setSetting("ledGPIO", 0, 2); @@ -880,6 +880,14 @@ void migrate() { setSetting("relayGPIO", 0, 12); setSetting("relayType", 0, RELAY_TYPE_NORMAL); + #elif defined(GENERIC_ESP01S_DHT11_V10) + + setSetting("board", 68); + + #elif defined(GENERIC_ESP01S_DS18B20_V10) + + setSetting("board", 69); + #else // Allow users to define new settings without migration config diff --git a/code/platformio.ini b/code/platformio.ini index cf2e23fc..a103cbaa 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -1881,7 +1881,7 @@ board = esp01_1m board_flash_mode = dout lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m} -DGENERIC_ESP01SRELAY40 +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_RELAY_V40 monitor_baud = 115200 extra_scripts = ${common.extra_scripts} @@ -1892,7 +1892,7 @@ board = esp01_1m board_flash_mode = dout lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m} -DGENERIC_ESP01SRELAY40 +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_RELAY_V40 upload_speed = 115200 upload_port = "${env.ESPURNA_IP}" upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 @@ -1905,7 +1905,7 @@ board = esp01_1m board_flash_mode = dout lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m} -DGENERIC_ESP01SRGBLED10 +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_RGBLED_V10 monitor_baud = 115200 extra_scripts = ${common.extra_scripts} @@ -1916,7 +1916,55 @@ board = esp01_1m board_flash_mode = dout lib_deps = ${common.lib_deps} lib_ignore = ${common.lib_ignore} -build_flags = ${common.build_flags_1m} -DGENERIC_ESP01SRGBLED10 +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_RGBLED_V10 +upload_speed = 115200 +upload_port = "${env.ESPURNA_IP}" +upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 +extra_scripts = ${common.extra_scripts} + +[env:generic-esp01s-dht11-10] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_DHT11_V10 +monitor_baud = 115200 +extra_scripts = ${common.extra_scripts} + +[env:generic-esp01s-dht11-10-ota] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_DHT11_V10 +upload_speed = 115200 +upload_port = "${env.ESPURNA_IP}" +upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 +extra_scripts = ${common.extra_scripts} + +[env:generic-esp01s-ds18b20-10] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_DS18B20_V10 +monitor_baud = 115200 +extra_scripts = ${common.extra_scripts} + +[env:generic-esp01s-ds18b20-10-ota] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags_1m} -DGENERIC_ESP01S_DS18B20_V10 upload_speed = 115200 upload_port = "${env.ESPURNA_IP}" upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 diff --git a/images/devices/arniex-swifitch.jpg b/images/devices/arniex-swifitch.jpg new file mode 100644 index 00000000..373036ff Binary files /dev/null and b/images/devices/arniex-swifitch.jpg differ diff --git a/images/devices/generic-dht11-10.jpg b/images/devices/generic-dht11-10.jpg new file mode 100644 index 00000000..65cf8e9a Binary files /dev/null and b/images/devices/generic-dht11-10.jpg differ diff --git a/images/devices/generic-ds18b20-10.jpg b/images/devices/generic-ds18b20-10.jpg new file mode 100644 index 00000000..16f94d7b Binary files /dev/null and b/images/devices/generic-ds18b20-10.jpg differ diff --git a/images/devices/generic-relay-40.jpg b/images/devices/generic-relay-40.jpg index 005e6af4..62a9144d 100644 Binary files a/images/devices/generic-relay-40.jpg and b/images/devices/generic-relay-40.jpg differ diff --git a/images/devices/generic-rgbled-10.jpg b/images/devices/generic-rgbled-10.jpg index 235cb833..24e8ad65 100644 Binary files a/images/devices/generic-rgbled-10.jpg and b/images/devices/generic-rgbled-10.jpg differ diff --git a/images/devices/ike-espike.jpg b/images/devices/ike-espike.jpg new file mode 100644 index 00000000..dbe7a577 Binary files /dev/null and b/images/devices/ike-espike.jpg differ diff --git a/images/devices/itead-sonoff-basic-2.jpg b/images/devices/itead-sonoff-basic-2.jpg deleted file mode 100644 index 8a3a731b..00000000 Binary files a/images/devices/itead-sonoff-basic-2.jpg and /dev/null differ diff --git a/images/devices/swifitch.png b/images/devices/swifitch.png deleted file mode 100644 index f43aba09..00000000 Binary files a/images/devices/swifitch.png and /dev/null differ diff --git a/images/devices/yjzk-2gang-switch.jpg b/images/devices/yjzk-2gang-switch.jpg new file mode 100644 index 00000000..81696468 Binary files /dev/null and b/images/devices/yjzk-2gang-switch.jpg differ