esphome 2024.8.0b2__py3-none-any.whl → 2024.8.0b3__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- esphome/components/lvgl/defines.py +18 -14
- esphome/components/lvgl/lv_validation.py +55 -31
- esphome/components/lvgl/schemas.py +21 -11
- esphome/components/lvgl/widgets/__init__.py +21 -2
- esphome/components/microphone/microphone.h +4 -1
- esphome/components/speaker/speaker.h +4 -0
- esphome/config_validation.py +1 -1
- esphome/const.py +1 -1
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/METADATA +1 -1
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/RECORD +14 -14
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/LICENSE +0 -0
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/WHEEL +0 -0
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/entry_points.txt +0 -0
- {esphome-2024.8.0b2.dist-info → esphome-2024.8.0b3.dist-info}/top_level.txt +0 -0
@@ -6,8 +6,8 @@ Constants already defined in esphome.const are not duplicated here and must be i
|
|
6
6
|
|
7
7
|
from esphome import codegen as cg, config_validation as cv
|
8
8
|
from esphome.const import CONF_ITEMS
|
9
|
-
from esphome.core import
|
10
|
-
from esphome.cpp_generator import MockObj
|
9
|
+
from esphome.core import Lambda
|
10
|
+
from esphome.cpp_generator import LambdaExpression, MockObj
|
11
11
|
from esphome.cpp_types import uint32
|
12
12
|
from esphome.schema_extractors import SCHEMA_EXTRACT, schema_extractor
|
13
13
|
|
@@ -22,19 +22,22 @@ def literal(arg):
|
|
22
22
|
return arg
|
23
23
|
|
24
24
|
|
25
|
+
def call_lambda(lamb: LambdaExpression):
|
26
|
+
expr = lamb.content.strip()
|
27
|
+
if expr.startswith("return") and expr.endswith(";"):
|
28
|
+
return expr[7:][:-1]
|
29
|
+
return f"{lamb}()"
|
30
|
+
|
31
|
+
|
25
32
|
class LValidator:
|
26
33
|
"""
|
27
34
|
A validator for a particular type used in LVGL. Usable in configs as a validator, also
|
28
35
|
has `process()` to convert a value during code generation
|
29
36
|
"""
|
30
37
|
|
31
|
-
def __init__(
|
32
|
-
self, validator, rtype, idtype=None, idexpr=None, retmapper=None, requires=None
|
33
|
-
):
|
38
|
+
def __init__(self, validator, rtype, retmapper=None, requires=None):
|
34
39
|
self.validator = validator
|
35
40
|
self.rtype = rtype
|
36
|
-
self.idtype = idtype
|
37
|
-
self.idexpr = idexpr
|
38
41
|
self.retmapper = retmapper
|
39
42
|
self.requires = requires
|
40
43
|
|
@@ -43,8 +46,6 @@ class LValidator:
|
|
43
46
|
value = requires_component(self.requires)(value)
|
44
47
|
if isinstance(value, cv.Lambda):
|
45
48
|
return cv.returning_lambda(value)
|
46
|
-
if self.idtype is not None and isinstance(value, ID):
|
47
|
-
return cv.use_id(self.idtype)(value)
|
48
49
|
return self.validator(value)
|
49
50
|
|
50
51
|
async def process(self, value, args=()):
|
@@ -52,10 +53,10 @@ class LValidator:
|
|
52
53
|
return None
|
53
54
|
if isinstance(value, Lambda):
|
54
55
|
return cg.RawExpression(
|
55
|
-
|
56
|
+
call_lambda(
|
57
|
+
await cg.process_lambda(value, args, return_type=self.rtype)
|
58
|
+
)
|
56
59
|
)
|
57
|
-
if self.idtype is not None and isinstance(value, ID):
|
58
|
-
return cg.RawExpression(f"{value}->{self.idexpr}")
|
59
60
|
if self.retmapper is not None:
|
60
61
|
return self.retmapper(value)
|
61
62
|
return cg.safe_exp(value)
|
@@ -89,7 +90,7 @@ class LvConstant(LValidator):
|
|
89
90
|
cv.ensure_list(self.one_of), uint32, retmapper=self.mapper
|
90
91
|
)
|
91
92
|
|
92
|
-
def mapper(self, value
|
93
|
+
def mapper(self, value):
|
93
94
|
if not isinstance(value, list):
|
94
95
|
value = [value]
|
95
96
|
return literal(
|
@@ -103,7 +104,7 @@ class LvConstant(LValidator):
|
|
103
104
|
|
104
105
|
def extend(self, *choices):
|
105
106
|
"""
|
106
|
-
Extend an
|
107
|
+
Extend an LVconstant with additional choices.
|
107
108
|
:param choices: The extra choices
|
108
109
|
:return: A new LVConstant instance
|
109
110
|
"""
|
@@ -431,6 +432,8 @@ CONF_ONE_LINE = "one_line"
|
|
431
432
|
CONF_ON_SELECT = "on_select"
|
432
433
|
CONF_ONE_CHECKED = "one_checked"
|
433
434
|
CONF_NEXT = "next"
|
435
|
+
CONF_PAD_ROW = "pad_row"
|
436
|
+
CONF_PAD_COLUMN = "pad_column"
|
434
437
|
CONF_PAGE = "page"
|
435
438
|
CONF_PAGE_WRAP = "page_wrap"
|
436
439
|
CONF_PASSWORD_MODE = "password_mode"
|
@@ -462,6 +465,7 @@ CONF_SKIP = "skip"
|
|
462
465
|
CONF_SYMBOL = "symbol"
|
463
466
|
CONF_TAB_ID = "tab_id"
|
464
467
|
CONF_TABS = "tabs"
|
468
|
+
CONF_TIME_FORMAT = "time_format"
|
465
469
|
CONF_TILE = "tile"
|
466
470
|
CONF_TILE_ID = "tile_id"
|
467
471
|
CONF_TILES = "tiles"
|
@@ -1,17 +1,14 @@
|
|
1
1
|
from typing import Union
|
2
2
|
|
3
3
|
import esphome.codegen as cg
|
4
|
-
from esphome.components.binary_sensor import BinarySensor
|
5
4
|
from esphome.components.color import ColorStruct
|
6
5
|
from esphome.components.font import Font
|
7
6
|
from esphome.components.image import Image_
|
8
|
-
from esphome.components.sensor import Sensor
|
9
|
-
from esphome.components.text_sensor import TextSensor
|
10
7
|
import esphome.config_validation as cv
|
11
|
-
from esphome.const import CONF_ARGS, CONF_COLOR, CONF_FORMAT, CONF_VALUE
|
12
|
-
from esphome.core import HexInt
|
8
|
+
from esphome.const import CONF_ARGS, CONF_COLOR, CONF_FORMAT, CONF_TIME, CONF_VALUE
|
9
|
+
from esphome.core import HexInt, Lambda
|
13
10
|
from esphome.cpp_generator import MockObj
|
14
|
-
from esphome.cpp_types import uint32
|
11
|
+
from esphome.cpp_types import ESPTime, uint32
|
15
12
|
from esphome.helpers import cpp_string_escape
|
16
13
|
from esphome.schema_extractors import SCHEMA_EXTRACT, schema_extractor
|
17
14
|
|
@@ -19,9 +16,11 @@ from . import types as ty
|
|
19
16
|
from .defines import (
|
20
17
|
CONF_END_VALUE,
|
21
18
|
CONF_START_VALUE,
|
19
|
+
CONF_TIME_FORMAT,
|
22
20
|
LV_FONTS,
|
23
21
|
LValidator,
|
24
22
|
LvConstant,
|
23
|
+
call_lambda,
|
25
24
|
literal,
|
26
25
|
)
|
27
26
|
from .helpers import (
|
@@ -110,13 +109,13 @@ def angle(value):
|
|
110
109
|
def size_validator(value):
|
111
110
|
"""A size in one axis - one of "size_content", a number (pixels) or a percentage"""
|
112
111
|
if value == SCHEMA_EXTRACT:
|
113
|
-
return ["
|
112
|
+
return ["SIZE_CONTENT", "number of pixels", "percentage"]
|
114
113
|
if isinstance(value, str) and value.lower().endswith("px"):
|
115
114
|
value = cv.int_(value[:-2])
|
116
115
|
if isinstance(value, str) and not value.endswith("%"):
|
117
116
|
if value.upper() == "SIZE_CONTENT":
|
118
117
|
return "LV_SIZE_CONTENT"
|
119
|
-
raise cv.Invalid("must be 'size_content', a
|
118
|
+
raise cv.Invalid("must be 'size_content', a percentage or an integer (pixels)")
|
120
119
|
if isinstance(value, int):
|
121
120
|
return cv.int_(value)
|
122
121
|
# Will throw an exception if not a percentage.
|
@@ -125,6 +124,15 @@ def size_validator(value):
|
|
125
124
|
|
126
125
|
size = LValidator(size_validator, uint32, retmapper=literal)
|
127
126
|
|
127
|
+
|
128
|
+
def pixels_validator(value):
|
129
|
+
if isinstance(value, str) and value.lower().endswith("px"):
|
130
|
+
return cv.int_(value[:-2])
|
131
|
+
return cv.int_(value)
|
132
|
+
|
133
|
+
|
134
|
+
pixels = LValidator(pixels_validator, uint32, retmapper=literal)
|
135
|
+
|
128
136
|
radius_consts = LvConstant("LV_RADIUS_", "CIRCLE")
|
129
137
|
|
130
138
|
|
@@ -167,9 +175,7 @@ lv_image = LValidator(
|
|
167
175
|
retmapper=lambda x: lv_expr.img_from(MockObj(x)),
|
168
176
|
requires="image",
|
169
177
|
)
|
170
|
-
lv_bool = LValidator(
|
171
|
-
cv.boolean, cg.bool_, BinarySensor, "get_state()", retmapper=literal
|
172
|
-
)
|
178
|
+
lv_bool = LValidator(cv.boolean, cg.bool_, retmapper=literal)
|
173
179
|
|
174
180
|
|
175
181
|
def lv_pct(value: Union[int, float]):
|
@@ -185,42 +191,60 @@ def lvms_validator_(value):
|
|
185
191
|
|
186
192
|
|
187
193
|
lv_milliseconds = LValidator(
|
188
|
-
lvms_validator_,
|
189
|
-
cg.int32,
|
190
|
-
retmapper=lambda x: x.total_milliseconds,
|
194
|
+
lvms_validator_, cg.int32, retmapper=lambda x: x.total_milliseconds
|
191
195
|
)
|
192
196
|
|
193
197
|
|
194
198
|
class TextValidator(LValidator):
|
195
199
|
def __init__(self):
|
196
|
-
super().__init__(
|
197
|
-
cv.string,
|
198
|
-
cg.const_char_ptr,
|
199
|
-
TextSensor,
|
200
|
-
"get_state().c_str()",
|
201
|
-
lambda s: cg.safe_exp(f"{s}"),
|
202
|
-
)
|
200
|
+
super().__init__(cv.string, cg.std_string, lambda s: cg.safe_exp(f"{s}"))
|
203
201
|
|
204
202
|
def __call__(self, value):
|
205
|
-
if isinstance(value, dict):
|
203
|
+
if isinstance(value, dict) and CONF_FORMAT in value:
|
206
204
|
return value
|
207
205
|
return super().__call__(value)
|
208
206
|
|
209
207
|
async def process(self, value, args=()):
|
210
208
|
if isinstance(value, dict):
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
209
|
+
if format_str := value.get(CONF_FORMAT):
|
210
|
+
args = [str(x) for x in value[CONF_ARGS]]
|
211
|
+
arg_expr = cg.RawExpression(",".join(args))
|
212
|
+
format_str = cpp_string_escape(format_str)
|
213
|
+
return literal(f"str_sprintf({format_str}, {arg_expr}).c_str()")
|
214
|
+
if time_format := value.get(CONF_TIME_FORMAT):
|
215
|
+
source = value[CONF_TIME]
|
216
|
+
if isinstance(source, Lambda):
|
217
|
+
time_format = cpp_string_escape(time_format)
|
218
|
+
return cg.RawExpression(
|
219
|
+
call_lambda(
|
220
|
+
await cg.process_lambda(source, args, return_type=ESPTime)
|
221
|
+
)
|
222
|
+
+ f".strftime({time_format}).c_str()"
|
223
|
+
)
|
224
|
+
# must be an ID
|
225
|
+
source = await cg.get_variable(source)
|
226
|
+
return source.now().strftime(time_format).c_str()
|
227
|
+
if isinstance(value, Lambda):
|
228
|
+
value = call_lambda(
|
229
|
+
await cg.process_lambda(value, args, return_type=self.rtype)
|
230
|
+
)
|
231
|
+
|
232
|
+
# Was the lambda call reduced to a string?
|
233
|
+
if value.endswith("c_str()") or (
|
234
|
+
value.endswith('"') and value.startswith('"')
|
235
|
+
):
|
236
|
+
pass
|
237
|
+
else:
|
238
|
+
# Either a std::string or a lambda call returning that. We need const char*
|
239
|
+
value = f"({value}).c_str()"
|
240
|
+
return cg.RawExpression(value)
|
215
241
|
return await super().process(value, args)
|
216
242
|
|
217
243
|
|
218
244
|
lv_text = TextValidator()
|
219
|
-
lv_float = LValidator(cv.float_, cg.float_
|
220
|
-
lv_int = LValidator(cv.int_, cg.int_
|
221
|
-
lv_brightness = LValidator(
|
222
|
-
cv.percentage, cg.float_, Sensor, "get_state()", retmapper=lambda x: int(x * 255)
|
223
|
-
)
|
245
|
+
lv_float = LValidator(cv.float_, cg.float_)
|
246
|
+
lv_int = LValidator(cv.int_, cg.int_)
|
247
|
+
lv_brightness = LValidator(cv.percentage, cg.float_, retmapper=lambda x: int(x * 255))
|
224
248
|
|
225
249
|
|
226
250
|
def is_lv_font(font):
|
@@ -1,5 +1,6 @@
|
|
1
1
|
from esphome import config_validation as cv
|
2
2
|
from esphome.automation import Trigger, validate_automation
|
3
|
+
from esphome.components.time import RealTimeClock
|
3
4
|
from esphome.const import (
|
4
5
|
CONF_ARGS,
|
5
6
|
CONF_FORMAT,
|
@@ -8,6 +9,7 @@ from esphome.const import (
|
|
8
9
|
CONF_ON_VALUE,
|
9
10
|
CONF_STATE,
|
10
11
|
CONF_TEXT,
|
12
|
+
CONF_TIME,
|
11
13
|
CONF_TRIGGER_ID,
|
12
14
|
CONF_TYPE,
|
13
15
|
)
|
@@ -15,6 +17,7 @@ from esphome.core import TimePeriod
|
|
15
17
|
from esphome.schema_extractors import SCHEMA_EXTRACT
|
16
18
|
|
17
19
|
from . import defines as df, lv_validation as lvalid
|
20
|
+
from .defines import CONF_TIME_FORMAT
|
18
21
|
from .helpers import add_lv_use, requires_component, validate_printf
|
19
22
|
from .lv_validation import lv_color, lv_font, lv_image
|
20
23
|
from .lvcode import LvglComponent
|
@@ -46,7 +49,13 @@ TEXT_SCHEMA = cv.Schema(
|
|
46
49
|
),
|
47
50
|
validate_printf,
|
48
51
|
),
|
49
|
-
|
52
|
+
cv.Schema(
|
53
|
+
{
|
54
|
+
cv.Required(CONF_TIME_FORMAT): cv.string,
|
55
|
+
cv.GenerateID(CONF_TIME): cv.templatable(cv.use_id(RealTimeClock)),
|
56
|
+
}
|
57
|
+
),
|
58
|
+
cv.templatable(cv.string),
|
50
59
|
)
|
51
60
|
}
|
52
61
|
)
|
@@ -116,15 +125,13 @@ STYLE_PROPS = {
|
|
116
125
|
"opa_layered": lvalid.opacity,
|
117
126
|
"outline_color": lvalid.lv_color,
|
118
127
|
"outline_opa": lvalid.opacity,
|
119
|
-
"outline_pad": lvalid.
|
120
|
-
"outline_width": lvalid.
|
121
|
-
"pad_all": lvalid.
|
122
|
-
"pad_bottom": lvalid.
|
123
|
-
"
|
124
|
-
"
|
125
|
-
"
|
126
|
-
"pad_row": lvalid.size,
|
127
|
-
"pad_top": lvalid.size,
|
128
|
+
"outline_pad": lvalid.pixels,
|
129
|
+
"outline_width": lvalid.pixels,
|
130
|
+
"pad_all": lvalid.pixels,
|
131
|
+
"pad_bottom": lvalid.pixels,
|
132
|
+
"pad_left": lvalid.pixels,
|
133
|
+
"pad_right": lvalid.pixels,
|
134
|
+
"pad_top": lvalid.pixels,
|
128
135
|
"shadow_color": lvalid.lv_color,
|
129
136
|
"shadow_ofs_x": cv.int_,
|
130
137
|
"shadow_ofs_y": cv.int_,
|
@@ -304,6 +311,8 @@ LAYOUT_SCHEMA = {
|
|
304
311
|
cv.Required(df.CONF_GRID_COLUMNS): [grid_spec],
|
305
312
|
cv.Optional(df.CONF_GRID_COLUMN_ALIGN): grid_alignments,
|
306
313
|
cv.Optional(df.CONF_GRID_ROW_ALIGN): grid_alignments,
|
314
|
+
cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
|
315
|
+
cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
|
307
316
|
},
|
308
317
|
df.TYPE_FLEX: {
|
309
318
|
cv.Optional(
|
@@ -312,6 +321,8 @@ LAYOUT_SCHEMA = {
|
|
312
321
|
cv.Optional(df.CONF_FLEX_ALIGN_MAIN, default="start"): flex_alignments,
|
313
322
|
cv.Optional(df.CONF_FLEX_ALIGN_CROSS, default="start"): flex_alignments,
|
314
323
|
cv.Optional(df.CONF_FLEX_ALIGN_TRACK, default="start"): flex_alignments,
|
324
|
+
cv.Optional(df.CONF_PAD_ROW): lvalid.pixels,
|
325
|
+
cv.Optional(df.CONF_PAD_COLUMN): lvalid.pixels,
|
315
326
|
},
|
316
327
|
},
|
317
328
|
lower=True,
|
@@ -338,7 +349,6 @@ DISP_BG_SCHEMA = cv.Schema(
|
|
338
349
|
}
|
339
350
|
)
|
340
351
|
|
341
|
-
|
342
352
|
# A style schema that can include text
|
343
353
|
STYLED_TEXT_SCHEMA = cv.maybe_simple_value(
|
344
354
|
STYLE_SCHEMA.extend(TEXT_SCHEMA), key=CONF_TEXT
|
@@ -20,6 +20,8 @@ from ..defines import (
|
|
20
20
|
CONF_GRID_ROWS,
|
21
21
|
CONF_LAYOUT,
|
22
22
|
CONF_MAIN,
|
23
|
+
CONF_PAD_COLUMN,
|
24
|
+
CONF_PAD_ROW,
|
23
25
|
CONF_SCROLLBAR_MODE,
|
24
26
|
CONF_STYLES,
|
25
27
|
CONF_WIDGETS,
|
@@ -29,6 +31,7 @@ from ..defines import (
|
|
29
31
|
TYPE_FLEX,
|
30
32
|
TYPE_GRID,
|
31
33
|
LValidator,
|
34
|
+
call_lambda,
|
32
35
|
join_enums,
|
33
36
|
literal,
|
34
37
|
)
|
@@ -273,6 +276,10 @@ async def set_obj_properties(w: Widget, config):
|
|
273
276
|
layout_type: str = layout[CONF_TYPE]
|
274
277
|
add_lv_use(layout_type)
|
275
278
|
lv_obj.set_layout(w.obj, literal(f"LV_LAYOUT_{layout_type.upper()}"))
|
279
|
+
if (pad_row := layout.get(CONF_PAD_ROW)) is not None:
|
280
|
+
w.set_style(CONF_PAD_ROW, pad_row, 0)
|
281
|
+
if (pad_column := layout.get(CONF_PAD_COLUMN)) is not None:
|
282
|
+
w.set_style(CONF_PAD_COLUMN, pad_column, 0)
|
276
283
|
if layout_type == TYPE_GRID:
|
277
284
|
wid = config[CONF_ID]
|
278
285
|
rows = [str(x) for x in layout[CONF_GRID_ROWS]]
|
@@ -316,8 +323,13 @@ async def set_obj_properties(w: Widget, config):
|
|
316
323
|
flag_clr = set()
|
317
324
|
flag_set = set()
|
318
325
|
props = parts[CONF_MAIN][CONF_DEFAULT]
|
326
|
+
lambs = {}
|
327
|
+
flag_set = set()
|
328
|
+
flag_clr = set()
|
319
329
|
for prop, value in {k: v for k, v in props.items() if k in OBJ_FLAGS}.items():
|
320
|
-
if value:
|
330
|
+
if isinstance(value, cv.Lambda):
|
331
|
+
lambs[prop] = value
|
332
|
+
elif value:
|
321
333
|
flag_set.add(prop)
|
322
334
|
else:
|
323
335
|
flag_clr.add(prop)
|
@@ -327,6 +339,13 @@ async def set_obj_properties(w: Widget, config):
|
|
327
339
|
if flag_clr:
|
328
340
|
clrs = join_enums(flag_clr, "LV_OBJ_FLAG_")
|
329
341
|
w.clear_flag(clrs)
|
342
|
+
for key, value in lambs.items():
|
343
|
+
lamb = await cg.process_lambda(value, [], return_type=cg.bool_)
|
344
|
+
flag = f"LV_OBJ_FLAG_{key.upper()}"
|
345
|
+
with LvConditional(call_lambda(lamb)) as cond:
|
346
|
+
w.add_flag(flag)
|
347
|
+
cond.else_()
|
348
|
+
w.clear_flag(flag)
|
330
349
|
|
331
350
|
if states := config.get(CONF_STATE):
|
332
351
|
adds = set()
|
@@ -348,7 +367,7 @@ async def set_obj_properties(w: Widget, config):
|
|
348
367
|
for key, value in lambs.items():
|
349
368
|
lamb = await cg.process_lambda(value, [], return_type=cg.bool_)
|
350
369
|
state = f"LV_STATE_{key.upper()}"
|
351
|
-
with LvConditional(
|
370
|
+
with LvConditional(call_lambda(lamb)) as cond:
|
352
371
|
w.add_state(state)
|
353
372
|
cond.else_()
|
354
373
|
w.clear_state(state)
|
esphome/config_validation.py
CHANGED
@@ -1864,7 +1864,7 @@ def maybe_simple_value(*validators, **kwargs):
|
|
1864
1864
|
if value == SCHEMA_EXTRACT:
|
1865
1865
|
return (validator, key)
|
1866
1866
|
|
1867
|
-
if isinstance(value, dict):
|
1867
|
+
if isinstance(value, dict) and key in value:
|
1868
1868
|
return validator(value)
|
1869
1869
|
return validator({key: value})
|
1870
1870
|
|
esphome/const.py
CHANGED
@@ -4,8 +4,8 @@ esphome/automation.py,sha256=5Ctd9-x3snlo582SHBy5WQISH5e6-8Mt9b7emxJyWiM,14507
|
|
4
4
|
esphome/codegen.py,sha256=GePHUM7xdXb_Pil59SHVsXg2F4VBPgkH-Fz2PDX8Z54,1873
|
5
5
|
esphome/config.py,sha256=ArMupdqCpKqQm-vFWb85HueI88DAfYTjuhR6mA691DI,39614
|
6
6
|
esphome/config_helpers.py,sha256=MKf_wzO35nn41FvigXE0iYKDslPgL2ruf8R-EPtTT2I,3256
|
7
|
-
esphome/config_validation.py,sha256=
|
8
|
-
esphome/const.py,sha256=
|
7
|
+
esphome/config_validation.py,sha256=Uck0GvA97sJ6sW25y0nqvOT2nsYIb6uZ_1sI-YBl4vc,65844
|
8
|
+
esphome/const.py,sha256=gW_Ylnoo9hnOGQZRCz_BaYDmMBkA6n__s7u02jKqmE4,39410
|
9
9
|
esphome/coroutine.py,sha256=j_14z8dIIzIBeuNO30D4c1RJvMMt1xZFZ58Evd-EvJA,9344
|
10
10
|
esphome/cpp_generator.py,sha256=lXPXHYUsFIvBSAoZ93mXYlGcXYg5L18nTtYGHE4_rr8,31203
|
11
11
|
esphome/cpp_helpers.py,sha256=6C2vNbOIhZKi43xRVlk5hp9GfshfBn-rc5D_ZFUEYaE,4801
|
@@ -1389,16 +1389,16 @@ esphome/components/ltr_als_ps/ltr_definitions.h,sha256=yaIvnLQBIBnPuQBvHDD9Q_16U
|
|
1389
1389
|
esphome/components/ltr_als_ps/sensor.py,sha256=e5KnfruXbVI0s1S0bLJihTnIM5UOmiQT2dMRHxFReAM,10023
|
1390
1390
|
esphome/components/lvgl/__init__.py,sha256=CxVEe3eNnpPlIGc4rl8wiNPI4GXKrQxn1i5lt7L7OsM,12430
|
1391
1391
|
esphome/components/lvgl/automation.py,sha256=5BDOa0alZsraUcWgoh-QHsZDBtuzPrdU4VgiQIuL1oQ,7261
|
1392
|
-
esphome/components/lvgl/defines.py,sha256=
|
1392
|
+
esphome/components/lvgl/defines.py,sha256=DxFTnt42o9eLRExvIUqzkmcVN-4nMBF6YSewxynfo_s,12183
|
1393
1393
|
esphome/components/lvgl/encoders.py,sha256=b8E__Bu4OJj8_svtgiHE8hfL78WSJIAuGo_JpmlVf5I,3088
|
1394
1394
|
esphome/components/lvgl/font.cpp,sha256=l9dPIw7LdOdtg_3QZErTLLevMc6A66Wfm-1s-6qcBmM,2712
|
1395
1395
|
esphome/components/lvgl/helpers.py,sha256=XI3C5IHwoSVlgR32kMxeXTZWK6iW112nmWv5wByrKLY,1253
|
1396
|
-
esphome/components/lvgl/lv_validation.py,sha256=
|
1396
|
+
esphome/components/lvgl/lv_validation.py,sha256=aGWc0YBZCZjYIgwYwE83vnROFiaMJf6Fo9db1Sas6Jc,8995
|
1397
1397
|
esphome/components/lvgl/lvcode.py,sha256=uUxJ-tGqo-fZdLaumXbAI4ElQh6P_IS8dD6eLtvwogo,10103
|
1398
1398
|
esphome/components/lvgl/lvgl_esphome.cpp,sha256=yqEZdGmaUP6p5QRfQ7mq3_V3Mk7y431eK9EzlivmJnY,14150
|
1399
1399
|
esphome/components/lvgl/lvgl_esphome.h,sha256=hsJml28BdPNyTaxdmf-EspzSzSFiLXTZB7Jgd-v00ws,9134
|
1400
1400
|
esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
|
1401
|
-
esphome/components/lvgl/schemas.py,sha256=
|
1401
|
+
esphome/components/lvgl/schemas.py,sha256=CmENCi8w-gO7bvJB0mw5LAhk_dxSNchjOvqwUu7v4TE,14045
|
1402
1402
|
esphome/components/lvgl/styles.py,sha256=DauT2qibb5vJMbejaUnhQ6OHEmDJkcjY9yctl4GrcCw,2167
|
1403
1403
|
esphome/components/lvgl/touchscreens.py,sha256=R2tkfse86qzWDU6Ot_tARApWfn1jeFaJObDUX5gITL8,1634
|
1404
1404
|
esphome/components/lvgl/trigger.py,sha256=bUdmvSH-mEPCzdcJQuyedq0oIIYvMOzzGit_5zdjCmA,2269
|
@@ -1416,7 +1416,7 @@ esphome/components/lvgl/switch/lvgl_switch.h,sha256=w8SqlodBYRdVzlhBwkBERRP-X-Ir
|
|
1416
1416
|
esphome/components/lvgl/text/__init__.py,sha256=SfNxKSwBrV_HYjZjLWKvOU3aum8t4hBuHh-erfypy58,1530
|
1417
1417
|
esphome/components/lvgl/text/lvgl_text.h,sha256=KZrcwh3G0wADH9hg4byTpF1pk67x5cn9zHWOwv_G5YY,883
|
1418
1418
|
esphome/components/lvgl/text_sensor/__init__.py,sha256=Xz4hfnrRdaxkIjyF2B3w2eX1Py3VcH7Mk1Jy6za5FBY,1200
|
1419
|
-
esphome/components/lvgl/widgets/__init__.py,sha256=
|
1419
|
+
esphome/components/lvgl/widgets/__init__.py,sha256=N2fLNSexPZuJkqPIKR_4IXJXMxJlAWHcmoV7L5S2qlA,13065
|
1420
1420
|
esphome/components/lvgl/widgets/animimg.py,sha256=-dsL4TJ5k3defNUiLIE6xads3pH1I1T5Bmnn7uKcQZ8,3395
|
1421
1421
|
esphome/components/lvgl/widgets/arc.py,sha256=M7T1iU_dhjnHJSSm-DW0u7RSZAgAQwycBxifODPbTyw,2305
|
1422
1422
|
esphome/components/lvgl/widgets/button.py,sha256=lR_8dHZK3P9AY6WbjfL3Sj9oyTOf-i9qbvkGzcPpzgk,423
|
@@ -1606,7 +1606,7 @@ esphome/components/micronova/text_sensor/micronova_text_sensor.cpp,sha256=-ycHe4
|
|
1606
1606
|
esphome/components/micronova/text_sensor/micronova_text_sensor.h,sha256=6_tjKN6nxn8_Mf6VOW-TAyDtZci602ljxqnifsOaD8I,681
|
1607
1607
|
esphome/components/microphone/__init__.py,sha256=YKpTAy9uvPbHkb4faSk9EA0ltuEATseZFdjh3N2nWQM,2491
|
1608
1608
|
esphome/components/microphone/automation.h,sha256=MSdGq7kqFJlWC-bMn97SG7DItrXOrJ-kRiDr6QsRkes,929
|
1609
|
-
esphome/components/microphone/microphone.h,sha256=
|
1609
|
+
esphome/components/microphone/microphone.h,sha256=j_ILMqRG29PXcr5Q5IxdBAghRvuajix2eXkUhIwahNs,874
|
1610
1610
|
esphome/components/mics_4514/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
1611
1611
|
esphome/components/mics_4514/mics_4514.cpp,sha256=jm7s2NSDVOW3_Gy0X77GkgoDgPhAT1__7f3U2zaAMWk,4335
|
1612
1612
|
esphome/components/mics_4514/mics_4514.h,sha256=w3vtAl_ErB-j_-fl6Lk4U7cShwwlRgfbKQrb3liekNs,746
|
@@ -2474,7 +2474,7 @@ esphome/components/sonoff_d1/sonoff_d1.cpp,sha256=9xT42oxeLJ5CGrZ7wqIH5KVTkwW3XY
|
|
2474
2474
|
esphome/components/sonoff_d1/sonoff_d1.h,sha256=FNHcaqGktpV3S19A1LD2wtpRpEqA0h6g9GFb36pMy_E,3457
|
2475
2475
|
esphome/components/speaker/__init__.py,sha256=NE8RYnynPb2TAQ9dW5k-jMbDliJoRCqotJxIMawGdQg,2732
|
2476
2476
|
esphome/components/speaker/automation.h,sha256=bpp8rraMm1A0C4r0PfELw4fI9TySyrg4GPQgoBzF9SE,1584
|
2477
|
-
esphome/components/speaker/speaker.h,sha256=
|
2477
|
+
esphome/components/speaker/speaker.h,sha256=cLRt67zz0KOSuPSdpJOOioQIHWu6bUneZQSiyj4WuM4,1018
|
2478
2478
|
esphome/components/speed/__init__.py,sha256=Bfyz1MHHvLHj93TfN53E2uhKXKLYtp0k4st6Xb3760o,74
|
2479
2479
|
esphome/components/speed/fan/__init__.py,sha256=zhurjCYLG9V-soV-LF4mEGxqyrcQuQ_KLdFq0LpyAKA,1798
|
2480
2480
|
esphome/components/speed/fan/speed_fan.cpp,sha256=vjrhZZ4Rto6uEmw8396tF9QrAXZvZSKKiIC-_T2LtYc,1472
|
@@ -3225,9 +3225,9 @@ esphome/dashboard/util/itertools.py,sha256=8eLrWEWmICLtXNxkKdYPQV0c_N4GEz8m9Npnb
|
|
3225
3225
|
esphome/dashboard/util/password.py,sha256=cQz3b9B-ijTe7zS6BeCW0hc3pWv6JjC78jmnycYYAh8,321
|
3226
3226
|
esphome/dashboard/util/subprocess.py,sha256=T8EW6dbU4LPd2DG1dRrdh8li71tt6J1isn411poMhkk,1022
|
3227
3227
|
esphome/dashboard/util/text.py,sha256=ENDnfN4O0NdA3CKVJjQYabFbwbrsIhVKrAMQe53qYu4,534
|
3228
|
-
esphome-2024.8.
|
3229
|
-
esphome-2024.8.
|
3230
|
-
esphome-2024.8.
|
3231
|
-
esphome-2024.8.
|
3232
|
-
esphome-2024.8.
|
3233
|
-
esphome-2024.8.
|
3228
|
+
esphome-2024.8.0b3.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3229
|
+
esphome-2024.8.0b3.dist-info/METADATA,sha256=9BUeGDF4rU-BwxY-hpEJKgOrtSmV_N5jsGqTc8BsRdw,3265
|
3230
|
+
esphome-2024.8.0b3.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
3231
|
+
esphome-2024.8.0b3.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3232
|
+
esphome-2024.8.0b3.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3233
|
+
esphome-2024.8.0b3.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|