Currently, in each loop during DisplayBuffer::update_() the display is
cleared by calling DisplayBuffer::clear().
This prevents more efficient display usages that do not render the
screen in each loop, but only if necessary. This can be helpful, for
example, if images are rendered. This would cause the loop time to be
exceeded frequently.
This change adds a new optional flag "auto_clear" that can be used to
control the clearing behavior. If unset, the DisplayBuffer defaults to
enabled auto clearing, the current behavior and thus backward compatible.
This flag applies to displays that use DisplayBuffer.
Example excerpt:
globals:
- id: state
type: bool
restore_value: no
initial_value: "false"
- id: state_processed
type: bool
restore_value: no
initial_value: "false"
switch:
- platform: template
name: "State"
id: state_switch
lambda: |-
return id(state);
turn_on_action:
- globals.set:
id: state
value: "true"
- globals.set:
id: state_processed
value: "false"
turn_off_action:
- globals.set:
id: state
value: "false"
- globals.set:
id: state_processed
value: "false"
display:
- platform: ili9341
# ...
auto_clear_enabled: false
lambda: |-
if (!id(state_processed)) {
it.fill(COLOR_WHITE);
if (id(state)) {
it.image(80, 20, id(image1));
} else {
it.image(80, 20, id(image2));
}
id(state_processed) = true;
}
Co-authored-by: Tim Niemueller <timdn@google.com>
* Renamed Nameable to EntityBase (cpp)
* Renamed NAMEABLE_SCHEMA to ENTITY_BASE_SCHEMA (Python)
* Renamed cg.Nameable to cg.EntityBase (Python)
* Remove redundant use of CONF_NAME from esp32_touch
* Remove redundant use of CONF_NAME from mcp3008
* Updated test
* Moved EntityBase from Component.h and Component.cpp
* Added icon property to EntityBase
* Added CONF_ICON to ENTITY_BASE_SCHEMA and added setup_entity function to cpp_helpers
* Added MQTT component getters for icon and disabled_by_default
* Lint
* Removed icon field from MQTT components
* Code generation now uses setup_entity to setENTITY_BASE_SCHEMA fields
* Removed unused import
* Added cstdint include
* Optimisation: don't set icon if it is empty
* Remove icon from NumberTraits and SelectTraits
* Removed unused import
* Integration and Total Daily Energy sensors now inherit icons from their parents during code generation
* Minor comment correction
* Removed redundant icon-handling code from sensor, switch, and text_sensor
* Update esphome/components/tsl2591/tsl2591.h
Co-authored-by: Oxan van Leeuwen <oxan@oxanvanleeuwen.nl>
* Added icon property to binary sensor, climate, cover, and fan component tests
* Added icons for Binary Sensor, Climate, Cover, Fan, and Light to API
* Consolidated EntityBase fields in MQTT components
Co-authored-by: Oxan van Leeuwen <oxan@oxanvanleeuwen.nl>
* Add serveral options for SSD1306 integration
* Add SSD1305 support
(SSD1305 is similar to SSD1306, it seems SSD1305 has
brightness and color register but does not have charge pump)
* Add some description when manipulating registers
* Add flip, offset and invert option to get more compatibility
with various display modules
* Fix typo `setup_ssd1036' -> `setup_ssd1306'
* Add SSD1306 brightness validation tip
* Add more description, limit offset range
* Changes according to linter
* Fix test
* Raise error instead of using warning
* Fix wrong logic
* Remove logger
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
* Remove logging import
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com>
* adding a scan results wifi text sensor
* Code comment
* Adding scan results to test
* Removing redundant call
* linting
* Better method to update wifi info
Co-authored-by: Otto Winter <otto@otto-winter.com>
* Getting loop back
At least for now.
* Trying out suggestion again
* Applying cr suggestions
Co-authored-by: Otto Winter <otto@otto-winter.com>
* numeric speed added
* when dumping config for MQTT components log a note when skipped due to is_internal
* added new topics to paython code validation/generation
* reformatted with black
* formatting corrected
* use dump_config_ mechanism to skip internal components
* use dump_config_ mechanism to skip internal components
* style issues resolved
* do_dump_config removed
* formatting fixed
* formatting fixed
* Drop parent dump_config() calls
Co-authored-by: Oxan van Leeuwen <oxan@oxanvanleeuwen.nl>
* Added an option to disable mDNS
* Fixed linter issues
* Moved the enable_mdns option to WiFi and Ethernet components
* extracted common method for add mdns library
* lint
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* Start of SGP40 dev
* Clean up
* Initial Commit
* VOC is working
* Fixed up sensor config
* Lint Fixes
Added in save/restore baseline
Noted original repo in header
* Lint Fixes
Added to test
* Lint Fixes
* Added additional check on restoring
* Removed double check
* Changed defines to static const double
* Changed defines to const
Do not send voc index until sensor stabilizes
* Fixed sensor stabilization message
* Fixup according to PR
* samples_read increment fix
* Fixed missing device class
* Choose a SENSOR device class
* Moved some sensors for tests
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* Add fan speed percentage support to the API
* Add float fan speed percentage
* Add percentage support to automation and configuration
* Update Tuya fan
* Fix pylint warning
* Update API to use speed levels instead of percentage
* Use speed levels
* Fix type warnings
* MQTT component now converts between speed levels and enums
* Webserver now supports speed_level
* Update prometheus
* Remove low/medium/high settings from speed fan
* Remove unused enum
* Configurable speed levels for speed fan
* Remove unused import
* Rename speed_level->speed and speed_levels->speed_count
* Rename supported_speed_levels -> supported_speed_count in API and FanTraits
Field id stays the same in the protocol, so the change is not breaking for aioesphome.
* Added support for SM300D2 sensor module
* Fixed lint errors due to added tvoc config
* add device class
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* Migrate ESPColor to Color
* color.h constructor fix
* Updated componets to use Color
Added a using for ESPColor
* Lint fixes
* Fixed value error
* Update display components to use colorutil
* Updated to latest PR comments
* Fixed COLOR_WHITE
* Moved esp_scale to color_utils
* Rename color_utils to display_color_utils
* Added samsung36 ir protocol
* Make linter happy
* Added test and fixed python failure
* Sorry for the commits but linter was still not happy :)
* Okay have to run script/clang-format -i
Co-authored-by: tuxBurner <tuxBurner@boggo.de>
* Initial Commit - ST7735
* Updated for CI checks
* Updated for travis build
* Travis fixes
* Travis line too long
* Travis fixes
* Fixed up travis format issues
* Travis Fixes
* Initial Commit - ST7735
* Updated for CI checks
* Updated for travis build
* Travis fixes
* Travis line too long
* Travis fixes
* Fixed up travis format issues
* Travis Fixes
* Update to new color API and added test
* Check fixes
* Fixed sid length in test
* Cleaned up whitespaces
* kbx81 recommended fixes
* test fix
* Fixes of fixes
* Fixed test1.yaml
* Fixed test1.yaml
* Changed digital pin #s to gpio
* Updated to match kbx's color names
* Typo for ST7735_INITR_MINI_160X80
* Updated 8bit color space code
Added to_rgb_332 to color.h
fixed typo
* Added in to_rgb_332,to_bgr_332, rgb_332to_rgb_556 and a more generic scale
* Fixed MADCTL
* Fixp MADCTL
* Implemented usrbgr option
updated color to support 332 bgr conversion
typo fix
* Updated to_bgr_332
* Fix up for clang
* FIx up init code. type in buffer caused overrun
* fixup protected names
* typos
* Matched use_bgr to its conf
* color.h red fix in bgr_233to_rgb_565
* Fix ST7735_INITR_MINI_160X80
* Renamed bgr_233to_bgr_565 to match its function
Color space leak in bgr_233to_bgr_565.
cleaned up init code for displays.
* Fix
* clang fix
* Started Color Conversion
* Added various bit color functions
add triadto
* lint changes
* Various fixes
* Various formatting fixes. Wish my checks worked!
* Updated color api to support different formats
removed to_rgb_565
* lint clang fixes
* Test1 fix
* test1.yaml fix
* fixed 565 in ILI9341Display
* Added CodeOwners
* Updated CODEOWNERS
* changed to to332 and to565
* Waiting for color.h changes
* Stage changes
* Removed all changes except this driver
* Moved color functions into driver
* lint changes
* Lint and removed unrelated display driver changes
* Lint changes
* Initial Commit - ST7735
* Updated for CI checks
* Updated for travis build
* Travis fixes
* Travis line too long
* Travis fixes
* Fixed up travis format issues
* Travis Fixes
* Initial Commit - ST7735
* Updated for CI checks
* Updated for travis build
* Travis fixes
* Travis line too long
* Travis fixes
* Fixed up travis format issues
* Travis Fixes
* Update to new color API and added test
* Check fixes
* Fixed sid length in test
* Cleaned up whitespaces
* kbx81 recommended fixes
* test fix
* Fixes of fixes
* Fixed test1.yaml
* Fixed test1.yaml
* Changed digital pin #s to gpio
* Updated to match kbx's color names
* Typo for ST7735_INITR_MINI_160X80
* Updated 8bit color space code
Added to_rgb_332 to color.h
fixed typo
* Added in to_rgb_332,to_bgr_332, rgb_332to_rgb_556 and a more generic scale
* Fixed MADCTL
* Fixp MADCTL
* Implemented usrbgr option
updated color to support 332 bgr conversion
typo fix
* Updated to_bgr_332
* Fix up for clang
* FIx up init code. type in buffer caused overrun
* fixup protected names
* typos
* Matched use_bgr to its conf
* color.h red fix in bgr_233to_rgb_565
* Fix ST7735_INITR_MINI_160X80
* Renamed bgr_233to_bgr_565 to match its function
Color space leak in bgr_233to_bgr_565.
cleaned up init code for displays.
* Fix
* clang fix
* Started Color Conversion
* Added various bit color functions
add triadto
* lint changes
* Various fixes
* Various formatting fixes. Wish my checks worked!
* Updated color api to support different formats
removed to_rgb_565
* lint clang fixes
* Test1 fix
* test1.yaml fix
* fixed 565 in ILI9341Display
* Added CodeOwners
* Updated CODEOWNERS
* changed to to332 and to565
* Waiting for color.h changes
* Stage changes
* Removed all changes except this driver
* Moved color functions into driver
* lint changes
* Lint and removed unrelated display driver changes
* Lint changes
* Updated with latest color api
* pulled from origin
* Updated for color.h changes
* pulled test1 from dev
* Added test
* fix: FastLED SPI_DATA_RATE being truncated to 8 bits
FastLED expects SPI_DATA_RATE as an uint32_t, but we had it as uint8_t.
Fix that to avoid the data rate being truncated.
* fastled: allow specifying data rate
Previously, we've just taken the default data rate from FastLED.
However, that does not always work properly. In my case, I had a
slow level shifter that couldn't keep up with the 1 MHz data
rate default for WS2801. Long cabling might also be a reason why
one might want to reduce the data rate.
This will add a new optional "data_rate" config option where one
may specify the desired data rate as a frequency:
light:
- platform: fastled_spi
chipset: WS2801
data_pin: GPIO23
clock_pin: GPIO22
data_rate: 500kHz
num_leds: 178
* Move pn532 -> pn532_spi
Add pn532_i2c
* Update i2c address
* Always wait for ready byte before reading
* Generalise the pn532 a bit more so less code in i2c and spi implementations
* clang
* Add pn532_i2c to test1
* Try to get setup working
* Fixes
* More updates
* Command consts
* A few upgrades
* Change text back to include 'new'
* Fix data reading
* Started to work on packages feature
* Added some more validation to packages config
* Fixed some linter warnings
* Updated tests
* Reordered consts to avoid linter error
* Reordered consts to avoid linter error
* Refactored test yaml files to integrate into existing test pipeline
Co-authored-by: Dmitry Berezovsky <dmitry.berezovsky@logicify.com>
* TFT-LCD ST7789V of ESP32 TTGO.
This patch allows you to use TFT-LCD ST7789V of ESP32 TTGO
* Lots of polish and a few tweaks
* Add test
* Add color to core, take 1
* Where did those tabs come from?
* Fix lines too long
* Added color component
* Linted
* Rebase, SPI fix, test
* Shuffle bits
* One more thing...oops
* Image type fix...oops
* Make display_buffer use Color
* Fix BGR/RGB, remove predefined colors
* Fix all the things
* renamed colors to color
* migrate max7219
Co-authored-by: musk95 <musk95@naver.com>
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* add support for SN74HC595 shift register
* fix linter errors
* more linter reported issues fixed
* hopefully last linter error cleanup
* one more linter fix
* looks like the linter is always keeping stuff for later, is this the final fix?
* add test
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* Add LG Climate ir
* Add LG Climate IR
* Add LG Climate IR
* Add LG Climate IR
* Add LG Climate IR
* Add LG Climate IR
* Add LG Climate IR
Co-authored-by: Sangheon Heo <square99@SangHeonui-Macmini.local>
* Fix fan oscillation trait not being used
* Add fan direction support to SpeedFan
* Add fan direction to API
* Add fan direction support to BinaryFan
* Fix CI errors
* Fix python format
* Change some ordering to trigger CI
* Add test for the configuration
A component to support [WLED](https://github.com/Aircoookie/WLED/wiki/UDP-Realtime-Control).
This allows to control addressable LEDs over WiFi/UDP, by pushing data right into LEDs.
The most useful to use [Prismatik](https://github.com/psieg/Lightpack) to create
an immersive effect on PC.
It supports all WLED protocols:
- WARLS
- DRGB
- DRGBW
- DNRGB
- WLED Notifier
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
This adds a `e131` component that allows
to register `e131` addressable light effect.
This uses an internal implementation that
is thread-safe instead of using external libraries.
* Extend `uart:` with `rx_buffer_size:`
This allows to configure `rx_buffer_size:`
to efficiently receive big payloads over UART
* lint
* remove old default value
* add test
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>
* uart: Add support for specifying the number of bits and parity.
ESP8266SwSerial doesn't really check parity but just read the parity bit
and ignore it when receiving data.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: support begin and end methods.
A component may need to reset uart buffer/status by using begin() and
end() methods. This is useful for example when a component needs to be
sure it is not reading garbage from previously received data over uart.
For end() methods with software serial, disabling interrupt is
currently impossible because of a bug in esp8266 Core:
https://github.com/esp8266/Arduino/issues/6049
Signed-off-by: 0hax <0hax@protonmail.com>
* esphal: add support for detaching an interrupt.
That's needed when a component needs to enable/disable interrupt on a
gpio.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: rename CONF_NR_BITS to CONF_DATA_BITS_NUMBER.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: use static const uint32_t instead of #define.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: use an enum to handle parity.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: split between esp32 and esp8266.
Signed-off-by: 0hax <0hax@protonmail.com>
* uart: check_uart_settings for parity and number of data bits.
Signed-off-by: 0hax <0hax@protonmail.com>
* name param data_bits
* add new params to test
Co-authored-by: Guillermo Ruffino <glm.net@gmail.com>