46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
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")
|