Add the Lolin32 Lite and TTGO T7 board names so that esphome can be
built for those boards. There's nothing special about them. The
espressif/arduino-esp32 and platformio/platform-espressif32 projects
have both merged definitions for those boards recently.
* Use #line directives in generated C++ code for lambdas
The #line directive in gcc is meant specifically for pieces of imported
code included in generated code, exactly what happens with lambdas in
the yaml files: https://gcc.gnu.org/onlinedocs/cpp/Line-Control.html
With this change, if I add the following at line 165 of kithen.yaml:
- lambda: undefined_var == 5;
then "$ esphome kitchen.yaml compile" shows the following:
INFO Reading configuration kitchen.yaml...
INFO Generating C++ source...
INFO Compiling app...
INFO Running: platformio run -d kitchen
<...>
Compiling .pioenvs/kitchen/src/main.cpp.o
kitchen.yaml: In lambda function:
kitchen.yaml:165:7: error: 'undefined_var' was not declared in this scope
*** [.pioenvs/kitchen/src/main.cpp.o] Error 1
== [FAILED] Took 2.37 seconds ==
* Silence gcc warning on multiline macros in lambdas
When the \ is used at the end of the C++ source in a lambda (line
continuation, often used in preprocessor macros), esphome will copy that
into main.cpp once as code and once as a // commment. gcc will complain
about the multiline commment:
Compiling .pioenvs/kitchen/src/main.cpp.o
kitchen.yaml:640:3: warning: multi-line comment [-Wcomment]
Try to replace the \ with a "<cont>" for lack of a better idea.
* Move stop/is_running implementation to Action base class
Try to fix issue #1105. Until now if an UpdateComponentAction, a
LambdaAction, or any action that can contain those inside their
"else" or "then" action lists, resulted in a call to script.stop on
the script that contains them, the script would continue running,
because they didn't implement a stop() method. Basically only
the asynchronous ones did: DelayAction, WaitUntilAction and
ScriptWaitAction.
With this change num_running_ in Action replaces
DelayAction::num_running_ and WaitUntilAction::triggered_ to provide
the same is_running logic to other actions.
* Make some Action methods protected
Apparently play()/stop() etc. are not meant to be called directly by
users of the class and if they're called directly that would not give
the expected result for the classes that have an empty play().
Make all methods except play_complex, stop_comples and is_running
protected. While there also make RemoteTransmitterActionBase::encode
protected.
* lint
* format
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
Add the GET and POST handler for cover components. Also add covers to
the index page although the Open/Close buttons that are shown for covers
will need a few lines added to webserver-v1.js, without them they don't
do anything.
Don't try to update CT clamp's state with NaN values returned from the
underlaying sensor. A single IO error in the sensor code will cause a
NaN to be returned and if we use that in CTClampSensor's floating point
maths both sample_sum_ and offset_ will become NaN and from there every
future calculation will use the NaN offset_ and return NaN too.