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..8ddd43cd 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**|
+|![Schuko Wifi Plug](images/devices/schuko-wifi-plug.jpg)|![KMC 70011 /w power meter](images/devices/kmc-70011.jpg)||
+|**Schuko 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 W-US002S, HEYGO HY02, YiDian XS-SSA05
## 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