Fork of the espurna firmware for `mhsw` switches
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

203 lines
14 KiB

8 years ago
8 years ago
6 years ago
8 years ago
7 years ago
7 years ago
6 years ago
6 years ago
7 years ago
7 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
6 years ago
6 years ago
7 years ago
7 years ago
7 years ago
6 years ago
7 years ago
6 years ago
7 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
6 years ago
7 years ago
7 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
6 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
6 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
7 years ago
  1. # ESPurna Firmware
  2. ESPurna ("spark" in Catalan) is a custom firmware for ESP8266 based smart switches.
  3. 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.
  4. It uses the Arduino Core for ESP8266 framework and a number of 3rd party libraries.
  5. **Current Release Version is 1.12.1**
  6. Read the [changes log](https://github.com/xoseperez/espurna/blob/master/CHANGELOG.md).
  7. ---
  8. ## Features
  9. * *KRACK* vulnerability free (when built against Arduino Core 2.4.0)
  10. * Support for **multiple ESP8266-based boards** ([check list](https://github.com/xoseperez/espurna/wiki/Hardware))
  11. * Power saving options
  12. * Wifi **AP Mode** or **STA mode**
  13. * Up to 5 different networks can be defined
  14. * Supports static IP
  15. * Scans for strongest network if more than one defined (also available in web UI)
  16. * Handles correctly multiple AP with the same SSID
  17. * Defaults to AP mode (also available after double clicking the main button)
  18. * Network visibility
  19. * Supports mDNS (service reporting and metadata) both server mode and client mode (.local name resolution)
  20. * Supports NetBIOS, LLMNR and Netbios (when built against Arduino Core 2.4.0) and SSDP (experimental)
  21. * Switch management
  22. * Support for **push buttons** and **toggle switches**
  23. * Configurable **status on boot** per switch (always ON, always OFF, same as before or toggle)
  24. * Support for **pulse mode** per switch (normally ON or normally OFF) with configurable time
  25. * Support for **relay synchronization** (all equal, only one ON, one and only on ON)
  26. * Support for **MQTT groups** to sync switches between devices
  27. * Support for **delayed ON/OFF**
  28. * **MQTT** enabled
  29. * **SSL/TLS support** (not on regular builds, see [#64](https://github.com/xoseperez/espurna/issues/64))
  30. * Switch on/off and toggle relays, group topics (sync relays between different devices)
  31. * Report button event notifications
  32. * Enable/disable pulse mode
  33. * Change LED notification mode
  34. * Remote reset the board
  35. * Fully configurable in webUI (broker, user, password, QoS, keep alive time, retain flag, client ID)
  36. * **Scheduler** to automatically turn on, off or toggle any relay at a given time and day
  37. * **Alexa** integration using the [FauxmoESP Library](https://bitbucket.org/xoseperez/fauxmoesp)
  38. * [**Google Assistant**](http://tinkerman.cat/using-google-assistant-control-your-esp8266-devices/) integration using IFTTT and Webhooks (Google Home, Allo)
  39. * [**Domoticz**](https://domoticz.com/) integration via MQTT
  40. * [**Home Assistant**](https://home-assistant.io/) integration via MQTT
  41. * Support for switches (on/off)
  42. * Support for lights (color, brightness, on/off state)
  43. * Supports MQTT auto-discover feature (both switches and lights)
  44. * [**InfluxDB**](https://www.influxdata.com/) integration via HTTP API
  45. * [**Thingspeak**](https://thingspeak.com/) integration via HTTP API (HTTPS available for custom builds)
  46. * Support for different **sensors**
  47. * Environment
  48. * **DHT11 / DHT22 / DHT21 / AM2301 / Itead's SI7021**
  49. * **BMP280** and **BME280** temperature, humidity (BME280) and pressure sensor by Bosch
  50. * **SI7021** temperature and humidity sensor
  51. * **SHT3X** temperature and humidity sensor over I2C (Wemos shield)
  52. * **Dallas OneWire sensors** like the DS18B20
  53. * **MHZ19** CO2 sensor
  54. * **PMSX003** dust sensor
  55. * **BH1750** luminosity sensor
  56. * Power monitoring
  57. * **HLW8012** using the [HLW8012 Library](https://bitbucket.org/xoseperez/hlw8012) (Sonoff POW)
  58. * Non-invasive **current sensor** using **internal ADC** or **ADC121** or **ADS1115**
  59. * **ECH1560** power monitor chip
  60. * **V9261F** power monitor chip
  61. * Raw analog and digital sensors
  62. * Simple pulse counter
  63. * All temperature sensors support Fahrenheit and Celsius
  64. * Support for LED lights
  65. * MY92XX-based light bulbs and PWM LED strips (dimmers) up to 5 channels (RGB, cold white and warm white, for instance)
  66. * RGB and HSV color codes supported
  67. * Manage channels individually
  68. * Temperature color supported (in mired and kelvin) via MQTT / REST API
  69. * Flicker-free PWM management
  70. * Soft color transitions
  71. * Color synchronization between light using MQTT
  72. * Fast asynchronous **HTTP Server**
  73. * Configurable port
  74. * Basic authentication
  75. * Web-based configuration
  76. * Relay switching and sensor data from the web interface
  77. * Handle color, brightness, and white/warm channels for lights
  78. * Websockets-based communication between the device and the browser
  79. * Backup and restore settings option
  80. * Upgrade firmware from the web interface
  81. * Works great behind a [secured reverse proxy](http://tinkerman.cat/secure-remote-access-to-your-iot-devices/)
  82. * **REST API** (enable/disable from web interface)
  83. * GET and PUT relay status
  84. * Change light color (for supported hardware)
  85. * GET sensor data (power, current, voltage, temperature and humidity) depending on the available hardware
  86. * Works great behind a secured reverse proxy
  87. * **RPC API** (enable/disable from web interface)
  88. * Remote reset the board
  89. * **Over-The-Air** (OTA) updates even for 1Mb boards
  90. * Manually from PlatformIO or Arduino IDE
  91. * Automatic updates through the [NoFUSS Library](https://bitbucket.org/xoseperez/nofuss)
  92. * Update from web interface using pre-built images
  93. * **Command line configuration**
  94. * Change configuration
  95. * Run special commands
  96. * **Telnet support**
  97. * Enable/disable via the web UI
  98. * Show debug info and allows to run terminal commands
  99. * **Unstable system check**
  100. * Detects unstable system (crashes on boot continuously) and defaults to a stable system
  101. * Only WiFi AP, OTA and Telnet available if system is flagged as unstable
  102. * Button interface
  103. * Click to toggle relays
  104. * Double click to enter AP mode (only main button)
  105. * Long click (>1 second) to reboot device (only main button)
  106. * Extra long click (>10 seconds) to go back to factory settings (only main button)
  107. * Specific definitions for touch button devices (ESPurna Switch, Sonoff Touch & T1)
  108. ## Notices
  109. ---
  110. > **2018-01-24**: This repository has been migrated from Bitbucket to GitHub. There were a number of reason to migrate the repository to GitHub. I like Bitbucket and I'm still using it for a lot of projects, but ESPurna has grown and its community as well. Some users have complain about Bitbucket not being enough community-focused. This change is mainly aimed to use a platform with greater acceptance on the open-source community and tools better suited to them (to you), like the possibility to contribute to the documentation in an easy way.
  111. >
  112. >What happened with all the info in Bitbucket? Well, most of it has been ported to GitHub, albeit with some quirks:
  113. >
  114. >* **Code** has, of course been migrated completely
  115. >* **Issues** are all on GutHub already **but** all issues and comments show up as reporter by me. The original reported is referenced inside the body of the issue (or comment) with a link to her profile at Bitbucket and a link to her profile at GitHub if it happens to be the same username. I **suggest all reporters subscribe to the issues they originally filed** (search for your BitBucket username to list them).
  116. >* **Pull requests** historic has not been migrated. At the moment of the migration all pull-requests have been either merged or declined. Of course, those PR merged are in the code base, but the historic and comments in the PR pages will be lost.
  117. >* **Documentation** it's on it way, first step will be to migrate existing wiki, maybe with a new TOC structure
  118. >* **Watchers**, **Forks**, I'm afraid they are all gone. Visit the new repop home and click on the "Watch" button on the top right. And as you do it click also on the "Star" button too :)
  119. >
  120. >I apologize for any inconvenience this migration may have caused. I have decided to do it the hard way.
  121. ---
  122. > **2018-01-11**: As of current version (1.12.0) ESPurna is tested using Arduino Core 2.3.0 and it's meant to be built against that version.
  123. ---
  124. > **2017-08-26**: since version 1.9.0 the default **MQTT topics for commands have changed**. They all now end with "/set". This means you will have to change your controller software (Node-RED or alike) to send messages to -for instance- "/home/living/light/relay/0/set". The device will publish its state in "/home/living/light/relay/0" like before.
  125. ---
  126. > **2017-07-24**: 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](https://github.com/xoseperez/espurna/issues/187).
  127. ---
  128. ## Contribute
  129. There are several ways to contribute to ESpurna development. You can contribute to the repository by doing:
  130. * Pull requests (fixes, enhancements, new features... are very welcome)
  131. * Documentation (I reckon I'm bad at it)
  132. * Testing (filing issues or help resolving them, they take a lot of time and sometimes I don't have the required hardware to test them all)
  133. And of course you can always buy me a beer, coffee, tea,... via the donation button below.
  134. [![Donate to ESPurna Project](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=xose%2eperez%40gmail%2ecom&lc=US&no_note=0&currency_code=EUR&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHostedGuest)
  135. ## Documentation
  136. For more information please refer to the [ESPurna Wiki](https://github.com/xoseperez/espurna/wiki).
  137. ## Supported hardware
  138. Here is the list of supported hardware. For more information please refer to the [ESPurna Wiki Hardware page](https://github.com/xoseperez/espurna/wiki/Hardware).
  139. ||||
  140. |---|---|---|
  141. |![Tinkerman Espurna H](images/devices/tinkerman-espurna-h.jpg)|![IteadStudio Sonoff RF Bridge](images/devices/itead-sonoff-rfbridge.jpg)||
  142. |**Tinkerman ESPurna H**|**IteadStudio Sonoff RF Bridge**||
  143. |![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)|
  144. |**IteadStudio Sonoff Basic**|**IteadStudio Sonoff RF**|**Electrodragon WiFi IOT**|
  145. |![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)|
  146. |**IteadStudio Sonoff Dual**|**IteadStudio Sonoff POW**|**IteadStudio Sonoff TH10/TH16**|
  147. |![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)|
  148. |**IteadStudio Sonoff 4CH**|**IteadStudio Sonoff 4CH Pro**|**OpenEnergyMonitor WiFi MQTT Relay / Thermostat**|
  149. |![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)|
  150. |**IteadStudio S20**|**WorkChoice EcoPlug**|**Power meters based on V9261F and ECH1560**|
  151. |![IteadStudio Sonoff Touch](images/devices/itead-sonoff-touch.jpg)|![IteadStudio Sonoff T1](images/devices/itead-sonoff-t1.jpg)||
  152. |**IteadStudio Sonoff Touch**|**IteadStudio Sonoff T1**||
  153. |![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)|
  154. |**IteadStudio Slampher**|**AI-Thinker Wifi Light / Noduino OpenLight**|**IteadStudio Sonoff B1**|
  155. |![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)|
  156. |**MagicHome LED Controller (1.0 and 2.0)**|**Huacanxing H801**|**Itead BN-SZ01**|
  157. |![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)|
  158. |**IteadStudio Sonoff SV**|**IteadStudio 1CH Inching**|**IteadStudio Motor Clockwise/Anticlockwise**|
  159. |![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)|
  160. |**Wemos D1 Mini Relay Shield**|**Jan Goedeke Wifi Relay (NO/NC)**|**Jorge García Wifi + Relays Board Kit**|
  161. |![EXS Wifi Relay v3.1](images/devices/exs-wifi-relay-v31.jpg)|||
  162. |**EXS Wifi Relay v3.1**|||
  163. **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.
  164. ## License
  165. Copyright (C) 2016-2018 by Xose Pérez (@xoseperez)
  166. This program is free software: you can redistribute it and/or modify
  167. it under the terms of the GNU General Public License as published by
  168. the Free Software Foundation, either version 3 of the License, or
  169. (at your option) any later version.
  170. This program is distributed in the hope that it will be useful,
  171. but WITHOUT ANY WARRANTY; without even the implied warranty of
  172. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  173. GNU General Public License for more details.
  174. You should have received a copy of the GNU General Public License
  175. along with this program. If not, see <http://www.gnu.org/licenses/>.