import esphome.codegen as cg import esphome.config_validation as cv from esphome.components import display from esphome.const import CONF_DISPLAY_ID, CONF_ID, CONF_URL, CONF_X, CONF_Y from esphome.core import CORE DEPENDENCIES = ["display", "esp32"] fast_jpeg_ns = cg.esphome_ns.namespace("fast_jpeg") FastJpeg = fast_jpeg_ns.class_("FastJpeg", cg.PollingComponent) CONF_BIG_ENDIAN = "big_endian" CONFIG_SCHEMA = ( cv.Schema( { cv.GenerateID(): cv.declare_id(FastJpeg), cv.Required(CONF_URL): cv.url, cv.Required(CONF_DISPLAY_ID): cv.use_id(display.Display), cv.Optional(CONF_X, default=0): cv.int_, cv.Optional(CONF_Y): cv.int_, cv.Optional(CONF_BIG_ENDIAN, default=True): cv.boolean, } ) .extend(cv.polling_component_schema("200ms")) ) async def to_code(config): var = cg.new_Pvariable(config[CONF_ID]) await cg.register_component(var, config) cg.add(var.set_url(config[CONF_URL])) disp = await cg.get_variable(config[CONF_DISPLAY_ID]) cg.add(var.set_display(disp)) cg.add(var.set_x(config[CONF_X])) if CONF_Y in config: cg.add(var.set_y(config[CONF_Y])) cg.add(var.set_big_endian(config[CONF_BIG_ENDIAN])) cg.add_library("JPEGDEC", "1.8.4", "https://github.com/bitbank2/JPEGDEC#1.8.4") if CORE.is_esp32: from esphome.components.esp32 import add_idf_component, include_builtin_idf_component include_builtin_idf_component("esp_http_client") add_idf_component(name="espressif/esp-dsp", ref="1.8.2")