From c60384df355d3715353cbf61a934f06a4b4d6f6c Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 17 Feb 2019 20:24:34 +0100 Subject: [PATCH 01/12] Bump version to v1.11.0b1 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- conf.py | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Doxygen b/Doxygen index 5b0e58184..f46ce0b26 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.10.1 +PROJECT_NUMBER = 1.11.0b1 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 8010b091b..fb3088d88 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_CORE_PATH = ../esphome-core -ESPHOME_CORE_TAG = v1.10.1 +ESPHOME_CORE_TAG = v1.11.0b1 .PHONY: html cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index e33692ab6..f98ca6f39 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.10.1 \ No newline at end of file +1.11.0b1 \ No newline at end of file diff --git a/conf.py b/conf.py index efbce3ab7..6b3163a1e 100644 --- a/conf.py +++ b/conf.py @@ -71,9 +71,9 @@ author = 'Otto Winter' # built documents. # # The short X.Y version. -version = '1.10' +version = '1.11' # The full version, including alpha/beta/rc tags. -release = '1.10.1' +release = '1.11.0b1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 1a440e0e4c982d29c9b85f19fe6b6e3f2a8cd445 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Mon, 18 Feb 2019 11:48:27 +0100 Subject: [PATCH 02/12] Update v1.11.0.rst --- changelog/v1.11.0.rst | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index cacdb5e61..593150ae0 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -34,13 +34,13 @@ Installation Methods Changed Because of this rename, ESPHome's installation methods have also changed (breaking change!). - **Hass.io**: The Hass.io addon repository has moved to `https://github.com/esphome/hassio `__, - please remove the old addon repository and add the new repository. + please remove the old addon repository and add the new repository. During beta period, install beta version of addon. - **pip-based installs**: The new installation command is ``pip2 install esphome`` and - the ``esphomeyaml`` command now is called ``esphome``. + the ``esphomeyaml`` command now is called ``esphome``. Or ``pip2 install --pre esphome`` during beta period. - **docker-based installs**: The docker image has moved to ``esphome/esphome``. So now you need - to use ``docker run --rm -it esphome/esphome livingroom.yaml run``. + to use ``docker run --rm -it esphome/esphome livingroom.yaml run``. Or ``docker run --rm -it esphome/esphome:beta ...`` during beta period All old installation methods will no longer receive updates (and potentially be removed in the future). From a1eaaf003aa03a3d8b780d9bb054980bfcb70556 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 20 Feb 2019 12:54:02 +0100 Subject: [PATCH 03/12] Bump version to v1.11.0b2 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- changelog/v1.11.0.rst | 83 ++++++++++++++++++++++++++++--------------- conf.py | 2 +- 5 files changed, 58 insertions(+), 33 deletions(-) diff --git a/Doxygen b/Doxygen index f46ce0b26..0cb7fa72d 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.11.0b1 +PROJECT_NUMBER = 1.11.0b2 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index fb3088d88..44159b3a4 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_CORE_PATH = ../esphome-core -ESPHOME_CORE_TAG = v1.11.0b1 +ESPHOME_CORE_TAG = v1.11.0b2 .PHONY: html cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index f98ca6f39..c10a8eac0 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.11.0b1 \ No newline at end of file +1.11.0b2 \ No newline at end of file diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index 593150ae0..315fbb48b 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -55,6 +55,21 @@ Other notable changes: TODO +Beta Fixes +---------- + +- esphome: Fix custom components not registered :esphomepr:`441` +- docs: Custom Binary Sensor: Add missing ";" and fix indentation in YAML :docspr:`164` by :ghuser:`mjoshd` +- core: Add empty nameable constructors :corepr:`509` +- core: Fix Nextion "Received unknown filler end bytes" :corepr:`510` +- core: Fix functional attachInterrupt placed in flash :corepr:`511` +- docs: Add Sonoff T1 LED pin :docspr:`165` by :ghuser:`lwis` +- esphome: Remove duplicate scrollbar & move scrollbar :esphomepr:`443` by :ghuser:`TheZoker` +- esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` +- core: Refactor addressable light and fix partition issue :corepr:`512` +- esphome: Fix MQTT log topic level :esphomepr:`445` + + All changes ----------- @@ -62,19 +77,19 @@ All changes - esphome: typing is only required for python < 3.5 :esphomepr:`341` by :ghuser:`dotlambda` - esphome: Fix install pillow in docker image :esphomepr:`338` - esphome: Allow IPv4 addresses for SNTP servers :esphomepr:`340` -- docs: Update esp8266_pwm.rst :docspr:`123` by :ghuser:`rabbadab` +- docs: Fix esp8266_pwm example, IDs cannot have hyphens :docspr:`123` by :ghuser:`rabbadab` - esphome: Add pyserial to install_requires :esphomepr:`348` by :ghuser:`dotlambda` - docs: Added explanation how to change the password :docspr:`124` by :ghuser:`WoLpH` - docs: Update light lambda effect example :docspr:`125` by :ghuser:`jdads1` - core: Improve handling of MQTT birth message :corepr:`410` - core: Fix WiFi apply hostname too early :corepr:`399` -- core: Fix pulse counter :corepr:`397` -- esphome: Fix expire_after requires MQTT :esphomepr:`354` +- core: Fix pulse counter filtering for ESP8266 :corepr:`397` +- esphome: Warn if expire_after used without MQTT :esphomepr:`354` - esphome: Use strict string mode for WiFi password :esphomepr:`351` - docs: Add ESP8266 advanced info :docspr:`128` -- docs: Cookbook for Sonoff basic :docspr:`122` by :ghuser:`meijerwynand` +- docs: Cookbook Entry for Sonoff Basic Fish Pond Pump :docspr:`122` by :ghuser:`meijerwynand` - docs: Add Arilux LC02 pinout :docspr:`130` by :ghuser:`pixiandreas` -- docs: Update for default update_interval :docspr:`131` by :ghuser:`balk77` +- docs: Dallas: Update for default update_interval :docspr:`131` by :ghuser:`balk77` - core: Fix Light Color Temperature for native API :corepr:`398` - core: Throttle filter doesn't work for quick firing sensors :corepr:`408` by :ghuser:`AlexDanault` - core: Improve Preferences Log Output :corepr:`414` @@ -85,11 +100,11 @@ All changes - esphome: Upgrade HassIO Ubuntu Base to 2.2.1 :esphomepr:`368` - esphome: Fix ESP32 BLE tracker scan interval in seconds :esphomepr:`367` - esphome: ESP8266 Better Exception Code Names :esphomepr:`358` -- esphome: Rmove DNS1,DNS2 inclusive :esphomepr:`357` +- esphome: Remove DNS1,DNS2 inclusive :esphomepr:`357` - esphome: Remove deep sleep run_cycles :esphomepr:`353` - esphome: Fix custom output requiring type :esphomepr:`344` - core: Don't duplicate binary sensor events :corepr:`411` -- esphome: call platformio and esptool using subprocess if $ESPHOME_USE_SUBPROCESS is set :esphomepr:`359` by :ghuser:`dotlambda` +- esphome: Add ability to run commands using subprocess, instead of in-process :esphomepr:`359` by :ghuser:`dotlambda` - core: Fix on_press / on_release being triggered on initial state :corepr:`425` - core: Remove hard dependencies in library.json :corepr:`409` - esphome: Upgrade espressif32 package to 1.6.0 :esphomepr:`355` @@ -104,7 +119,7 @@ All changes - esphome: Generate variable for each custom component id :esphomepr:`382` by :ghuser:`yawor` - esphome: Fix Custom Components No Name :esphomepr:`395` - core: Split off assumed state from optimistic mode :corepr:`455` -- esphome: Remove Heartbeat Filter :esphomepr:`393` +- esphome: Remove Heartbeat Binary Sensor Filter :esphomepr:`393` - core: Disable MQTT if not used :corepr:`430` - esphome: Disable MQTT if not used :esphomepr:`373` - core: Store raw remote codes in flash :corepr:`456` @@ -112,33 +127,33 @@ All changes - core: Rewrite native API client for increased reliability :corepr:`426` - docs: Fix Typo in BME280 Environment Cookbook :docspr:`145` by :ghuser:`hajdbo` - docs: Updating Repo URLs in Contribution Guide :docspr:`143` by :ghuser:`badbadc0ffee` -- core: Update sony.cpp :corepr:`458` by :ghuser:`chris-jennings` +- core: Update sony.cpp to fix incorrectly formed Sony IR code (extra bit) :corepr:`458` by :ghuser:`chris-jennings` - docs: Extra example in cookbook / flashing DOIT ESP32 :docspr:`138` by :ghuser:`DavidDeSloovere` - docs: Adding the SI7021 to docs :docspr:`147` by :ghuser:`grea09` - esphome: Validate neopixelbus method :esphomepr:`398` -- core: PMSx003 bugfix, close #470 :corepr:`471` by :ghuser:`hajdbo` +- core: Fix PMSx003 payload length calculation :corepr:`471` by :ghuser:`hajdbo` - docs: Netlify :docspr:`153` - docs: Remove duplicate "includes" line :docspr:`154` by :ghuser:`notgwj` - core: Remove 'flash' property from MQTT Light discovery JSON. :corepr:`478` by :ghuser:`brandond` - docs: Improve docker build instructions :docspr:`155` by :ghuser:`DavidDeSloovere` -- core: Add Homeassistant Binary Sensor :corepr:`480` -- core: GPIO Switch Interlocking :corepr:`482` -- esphome: Print error when mqtt.publish used without MQTT enabled :esphomepr:`408` -- esphome: Add Homeassistant Binary Sensor :esphomepr:`409` -- esphome: Allow pins 9&10 for PWM :esphomepr:`410` -- docs: Add Homeassistant binary sensor :docspr:`156` -- esphome: Store Raw Remote Codes in PROGMEM :esphomepr:`392` +- core: Add Homeassistant Binary Sensor :corepr:`480` (cherry-picked) +- core: GPIO Switch Interlocking :corepr:`482` (cherry-picked) +- esphome: Print error when mqtt.publish used without MQTT enabled :esphomepr:`408` (cherry-picked) +- esphome: Add Homeassistant Binary Sensor :esphomepr:`409` (cherry-picked) +- esphome: Allow pins 9&10 for PWM :esphomepr:`410` (cherry-picked) +- docs: Homeassistant binary sensor :docspr:`156` +- esphome: Store Raw Remote Codes in PROGMEM :esphomepr:`392` (cherry-picked) - core: Better error messages for OTA :corepr:`486` - esphome: Better error messages for OTA :esphomepr:`418` - core: Synchronize homeassistant time periodically :corepr:`485` -- core: ESP8266 Arduino 2.5.0 Compatability :corepr:`481` -- esphome: Add Switch Interlocking :esphomepr:`411` -- esphome: Add local mDNS responder for .local :esphomepr:`386` -- core: Auto-Redact personal information from logs :corepr:`488` -- esphome: Auto-Redact personal information from logs :esphomepr:`421` -- esphome: Replace optimistic with Assumed State :esphomepr:`394` -- core: Add Template Publish Action :corepr:`453` -- esphome: Add template publish actions and switch triggers :esphomepr:`391` +- core: ESP8266 Arduino 2.5.0 Compatability :corepr:`481` (cherry-picked) +- esphome: Add Switch Interlocking :esphomepr:`411` (cherry-picked) +- esphome: Add local mDNS responder for .local :esphomepr:`386` (cherry-picked) +- core: Auto-Redact private information from logs :corepr:`488` +- esphome: Auto-Redact private information from logs in dashboard :esphomepr:`421` +- esphome: Replace optimistic with Assumed State :esphomepr:`394` (cherry-picked) +- core: Add Template Publish Action :corepr:`453` (cherry-picked) +- esphome: Add template publish actions and switch triggers :esphomepr:`391` (cherry-picked) - core: Rework hostname (replaced by use_address) :corepr:`484` - esphome: Add use_address :esphomepr:`417` - core: Fixes I2C SH1106 repeats the first 8 lines of the display. :corepr:`492` by :ghuser:`n0bel` @@ -147,14 +162,14 @@ All changes - esphome: Rework UART component for fixes :esphomepr:`419` - esphome: Make dout the default flash mode :esphomepr:`420` - core: Revert espressif32 package upgrade :corepr:`490` -- esphome: Revert "Upgrade espressif32 package to 1.6.0 (#355)" :esphomepr:`422` +- esphome: Revert "Upgrade espressif32 package to 1.6.0 (#355)" :esphomepr:`422` - core: Add support for JVC remote transmitting and receiving :corepr:`493` by :ghuser:`jesserockz` - esphome: Add support for JVC remote transmitting and receiving :esphomepr:`423` by :ghuser:`jesserockz` - docs: Add docs for JVC remote transmitting and receiving :docspr:`160` by :ghuser:`jesserockz` - docs: H801 LED controller (remade) :docspr:`158` by :ghuser:`erazor666` - core: Enable use of alternate hardware UARTs for logging :corepr:`483` by :ghuser:`brandond` - esphome: Enable use of alternate hardware UARTs for logging :esphomepr:`427` by :ghuser:`brandond` -- docs: Enable use of alternate hardware UARTs for logging :docspr:`161` by :ghuser:`brandond` +- docs: Enable use of alternate hardware UARTs for logging :docspr:`161` by :ghuser:`brandond` - core: Rename esphomelib to esphome-core :corepr:`494` - esphome: Rename esphomeyaml to esphome :esphomepr:`426` - esphome: Include common components for compiles :esphomepr:`431` @@ -163,10 +178,10 @@ All changes - core: Template switch do not restore state by default :corepr:`503` - core: Fix ethernet initialization order :corepr:`504` - esphome: Add RC5 IR code support :esphomepr:`432` -- core: Update esp32_ble_tracker.cpp :corepr:`505` +- core: Tweak BLE tracker settings :corepr:`505` - esphome: Add text_sensor.template.publish action :esphomepr:`433` - esphome: Add light partition platform :esphomepr:`434` -- core: Add hidden option to wifi networks :corepr:`506` +- core: Add 'hidden' option to wifi networks :corepr:`506` - esphome: Add hidden option to wifi networks :esphomepr:`436` - core: Add display pages abstraction :corepr:`507` - esphome: Add display page abstraction :esphomepr:`435` @@ -175,6 +190,16 @@ All changes - core: Add wait_until action :corepr:`508` - esphome: Add wait_until action :esphomepr:`440` - docs: Document addressable_lambda light effect :docspr:`163` +- esphome: Fix custom components not registered :esphomepr:`441` +- docs: Custom Binary Sensor: Add missing ";" and fix indentation in YAML :docspr:`164` by :ghuser:`mjoshd` +- core: Add empty nameable constructors :corepr:`509` +- core: Fix Nextion "Received unknown filler end bytes" :corepr:`510` +- core: Fix functional attachInterrupt placed in flash :corepr:`511` +- docs: Add Sonoff T1 LED pin :docspr:`165` by :ghuser:`lwis` +- esphome: Remove duplicate scrollbar & move scrollbar :esphomepr:`443` by :ghuser:`TheZoker` +- esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` +- core: Refactor addressable light and fix partition issue :corepr:`512` +- esphome: Fix MQTT log topic level :esphomepr:`445` Past Changelogs --------------- diff --git a/conf.py b/conf.py index 6b3163a1e..f67f80c99 100644 --- a/conf.py +++ b/conf.py @@ -73,7 +73,7 @@ author = 'Otto Winter' # The short X.Y version. version = '1.11' # The full version, including alpha/beta/rc tags. -release = '1.11.0b1' +release = '1.11.0b2' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From b5fc55658c040934a2535cc78a86fd8c4d89f555 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Wed, 20 Feb 2019 13:12:55 +0100 Subject: [PATCH 04/12] Fix incorrect beta fixes --- changelog/v1.11.0.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index 315fbb48b..6e72aef22 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -59,11 +59,9 @@ Beta Fixes ---------- - esphome: Fix custom components not registered :esphomepr:`441` -- docs: Custom Binary Sensor: Add missing ";" and fix indentation in YAML :docspr:`164` by :ghuser:`mjoshd` - core: Add empty nameable constructors :corepr:`509` - core: Fix Nextion "Received unknown filler end bytes" :corepr:`510` - core: Fix functional attachInterrupt placed in flash :corepr:`511` -- docs: Add Sonoff T1 LED pin :docspr:`165` by :ghuser:`lwis` - esphome: Remove duplicate scrollbar & move scrollbar :esphomepr:`443` by :ghuser:`TheZoker` - esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` - core: Refactor addressable light and fix partition issue :corepr:`512` From 8c21183022eb8dacfcf792f5af9fa57448565619 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Thu, 21 Feb 2019 17:44:17 +0100 Subject: [PATCH 05/12] Add seting up dev environment section --- guides/contributing.rst | 60 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/guides/contributing.rst b/guides/contributing.rst index bfba0f02b..5d6732af6 100644 --- a/guides/contributing.rst +++ b/guides/contributing.rst @@ -253,6 +253,66 @@ Some notes about the docs: * Fixes/improvements for the docs themselves should go to the ``current`` branch of the esphomedocs repository. New features should be added against the ``next`` branch. +Setting Up Development Environment +---------------------------------- + +For developing new features to ESPHome, you will first need to set up a development environment. +This is only possible for ``pip`` installs. + +.. code-block:: bash + + # Clone repos + git clone https://github.com/esphome/esphome.git + git clone https://github.com/esphome/esphome-core.git + git clone https://github.com/esphome/esphome-docs.git + + # Install esphome, python 2! + cd esphome/ + pip2 install -e . + pip2 install flake8==3.6.0 pylint==1.9.4 pillow + # Start a new feature branch + git checkout -b my-new-feature + cd .. + + # Setup esphome-core environment + cd esphome-core/ + pio init --ide vscode # See 'pio init -h' for options + git checkout -b my-new-feature + +Now you can open esphome-core in your IDE of choice (mine is CLion) with the platformio +addons (see platformio docs for more info). Then develop the new feature with the +guidelines below. + +Next, for the python part of the feature you can again use any IDE you want (I use PyCharm) +and develop the feature. You can create a ``config/`` folder inside the esphome repo +to store configs you're working with (automatically excluded by .gitignore). + +To compile against your local esphome-core in esphome youhave to give the path +to the esphome core in ``esphome_core_version``: + +.. code-block:: yaml + + esphome: + esphome_core_version: + local: path/to/esphome-core + +To perform style checks for your changes (which are enforced by travis-ci) you can run + +.. code-block:: bash + + flake8 esphome + pylint esphome + +Finally, for documentation changes go to your esphome-docs folder, and install sphinx (with Python 3!) + +.. code-block:: bash + + pip3 install sphinx + make webserver + +Or alternatively just submit a draft PR to the docs repo and wait for netlify to create +a build preview. + Contributing to ESPHome-Core ---------------------------- From aa8bf64f9170a8ab6353f256b0d0c43e378ac742 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Thu, 21 Feb 2019 18:38:16 +0100 Subject: [PATCH 06/12] Bump version to v1.11.0b3 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- changelog/v1.11.0.rst | 6 ++++++ conf.py | 2 +- 5 files changed, 10 insertions(+), 4 deletions(-) diff --git a/Doxygen b/Doxygen index 0cb7fa72d..45e97a994 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.11.0b2 +PROJECT_NUMBER = 1.11.0b3 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 44159b3a4..2354410fb 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_CORE_PATH = ../esphome-core -ESPHOME_CORE_TAG = v1.11.0b2 +ESPHOME_CORE_TAG = v1.11.0b3 .PHONY: html cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index c10a8eac0..234b2b2d9 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.11.0b2 \ No newline at end of file +1.11.0b3 \ No newline at end of file diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index 6e72aef22..415d11f51 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -66,6 +66,9 @@ Beta Fixes - esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` - core: Refactor addressable light and fix partition issue :corepr:`512` - esphome: Fix MQTT log topic level :esphomepr:`445` +- core: Fix ESP8266 functional interrupts :corepr:`515` +- esphome: Allow i2c on non-pullup pins :esphomepr:`447` +- esphome: Allow use of arduino core v2.5.0 on ESP8266 :esphomepr:`446` All changes @@ -198,6 +201,9 @@ All changes - esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` - core: Refactor addressable light and fix partition issue :corepr:`512` - esphome: Fix MQTT log topic level :esphomepr:`445` +- core: Fix ESP8266 functional interrupts :corepr:`515` +- esphome: Allow i2c on non-pullup pins :esphomepr:`447` +- esphome: Allow use of arduino core v2.5.0 on ESP8266 :esphomepr:`446` Past Changelogs --------------- diff --git a/conf.py b/conf.py index f67f80c99..5ec42b9fc 100644 --- a/conf.py +++ b/conf.py @@ -73,7 +73,7 @@ author = 'Otto Winter' # The short X.Y version. version = '1.11' # The full version, including alpha/beta/rc tags. -release = '1.11.0b2' +release = '1.11.0b3' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 81b578a931cad3826d30e8d86ae47e32e0c09d3e Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 22 Feb 2019 21:17:31 +0100 Subject: [PATCH 07/12] Updates and changelog --- changelog/v1.11.0.rst | 69 ++++++++++++++++++++++--- components/display/index.rst | 69 +++++++++++++++++++++++++ components/display/nextion.rst | 5 -- components/display/ssd1306_i2c.rst | 1 + components/display/ssd1306_spi.rst | 1 + components/display/waveshare_epaper.rst | 1 + components/ethernet.rst | 5 -- components/sensor/pmsx003.rst | 5 -- guides/faq.rst | 52 +++++++++++++++++++ 9 files changed, 185 insertions(+), 23 deletions(-) diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index 415d11f51..eaa7fcb57 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -13,20 +13,25 @@ Changelog - Version 1.11.0 Home Assistant Binary Sensor, components/binary_sensor/homeassistant, home-assistant.svg Light Partition, components/light/partition, color_lens.svg +Release 1.11.0 is here, and it has been a busy few weeks :) + +First of all, thank you all for the amazing support on discord, twitter, twitch, etc. +Seeing how much people can accomplish with this tool is really inspiring! + TODO, intro; camera support deferred :(, but hopefully ready soon; faster release schedule ESPHome Rename Completed ------------------------ -Back in 1.10.0, I decided to rename the project from esphomelib to ESPHome. This release +Back in 1.10.0, it was decided to rename the project from esphomelib to ESPHome. This release has seen **massive** refactors to allow this rename. Literally thousands of files had to be changed, often with lots of manual action required. Now a rename might not seem -too exciting for the user, but consider this: Lots of ancient code got revised and cleaned up, +too exciting for you the user, but consider this: Lots of ancient code got revised and cleaned up, the ESPHome source got moved to a `dedicated Github Organization `__ and many other organizational changes were made which will enable faster feature development. As an example, ESPHome's documentation now gets built and served by `Netlify `__, -so all documentation contributions will now get a preview of the changes on a deploy website. +so all documentation contributions will now get a preview of the changes on a preview website. Installation Methods Changed ---------------------------- @@ -34,26 +39,74 @@ Installation Methods Changed Because of this rename, ESPHome's installation methods have also changed (breaking change!). - **Hass.io**: The Hass.io addon repository has moved to `https://github.com/esphome/hassio `__, - please remove the old addon repository and add the new repository. During beta period, install beta version of addon. + please remove the old addon repository and add the new repository. - **pip-based installs**: The new installation command is ``pip2 install esphome`` and - the ``esphomeyaml`` command now is called ``esphome``. Or ``pip2 install --pre esphome`` during beta period. + the ``esphomeyaml`` command now is called ``esphome``. - **docker-based installs**: The docker image has moved to ``esphome/esphome``. So now you need - to use ``docker run --rm -it esphome/esphome livingroom.yaml run``. Or ``docker run --rm -it esphome/esphome:beta ...`` during beta period + to use ``docker run --rm -it esphome/esphome livingroom.yaml run``. The dashboard view + now uses mDNS to show online/offline status of ESPs, so you need to add ``--net=host`` for + that to work. All old installation methods will no longer receive updates (and potentially be removed in the future). +Local mDNS Responder +-------------------- + +Up until now, many users had to set static IPs for all ESP nodes in order to be able to connect to +them. That was not a good user experience and this project is committed to providing the best +possible user experience. So now ESPHome bundles its own mDNS responder so static IPs are no +longer necessary (ref: :esphomepr:`386`)! 🎉 + + +Faster Release Cycle +-------------------- + +One of the big things that needs to be changed with this project is the release cycle. +For one thing there's all contributions by you the users that potentially have to wait +before users can use it. But it also makes releasing small tweaks or fixes much more difficult. + +I know I've said this before, but I want to move ESPHome to a quicker and more regular release +interval. As a start, I've set my personal due date for the next release to be in two weeks. +Going forward, I want to have a regular release interval of 3 weeks (remind me of this if I forget :) + +Also, you might have seen me post a picture of an ESP32 camera integration for ESPHome. Don't worry, +I've made that a top priority for the next release, but I've hit some road blocks that would have +prevented it from working in a stable way for this release (and I needed to finally get this darn +release out). + Breaking Changes ---------------- -TODO: Copy breaking changes from PR descriptions +- Template Switches no longer restore their state by default :corepr:`503` +- Removed heartbeat filter from binary sensors :corepr:`454` +- ``optimistic`` mode for template platforms has been split off into ``optimistic`` and + ``assumed_state`` options :corepr:`455` +- ``run_cycles`` has been removed from deep_sleep :esphome:`353` Other notable changes: ---------------------- -TODO +- Added GPIO Switch interlocking :corepr:`482` +- Added light partition platform which allows you to split an addressable light into partitions + and combine them :corepr:`501` +- Added ``wait_until`` action :corepr:`508` +- Added template publish actions, which allow you to manually push a state to a template + platform :corepr:`453` +- Added support for SI7021 sensors (found in Sonoff TH modules) :esphomepr:`375` +- MQTT is no longer compiled into firmwares that do no use it, should save a bit of space + :corepr:`430`, :corepr:`409` +- Added ``use_address`` option to ``wifi:`` which overrides the address ESPHome connects to :corepr:`484` +- Added display pages, which allow you to have a display that periodically switches between + different pages of content :corepr:`507` +- Added two new IR codecs: IR5 and JVC :corepr:`502`, :corepr:`493` +- Added option to use alternative hardware UART interfaces for logging :corepr:`483` +- All log strings are stored in flash now, so that saves a few kb of IRAM on ESP8266s :corepr:`432` +- Fixed ESP8266s with CSE7766 rebooting often +- Fixed using MQTT and native API at the same time +- Personal information is now automatically redacted from dashboard logs :corepr:`488` Beta Fixes ---------- diff --git a/components/display/index.rst b/components/display/index.rst index e5f0ed067..1bc60f64a 100644 --- a/components/display/index.rst +++ b/components/display/index.rst @@ -348,6 +348,75 @@ And then later in code: // Draw the image my_image at position [x=0,y=0] it.image(0, 0, id(my_image)); +.. _display-pages: + +Display Pages +------------- + +Certain display types also allow you to show "pages". With pages you can create drawing lambdas +that you can switch between. For example with pages you can set up 3 screens, each with +different content, and switch between them on a timer. + +.. code-block:: yaml + + display: + - platform: ... + # ... + id: my_display + pages: + - id: page1 + lambda: |- + it.print(0, 10, id(my_font), "This is page 1!"); + - id: page2 + lambda: |- + it.print(0, 10, id(my_font), "This is page 2!"); + +You can then switch between these with three different actions: + +**show_next** / **show_prev**: Shows the next or previous page, wraps around at the end. + +.. code-block:: yaml + + on_...: + - display.page.show_next: my_display + - display.page.show_prev: my_display + + # For example cycle through pages on a timer + interval: + - interval: 5s + then: + - display.page.show_next: my_display + - component.update: my_display + +**display.page.show**: Show a specific page + +.. code-block:: yaml + + on_...: + - display.page.show: page1 + + # Templated + - display.page.show: !lambda |- + if (id(my_binary_sensor).state) { + return id(page1); + } else { + return id(page2); + } + +.. note:: + + To trigger a redraw right after the page show use a :ref:`component.update ` + action: + + .. code-block:: yaml + + # For example cycle through pages on a timer + interval: + - interval: 5s + then: + - display.page.show_next: my_display + - component.update: my_display + See Also -------- diff --git a/components/display/nextion.rst b/components/display/nextion.rst index 878707d8a..47e0c3668 100644 --- a/components/display/nextion.rst +++ b/components/display/nextion.rst @@ -5,11 +5,6 @@ Nextion TFT LCD Display :description: Instructions for setting up Nextion TFT LCD displays :image: nextion.jpg -.. warning:: - - This integration is experimental as I don't have the hardware to test it (yet). - If you can verify it works (or if it doesn't), notify me on `discord `__. - The ``nextion`` display platform allows you to use Nextion LCD displays (`datasheet `__, `iTead `__) with ESPHome. diff --git a/components/display/ssd1306_i2c.rst b/components/display/ssd1306_i2c.rst index d320184d5..89ef547f5 100644 --- a/components/display/ssd1306_i2c.rst +++ b/components/display/ssd1306_i2c.rst @@ -59,6 +59,7 @@ Configuration variables: - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. +- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. See Also diff --git a/components/display/ssd1306_spi.rst b/components/display/ssd1306_spi.rst index ce64c130b..1ddebd206 100644 --- a/components/display/ssd1306_spi.rst +++ b/components/display/ssd1306_spi.rst @@ -62,6 +62,7 @@ Configuration variables: - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``5s``. +- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/display/waveshare_epaper.rst b/components/display/waveshare_epaper.rst index fb1e18ece..09a13b03d 100644 --- a/components/display/waveshare_epaper.rst +++ b/components/display/waveshare_epaper.rst @@ -90,6 +90,7 @@ Configuration variables: - **lambda** (*Optional*, :ref:`lambda `): The lambda to use for rendering the content on the display. See :ref:`display-engine` for more information. - **update_interval** (*Optional*, :ref:`config-time`): The interval to re-draw the screen. Defaults to ``10s``. +- **pages** (*Optional*, list): Show pages instead of a single lambda. See :ref:`display-pages`. - **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component ` if you want to use multiple SPI buses. - **id** (*Optional*, :ref:`config-id`): Manually specify the ID used for code generation. diff --git a/components/ethernet.rst b/components/ethernet.rst index b60dcc7d2..2dcb3c5d3 100644 --- a/components/ethernet.rst +++ b/components/ethernet.rst @@ -6,11 +6,6 @@ Ethernet Component :image: ethernet.png :keywords: Ethernet, ESP32 -.. warning:: - - This integration is experimental as I don't have the hardware to test it (yet). - If you can verify it works (or if it doesn't), notify me on `discord `__. - This core ESPHome component sets up ethernet connections for ESP32s. Ethernet for ESP8266 is not supported. diff --git a/components/sensor/pmsx003.rst b/components/sensor/pmsx003.rst index 07fc5f633..3015c69fc 100644 --- a/components/sensor/pmsx003.rst +++ b/components/sensor/pmsx003.rst @@ -5,11 +5,6 @@ PMSX003 Particulate Matter Sensor :description: Instructions for setting up PMSX003 Particulate matter sensors :image: pmsx003.png -.. warning:: - - This integration is experimental as I don't have the hardware to test it (yet). - If you can verify it works (or if it doesn't), notify me on `discord `__. - The ``pmsx003`` sensor platform allows you to use your PMS5003, PMS7003, ... particulate matter (`datasheet `__) sensors with ESPHome. diff --git a/guides/faq.rst b/guides/faq.rst index 549544d99..dbfe9f981 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -200,6 +200,58 @@ Some steps that can help with the issue: - The issue seems to be happen with cheap boards more frequently. Especially the "cheap" NodeMCU boards from eBay sometimes have quite bad antennas. +Docker Reference +---------------- + +Install versions: + +.. code-block:: bash + + # Stable Release + docker pull esphome/esphome + # Beta + docker pull esphome/esphome:beta + # Dev version + docker pull esphome/esphome:dev + +Command reference: + +.. code-block:: bash + + # Start a new file wizard for file livingroom.yaml + docker run --rm -v "${PWD}":/config -it esphome/esphome livingroom.yaml wizard + + # Compile and upload livingroom.yaml + docker run --rm -v "${PWD}":/config -it esphome/esphome livingroom.yaml run + + # View logs + docker run --rm -v "${PWD}":/config -it esphome/esphome livingroom.yaml logs + + # Map /dev/ttyUSB0 into container + docker run --rm -v "${PWD}":/config --device=/dev/ttyUSB0 -it esphome/esphome ... + + # Start dashboard on port 6052 + docker run --rm -v "${PWD}":/config --net=host -it esphome/esphome + +And a docker compose file looks like this: + +.. code-block:: yaml + + version: '3' + + services: + esphome: + image: esphome/esphome + volumes: + - ./:/config:rw + network_mode: host + restart: always + +.. note:: + + ESPHome uses mDNS to show online/offline state in the dashboard view. So for that feature + to work you need to enable host networking mode + Donations --------- From a70a5c15238ae8cfcc5b2421e5068d3e88bc4bf8 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 22 Feb 2019 21:51:00 +0100 Subject: [PATCH 08/12] Bump version to v1.11.0 --- Doxygen | 2 +- Makefile | 2 +- _static/version | 2 +- changelog/v1.11.0.rst | 26 ++++++++++++++------------ conf.py | 2 +- 5 files changed, 18 insertions(+), 16 deletions(-) diff --git a/Doxygen b/Doxygen index 45e97a994..15d72bf96 100644 --- a/Doxygen +++ b/Doxygen @@ -38,7 +38,7 @@ PROJECT_NAME = "ESPHome" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.11.0b3 +PROJECT_NUMBER = 1.11.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/Makefile b/Makefile index 2354410fb..05d8bd1d5 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ ESPHOME_CORE_PATH = ../esphome-core -ESPHOME_CORE_TAG = v1.11.0b3 +ESPHOME_CORE_TAG = v1.11.0 .PHONY: html cleanhtml deploy help webserver Makefile netlify netlify-api api netlify-dependencies svg2png copy-svg2png diff --git a/_static/version b/_static/version index 234b2b2d9..169f19b49 100644 --- a/_static/version +++ b/_static/version @@ -1 +1 @@ -1.11.0b3 \ No newline at end of file +1.11.0 \ No newline at end of file diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index eaa7fcb57..dfe450941 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -126,7 +126,6 @@ Beta Fixes All changes ----------- - - core: Attemp to fix the addressable flicker effect :corepr:`392` by :ghuser:`RomRider` - esphome: typing is only required for python < 3.5 :esphomepr:`341` by :ghuser:`dotlambda` - esphome: Fix install pillow in docker image :esphomepr:`338` @@ -244,19 +243,22 @@ All changes - core: Add wait_until action :corepr:`508` - esphome: Add wait_until action :esphomepr:`440` - docs: Document addressable_lambda light effect :docspr:`163` -- esphome: Fix custom components not registered :esphomepr:`441` +- esphome: Fix custom components not registered :esphomepr:`441` (cherry-picked) - docs: Custom Binary Sensor: Add missing ";" and fix indentation in YAML :docspr:`164` by :ghuser:`mjoshd` -- core: Add empty nameable constructors :corepr:`509` -- core: Fix Nextion "Received unknown filler end bytes" :corepr:`510` -- core: Fix functional attachInterrupt placed in flash :corepr:`511` +- core: Add empty nameable constructors :corepr:`509` (cherry-picked) +- core: Fix Nextion "Received unknown filler end bytes" :corepr:`510` (cherry-picked) +- core: Fix functional attachInterrupt placed in flash :corepr:`511` (cherry-picked) - docs: Add Sonoff T1 LED pin :docspr:`165` by :ghuser:`lwis` -- esphome: Remove duplicate scrollbar & move scrollbar :esphomepr:`443` by :ghuser:`TheZoker` -- esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` -- core: Refactor addressable light and fix partition issue :corepr:`512` -- esphome: Fix MQTT log topic level :esphomepr:`445` -- core: Fix ESP8266 functional interrupts :corepr:`515` -- esphome: Allow i2c on non-pullup pins :esphomepr:`447` -- esphome: Allow use of arduino core v2.5.0 on ESP8266 :esphomepr:`446` +- esphome: Remove duplicate scrollbar & move scrollbar :esphomepr:`443` by :ghuser:`TheZoker` (cherry-picked) +- esphome: Remove unnecessary wrapper :esphomepr:`444` by :ghuser:`TheZoker` (cherry-picked) +- core: Refactor addressable light and fix partition issue :corepr:`512` (cherry-picked) +- esphome: Fix MQTT log topic level :esphomepr:`445` (cherry-picked) +- core: Fix ESP8266 functional interrupts :corepr:`515` (cherry-picked) +- esphome: Allow i2c on non-pullup pins :esphomepr:`447` (cherry-picked) +- esphome: Allow use of arduino core v2.5.0 on ESP8266 :esphomepr:`446` (cherry-picked) +- core: Fix feed_wdt :corepr:`520` +- core: Speed up waveshare Epaper :corepr:`518` +- esphome: Improve dashboard setup wizard :esphomepr:`450` Past Changelogs --------------- diff --git a/conf.py b/conf.py index 5ec42b9fc..4603c7ecc 100644 --- a/conf.py +++ b/conf.py @@ -73,7 +73,7 @@ author = 'Otto Winter' # The short X.Y version. version = '1.11' # The full version, including alpha/beta/rc tags. -release = '1.11.0b3' +release = '1.11.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. From 641f25f60cb3daae16811e519e6be69821a95d7d Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 22 Feb 2019 22:09:18 +0100 Subject: [PATCH 09/12] Remove todo --- changelog/v1.11.0.rst | 2 -- 1 file changed, 2 deletions(-) diff --git a/changelog/v1.11.0.rst b/changelog/v1.11.0.rst index dfe450941..2a42865a4 100644 --- a/changelog/v1.11.0.rst +++ b/changelog/v1.11.0.rst @@ -18,8 +18,6 @@ Release 1.11.0 is here, and it has been a busy few weeks :) First of all, thank you all for the amazing support on discord, twitter, twitch, etc. Seeing how much people can accomplish with this tool is really inspiring! -TODO, intro; camera support deferred :(, but hopefully ready soon; faster release schedule - ESPHome Rename Completed ------------------------ From b31e522b233815c0d6adfba60727aba2bde64264 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Fri, 22 Feb 2019 22:20:14 +0100 Subject: [PATCH 10/12] Add changelog image --- _static/changelog-1.11.0.png | Bin 0 -> 20923 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 _static/changelog-1.11.0.png diff --git a/_static/changelog-1.11.0.png b/_static/changelog-1.11.0.png new file mode 100644 index 0000000000000000000000000000000000000000..953a848cc3bb93f5558bd83a94b1a918dcc26c57 GIT binary patch literal 20923 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

