diff --git a/.gitignore b/.gitignore index 6c63975f..9278245d 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,4 @@ code/utils custom.h .python .env +.DS_Store diff --git a/README.md b/README.md index bb5f5c71..99ed07cd 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # ESPurna Firmware -ESPurna ("spark" in Catalan) is a custom firmware for ESP8266 based smart switches and sensors. +ESPurna ("spark" in Catalan) is a custom firmware for ESP8285/ESP8266 based smart switches, lights and sensors. It uses the Arduino Core for ESP8266 framework and a number of 3rd party libraries. [![version](https://img.shields.io/badge/version-1.12.5a-brightgreen.svg)](CHANGELOG.md) @@ -18,18 +18,18 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari ## Features -* *KRACK* vulnerability free (when built against Arduino Core 2.4.0) +* *KRACK* vulnerability free (when built with Arduino Core >= 2.4.0) * Support for **multiple ESP8266-based boards** ([check list](https://github.com/xoseperez/espurna/wiki/Hardware)) * Power saving options * Wifi **AP Mode** or **STA mode** - * Up to 5 different networks can be defined * Supports static IP + * Up to 5 different networks can be defined * Scans for strongest network if more than one defined (also available in web UI) * Handles correctly multiple AP with the same SSID * Defaults to AP mode (also available after double clicking the main button) * Network visibility * Supports mDNS (service reporting and metadata) both server mode and client mode (.local name resolution) - * Supports NetBIOS, LLMNR and Netbios (when built against Arduino Core 2.4.0) and SSDP (experimental) + * Supports NetBIOS, LLMNR and Netbios (when built with Arduino Core >= 2.4.0) and SSDP (experimental) * Switch management * Support for **push buttons** and **toggle switches** * Configurable **status on boot** per switch (always ON, always OFF, same as before or toggle) @@ -115,7 +115,7 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari * Run special commands * **Telnet support** * Enable/disable via the web UI - * Show debug info and allows to run terminal commands + * Shows debug info and allows to run terminal commands * **NTP** for time synchronization * Supports worldwide time zones * Compatible with DST @@ -158,7 +158,7 @@ It uses the Arduino Core for ESP8266 framework and a number of 3rd party librari ## Contribute -There are several ways to contribute to ESpurna development. You can contribute to the repository by doing: +There are several ways to contribute to ESPurna development. You can contribute to the repository by doing: * Pull requests (fixes, enhancements, new features... are very welcome) * Documentation (I reckon I'm bad at it) @@ -178,30 +178,43 @@ Here is the list of supported hardware. For more information please refer to the |||| |---|---|---| -|![Tinkerman Espurna H](images/devices/tinkerman-espurna-h.jpg)|![IteadStudio Sonoff RF Bridge](images/devices/itead-sonoff-rfbridge.jpg)|| -|**Tinkerman ESPurna H**|**IteadStudio Sonoff RF Bridge**|| -|![IteadStudio Sonoff Basic](images/devices/itead-sonoff-basic.jpg)|![IteadStudio Sonoff RF](images/devices/itead-sonoff-rf.jpg)|![Electrodragon WiFi IOT](images/devices/electrodragon-wifi-iot.jpg)| -|**IteadStudio Sonoff Basic**|**IteadStudio Sonoff RF**|**Electrodragon WiFi IOT**| -|![IteadStudio Sonoff Dual](images/devices/itead-sonoff-dual.jpg)|![IteadStudio Sonoff POW](images/devices/itead-sonoff-pow.jpg)|![IteadStudio Sonoff TH10/TH16](images/devices/itead-sonoff-th.jpg)| -|**IteadStudio Sonoff Dual**|**IteadStudio Sonoff POW**|**IteadStudio Sonoff TH10/TH16**| -|![IteadStudio Sonoff 4CH](images/devices/itead-sonoff-4ch.jpg)|![IteadStudio Sonoff 4CH Pro](images/devices/itead-sonoff-4ch-pro.jpg)|![OpenEnergyMonitor WiFi MQTT Relay / Thermostat](images/devices/openenergymonitor-mqtt-relay.jpg)| -|**IteadStudio Sonoff 4CH**|**IteadStudio Sonoff 4CH Pro**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**| -|![IteadStudio S20](images/devices/itead-s20.jpg)|![WorkChoice EcoPlug](images/devices/workchoice-ecoplug.jpg)|![Power meters based on V9261F and ECH1560](images/devices/generic-v9261f.jpg)| -|**IteadStudio S20**|**WorkChoice EcoPlug**|**Power meters based on V9261F and ECH1560**| -|![IteadStudio Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![IteadStudio Sonoff T1](images/devices/itead-sonoff-t1.jpg)|| -|**IteadStudio Sonoff Touch**|**IteadStudio Sonoff T1**|| -|![IteadStudio Slampher](images/devices/itead-slampher.jpg)|![AI-Thinker Wifi Light / Noduino OpenLight](images/devices/aithinker-ai-light.jpg)|![Itead Sonoff B1](images/devices/itead-sonoff-b1.jpg)| -|**IteadStudio Slampher**|**AI-Thinker Wifi Light / Noduino OpenLight**|**IteadStudio Sonoff B1**| -|![MagicHome LED Controller (1.0 and 2.0)](images/devices/magichome-led-controller.jpg)|![Huacanxing H801](images/devices/huacanxing-h801.jpg)|![Itead BN-SZ01](images/devices/itead-bn-sz01.jpg)| -|**MagicHome LED Controller (1.0 and 2.0)**|**Huacanxing H801**|**Itead BN-SZ01**| -|![IteadStudio Sonoff SV](images/devices/itead-sonoff-sv.jpg)|![IteadStudio 1CH Inching](images/devices/itead-1ch-inching.jpg)|![IteadStudio Motor Clockwise/Anticlockwise](images/devices/itead-motor.jpg)| -|**IteadStudio Sonoff SV**|**IteadStudio 1CH Inching**|**IteadStudio Motor Clockwise/Anticlockwise**| -|![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Jan Goedeke Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays.jpg)| -|**Wemos D1 Mini Relay Shield**|**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge García Wifi + Relays Board Kit**| -|![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)||| -|**EXS Wifi Relay v3.1**||| - -**Other supported boards:** Itead Sonoff LED, Itead Sonoff Dual R2, Huacanxing H802, WiOn 50055, ManCaveMade ESP-Live, InterMitTech QuinLED 2.6, Arilux AL-LC01, Arilux AL-LC02, Arilux AL-LC06, Arilux AL-LC11, Arilux E27 light bulb, Xenon SM-PW702U, Authometion LYT8266, YJZK 2-gang switch, Magic Home LED Controller 2.3, STM_RELAY, KMC 70011 energy monitor, Wifi Stecker Shuko, GizWits Witty Cloud. +|![Tinkerman Espurna H](images/devices/tinkerman-espurna-h.jpg)||| +|**Tinkerman ESPurna H**||| +|![Itead Sonoff RF Bridge](images/devices/itead-sonoff-rfbridge.jpg)||| +|**Itead Sonoff RF Bridge**||| +|![Itead Sonoff Basic](images/devices/itead-sonoff-basic.jpg)|![Itead Sonoff RF](images/devices/itead-sonoff-rf.jpg)|![Itead Sonoff Dual/Dual R2](images/devices/itead-sonoff-dual.jpg)| +|**Itead Sonoff Basic**|**Itead Sonoff RF**|**Itead Sonoff Dual/Dual R2**| +|![Itead Sonoff POW](images/devices/itead-sonoff-pow.jpg)|![Itead Sonoff TH10/TH16](images/devices/itead-sonoff-th.jpg)|![Electrodragon WiFi IOT](images/devices/electrodragon-wifi-iot.jpg)| +|**Itead Sonoff POW**|**Itead Sonoff TH10/TH16**|**Electrodragon WiFi IOT**| +|![Itead Sonoff 4CH](images/devices/itead-sonoff-4ch.jpg)|![Itead Sonoff 4CH Pro](images/devices/itead-sonoff-4ch-pro.jpg)|![OpenEnergyMonitor WiFi MQTT Relay / Thermostat](images/devices/openenergymonitor-mqtt-relay.jpg)| +|**Itead Sonoff 4CH**|**Itead Sonoff 4CH Pro**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**| +|![Itead S20](images/devices/itead-s20.jpg)|![WorkChoice EcoPlug](images/devices/workchoice-ecoplug.jpg)|![Power meters based on V9261F and ECH1560](images/devices/generic-v9261f.jpg)| +|**Itead S20**|**WorkChoice EcoPlug**|**Power meters based on V9261F and ECH1560**| +|![Shuko Wifi Plug](images/devices/shuko-wifi-plug.jpg)|![KMC 70011 /w power meter](images/devices/kmc-70011.jpg)|| +|**Shuko Wifi Plug**|**KMC 70011 /w power meter**|| +|![Itead Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![Itead Sonoff T1](images/devices/itead-sonoff-t1.jpg)|| +|**Itead Sonoff Touch**|**Itead Sonoff T1**|| +|![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)| +|**Itead Sonoff B1**|**AI-Thinker Wifi Light / Noduino OpenLight**|**Authometion LYT8266**| +|![Itead Sonoff LED](images/devices/itead-sonoff-led.jpg)|![Itead BN-SZ01](images/devices/itead-bn-sz01.jpg)|| +|**Itead Sonoff LED**|**Itead BN-SZ01**|| +|![Arilux AL-LC01 (RGB)](images/devices/arilux-al-lc01.jpg)|![Arilux AL-LC02 (RGBW)](images/devices/arilux-al-lc02.jpg)|![Arilux AL-LC06 (RGBWWCW)](images/devices/arilux-al-lc06.jpg)| +|**Arilux AL-LC01 (RGB)**|**Arilux AL-LC02 (RGBW)**|**Arilux AL-LC06 (RGBWWCW)**| +|![Arilux AL-LC11 (RGBWWW) & RF](images/devices/arilux-al-lc11.jpg)|![MagicHome LED Controller (1.0 and 2.x)](images/devices/magichome-led-controller.jpg)|![Huacanxing H801/802](images/devices/huacanxing-h801.jpg)| +|**Arilux AL-LC11 (RGBWWW) & RF**|**MagicHome LED Controller (1.0/2.x)**|**Huacanxing H801/802**| +|![Itead Sonoff SV](images/devices/itead-sonoff-sv.jpg)|![Itead 1CH Inching](images/devices/itead-1ch-inching.jpg)|![Itead Motor Clockwise/Anticlockwise](images/devices/itead-motor.jpg)| +|**Itead Sonoff SV**|**Itead 1CH Inching**|**Itead Motor Clockwise/Anticlockwise**| +|![Jan Goedeke Wifi Relay (NO/NC)](images/devices/jangoe-wifi-relay.png)|![Jorge García Wifi + Relays Board Kit](images/devices/jorgegarcia-wifi-relays.jpg)|![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)| +|**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge García Wifi + Relays Board Kit**|**EXS Wifi Relay v3.1**| +|![Wemos D1 Mini Relay Shield](images/devices/wemos-d1-mini-relayshield.jpg)|![Witty Cloud](images/devices/witty-cloud.jpg)|| +|**Wemos D1 Mini Relay Shield**|**Witty Cloud**|| + +**Other supported boards:** +WiOn 50055, ManCaveMade ESP-Live, InterMitTech QuinLED 2.6 +Arilux E27 light bulb, Xenon SM-PW702U, YJZK 2-gang switch +STM_RELAY, Maxcio 15A, HEYGO HY02, Yidian 16A ## License @@ -218,4 +231,4 @@ 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 . +along with this program. If not, see . \ No newline at end of file diff --git a/code/.gitignore b/code/.gitignore index a7e598ae..1d66a1d5 100644 --- a/code/.gitignore +++ b/code/.gitignore @@ -4,5 +4,6 @@ .piolibdeps .vscode/c_cpp_properties.json core_version.h -.pioenvs -.piolibdeps +.pioenvs +.piolibdeps +.DS_Store diff --git a/code/espurna/sensors/ECH1560Sensor.h b/code/espurna/sensors/ECH1560Sensor.h index 0fc9dc54..894ec72b 100644 --- a/code/espurna/sensors/ECH1560Sensor.h +++ b/code/espurna/sensors/ECH1560Sensor.h @@ -84,8 +84,8 @@ class ECH1560Sensor : public BaseSensor { // Descriptive name of the sensor String description() { - char buffer[25]; - snprintf(buffer, sizeof(buffer), "ECH1560 @ GPIO(%u,%u)", _clk, _miso); + char buffer[35]; + snprintf(buffer, sizeof(buffer), "ECH1560 (CLK,SDO) @ GPIO(%u,%u)", _clk, _miso); return String(buffer); } @@ -126,7 +126,7 @@ class ECH1560Sensor : public BaseSensor { _clk_count = 0; - // register how long the ClkHigh is high to evaluate if we are at the part wher clk goes high for 1-2 ms + // register how long the ClkHigh is high to evaluate if we are at the part where clk goes high for 1-2 ms while (digitalRead(_clk) == HIGH) { _clk_count += 1; delayMicroseconds(30); //can only use delayMicroseconds in an interrupt. @@ -188,17 +188,17 @@ class ECH1560Sensor : public BaseSensor { while (_bits_count < 40); // skip the uninteresting 5 first bytes _bits_count = 0; - while (_bits_count < 24) { // loop through the next 3 Bytes (6-8) and save byte 6 and 7 in Ba and Bb + while (_bits_count < 24) { // loop through the next 3 Bytes (6-8) and save byte 6 and 7 in byte1 and byte2 if (_nextbit) { - if (_bits_count < 9) { // first Byte/8 bits in Ba + if (_bits_count < 9) { // first Byte/8 bits in byte1 byte1 = byte1 << 1; if (digitalRead(_miso) == HIGH) byte1 |= 1; _nextbit = false; - } else if (_bits_count < 17) { // bit 9-16 is byte 7, stor in Bb + } else if (_bits_count < 17) { // bit 9-16 is byte 7, store in byte2 byte2 = byte2 << 1; if (digitalRead(_miso) == HIGH) byte2 |= 1; @@ -210,9 +210,9 @@ class ECH1560Sensor : public BaseSensor { } - if (byte2 != 3) { // if bit Bb is not 3, we have reached the important part, U is allready in Ba and Bb and next 8 Bytes will give us the Power. + if (byte2 != 3) { // if bit byte2 is not 3, we have reached the important part, U is allready in byte1 and byte2 and next 8 Bytes will give us the Power. - // voltage = 2 * (Ba + Bb / 255) + // voltage = 2 * (byte1 + byte2 / 255) _voltage = 2.0 * ((float) byte1 + (float) byte2 / 255.0); // power: @@ -224,7 +224,7 @@ class ECH1560Sensor : public BaseSensor { byte2 = 0; byte3 = 0; - while (_bits_count < 24) { //store byte 6, 7 and 8 in Ba and Bb & Bc. + while (_bits_count < 24) { //store byte 6, 7 and 8 in byte1 and byte2 & byte3. if (_nextbit) { @@ -256,7 +256,7 @@ class ECH1560Sensor : public BaseSensor { byte3 = 255 - byte3; } - // power = (Ba*255+Bb+Bc/255)/2 + // power = (byte1*255+byte2+byte3/255)/2 _apparent = ( (float) byte1 * 255 + (float) byte2 + (float) byte3 / 255.0) / 2; _current = _apparent / _voltage; @@ -264,9 +264,13 @@ class ECH1560Sensor : public BaseSensor { } - // If Bb is not 3 or something else than 0, something is wrong! - if (byte2 == 0) _dosync = false; - + // If byte2 is not 3 or something else than 0, something is wrong! + if (byte2 == 0) { + _dosync = false; + #if SENSOR_DEBUG + DEBUG_MSG_P(PSTR("Nothing connected, or out of sync!\n")); + #endif + } } // --------------------------------------------------------------------- diff --git a/code/html/vendor/images/border-off.png b/code/html/vendor/images/border-off.png index 6bfa573b..2163fb0d 100644 Binary files a/code/html/vendor/images/border-off.png and b/code/html/vendor/images/border-off.png differ diff --git a/code/html/vendor/images/border-on.png b/code/html/vendor/images/border-on.png index 4b9596ee..2bce84f6 100644 Binary files a/code/html/vendor/images/border-on.png and b/code/html/vendor/images/border-on.png differ diff --git a/code/html/vendor/images/handle-center.png b/code/html/vendor/images/handle-center.png index d280d61f..49ceb533 100644 Binary files a/code/html/vendor/images/handle-center.png and b/code/html/vendor/images/handle-center.png differ diff --git a/code/html/vendor/images/handle-left.png b/code/html/vendor/images/handle-left.png index 8eacd8d2..9d9257d7 100644 Binary files a/code/html/vendor/images/handle-left.png and b/code/html/vendor/images/handle-left.png differ diff --git a/code/html/vendor/images/handle-right.png b/code/html/vendor/images/handle-right.png index 2eaf8b2c..6cda2aed 100644 Binary files a/code/html/vendor/images/handle-right.png and b/code/html/vendor/images/handle-right.png differ diff --git a/code/html/vendor/images/label-off.png b/code/html/vendor/images/label-off.png index 1e2faaea..e135de1d 100644 Binary files a/code/html/vendor/images/label-off.png and b/code/html/vendor/images/label-off.png differ diff --git a/code/html/vendor/images/label-on.png b/code/html/vendor/images/label-on.png index 888a11b6..47e4c2ee 100644 Binary files a/code/html/vendor/images/label-on.png and b/code/html/vendor/images/label-on.png differ diff --git a/images/devices/aithinker-ai-light.jpg b/images/devices/aithinker-ai-light.jpg index 5fc1076e..535c61de 100644 Binary files a/images/devices/aithinker-ai-light.jpg and b/images/devices/aithinker-ai-light.jpg differ diff --git a/images/devices/arilux-al-lc01.jpg b/images/devices/arilux-al-lc01.jpg new file mode 100644 index 00000000..de036d83 Binary files /dev/null and b/images/devices/arilux-al-lc01.jpg differ diff --git a/images/devices/arilux-al-lc02.jpg b/images/devices/arilux-al-lc02.jpg new file mode 100644 index 00000000..f2058ff1 Binary files /dev/null and b/images/devices/arilux-al-lc02.jpg differ diff --git a/images/devices/arilux-al-lc06.jpg b/images/devices/arilux-al-lc06.jpg new file mode 100644 index 00000000..df173391 Binary files /dev/null and b/images/devices/arilux-al-lc06.jpg differ diff --git a/images/devices/arilux-al-lc11.jpg b/images/devices/arilux-al-lc11.jpg new file mode 100644 index 00000000..b9300417 Binary files /dev/null and b/images/devices/arilux-al-lc11.jpg differ diff --git a/images/devices/authometion-lyt8266.jpg b/images/devices/authometion-lyt8266.jpg new file mode 100644 index 00000000..12f37544 Binary files /dev/null and b/images/devices/authometion-lyt8266.jpg differ diff --git a/images/devices/electrodragon-wifi-iot.jpg b/images/devices/electrodragon-wifi-iot.jpg index 8a6ac83b..4d567edd 100644 Binary files a/images/devices/electrodragon-wifi-iot.jpg and b/images/devices/electrodragon-wifi-iot.jpg differ diff --git a/images/devices/exs-wifi-relay-v31.jpg b/images/devices/exs-wifi-relay-v31.jpg index baefef2c..fda8d78c 100644 Binary files a/images/devices/exs-wifi-relay-v31.jpg and b/images/devices/exs-wifi-relay-v31.jpg differ diff --git a/images/devices/generic-v9261f.jpg b/images/devices/generic-v9261f.jpg index 785a20e9..3fd12208 100644 Binary files a/images/devices/generic-v9261f.jpg and b/images/devices/generic-v9261f.jpg differ diff --git a/images/devices/heygo-hy02.jpg b/images/devices/heygo-hy02.jpg new file mode 100644 index 00000000..4bda4563 Binary files /dev/null and b/images/devices/heygo-hy02.jpg differ diff --git a/images/devices/huacanxing-h801.jpg b/images/devices/huacanxing-h801.jpg index da53c685..4f15cf5d 100644 Binary files a/images/devices/huacanxing-h801.jpg and b/images/devices/huacanxing-h801.jpg differ diff --git a/images/devices/itead-1ch-inching.jpg b/images/devices/itead-1ch-inching.jpg index fc227042..74920b7e 100644 Binary files a/images/devices/itead-1ch-inching.jpg and b/images/devices/itead-1ch-inching.jpg differ diff --git a/images/devices/itead-bn-sz01.jpg b/images/devices/itead-bn-sz01.jpg index 46e41873..1b1055f1 100644 Binary files a/images/devices/itead-bn-sz01.jpg and b/images/devices/itead-bn-sz01.jpg differ diff --git a/images/devices/itead-motor.jpg b/images/devices/itead-motor.jpg index 576de922..20bdc183 100644 Binary files a/images/devices/itead-motor.jpg and b/images/devices/itead-motor.jpg differ diff --git a/images/devices/itead-s20.jpg b/images/devices/itead-s20.jpg index 695850a5..9c620610 100644 Binary files a/images/devices/itead-s20.jpg and b/images/devices/itead-s20.jpg differ diff --git a/images/devices/itead-slampher.jpg b/images/devices/itead-slampher.jpg index d62d051f..1f406bbd 100644 Binary files a/images/devices/itead-slampher.jpg and b/images/devices/itead-slampher.jpg differ diff --git a/images/devices/itead-sonoff-4ch-pro.jpg b/images/devices/itead-sonoff-4ch-pro.jpg index 2e630d28..632ad0ff 100644 Binary files a/images/devices/itead-sonoff-4ch-pro.jpg and b/images/devices/itead-sonoff-4ch-pro.jpg differ diff --git a/images/devices/itead-sonoff-4ch.jpg b/images/devices/itead-sonoff-4ch.jpg index dea3fa45..ecb3477e 100644 Binary files a/images/devices/itead-sonoff-4ch.jpg and b/images/devices/itead-sonoff-4ch.jpg differ diff --git a/images/devices/itead-sonoff-b1.jpg b/images/devices/itead-sonoff-b1.jpg index 01f8100b..3b8b7315 100644 Binary files a/images/devices/itead-sonoff-b1.jpg and b/images/devices/itead-sonoff-b1.jpg differ diff --git a/images/devices/itead-sonoff-basic.jpg b/images/devices/itead-sonoff-basic.jpg index 26f034cb..9e7008d8 100644 Binary files a/images/devices/itead-sonoff-basic.jpg and b/images/devices/itead-sonoff-basic.jpg differ diff --git a/images/devices/itead-sonoff-dual.jpg b/images/devices/itead-sonoff-dual.jpg index 8dbc4a37..f9439cbf 100644 Binary files a/images/devices/itead-sonoff-dual.jpg and b/images/devices/itead-sonoff-dual.jpg differ diff --git a/images/devices/itead-sonoff-led.jpg b/images/devices/itead-sonoff-led.jpg index 33215c81..051d84cd 100644 Binary files a/images/devices/itead-sonoff-led.jpg and b/images/devices/itead-sonoff-led.jpg differ diff --git a/images/devices/itead-sonoff-pow.jpg b/images/devices/itead-sonoff-pow.jpg index c5458e25..fa5e61dd 100644 Binary files a/images/devices/itead-sonoff-pow.jpg and b/images/devices/itead-sonoff-pow.jpg differ diff --git a/images/devices/itead-sonoff-rf.jpg b/images/devices/itead-sonoff-rf.jpg index 70a14bb6..b86bd0fe 100644 Binary files a/images/devices/itead-sonoff-rf.jpg and b/images/devices/itead-sonoff-rf.jpg differ diff --git a/images/devices/itead-sonoff-rfbridge.jpg b/images/devices/itead-sonoff-rfbridge.jpg index fec73da1..e7c7b96b 100644 Binary files a/images/devices/itead-sonoff-rfbridge.jpg and b/images/devices/itead-sonoff-rfbridge.jpg differ diff --git a/images/devices/itead-sonoff-sv.jpg b/images/devices/itead-sonoff-sv.jpg index 86ea2c44..3b3514c1 100644 Binary files a/images/devices/itead-sonoff-sv.jpg and b/images/devices/itead-sonoff-sv.jpg differ diff --git a/images/devices/itead-sonoff-t1.jpg b/images/devices/itead-sonoff-t1.jpg index d01a6459..a081afbd 100644 Binary files a/images/devices/itead-sonoff-t1.jpg and b/images/devices/itead-sonoff-t1.jpg differ diff --git a/images/devices/itead-sonoff-th.jpg b/images/devices/itead-sonoff-th.jpg index a3e728d3..ee3c64ae 100644 Binary files a/images/devices/itead-sonoff-th.jpg and b/images/devices/itead-sonoff-th.jpg differ diff --git a/images/devices/itead-sonoff-touch.jpg b/images/devices/itead-sonoff-touch.jpg index 5156a2cb..f0e2f7ec 100644 Binary files a/images/devices/itead-sonoff-touch.jpg and b/images/devices/itead-sonoff-touch.jpg differ diff --git a/images/devices/jangoe-wifi-relay.png b/images/devices/jangoe-wifi-relay.png index 271b6c7d..a504c3b3 100644 Binary files a/images/devices/jangoe-wifi-relay.png and b/images/devices/jangoe-wifi-relay.png differ diff --git a/images/devices/jorgegarcia-wifi-relays.jpg b/images/devices/jorgegarcia-wifi-relays.jpg index a73a9069..7aa64595 100644 Binary files a/images/devices/jorgegarcia-wifi-relays.jpg and b/images/devices/jorgegarcia-wifi-relays.jpg differ diff --git a/images/devices/kmc-70011.jpg b/images/devices/kmc-70011.jpg new file mode 100644 index 00000000..ed07a7d0 Binary files /dev/null and b/images/devices/kmc-70011.jpg differ diff --git a/images/devices/magichome-led-controller.jpg b/images/devices/magichome-led-controller.jpg index 52abd8d5..b8604977 100644 Binary files a/images/devices/magichome-led-controller.jpg and b/images/devices/magichome-led-controller.jpg differ diff --git a/images/devices/maxcio-15a.jpg b/images/devices/maxcio-15a.jpg new file mode 100644 index 00000000..a7974a55 Binary files /dev/null and b/images/devices/maxcio-15a.jpg differ diff --git a/images/devices/openenergymonitor-mqtt-relay.jpg b/images/devices/openenergymonitor-mqtt-relay.jpg index e12231c9..5563f234 100644 Binary files a/images/devices/openenergymonitor-mqtt-relay.jpg and b/images/devices/openenergymonitor-mqtt-relay.jpg differ diff --git a/images/devices/schuko-wifi-plug.jpg b/images/devices/schuko-wifi-plug.jpg new file mode 100644 index 00000000..d4fef2be Binary files /dev/null and b/images/devices/schuko-wifi-plug.jpg differ diff --git a/images/devices/tinkerman-espurna-h.jpg b/images/devices/tinkerman-espurna-h.jpg index 9fd00ce7..29400268 100644 Binary files a/images/devices/tinkerman-espurna-h.jpg and b/images/devices/tinkerman-espurna-h.jpg differ diff --git a/images/devices/wemos-d1-mini-relayshield.jpg b/images/devices/wemos-d1-mini-relayshield.jpg index 8ebb4b2d..a57c03bd 100644 Binary files a/images/devices/wemos-d1-mini-relayshield.jpg and b/images/devices/wemos-d1-mini-relayshield.jpg differ diff --git a/images/devices/wion-50055.jpg b/images/devices/wion-50055.jpg index 3d7c3774..1a78abd2 100644 Binary files a/images/devices/wion-50055.jpg and b/images/devices/wion-50055.jpg differ diff --git a/images/devices/witty-cloud.jpg b/images/devices/witty-cloud.jpg new file mode 100644 index 00000000..c343f940 Binary files /dev/null and b/images/devices/witty-cloud.jpg differ diff --git a/images/devices/workchoice-ecoplug.jpg b/images/devices/workchoice-ecoplug.jpg index 2605517b..49929ed8 100644 Binary files a/images/devices/workchoice-ecoplug.jpg and b/images/devices/workchoice-ecoplug.jpg differ diff --git a/images/devices/yidian-16a.jpg b/images/devices/yidian-16a.jpg new file mode 100644 index 00000000..1f36b69c Binary files /dev/null and b/images/devices/yidian-16a.jpg differ diff --git a/images/icons/collaborate.png b/images/icons/collaborate.png index 3223a00d..b008582f 100644 Binary files a/images/icons/collaborate.png and b/images/icons/collaborate.png differ diff --git a/images/icons/documentation.png b/images/icons/documentation.png index aad67106..e302d5a6 100644 Binary files a/images/icons/documentation.png and b/images/icons/documentation.png differ diff --git a/images/icons/features.png b/images/icons/features.png index 17ea8ea7..fa63293c 100644 Binary files a/images/icons/features.png and b/images/icons/features.png differ diff --git a/images/icons/hardware.png b/images/icons/hardware.png index 54e88789..fb988277 100644 Binary files a/images/icons/hardware.png and b/images/icons/hardware.png differ