1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-02 03:12:20 +01:00
Files
esphome/esphome/components/qr_code/__init__.py
2025-07-02 14:56:48 +12:00

45 lines
1.2 KiB
Python

import esphome.codegen as cg
import esphome.config_validation as cv
from esphome.const import CONF_ID, CONF_VALUE
CONF_SCALE = "scale"
CONF_ECC = "ecc"
CODEOWNERS = ["@wjtje"]
DEPENDENCIES = ["display"]
MULTI_CONF = True
qr_code_ns = cg.esphome_ns.namespace("qr_code")
QRCode = qr_code_ns.class_("QrCode", cg.Component)
qrcodegen_Ecc = cg.esphome_ns.enum("qrcodegen_Ecc")
ECC = {
"LOW": qrcodegen_Ecc.qrcodegen_Ecc_LOW,
"MEDIUM": qrcodegen_Ecc.qrcodegen_Ecc_MEDIUM,
"QUARTILE": qrcodegen_Ecc.qrcodegen_Ecc_QUARTILE,
"HIGH": qrcodegen_Ecc.qrcodegen_Ecc_HIGH,
}
CONFIG_SCHEMA = cv.ensure_list(
cv.Schema(
{
cv.Required(CONF_ID): cv.declare_id(QRCode),
cv.Required(CONF_VALUE): cv.string,
cv.Optional(CONF_ECC, default="LOW"): cv.enum(ECC, upper=True),
}
)
)
async def to_code(config):
cg.add_library("wjtje/qr-code-generator-library", "^1.7.0")
for entry in config:
var = cg.new_Pvariable(entry[CONF_ID])
cg.add(var.set_value(entry[CONF_VALUE]))
cg.add(var.set_ecc(ECC[entry[CONF_ECC]]))
await cg.register_component(var, entry)
cg.add_define("USE_QR_CODE")