esphome 2024.8.0b4__py3-none-any.whl → 2024.8.2__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/api/api_connection.cpp +1 -0
- esphome/components/datetime/__init__.py +3 -3
- esphome/components/ethernet/ethernet_component.cpp +5 -5
- esphome/components/lvgl/__init__.py +4 -1
- esphome/components/lvgl/automation.py +13 -3
- esphome/components/lvgl/binary_sensor/__init__.py +2 -1
- esphome/components/lvgl/light/__init__.py +2 -1
- esphome/components/lvgl/lvcode.py +3 -0
- esphome/components/lvgl/lvgl_esphome.cpp +7 -0
- esphome/components/lvgl/lvgl_esphome.h +1 -0
- esphome/components/lvgl/number/__init__.py +2 -1
- esphome/components/lvgl/select/__init__.py +2 -1
- esphome/components/lvgl/sensor/__init__.py +2 -1
- esphome/components/lvgl/switch/__init__.py +2 -1
- esphome/components/lvgl/text/__init__.py +2 -1
- esphome/components/lvgl/text_sensor/__init__.py +2 -1
- esphome/components/lvgl/widgets/__init__.py +13 -0
- esphome/components/lvgl/widgets/line.py +7 -5
- esphome/components/lvgl/widgets/msgbox.py +2 -1
- esphome/const.py +1 -1
- esphome/storage_json.py +16 -0
- esphome/writer.py +9 -1
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/METADATA +1 -1
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/RECORD +28 -28
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/LICENSE +0 -0
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/WHEEL +0 -0
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/entry_points.txt +0 -0
- {esphome-2024.8.0b4.dist-info → esphome-2024.8.2.dist-info}/top_level.txt +0 -0
@@ -179,6 +179,7 @@ void APIConnection::loop() {
|
|
179
179
|
SubscribeHomeAssistantStateResponse resp;
|
180
180
|
resp.entity_id = it.entity_id;
|
181
181
|
resp.attribute = it.attribute.value();
|
182
|
+
resp.once = it.once;
|
182
183
|
if (this->send_subscribe_home_assistant_state_response(resp)) {
|
183
184
|
state_subs_at_++;
|
184
185
|
}
|
@@ -186,7 +186,7 @@ async def datetime_date_set_to_code(config, action_id, template_arg, args):
|
|
186
186
|
|
187
187
|
date_config = config[CONF_DATE]
|
188
188
|
if cg.is_template(date_config):
|
189
|
-
template_ = await cg.templatable(date_config,
|
189
|
+
template_ = await cg.templatable(date_config, args, cg.ESPTime)
|
190
190
|
cg.add(action_var.set_date(template_))
|
191
191
|
else:
|
192
192
|
date_struct = cg.StructInitializer(
|
@@ -217,7 +217,7 @@ async def datetime_time_set_to_code(config, action_id, template_arg, args):
|
|
217
217
|
|
218
218
|
time_config = config[CONF_TIME]
|
219
219
|
if cg.is_template(time_config):
|
220
|
-
template_ = await cg.templatable(time_config,
|
220
|
+
template_ = await cg.templatable(time_config, args, cg.ESPTime)
|
221
221
|
cg.add(action_var.set_time(template_))
|
222
222
|
else:
|
223
223
|
time_struct = cg.StructInitializer(
|
@@ -248,7 +248,7 @@ async def datetime_datetime_set_to_code(config, action_id, template_arg, args):
|
|
248
248
|
|
249
249
|
datetime_config = config[CONF_DATETIME]
|
250
250
|
if cg.is_template(datetime_config):
|
251
|
-
template_ = await cg.templatable(datetime_config,
|
251
|
+
template_ = await cg.templatable(datetime_config, args, cg.ESPTime)
|
252
252
|
cg.add(action_var.set_datetime(template_))
|
253
253
|
else:
|
254
254
|
datetime_struct = cg.StructInitializer(
|
@@ -472,13 +472,13 @@ void EthernetComponent::start_connect_() {
|
|
472
472
|
if (err != ESP_ERR_ESP_NETIF_DHCP_ALREADY_STARTED) {
|
473
473
|
ESPHL_ERROR_CHECK(err, "DHCPC start error");
|
474
474
|
}
|
475
|
+
}
|
475
476
|
#if USE_NETWORK_IPV6
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
}
|
480
|
-
#endif /* USE_NETWORK_IPV6 */
|
477
|
+
err = esp_netif_create_ip6_linklocal(this->eth_netif_);
|
478
|
+
if (err != ESP_OK) {
|
479
|
+
ESPHL_ERROR_CHECK(err, "Enable IPv6 link local failed");
|
481
480
|
}
|
481
|
+
#endif /* USE_NETWORK_IPV6 */
|
482
482
|
|
483
483
|
this->connect_begin_ = millis();
|
484
484
|
this->status_set_warning();
|
@@ -266,7 +266,10 @@ async def to_code(config):
|
|
266
266
|
await add_top_layer(config)
|
267
267
|
await msgboxes_to_code(config)
|
268
268
|
await disp_update(f"{lv_component}->get_disp()", config)
|
269
|
-
|
269
|
+
# At this point only the setup code should be generated
|
270
|
+
assert LvContext.added_lambda_count == 1
|
271
|
+
Widget.set_completed()
|
272
|
+
async with LvContext(lv_component):
|
270
273
|
await generate_triggers(lv_component)
|
271
274
|
for conf in config.get(CONF_ON_IDLE, ()):
|
272
275
|
templ = await cg.templatable(conf[CONF_TIMEOUT], [], cg.uint32)
|
@@ -5,6 +5,7 @@ from esphome import automation
|
|
5
5
|
import esphome.codegen as cg
|
6
6
|
import esphome.config_validation as cv
|
7
7
|
from esphome.const import CONF_ID, CONF_TIMEOUT
|
8
|
+
from esphome.cpp_generator import RawExpression
|
8
9
|
from esphome.cpp_types import nullptr
|
9
10
|
|
10
11
|
from .defines import (
|
@@ -26,6 +27,7 @@ from .lvcode import (
|
|
26
27
|
add_line_marks,
|
27
28
|
lv,
|
28
29
|
lv_add,
|
30
|
+
lv_expr,
|
29
31
|
lv_obj,
|
30
32
|
lvgl_comp,
|
31
33
|
)
|
@@ -38,7 +40,13 @@ from .types import (
|
|
38
40
|
lv_disp_t,
|
39
41
|
lv_obj_t,
|
40
42
|
)
|
41
|
-
from .widgets import
|
43
|
+
from .widgets import (
|
44
|
+
Widget,
|
45
|
+
get_widgets,
|
46
|
+
lv_scr_act,
|
47
|
+
set_obj_properties,
|
48
|
+
wait_for_widgets,
|
49
|
+
)
|
42
50
|
|
43
51
|
|
44
52
|
async def action_to_code(
|
@@ -48,10 +56,12 @@ async def action_to_code(
|
|
48
56
|
template_arg,
|
49
57
|
args,
|
50
58
|
):
|
59
|
+
await wait_for_widgets()
|
51
60
|
async with LambdaContext(parameters=args, where=action_id) as context:
|
61
|
+
with LvConditional(lv_expr.is_pre_initialise()):
|
62
|
+
context.add(RawExpression("return"))
|
52
63
|
for widget in widgets:
|
53
|
-
|
54
|
-
await action(widget)
|
64
|
+
await action(widget)
|
55
65
|
var = cg.new_Pvariable(action_id, template_arg, await context.get_lambda())
|
56
66
|
return var
|
57
67
|
|
@@ -10,7 +10,7 @@ from ..defines import CONF_LVGL_ID, CONF_WIDGET
|
|
10
10
|
from ..lvcode import EVENT_ARG, LambdaContext, LvContext
|
11
11
|
from ..schemas import LVGL_SCHEMA
|
12
12
|
from ..types import LV_EVENT, lv_pseudo_button_t
|
13
|
-
from ..widgets import Widget, get_widgets
|
13
|
+
from ..widgets import Widget, get_widgets, wait_for_widgets
|
14
14
|
|
15
15
|
CONFIG_SCHEMA = (
|
16
16
|
binary_sensor_schema(BinarySensor)
|
@@ -29,6 +29,7 @@ async def to_code(config):
|
|
29
29
|
widget = await get_widgets(config, CONF_WIDGET)
|
30
30
|
widget = widget[0]
|
31
31
|
assert isinstance(widget, Widget)
|
32
|
+
await wait_for_widgets()
|
32
33
|
async with LambdaContext(EVENT_ARG) as pressed_ctx:
|
33
34
|
pressed_ctx.add(sensor.publish_state(widget.is_pressed()))
|
34
35
|
async with LvContext(paren) as ctx:
|
@@ -8,7 +8,7 @@ from ..defines import CONF_LVGL_ID
|
|
8
8
|
from ..lvcode import LvContext
|
9
9
|
from ..schemas import LVGL_SCHEMA
|
10
10
|
from ..types import LvType, lvgl_ns
|
11
|
-
from ..widgets import get_widgets
|
11
|
+
from ..widgets import get_widgets, wait_for_widgets
|
12
12
|
|
13
13
|
lv_led_t = LvType("lv_led_t")
|
14
14
|
LVLight = lvgl_ns.class_("LVLight", LightOutput)
|
@@ -28,5 +28,6 @@ async def to_code(config):
|
|
28
28
|
paren = await cg.get_variable(config[CONF_LVGL_ID])
|
29
29
|
widget = await get_widgets(config, CONF_LED)
|
30
30
|
widget = widget[0]
|
31
|
+
await wait_for_widgets()
|
31
32
|
async with LvContext(paren) as ctx:
|
32
33
|
ctx.add(var.set_obj(widget.obj))
|
@@ -176,6 +176,8 @@ class LvContext(LambdaContext):
|
|
176
176
|
Code generation into the LVGL initialisation code (called in `setup()`)
|
177
177
|
"""
|
178
178
|
|
179
|
+
added_lambda_count = 0
|
180
|
+
|
179
181
|
def __init__(self, lv_component, args=None):
|
180
182
|
self.args = args or LVGL_COMP_ARG
|
181
183
|
super().__init__(parameters=self.args)
|
@@ -183,6 +185,7 @@ class LvContext(LambdaContext):
|
|
183
185
|
|
184
186
|
async def add_init_lambda(self):
|
185
187
|
cg.add(self.lv_component.add_init_lambda(await self.get_lambda()))
|
188
|
+
LvContext.added_lambda_count += 1
|
186
189
|
|
187
190
|
async def __aexit__(self, exc_type, exc_val, exc_tb):
|
188
191
|
await super().__aexit__(exc_type, exc_val, exc_tb)
|
@@ -294,6 +294,13 @@ void LvglComponent::loop() {
|
|
294
294
|
}
|
295
295
|
lv_timer_handler_run_in_period(5);
|
296
296
|
}
|
297
|
+
bool lv_is_pre_initialise() {
|
298
|
+
if (!lv_is_initialized()) {
|
299
|
+
ESP_LOGE(TAG, "LVGL call before component is initialised");
|
300
|
+
return true;
|
301
|
+
}
|
302
|
+
return false;
|
303
|
+
}
|
297
304
|
|
298
305
|
#ifdef USE_LVGL_IMAGE
|
299
306
|
lv_img_dsc_t *lv_img_from(image::Image *src, lv_img_dsc_t *img_dsc) {
|
@@ -40,6 +40,7 @@ namespace lvgl {
|
|
40
40
|
|
41
41
|
extern lv_event_code_t lv_api_event; // NOLINT
|
42
42
|
extern lv_event_code_t lv_update_event; // NOLINT
|
43
|
+
extern bool lv_is_pre_initialise();
|
43
44
|
#ifdef USE_LVGL_COLOR
|
44
45
|
inline lv_color_t lv_color_from(Color color) { return lv_color_make(color.red, color.green, color.blue); }
|
45
46
|
#endif // USE_LVGL_COLOR
|
@@ -16,7 +16,7 @@ from ..lvcode import (
|
|
16
16
|
)
|
17
17
|
from ..schemas import LVGL_SCHEMA
|
18
18
|
from ..types import LV_EVENT, LvNumber, lvgl_ns
|
19
|
-
from ..widgets import get_widgets
|
19
|
+
from ..widgets import get_widgets, wait_for_widgets
|
20
20
|
|
21
21
|
LVGLNumber = lvgl_ns.class_("LVGLNumber", number.Number)
|
22
22
|
|
@@ -44,6 +44,7 @@ async def to_code(config):
|
|
44
44
|
step=widget.get_step(),
|
45
45
|
)
|
46
46
|
|
47
|
+
await wait_for_widgets()
|
47
48
|
async with LambdaContext([(cg.float_, "v")]) as control:
|
48
49
|
await widget.set_property(
|
49
50
|
"value", MockObj("v") * MockObj(widget.get_scale()), config[CONF_ANIMATED]
|
@@ -15,7 +15,7 @@ from ..lvcode import (
|
|
15
15
|
)
|
16
16
|
from ..schemas import LVGL_SCHEMA
|
17
17
|
from ..types import LV_EVENT, LvSelect, lvgl_ns
|
18
|
-
from ..widgets import get_widgets
|
18
|
+
from ..widgets import get_widgets, wait_for_widgets
|
19
19
|
|
20
20
|
LVGLSelect = lvgl_ns.class_("LVGLSelect", select.Select)
|
21
21
|
|
@@ -37,6 +37,7 @@ async def to_code(config):
|
|
37
37
|
options = widget.config.get(CONF_OPTIONS, [])
|
38
38
|
selector = await select.new_select(config, options=options)
|
39
39
|
paren = await cg.get_variable(config[CONF_LVGL_ID])
|
40
|
+
await wait_for_widgets()
|
40
41
|
async with LambdaContext(EVENT_ARG) as pub_ctx:
|
41
42
|
pub_ctx.add(selector.publish_index(widget.get_value()))
|
42
43
|
async with LambdaContext([(cg.uint16, "v")]) as control:
|
@@ -14,7 +14,7 @@ from ..lvcode import (
|
|
14
14
|
)
|
15
15
|
from ..schemas import LVGL_SCHEMA
|
16
16
|
from ..types import LV_EVENT, LvNumber
|
17
|
-
from ..widgets import Widget, get_widgets
|
17
|
+
from ..widgets import Widget, get_widgets, wait_for_widgets
|
18
18
|
|
19
19
|
CONFIG_SCHEMA = (
|
20
20
|
sensor_schema(Sensor)
|
@@ -33,6 +33,7 @@ async def to_code(config):
|
|
33
33
|
widget = await get_widgets(config, CONF_WIDGET)
|
34
34
|
widget = widget[0]
|
35
35
|
assert isinstance(widget, Widget)
|
36
|
+
await wait_for_widgets()
|
36
37
|
async with LambdaContext(EVENT_ARG) as lamb:
|
37
38
|
lv_add(sensor.publish_state(widget.get_value()))
|
38
39
|
async with LvContext(paren, LVGL_COMP_ARG):
|
@@ -16,7 +16,7 @@ from ..lvcode import (
|
|
16
16
|
)
|
17
17
|
from ..schemas import LVGL_SCHEMA
|
18
18
|
from ..types import LV_EVENT, LV_STATE, lv_pseudo_button_t, lvgl_ns
|
19
|
-
from ..widgets import get_widgets
|
19
|
+
from ..widgets import get_widgets, wait_for_widgets
|
20
20
|
|
21
21
|
LVGLSwitch = lvgl_ns.class_("LVGLSwitch", Switch)
|
22
22
|
CONFIG_SCHEMA = (
|
@@ -35,6 +35,7 @@ async def to_code(config):
|
|
35
35
|
paren = await cg.get_variable(config[CONF_LVGL_ID])
|
36
36
|
widget = await get_widgets(config, CONF_WIDGET)
|
37
37
|
widget = widget[0]
|
38
|
+
await wait_for_widgets()
|
38
39
|
async with LambdaContext(EVENT_ARG) as checked_ctx:
|
39
40
|
checked_ctx.add(switch.publish_state(widget.get_value()))
|
40
41
|
async with LambdaContext([(cg.bool_, "v")]) as control:
|
@@ -15,7 +15,7 @@ from ..lvcode import (
|
|
15
15
|
)
|
16
16
|
from ..schemas import LVGL_SCHEMA
|
17
17
|
from ..types import LV_EVENT, LvText, lvgl_ns
|
18
|
-
from ..widgets import get_widgets
|
18
|
+
from ..widgets import get_widgets, wait_for_widgets
|
19
19
|
|
20
20
|
LVGLText = lvgl_ns.class_("LVGLText", text.Text)
|
21
21
|
|
@@ -32,6 +32,7 @@ async def to_code(config):
|
|
32
32
|
paren = await cg.get_variable(config[CONF_LVGL_ID])
|
33
33
|
widget = await get_widgets(config, CONF_WIDGET)
|
34
34
|
widget = widget[0]
|
35
|
+
await wait_for_widgets()
|
35
36
|
async with LambdaContext([(cg.std_string, "text_value")]) as control:
|
36
37
|
await widget.set_property("text", "text_value.c_str())")
|
37
38
|
lv.event_send(widget.obj, API_EVENT, None)
|
@@ -10,7 +10,7 @@ from ..defines import CONF_LVGL_ID, CONF_WIDGET
|
|
10
10
|
from ..lvcode import API_EVENT, EVENT_ARG, UPDATE_EVENT, LambdaContext, LvContext
|
11
11
|
from ..schemas import LVGL_SCHEMA
|
12
12
|
from ..types import LV_EVENT, LvText
|
13
|
-
from ..widgets import get_widgets
|
13
|
+
from ..widgets import get_widgets, wait_for_widgets
|
14
14
|
|
15
15
|
CONFIG_SCHEMA = (
|
16
16
|
text_sensor_schema(TextSensor)
|
@@ -28,6 +28,7 @@ async def to_code(config):
|
|
28
28
|
paren = await cg.get_variable(config[CONF_LVGL_ID])
|
29
29
|
widget = await get_widgets(config, CONF_WIDGET)
|
30
30
|
widget = widget[0]
|
31
|
+
await wait_for_widgets()
|
31
32
|
async with LambdaContext(EVENT_ARG) as pressed_ctx:
|
32
33
|
pressed_ctx.add(sensor.publish_state(widget.get_value()))
|
33
34
|
async with LvContext(paren) as ctx:
|
@@ -223,6 +223,19 @@ async def get_widget_(wid: Widget):
|
|
223
223
|
return await FakeAwaitable(get_widget_generator(wid))
|
224
224
|
|
225
225
|
|
226
|
+
def widgets_wait_generator():
|
227
|
+
while True:
|
228
|
+
if Widget.widgets_completed:
|
229
|
+
return
|
230
|
+
yield
|
231
|
+
|
232
|
+
|
233
|
+
async def wait_for_widgets():
|
234
|
+
if Widget.widgets_completed:
|
235
|
+
return
|
236
|
+
await FakeAwaitable(widgets_wait_generator())
|
237
|
+
|
238
|
+
|
226
239
|
async def get_widgets(config: Union[dict, list], id: str = CONF_ID) -> list[Widget]:
|
227
240
|
if not config:
|
228
241
|
return []
|
@@ -3,7 +3,7 @@ import functools
|
|
3
3
|
import esphome.codegen as cg
|
4
4
|
import esphome.config_validation as cv
|
5
5
|
|
6
|
-
from ..defines import CONF_MAIN
|
6
|
+
from ..defines import CONF_MAIN
|
7
7
|
from ..lvcode import lv
|
8
8
|
from ..types import LvType
|
9
9
|
from . import Widget, WidgetType
|
@@ -38,13 +38,15 @@ LINE_SCHEMA = {
|
|
38
38
|
|
39
39
|
class LineType(WidgetType):
|
40
40
|
def __init__(self):
|
41
|
-
super().__init__(
|
41
|
+
super().__init__(
|
42
|
+
CONF_LINE, LvType("lv_line_t"), (CONF_MAIN,), LINE_SCHEMA, modify_schema={}
|
43
|
+
)
|
42
44
|
|
43
45
|
async def to_code(self, w: Widget, config):
|
44
46
|
"""For a line object, create and add the points"""
|
45
|
-
data
|
46
|
-
|
47
|
-
|
47
|
+
if data := config.get(CONF_POINTS):
|
48
|
+
points = cg.static_const_array(config[CONF_POINT_LIST_ID], data)
|
49
|
+
lv.line_set_points(w.obj, points, len(data))
|
48
50
|
|
49
51
|
|
50
52
|
line_spec = LineType()
|
@@ -13,7 +13,7 @@ from ..defines import (
|
|
13
13
|
TYPE_FLEX,
|
14
14
|
literal,
|
15
15
|
)
|
16
|
-
from ..helpers import add_lv_use
|
16
|
+
from ..helpers import add_lv_use, lvgl_components_required
|
17
17
|
from ..lv_validation import lv_bool, lv_pct, lv_text
|
18
18
|
from ..lvcode import (
|
19
19
|
EVENT_ARG,
|
@@ -72,6 +72,7 @@ async def msgbox_to_code(conf):
|
|
72
72
|
*buttonmatrix_spec.get_uses(),
|
73
73
|
*button_spec.get_uses(),
|
74
74
|
)
|
75
|
+
lvgl_components_required.add("BUTTONMATRIX")
|
75
76
|
messagebox_id = conf[CONF_ID]
|
76
77
|
outer = lv_Pvariable(lv_obj_t, messagebox_id.id)
|
77
78
|
buttonmatrix = new_Pvariable(
|
esphome/const.py
CHANGED
esphome/storage_json.py
CHANGED
@@ -48,6 +48,8 @@ class StorageJSON:
|
|
48
48
|
firmware_bin_path: str,
|
49
49
|
loaded_integrations: set[str],
|
50
50
|
no_mdns: bool,
|
51
|
+
framework: str | None = None,
|
52
|
+
core_platform: str | None = None,
|
51
53
|
) -> None:
|
52
54
|
# Version of the storage JSON schema
|
53
55
|
assert storage_version is None or isinstance(storage_version, int)
|
@@ -78,6 +80,10 @@ class StorageJSON:
|
|
78
80
|
self.loaded_integrations = loaded_integrations
|
79
81
|
# Is mDNS disabled
|
80
82
|
self.no_mdns = no_mdns
|
83
|
+
# The framework used to compile the firmware
|
84
|
+
self.framework = framework
|
85
|
+
# The core platform of this firmware. Like "esp32", "rp2040", "host" etc.
|
86
|
+
self.core_platform = core_platform
|
81
87
|
|
82
88
|
def as_dict(self):
|
83
89
|
return {
|
@@ -94,6 +100,8 @@ class StorageJSON:
|
|
94
100
|
"firmware_bin_path": self.firmware_bin_path,
|
95
101
|
"loaded_integrations": sorted(self.loaded_integrations),
|
96
102
|
"no_mdns": self.no_mdns,
|
103
|
+
"framework": self.framework,
|
104
|
+
"core_platform": self.core_platform,
|
97
105
|
}
|
98
106
|
|
99
107
|
def to_json(self):
|
@@ -127,6 +135,8 @@ class StorageJSON:
|
|
127
135
|
and CONF_DISABLED in esph.config[CONF_MDNS]
|
128
136
|
and esph.config[CONF_MDNS][CONF_DISABLED] is True
|
129
137
|
),
|
138
|
+
framework=esph.target_framework,
|
139
|
+
core_platform=esph.target_platform,
|
130
140
|
)
|
131
141
|
|
132
142
|
@staticmethod
|
@@ -147,6 +157,8 @@ class StorageJSON:
|
|
147
157
|
firmware_bin_path=None,
|
148
158
|
loaded_integrations=set(),
|
149
159
|
no_mdns=False,
|
160
|
+
framework=None,
|
161
|
+
core_platform=platform.lower(),
|
150
162
|
)
|
151
163
|
|
152
164
|
@staticmethod
|
@@ -168,6 +180,8 @@ class StorageJSON:
|
|
168
180
|
firmware_bin_path = storage.get("firmware_bin_path")
|
169
181
|
loaded_integrations = set(storage.get("loaded_integrations", []))
|
170
182
|
no_mdns = storage.get("no_mdns", False)
|
183
|
+
framework = storage.get("framework")
|
184
|
+
core_platform = storage.get("core_platform")
|
171
185
|
return StorageJSON(
|
172
186
|
storage_version,
|
173
187
|
name,
|
@@ -182,6 +196,8 @@ class StorageJSON:
|
|
182
196
|
firmware_bin_path,
|
183
197
|
loaded_integrations,
|
184
198
|
no_mdns,
|
199
|
+
framework,
|
200
|
+
core_platform,
|
185
201
|
)
|
186
202
|
|
187
203
|
@staticmethod
|
esphome/writer.py
CHANGED
@@ -9,6 +9,7 @@ from esphome.config import iter_component_configs, iter_components
|
|
9
9
|
from esphome.const import (
|
10
10
|
ENV_NOGITIGNORE,
|
11
11
|
HEADER_FILE_EXTENSIONS,
|
12
|
+
PLATFORM_ESP32,
|
12
13
|
SOURCE_FILE_EXTENSIONS,
|
13
14
|
__version__,
|
14
15
|
)
|
@@ -106,6 +107,11 @@ def storage_should_clean(old: StorageJSON, new: StorageJSON) -> bool:
|
|
106
107
|
return True
|
107
108
|
if old.build_path != new.build_path:
|
108
109
|
return True
|
110
|
+
if old.loaded_integrations != new.loaded_integrations:
|
111
|
+
if new.core_platform == PLATFORM_ESP32:
|
112
|
+
from esphome.components.esp32 import FRAMEWORK_ESP_IDF
|
113
|
+
|
114
|
+
return new.framework == FRAMEWORK_ESP_IDF
|
109
115
|
return False
|
110
116
|
|
111
117
|
|
@@ -117,7 +123,9 @@ def update_storage_json():
|
|
117
123
|
return
|
118
124
|
|
119
125
|
if storage_should_clean(old, new):
|
120
|
-
_LOGGER.info(
|
126
|
+
_LOGGER.info(
|
127
|
+
"Core config, version or integrations changed, cleaning build files..."
|
128
|
+
)
|
121
129
|
clean_build()
|
122
130
|
|
123
131
|
new.save(path)
|
@@ -5,7 +5,7 @@ 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
7
|
esphome/config_validation.py,sha256=Uck0GvA97sJ6sW25y0nqvOT2nsYIb6uZ_1sI-YBl4vc,65844
|
8
|
-
esphome/const.py,sha256=
|
8
|
+
esphome/const.py,sha256=jTr4s8HR8zKRAzdi_HCenMW9ZxWZGnYwGFy0VFEk1oU,39408
|
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
|
@@ -21,13 +21,13 @@ esphome/mqtt.py,sha256=8VA7W1sVIzfRrzYCAzfabG4TPT_ACo_Q3nMkltXZ0JA,8721
|
|
21
21
|
esphome/pins.py,sha256=wO0d-2qn0fhT6WEN0H0AmYRSH90jW154hZT7RewMGYI,10713
|
22
22
|
esphome/platformio_api.py,sha256=OEWhPZ2NQnTrZ3Vtm0IqW0E-xE7EyVhs5w3OtT2xfDY,11905
|
23
23
|
esphome/schema_extractors.py,sha256=wQMtWFp2q4ZZ97Xv3xVhFUU6Ol3qjcyDtjowG4Shllo,2108
|
24
|
-
esphome/storage_json.py,sha256=
|
24
|
+
esphome/storage_json.py,sha256=dUvXwQx7Jmgpq0qgXmIEIIgTWhXIJm3dTZnOwK08Xck,9931
|
25
25
|
esphome/types.py,sha256=xJaCRRyYuJiRo32mns9v-YeYB6w12NAT8vMSk9ZmJl8,430
|
26
26
|
esphome/util.py,sha256=sKW1kNMRle3bOGrw9Rga32ZfSDXYMbQeQeVKxFEumJs,9329
|
27
27
|
esphome/voluptuous_schema.py,sha256=rawKKTYh2kjXSGPaQnLS4qxpgoI9KwXPBQpgIxzPUzo,9316
|
28
28
|
esphome/vscode.py,sha256=612-o7AVyoh1Fmg-ZXYxKVWUc5fcoumsnunpMv7MQuo,3251
|
29
29
|
esphome/wizard.py,sha256=UyH7vRdfJIjQeN8EIgkpUsBReM0nD1mJ8mz0X-Ge9eE,15596
|
30
|
-
esphome/writer.py,sha256=
|
30
|
+
esphome/writer.py,sha256=f42mUzN6aOjpDGIzJJaKl3SJgga_iShL392LASvd_Ic,11280
|
31
31
|
esphome/yaml_util.py,sha256=Yao1o29ftfEH-hdnc5zr-74-uhh0dfMPXj-J7xRCdtY,21659
|
32
32
|
esphome/zeroconf.py,sha256=MF4_FderxU0mrtgMfnyA5SjYpGp72D36gYuRDYjXiAI,6804
|
33
33
|
esphome/components/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -173,7 +173,7 @@ esphome/components/apds9960/apds9960.h,sha256=oFrXPQrPDS16gNSVdN1n6SKuvjwc9LdvpK
|
|
173
173
|
esphome/components/apds9960/binary_sensor.py,sha256=DcfxkwZFvgmOU3C_gVSfZOpJ-EZlZXMd0gHnAUnxxCs,786
|
174
174
|
esphome/components/apds9960/sensor.py,sha256=HoGfwl7WqJkpKI7BjeM1alXPcppdWVRrWwFzrZ0ISAo,871
|
175
175
|
esphome/components/api/__init__.py,sha256=grnorxG9QG00eQwcIsiijno_o_JS6xKzOitqLS1DkXg,9895
|
176
|
-
esphome/components/api/api_connection.cpp,sha256=
|
176
|
+
esphome/components/api/api_connection.cpp,sha256=ng51imTdORrflO7BZwPuZeO3Dt88GzG3cSU2Dgr_GgA,56717
|
177
177
|
esphome/components/api/api_connection.h,sha256=5BPFRslCG0l-RwPjtt9xiwA0E7-3uT-US3_69xZiVFI,10323
|
178
178
|
esphome/components/api/api_frame_helper.cpp,sha256=-K3JLxUJ3gKpxVzJwOAwlCvlwl7C7VTgQWhpHlhzgd0,32998
|
179
179
|
esphome/components/api/api_frame_helper.h,sha256=c1ET5DyoWNtdEkxLCVmyfyA8ZASBv9iAA24I5mtmnzA,5522
|
@@ -587,7 +587,7 @@ esphome/components/daly_bms/text_sensor.py,sha256=Dx-jMTI5BOpnmuAvQFrkVhx-kCwwLi
|
|
587
587
|
esphome/components/dashboard_import/__init__.py,sha256=mVnz9bCrbAtnJssZ_2jJkzVutp6OXyajDEDIaVtUavI,5296
|
588
588
|
esphome/components/dashboard_import/dashboard_import.cpp,sha256=G5aiH2f1mS_NZ0sgIMIVHFtw2rZMnEe84TT-Cn3kbR8,350
|
589
589
|
esphome/components/dashboard_import/dashboard_import.h,sha256=rEtCkCQHpV7Wf240qqMREfQXE90s4zOdwQEYLG6xdCI,225
|
590
|
-
esphome/components/datetime/__init__.py,sha256=
|
590
|
+
esphome/components/datetime/__init__.py,sha256=UiZ1vmTtFvXZceaHnfIO2SKE66j7zNwH_7tKK4u9q7o,8557
|
591
591
|
esphome/components/datetime/date_entity.cpp,sha256=UieYXahuBlffSwaMz2n1ce_bZvrXi14dIjhmsxkRcrY,3690
|
592
592
|
esphome/components/datetime/date_entity.h,sha256=72vM34Ap7iUPoOtGMpudEQ_4489zY13UHhX3tzZopiY,2584
|
593
593
|
esphome/components/datetime/datetime_base.h,sha256=ex7shrwo3gBS5Dc2s-t1rUe41HbVt1sYJJP6FAWIcJ0,1106
|
@@ -833,7 +833,7 @@ esphome/components/esphome/ota/ota_esphome.cpp,sha256=k2mo3SWZvQXLCZIeEIb_d6IV8D
|
|
833
833
|
esphome/components/esphome/ota/ota_esphome.h,sha256=8j_EDYbc7UiALElGt6NN834RDfCxD8oLHkJbhyaXtV4,1118
|
834
834
|
esphome/components/ethernet/__init__.py,sha256=XYUuJufukjh3isx8N6JY7EUwR56GBmyudhcd7bfWTzk,8821
|
835
835
|
esphome/components/ethernet/esp_eth_phy_jl1101.c,sha256=vcT2EJ2S2i6q_vzmRyJY1pod5C05oMW3EpjFHF008L4,12572
|
836
|
-
esphome/components/ethernet/ethernet_component.cpp,sha256=
|
836
|
+
esphome/components/ethernet/ethernet_component.cpp,sha256=F4RCQOMWkYcKdjpMk2LFQU99eoIUycwtPkJzRaFGAqM,22581
|
837
837
|
esphome/components/ethernet/ethernet_component.h,sha256=qOv56iV1EiPlKy7jsaAXT20gNOPaYyHGnrorgGXzvAo,4232
|
838
838
|
esphome/components/ethernet_info/__init__.py,sha256=LoiZr_nRyJfR5w1ZWOFppOVTQRwlgmHU-boDala2fLA,33
|
839
839
|
esphome/components/ethernet_info/ethernet_info_text_sensor.cpp,sha256=nfP7xeusvbzee1KHfuipELWvF1vmuk_2e4G_NlLeJ3M,564
|
@@ -1387,36 +1387,36 @@ esphome/components/ltr_als_ps/ltr_als_ps.cpp,sha256=a5NBwe7wtJHwLgIDFoollhz1VSDI
|
|
1387
1387
|
esphome/components/ltr_als_ps/ltr_als_ps.h,sha256=TxgTmv7apRGsxHAxDow6-CpkQsdWID2KLk-lSDi7KtQ,6466
|
1388
1388
|
esphome/components/ltr_als_ps/ltr_definitions.h,sha256=yaIvnLQBIBnPuQBvHDD9Q_16Uoq1vnABwsTm8j77a3w,7255
|
1389
1389
|
esphome/components/ltr_als_ps/sensor.py,sha256=e5KnfruXbVI0s1S0bLJihTnIM5UOmiQT2dMRHxFReAM,10023
|
1390
|
-
esphome/components/lvgl/__init__.py,sha256=
|
1391
|
-
esphome/components/lvgl/automation.py,sha256=
|
1390
|
+
esphome/components/lvgl/__init__.py,sha256=vRZwy30I0mZ5wGxx3RIUEfZ-s8D0zgRnLYJt5qdZn-w,12571
|
1391
|
+
esphome/components/lvgl/automation.py,sha256=ecURec0lW8iFLICKJF3xzeZJ8fjL3OlD1h8IXiYBXgY,7441
|
1392
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
1396
|
esphome/components/lvgl/lv_validation.py,sha256=aGWc0YBZCZjYIgwYwE83vnROFiaMJf6Fo9db1Sas6Jc,8995
|
1397
|
-
esphome/components/lvgl/lvcode.py,sha256=
|
1398
|
-
esphome/components/lvgl/lvgl_esphome.cpp,sha256=
|
1399
|
-
esphome/components/lvgl/lvgl_esphome.h,sha256=
|
1397
|
+
esphome/components/lvgl/lvcode.py,sha256=4M4itIJHsscJvyt5YZGZ5y216vjsyVExXvRHmEfZhLI,10173
|
1398
|
+
esphome/components/lvgl/lvgl_esphome.cpp,sha256=U7vZq-Sct0Tr5mRCikqKM5t9F9_SQFNJtS9b9y3pD7I,14313
|
1399
|
+
esphome/components/lvgl/lvgl_esphome.h,sha256=rHU4ISZwSQNoVjKjOomhaOD-WiMBdKmjPwopR1cto8Y,9170
|
1400
1400
|
esphome/components/lvgl/lvgl_hal.h,sha256=aZqWpSmKKAB-ZfNxxgxjgASTtLpAZjXJKuoTiPB0qqU,431
|
1401
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
|
1405
1405
|
esphome/components/lvgl/types.py,sha256=rkWA2TP_x-iVnQAKFOkCQEq8Dxni66CNzUIC9Py5Vpw,5791
|
1406
|
-
esphome/components/lvgl/binary_sensor/__init__.py,sha256=
|
1407
|
-
esphome/components/lvgl/light/__init__.py,sha256=
|
1406
|
+
esphome/components/lvgl/binary_sensor/__init__.py,sha256=msfXX5zJA7CDWR2fk7UB7OKTWA978WdNhjGHm9Tz6FI,1347
|
1407
|
+
esphome/components/lvgl/light/__init__.py,sha256=_6xwTJKz5yByZxxE1Emn0KY9O-WiCPxfe_LfGgVhIhw,1126
|
1408
1408
|
esphome/components/lvgl/light/lvgl_light.h,sha256=bNvnIYH7UrvVHgWxIIlP2XAfsmEVDzz2-aIA6DbR1iU,1231
|
1409
|
-
esphome/components/lvgl/number/__init__.py,sha256=
|
1409
|
+
esphome/components/lvgl/number/__init__.py,sha256=pgZrZ0Y61oiBuqfMbPxtU652_VNTYORaKu4ZZyK62co,2059
|
1410
1410
|
esphome/components/lvgl/number/lvgl_number.h,sha256=C52MOTc8XSF3a76U6J0GjRUsYbvMftcgvhHenFKzzZk,850
|
1411
|
-
esphome/components/lvgl/select/__init__.py,sha256=
|
1411
|
+
esphome/components/lvgl/select/__init__.py,sha256=qHOWAW6DpAJIOqPC01TIJu2fbTHlDUy4DU-ix1-R-W8,1782
|
1412
1412
|
esphome/components/lvgl/select/lvgl_select.h,sha256=Qz6fo_R63rSUsO0uzLAjKYsZPZufsxV-YshHkntZ_NI,1639
|
1413
|
-
esphome/components/lvgl/sensor/__init__.py,sha256=
|
1414
|
-
esphome/components/lvgl/switch/__init__.py,sha256=
|
1413
|
+
esphome/components/lvgl/sensor/__init__.py,sha256=cdEsOnVUadMXKaW9RRrKdiR3RsZfgiVrCjCAsLOrtvg,1287
|
1414
|
+
esphome/components/lvgl/switch/__init__.py,sha256=zWEm1JR3mqWQxaAZRYHDLkKFJoawb9jstoyCudcOnTM,1788
|
1415
1415
|
esphome/components/lvgl/switch/lvgl_switch.h,sha256=w8SqlodBYRdVzlhBwkBERRP-X-IrWAmtS-01AC3zhXs,837
|
1416
|
-
esphome/components/lvgl/text/__init__.py,sha256=
|
1416
|
+
esphome/components/lvgl/text/__init__.py,sha256=I1dgyifKyoBP7tOfZ_wcNVN17r6rs6VBWwsKVRE1pHI,1577
|
1417
1417
|
esphome/components/lvgl/text/lvgl_text.h,sha256=KZrcwh3G0wADH9hg4byTpF1pk67x5cn9zHWOwv_G5YY,883
|
1418
|
-
esphome/components/lvgl/text_sensor/__init__.py,sha256=
|
1419
|
-
esphome/components/lvgl/widgets/__init__.py,sha256=
|
1418
|
+
esphome/components/lvgl/text_sensor/__init__.py,sha256=NXdR4qq4T9i293n-yDb5uZlzSNI2nOWsJ3DlKtMjqrA,1247
|
1419
|
+
esphome/components/lvgl/widgets/__init__.py,sha256=IluN1JMViHSL33fv5e3v94nQXaeM9wDiplg3zwyJvNM,13313
|
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
|
@@ -1427,10 +1427,10 @@ esphome/components/lvgl/widgets/img.py,sha256=g0YosuPAspZ9sCWeXZ0zwOL2Wjy8BXaW1W
|
|
1427
1427
|
esphome/components/lvgl/widgets/keyboard.py,sha256=1WBm_nfeFpWvzYts68FN_arqovOwMFs47TQAPCKour8,1543
|
1428
1428
|
esphome/components/lvgl/widgets/label.py,sha256=5xl1a6apdJgGKmkpL8m7RDASjaeKzjKTllhY26Gbfag,1139
|
1429
1429
|
esphome/components/lvgl/widgets/led.py,sha256=qoe_kvZpoRkwbxz25Z66KQ__KLC2tfhAukChp1jdlDc,888
|
1430
|
-
esphome/components/lvgl/widgets/line.py,sha256=
|
1430
|
+
esphome/components/lvgl/widgets/line.py,sha256=bIlKIEnVYPENG5cqupakoqCMj-Oddgun-X5nmTpOMig,1392
|
1431
1431
|
esphome/components/lvgl/widgets/lv_bar.py,sha256=DbiUvhKdh9bsRMTU-rJYYA5KCjBUxDsW-7tvx8-CIRM,1670
|
1432
1432
|
esphome/components/lvgl/widgets/meter.py,sha256=cZx1FkosNEFL7jAuIWlT3I_YR8k4BgI8xji5pmJa7G0,10710
|
1433
|
-
esphome/components/lvgl/widgets/msgbox.py,sha256=
|
1433
|
+
esphome/components/lvgl/widgets/msgbox.py,sha256=20VWlK6AQ9gCQe6WXSKLSQ0bHjyrhsJQ7QCbAsOcZ4c,4635
|
1434
1434
|
esphome/components/lvgl/widgets/obj.py,sha256=rtqGHq4vcAr6ABNTzjGWnSdhEm8St0ScQ-qqEgImqdU,765
|
1435
1435
|
esphome/components/lvgl/widgets/page.py,sha256=Q3tdC9d3r9c-afiTzrvf_83kZ0DuoFAxnuUoM2GK8gU,3566
|
1436
1436
|
esphome/components/lvgl/widgets/roller.py,sha256=bBlKJJTMBlxJwdYK326QsPK2MB8uOW-vQPpeeZxOH_Y,2073
|
@@ -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.2.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
|
3229
|
+
esphome-2024.8.2.dist-info/METADATA,sha256=R2-NBp8QHgbKNboG2QesHoPhLVaeK_k5UyWi3DH-0CQ,3263
|
3230
|
+
esphome-2024.8.2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
3231
|
+
esphome-2024.8.2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
|
3232
|
+
esphome-2024.8.2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
|
3233
|
+
esphome-2024.8.2.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|