ESPHome 2025.6.3
|
Download an image from a given URL, and decode it using the specified decoder. More...
#include <online_image.h>
Public Member Functions | |
OnlineImage (const std::string &url, int width, int height, ImageFormat format, image::ImageType type, image::Transparency transparency, uint32_t buffer_size) | |
Construct a new OnlineImage object. | |
void | draw (int x, int y, display::Display *display, Color color_on, Color color_off) override |
void | update () override |
void | loop () override |
void | map_chroma_key (Color &color) |
void | set_url (const std::string &url) |
Set the URL to download the image from. | |
template<typename V > | |
void | add_request_header (const std::string &header, V value) |
Add the request header. | |
void | set_placeholder (image::Image *placeholder) |
Set the image that needs to be shown as long as the downloaded image is not available. | |
void | release () |
Release the buffer storing the image. | |
size_t | resize_download_buffer (size_t size) |
Resize the download buffer. | |
void | add_on_finished_callback (std::function< void(bool)> &&callback) |
void | add_on_error_callback (std::function< void()> &&callback) |
![]() | |
PollingComponent () | |
PollingComponent (uint32_t update_interval) | |
Initialize this polling component with the given update interval in ms. | |
virtual void | set_update_interval (uint32_t update_interval) |
Manually set the update interval in ms for this polling object. | |
void | call_setup () override |
virtual uint32_t | get_update_interval () const |
Get the update interval in ms of this sensor. | |
void | start_poller () |
void | stop_poller () |
![]() | |
virtual void | setup () |
Where the component's initialization should happen. | |
virtual void | dump_config () |
virtual float | get_setup_priority () const |
priority of setup(). | |
float | get_actual_setup_priority () const |
void | set_setup_priority (float priority) |
virtual float | get_loop_priority () const |
priority of loop(). | |
void | call () |
virtual void | on_shutdown () |
virtual void | on_safe_shutdown () |
virtual bool | teardown () |
Called during teardown to allow component to gracefully finish operations. | |
virtual void | on_powerdown () |
Called after teardown is complete to power down hardware. | |
uint8_t | get_component_state () const |
void | reset_to_construction_state () |
Reset this component back to the construction state to allow setup to run again. | |
bool | is_in_loop_state () const |
Check if this component has completed setup and is in the loop state. | |
virtual void | mark_failed () |
Mark this component as failed. | |
void | mark_failed (const char *message) |
bool | is_failed () const |
bool | is_ready () const |
virtual bool | can_proceed () |
bool | status_has_warning () const |
bool | status_has_error () const |
void | status_set_warning (const char *message="unspecified") |
void | status_set_error (const char *message="unspecified") |
void | status_clear_warning () |
void | status_clear_error () |
void | status_momentary_warning (const std::string &name, uint32_t length=5000) |
void | status_momentary_error (const std::string &name, uint32_t length=5000) |
bool | has_overridden_loop () const |
void | set_component_source (const char *source) |
Set where this component was loaded from for some debug messages. | |
const char * | get_component_source () const |
Get the integration where this component was declared as a string. | |
bool | should_warn_of_blocking (uint32_t blocking_time) |
![]() | |
Image (const uint8_t *data_start, int width, int height, ImageType type, Transparency transparency) | |
Color | get_pixel (int x, int y, Color color_on=display::COLOR_ON, Color color_off=display::COLOR_OFF) const |
int | get_width () const override |
int | get_height () const override |
const uint8_t * | get_data_start () const |
ImageType | get_type () const |
int | get_bpp () const |
size_t | get_width_stride () const |
Return the stride of the image in bytes, that is, the distance in bytes between two consecutive rows of pixels. | |
bool | has_transparency () const |
lv_img_dsc_t * | get_lv_img_dsc () |
![]() | |
![]() | |
Parented () | |
Parented (esphome::http_request::HttpRequestComponent *parent) | |
esphome::http_request::HttpRequestComponent * | get_parent () const |
Get the parent of this object. | |
void | set_parent (esphome::http_request::HttpRequestComponent *parent) |
Set the parent of this object. | |
Protected Member Functions | |
bool | validate_url_ (const std::string &url) |
uint32_t | get_buffer_size_ () const |
int | get_buffer_size_ (int width, int height) const |
int | get_position_ (int x, int y) const |
ESPHOME_ALWAYS_INLINE bool | is_auto_resize_ () const |
size_t | resize_ (int width, int height) |
Resize the image buffer to the requested dimensions. | |
void | draw_pixel_ (int x, int y, Color color) |
Draw a pixel into the buffer. | |
void | end_connection_ () |
![]() | |
virtual void | call_loop () |
virtual void | call_dump_config () |
void | set_interval (const std::string &name, uint32_t interval, std::function< void()> &&f) |
Set an interval function with a unique name. | |
void | set_interval (uint32_t interval, std::function< void()> &&f) |
bool | cancel_interval (const std::string &name) |
Cancel an interval function. | |
void | set_retry (const std::string &name, uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
Set an retry function with a unique name. | |
void | set_retry (uint32_t initial_wait_time, uint8_t max_attempts, std::function< RetryResult(uint8_t)> &&f, float backoff_increase_factor=1.0f) |
bool | cancel_retry (const std::string &name) |
Cancel a retry function. | |
void | set_timeout (const std::string &name, uint32_t timeout, std::function< void()> &&f) |
Set a timeout function with a unique name. | |
void | set_timeout (uint32_t timeout, std::function< void()> &&f) |
bool | cancel_timeout (const std::string &name) |
Cancel a timeout function. | |
void | defer (const std::string &name, std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
void | defer (std::function< void()> &&f) |
Defer a callback to the next loop() call. | |
bool | cancel_defer (const std::string &name) |
Cancel a defer callback using the specified name, name must not be empty. | |
![]() | |
bool | get_binary_pixel_ (int x, int y) const |
Color | get_rgb_pixel_ (int x, int y) const |
Color | get_rgb565_pixel_ (int x, int y) const |
Color | get_grayscale_pixel_ (int x, int y) const |
Protected Attributes | |
RAMAllocator< uint8_t > | allocator_ {} |
CallbackManager< void(bool)> | download_finished_callback_ {} |
CallbackManager< void()> | download_error_callback_ {} |
std::shared_ptr< http_request::HttpContainer > | downloader_ {nullptr} |
std::unique_ptr< ImageDecoder > | decoder_ {nullptr} |
uint8_t * | buffer_ |
DownloadBuffer | download_buffer_ |
size_t | download_buffer_initial_size_ |
This is the initial size of the download buffer, not the current size. | |
const ImageFormat | format_ |
image::Image * | placeholder_ {nullptr} |
std::string | url_ {""} |
std::vector< std::pair< std::string, TemplatableValue< std::string > > > | request_headers_ |
const int | fixed_width_ |
width requested on configuration, or 0 if non specified. | |
const int | fixed_height_ |
height requested on configuration, or 0 if non specified. | |
int | buffer_width_ |
Actual width of the current image. | |
int | buffer_height_ |
Actual height of the current image. | |
std::string | etag_ = "" |
The value of the ETag HTTP header provided in the last response. | |
std::string | last_modified_ = "" |
The value of the Last-Modified HTTP header provided in the last response. | |
time_t | start_time_ |
![]() | |
uint32_t | update_interval_ |
![]() | |
uint8_t | component_state_ {0x00} |
State of this component - each bit has a purpose: Bits 0-1: Component state (0x00=CONSTRUCTION, 0x01=SETUP, 0x02=LOOP, 0x03=FAILED) Bit 2: STATUS_LED_WARNING Bit 3: STATUS_LED_ERROR Bits 4-7: Unused - reserved for future expansion (50% of the bits are free) | |
float | setup_priority_override_ {NAN} |
const char * | component_source_ {nullptr} |
uint16_t | warn_if_blocking_over_ {WARN_IF_BLOCKING_OVER_MS} |
Warn if blocked for this many ms (max 65.5s) | |
std::string | error_message_ {} |
![]() | |
int | width_ |
int | height_ |
ImageType | type_ |
const uint8_t * | data_start_ |
Transparency | transparency_ |
size_t | bpp_ {} |
size_t | stride_ {} |
lv_img_dsc_t | dsc_ {} |
![]() | |
esphome::http_request::HttpRequestComponent * | parent_ |
Download an image from a given URL, and decode it using the specified decoder.
The image will then be stored in a buffer, so that it can be re-displayed without the need to re-download or re-decode.
Definition at line 39 of file online_image.h.
esphome::online_image::OnlineImage::OnlineImage | ( | const std::string & | url, |
int | width, | ||
int | height, | ||
ImageFormat | format, | ||
image::ImageType | type, | ||
image::Transparency | transparency, | ||
uint32_t | buffer_size ) |
Construct a new OnlineImage object.
url | URL to download the image from. |
width | Desired width of the target image area. |
height | Desired height of the target image area. |
format | Format that the image is encoded in ( |
buffer_size | Size of the buffer used to download the image. |
Definition at line 37 of file online_image.cpp.
void esphome::online_image::OnlineImage::add_on_error_callback | ( | std::function< void()> && | callback | ) |
Definition at line 354 of file online_image.cpp.
void esphome::online_image::OnlineImage::add_on_finished_callback | ( | std::function< void(bool)> && | callback | ) |
Definition at line 350 of file online_image.cpp.
|
inline |
Add the request header.
Definition at line 71 of file online_image.h.
|
overridevirtual |
Reimplemented from esphome::image::Image.
Definition at line 49 of file online_image.cpp.
|
protected |
Draw a pixel into the buffer.
This is used by the decoder to fill the buffer that will later be displayed by the draw
method. This will internally convert the supplied 32 bit RGBA color into the requested image storage format.
x | Horizontal pixel position. |
y | Vertical pixel position. |
color | 32 bit color to put into the pixel. |
Definition at line 268 of file online_image.cpp.
|
protected |
Definition at line 333 of file online_image.cpp.
|
inlineprotected |
Definition at line 104 of file online_image.h.
|
inlineprotected |
Definition at line 105 of file online_image.h.
|
inlineprotected |
Definition at line 107 of file online_image.h.
|
inlineprotected |
Definition at line 109 of file online_image.h.
|
overridevirtual |
Reimplemented from esphome::Component.
Definition at line 212 of file online_image.cpp.
void esphome::online_image::OnlineImage::map_chroma_key | ( | Color & | color | ) |
Definition at line 255 of file online_image.cpp.
void esphome::online_image::OnlineImage::release | ( | ) |
Release the buffer storing the image.
The image will need to be downloaded again to be able to be displayed.
Definition at line 57 of file online_image.cpp.
|
protected |
Resize the image buffer to the requested dimensions.
The buffer will be allocated if not existing. If the dimensions have been fixed in the yaml config, the buffer will be created with those dimensions and not resized, even on request. Otherwise, the old buffer will be deallocated and a new buffer with the requested allocated
width | |
height |
Definition at line 73 of file online_image.cpp.
|
inline |
Resize the download buffer.
size | The new size for the download buffer. |
Definition at line 94 of file online_image.h.
|
inline |
Set the image that needs to be shown as long as the downloaded image is not available.
placeholder | Pointer to the (to show as placeholder. |
Definition at line 81 of file online_image.h.
|
inline |
Set the URL to download the image from.
Definition at line 62 of file online_image.h.
|
overridevirtual |
Implements esphome::PollingComponent.
Definition at line 103 of file online_image.cpp.
|
protected |
Definition at line 342 of file online_image.cpp.
|
protected |
Definition at line 102 of file online_image.h.
|
protected |
Definition at line 147 of file online_image.h.
|
protected |
Actual height of the current image.
If fixed_height_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_height()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).
Definition at line 184 of file online_image.h.
|
protected |
Actual width of the current image.
If fixed_width_ is specified, this will be equal to it; otherwise it will be set once the decoding starts and the original size is known. This needs to be separate from "BaseImage::get_width()" because the latter must return 0 until the image has been decoded (to avoid showing partially decoded images).
Definition at line 175 of file online_image.h.
|
protected |
Definition at line 145 of file online_image.h.
|
protected |
Definition at line 148 of file online_image.h.
|
protected |
This is the initial size of the download buffer, not the current size.
The download buffer can be resized at runtime; the download_buffer_initial_size_ will not change even if the download buffer has been resized.
Definition at line 154 of file online_image.h.
|
protected |
Definition at line 142 of file online_image.h.
|
protected |
Definition at line 141 of file online_image.h.
|
protected |
Definition at line 144 of file online_image.h.
|
protected |
The value of the ETag HTTP header provided in the last response.
Definition at line 188 of file online_image.h.
|
protected |
height requested on configuration, or 0 if non specified.
Definition at line 166 of file online_image.h.
|
protected |
width requested on configuration, or 0 if non specified.
Definition at line 164 of file online_image.h.
|
protected |
Definition at line 156 of file online_image.h.
|
protected |
The value of the Last-Modified HTTP header provided in the last response.
Definition at line 192 of file online_image.h.
|
protected |
Definition at line 157 of file online_image.h.
|
protected |
Definition at line 161 of file online_image.h.
|
protected |
Definition at line 194 of file online_image.h.
|
protected |
Definition at line 159 of file online_image.h.