Files
camera-jpg/components/fast_jpeg/__init__.py
T
2026-08-20 21:26:05 +02:00

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")