|
1 | 1 | import esphome.codegen as cg
|
2 |
| -import esphome.config_validation as cv |
3 |
| -from esphome.components import display, i2c |
4 |
| -from esphome.const import CONF_ID, CONF_LAMBDA, CONF_TYPE |
| 2 | +from esphome.const import CONF_ID |
| 3 | +from ..ht16k33_base.display import ( |
| 4 | + base_to_code, |
| 5 | + CONF_SECONDARY_DISPLAYS, |
| 6 | + CONFIG_SCHEMA, |
| 7 | + ht16k33_ns, |
| 8 | + HT16K33BaseDisplay, |
| 9 | +) |
5 | 10 |
|
6 |
| -DEPENDENCIES = ['i2c'] |
| 11 | +AUTO_LOAD = ['ht16k33_base'] |
7 | 12 |
|
8 |
| -ht16k33_ns = cg.esphome_ns.namespace('ht16k33') |
9 |
| -HT16K33BaseDisplay = ht16k33_ns.class_('HT16K33BaseDisplay', cg.PollingComponent, i2c.I2CDevice) |
10 |
| - |
11 |
| -TYPES = { |
12 |
| - "ALPHA": ht16k33_ns.class_("HT16K33AlphaDisplay", HT16K33BaseDisplay), |
13 |
| - "7SEGMENT": ht16k33_ns.class_("HT16K337SegmentDisplay", HT16K33BaseDisplay), |
14 |
| -} |
15 |
| - |
16 |
| -CONF_SCROLL = "scroll" |
17 |
| -CONF_SCROLL_SPEED = "scroll_speed" |
18 |
| -CONF_SCROLL_DWELL = "scroll_dwell" |
19 |
| -CONF_SCROLL_DELAY = "scroll_delay" |
20 |
| -CONF_SECONDARY_DISPLAYS = "secondary_displays" |
21 |
| - |
22 |
| - |
23 |
| -CONFIG_SECONDARY = cv.Schema({ |
24 |
| - cv.GenerateID(): cv.declare_id(i2c.I2CDevice) |
25 |
| -}).extend(i2c.i2c_device_schema(None)) |
26 |
| - |
27 |
| -CONFIG_SCHEMA = display.BASIC_DISPLAY_SCHEMA.extend({ |
28 |
| - cv.GenerateID(): cv.declare_id(HT16K33BaseDisplay), |
29 |
| - cv.Optional(CONF_TYPE, default="ALPHA"): cv.enum(TYPES, upper=True), |
30 |
| - cv.Optional(CONF_SCROLL, default=False): cv.boolean, |
31 |
| - cv.Optional(CONF_SCROLL_SPEED, default='250ms'): cv.positive_time_period_milliseconds, |
32 |
| - cv.Optional(CONF_SCROLL_DWELL, default='2s'): cv.positive_time_period_milliseconds, |
33 |
| - cv.Optional(CONF_SCROLL_DELAY, default='3'): cv.float_range(min=1), |
34 |
| - cv.Optional(CONF_SECONDARY_DISPLAYS): cv.ensure_list(CONFIG_SECONDARY), |
35 |
| -}).extend(cv.polling_component_schema('1s')).extend(i2c.i2c_device_schema(0x70)) |
| 13 | +HT16K33AlphaDisplay = ht16k33_ns.class_("HT16K33AlphaDisplay", HT16K33BaseDisplay) |
36 | 14 |
|
37 | 15 | async def to_code(config):
|
38 |
| - instance_var = TYPES[config[CONF_TYPE]].new() |
| 16 | + instance_var = HT16K33AlphaDisplay.new() |
39 | 17 | var = cg.Pvariable(config[CONF_ID], instance_var)
|
40 |
| - await cg.register_component(var, config) |
41 |
| - await display.register_display(var, config) |
42 |
| - await i2c.register_i2c_device(var, config) |
| 18 | + await base_to_code(var, config) |
43 | 19 |
|
44 |
| - if CONF_LAMBDA in config: |
45 |
| - lambda_ = await cg.process_lambda(config[CONF_LAMBDA], |
46 |
| - [(HT16K33BaseDisplay.operator('ref'), 'it')], |
47 |
| - return_type=cg.void) |
48 |
| - cg.add(var.set_writer(lambda_)) |
49 |
| - if config[CONF_SCROLL]: |
50 |
| - cg.add(var.set_scroll(True)) |
51 |
| - cg.add(var.set_scroll_speed(config[CONF_SCROLL_SPEED])) |
52 |
| - cg.add(var.set_scroll_dwell(config[CONF_SCROLL_DWELL])) |
53 |
| - cg.add(var.set_scroll_delay(int(config[CONF_SCROLL_DELAY] * config[CONF_SCROLL_SPEED].total_milliseconds))) |
54 | 20 | if CONF_SECONDARY_DISPLAYS in config:
|
55 | 21 | for conf in config[CONF_SECONDARY_DISPLAYS]:
|
56 |
| - disp = cg.new_Pvariable(conf[CONF_ID]) |
| 22 | + instance_disp = HT16K33AlphaDisplay.new() |
| 23 | + disp = cg.Pvariable(conf[CONF_ID], instance_disp) |
57 | 24 | await i2c.register_i2c_device(disp, conf)
|
58 | 25 | cg.add(var.add_secondary_display(disp))
|
59 | 26 |
|
0 commit comments