From a3be28d47e77bffe975012443f6ff1ed74da55b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Xose=20P=C3=A9rez?= Date: Fri, 22 Sep 2017 23:20:29 +0200 Subject: [PATCH] Version 1.9.4 --- CHANGELOG.md | 18 ++++++++++++++++++ README.md | 6 +++--- code/espurna/config/version.h | 2 +- images/devices/generic-v9261f.jpg | Bin 0 -> 20016 bytes 4 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 images/devices/generic-v9261f.jpg diff --git a/CHANGELOG.md b/CHANGELOG.md index 6788728c..a7703cd7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,24 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/) and this project adheres to [Semantic Versioning](http://semver.org/). +## [1.9.4] 2017-09-22 +### Added +- Added ESPurna specific mDNS text registers (app_name, app_version, device_name) +- Crash dump info is stored in EEPROM and retrieved via terminal ("crash" command) +- Support for Huacanxing H802 +- Support for powermeters based on V9261F IC +- Support for powermeters based on ECH1560 IC (beta, untested) + +### Changed +- Changed behaviour on MQTT connection failure (#215) +- Removed boot delay +- Refactor power modules +- Updated JustWifi library + +### Fixed +- Set all esp8285 devices to use esp01_1m (#210, #225) +- Removed wifi gain option since it prevents some devices to connect (#204) + ## [1.9.3] 2017-09-04 ### Added - New "erase.config" option in terminal to delete SDK settings diff --git a/README.md b/README.md index 4799f741..1893d1de 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ESPurna ("spark" in Catalan) is a custom firmware for ESP8266 based smart switch It was originally developed with the **[IteadStudio Sonoff](https://www.itead.cc/sonoff-wifi-wireless-switch.html)** in mind but now it supports a growing number of ESP8266-based boards. It uses the Arduino Core for ESP8266 framework and a number of 3rd party libraries. -> **Current Release Version is 1.9.3**, read the [changelog](https://bitbucket.org/xoseperez/espurna/src/master/CHANGELOG.md). +> **Current Release Version is 1.9.4**, read the [changelog](https://bitbucket.org/xoseperez/espurna/src/master/CHANGELOG.md). > **NOTICE**: Default flash layout changed in 1.8.3, as an unpredicted consequence devices will not be able to persist/retrieve configuration if flashed with 1.8.3 via **OTA** from **PlatformIO**. Please check issue #187. @@ -97,8 +97,8 @@ Here is the list of supported hardware. For more information please refer to the |**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)|| -|**IteadStudio S20**|**WorkChoice EcoPlug**|| +|![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)| diff --git a/code/espurna/config/version.h b/code/espurna/config/version.h index 85b7977f..5a81991c 100644 --- a/code/espurna/config/version.h +++ b/code/espurna/config/version.h @@ -1,4 +1,4 @@ #define APP_NAME "ESPURNA" -#define APP_VERSION "1.9.4b" +#define APP_VERSION "1.9.4" #define APP_AUTHOR "xose.perez@gmail.com" #define APP_WEBSITE "http://tinkerman.cat" diff --git a/images/devices/generic-v9261f.jpg b/images/devices/generic-v9261f.jpg new file mode 100644 index 0000000000000000000000000000000000000000..785a20e9963fa21bc3d9674db14e10b0dfa648b6 GIT binary patch literal 20016 zcmeIYXH-;6*Dl)REE$p5pPDsmQB|votC_210D+R6q8tDT2??Np_yMj~ zNGfC>+S>vEii+$2OaK6Y2B1Jf10W$%N{EZ{Pg)C+W<^5zEk{PA!AQseT*T7|aoI

pK7hfq=r3FaVe&0KoHWyWBr=FbIT{ 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 literal 0 HcmV?d00001