1^l}bkxoa1*f8NDpq8?JT?5HB4>a#=O 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 PT(4=V18U_ewqgGRvsqWF literal 0 HcmV?d00001 From e7fb99063f35c05276460603a6aab7d1573569b9 Mon Sep 17 00:00:00 2001 From: Emanuele Tessore Date: Sat, 23 Feb 2019 10:59:57 +0100 Subject: [PATCH 11/12] Add Ethernet pin config for olimex esp32-poe board (#166) --- components/ethernet.rst | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/components/ethernet.rst b/components/ethernet.rst index 2dcb3c5d3..971fe0bb0 100644 --- a/components/ethernet.rst +++ b/components/ethernet.rst @@ -71,6 +71,18 @@ Configuration for wESP32 board clk_mode: GPIO0_IN phy_addr: 0 +Configuration for Olimex ESP32-POE +---------------------------------- + +.. code-block:: yaml + + ethernet: + type: LAN8720 + mdc_pin: GPIO23 + mdio_pin: GPIO18 + clk_mode: GPIO17_OUT + phy_addr: 0 + power_pin: GPIO12 See Also -------- From d00c92fe71cffadd5fd4409353edc2a88456e92d Mon Sep 17 00:00:00 2001 From: Taigar2015 Date: Sat, 23 Feb 2019 17:12:52 +0100 Subject: [PATCH 12/12] Update faq.rst - added description for mDNS support on different subnets (#169) FAQ: Add description for mDNS support on different subnets --- guides/faq.rst | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/guides/faq.rst b/guides/faq.rst index c1de93382..2ba138b6b 100644 --- a/guides/faq.rst +++ b/guides/faq.rst @@ -252,6 +252,13 @@ And a docker compose file looks like this: ESPHome uses mDNS to show online/offline state in the dashboard view. So for that feature to work you need to enable host networking mode + + mDNS might not work if your Home Assistant server and your ESPHome nodes are on different subnets. If your router supports Avahi, you are able to get mDNS working over different subnets. + + Just follow the next steps: + + 1. Enable Avahi on both subnets. + 2. Enable UDP traffic from ESPHome node's subnet to 224.0.0.251/32 on port 5353. Donations ---------