esphome 2024.9.1__py3-none-any.whl → 2024.10.0__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/aic3204/__init__.py +0 -0
- esphome/components/aic3204/aic3204.cpp +173 -0
- esphome/components/aic3204/aic3204.h +88 -0
- esphome/components/aic3204/audio_dac.py +52 -0
- esphome/components/aic3204/automation.h +23 -0
- esphome/components/alarm_control_panel/__init__.py +3 -4
- esphome/components/animation/__init__.py +16 -12
- esphome/components/api/api_connection.cpp +2 -0
- esphome/components/api/api_connection.h +3 -1
- esphome/components/api/api_frame_helper.cpp +2 -1
- esphome/components/api/api_frame_helper.h +2 -1
- esphome/components/api/api_server.cpp +2 -0
- esphome/components/api/api_server.h +3 -1
- esphome/components/api/custom_api_device.h +3 -2
- esphome/components/api/homeassistant_service.h +4 -3
- esphome/components/api/list_entities.cpp +2 -0
- esphome/components/api/list_entities.h +3 -2
- esphome/components/api/subscribe_state.cpp +2 -0
- esphome/components/api/subscribe_state.h +3 -2
- esphome/components/audio_dac/__init__.py +57 -0
- esphome/components/audio_dac/audio_dac.h +23 -0
- esphome/components/audio_dac/automation.h +43 -0
- esphome/components/bang_bang/bang_bang_climate.cpp +5 -2
- esphome/components/bedjet/bedjet_codec.cpp +4 -2
- esphome/components/binary_sensor/__init__.py +3 -4
- esphome/components/bl0906/sensor.py +3 -2
- esphome/components/button/__init__.py +3 -4
- esphome/components/ch422g/__init__.py +26 -17
- esphome/components/ch422g/ch422g.cpp +66 -49
- esphome/components/ch422g/ch422g.h +17 -19
- esphome/components/climate/__init__.py +3 -4
- esphome/components/cover/__init__.py +4 -5
- esphome/components/cse7766/cse7766.cpp +12 -1
- esphome/components/cse7766/cse7766.h +4 -0
- esphome/components/cse7766/sensor.py +13 -1
- esphome/components/cst816/touchscreen/__init__.py +7 -4
- esphome/components/cst816/touchscreen/cst816_touchscreen.cpp +20 -19
- esphome/components/cst816/touchscreen/cst816_touchscreen.h +2 -0
- esphome/components/datetime/__init__.py +21 -14
- esphome/components/datetime/datetime_base.h +8 -1
- esphome/components/datetime/datetime_entity.cpp +2 -0
- esphome/components/datetime/datetime_entity.h +2 -0
- esphome/components/datetime/time_entity.cpp +2 -0
- esphome/components/datetime/time_entity.h +2 -0
- esphome/components/esp32/__init__.py +20 -4
- esphome/components/esp32_improv/__init__.py +82 -1
- esphome/components/esp32_improv/automation.h +72 -0
- esphome/components/esp32_improv/esp32_improv_component.cpp +13 -5
- esphome/components/esp32_improv/esp32_improv_component.h +15 -0
- esphome/components/ethernet/__init__.py +5 -0
- esphome/components/ethernet/ethernet_component.cpp +13 -0
- esphome/components/ethernet/ethernet_component.h +1 -0
- esphome/components/event/__init__.py +20 -12
- esphome/components/fan/__init__.py +3 -4
- esphome/components/gp2y1010au0f/__init__.py +0 -0
- esphome/components/gp2y1010au0f/gp2y1010au0f.cpp +67 -0
- esphome/components/gp2y1010au0f/gp2y1010au0f.h +52 -0
- esphome/components/gp2y1010au0f/sensor.py +61 -0
- esphome/components/gpio_expander/__init__.py +0 -0
- esphome/components/gpio_expander/cached_gpio.h +38 -0
- esphome/components/grove_gas_mc_v2/__init__.py +0 -0
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.cpp +88 -0
- esphome/components/grove_gas_mc_v2/grove_gas_mc_v2.h +39 -0
- esphome/components/grove_gas_mc_v2/sensor.py +77 -0
- esphome/components/haier/climate.py +4 -3
- esphome/components/haier/haier_base.cpp +63 -8
- esphome/components/haier/haier_base.h +29 -3
- esphome/components/haier/hon_climate.cpp +122 -65
- esphome/components/haier/hon_climate.h +18 -2
- esphome/components/haier/smartair2_climate.cpp +21 -21
- esphome/components/haier/switch/__init__.py +91 -0
- esphome/components/haier/switch/beeper.cpp +14 -0
- esphome/components/haier/switch/beeper.h +18 -0
- esphome/components/haier/switch/display.cpp +14 -0
- esphome/components/haier/switch/display.h +18 -0
- esphome/components/haier/switch/health_mode.cpp +14 -0
- esphome/components/haier/switch/health_mode.h +18 -0
- esphome/components/haier/switch/quiet_mode.cpp +14 -0
- esphome/components/haier/switch/quiet_mode.h +18 -0
- esphome/components/hmac_md5/hmac_md5.cpp +2 -0
- esphome/components/hmac_md5/hmac_md5.h +2 -1
- esphome/components/i2s_audio/speaker/__init__.py +19 -0
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.cpp +1 -1
- esphome/components/i2s_audio/speaker/i2s_audio_speaker.h +2 -0
- esphome/components/ili9xxx/ili9xxx_display.h +1 -0
- esphome/components/image/__init__.py +12 -12
- esphome/components/image/image.cpp +44 -0
- esphome/components/image/image.h +17 -2
- esphome/components/inkplate6/display.py +2 -0
- esphome/components/inkplate6/inkplate.h +30 -2
- esphome/components/light/__init__.py +3 -4
- esphome/components/lock/__init__.py +3 -4
- esphome/components/lvgl/__init__.py +16 -5
- esphome/components/lvgl/defines.py +1 -0
- esphome/components/lvgl/hello_world.py +64 -0
- esphome/components/lvgl/lv_validation.py +159 -3
- esphome/components/lvgl/lvgl_esphome.cpp +0 -43
- esphome/components/lvgl/lvgl_esphome.h +0 -4
- esphome/components/lvgl/styles.py +3 -2
- esphome/components/lvgl/text/__init__.py +3 -3
- esphome/components/lvgl/widgets/__init__.py +2 -0
- esphome/components/lvgl/widgets/animimg.py +3 -4
- esphome/components/lvgl/widgets/dropdown.py +5 -1
- esphome/components/lvgl/widgets/meter.py +16 -11
- esphome/components/md5/__init__.py +6 -0
- esphome/components/md5/md5.cpp +2 -0
- esphome/components/md5/md5.h +2 -0
- esphome/components/micro_wake_word/__init__.py +7 -0
- esphome/components/mics_4514/sensor.py +11 -26
- esphome/components/modbus_controller/__init__.py +7 -5
- esphome/components/modbus_controller/binary_sensor/__init__.py +6 -6
- esphome/components/modbus_controller/number/__init__.py +5 -6
- esphome/components/modbus_controller/output/__init__.py +10 -14
- esphome/components/modbus_controller/select/__init__.py +1 -1
- esphome/components/modbus_controller/sensor/__init__.py +7 -7
- esphome/components/modbus_controller/switch/__init__.py +6 -7
- esphome/components/modbus_controller/text_sensor/__init__.py +8 -9
- esphome/components/mqtt/__init__.py +3 -0
- esphome/components/mqtt/mqtt_client.cpp +2 -0
- esphome/components/mqtt/mqtt_client.h +2 -0
- esphome/components/nau7802/__init__.py +0 -0
- esphome/components/nau7802/nau7802.cpp +323 -0
- esphome/components/nau7802/nau7802.h +121 -0
- esphome/components/nau7802/sensor.py +134 -0
- esphome/components/nextion/base_component.py +1 -0
- esphome/components/nextion/display.py +4 -0
- esphome/components/nextion/nextion.cpp +19 -4
- esphome/components/nextion/nextion.h +16 -0
- esphome/components/npi19/__init__.py +0 -0
- esphome/components/npi19/npi19.cpp +111 -0
- esphome/components/npi19/npi19.h +30 -0
- esphome/components/npi19/sensor.py +52 -0
- esphome/components/number/__init__.py +3 -5
- esphome/components/online_image/__init__.py +1 -1
- esphome/components/online_image/online_image.h +1 -2
- esphome/components/opentherm/__init__.py +57 -0
- esphome/components/opentherm/hub.cpp +277 -0
- esphome/components/opentherm/hub.h +110 -0
- esphome/components/opentherm/opentherm.cpp +568 -0
- esphome/components/opentherm/opentherm.h +347 -0
- esphome/components/pulse_counter/pulse_counter_sensor.cpp +8 -1
- esphome/components/pulse_counter/pulse_counter_sensor.h +1 -0
- esphome/components/radon_eye_ble/radon_eye_listener.cpp +10 -3
- esphome/components/remote_transmitter/__init__.py +18 -2
- esphome/components/remote_transmitter/remote_transmitter.h +6 -0
- esphome/components/remote_transmitter/remote_transmitter_esp32.cpp +2 -0
- esphome/components/remote_transmitter/remote_transmitter_esp8266.cpp +2 -0
- esphome/components/remote_transmitter/remote_transmitter_libretiny.cpp +2 -0
- esphome/components/rp2040/__init__.py +13 -14
- esphome/components/select/__init__.py +3 -4
- esphome/components/sensor/__init__.py +3 -4
- esphome/components/shelly_dimmer/shelly_dimmer.cpp +32 -32
- esphome/components/shelly_dimmer/shelly_dimmer.h +2 -0
- esphome/components/st7701s/st7701s.cpp +21 -8
- esphome/components/st7701s/st7701s.h +2 -0
- esphome/components/switch/__init__.py +3 -4
- esphome/components/tca9555/__init__.py +72 -0
- esphome/components/tca9555/tca9555.cpp +140 -0
- esphome/components/tca9555/tca9555.h +64 -0
- esphome/components/tcs34725/tcs34725.cpp +62 -64
- esphome/components/tem3200/__init__.py +0 -0
- esphome/components/tem3200/sensor.py +55 -0
- esphome/components/tem3200/tem3200.cpp +151 -0
- esphome/components/tem3200/tem3200.h +30 -0
- esphome/components/template/binary_sensor/__init__.py +19 -6
- esphome/components/text/__init__.py +3 -4
- esphome/components/text_sensor/__init__.py +3 -4
- esphome/components/thermostat/climate.py +11 -9
- esphome/components/thermostat/thermostat_climate.cpp +21 -15
- esphome/components/tm1638/binary_sensor/__init__.py +3 -2
- esphome/components/tm1638/display.py +5 -5
- esphome/components/tm1638/output/__init__.py +3 -2
- esphome/components/tm1638/switch/__init__.py +3 -2
- esphome/components/touchscreen/touchscreen.cpp +2 -2
- esphome/components/update/__init__.py +3 -4
- esphome/components/valve/__init__.py +3 -4
- esphome/components/web_server/__init__.py +78 -22
- esphome/components/web_server/server_index_v3.h +3989 -3979
- esphome/components/web_server/web_server.cpp +219 -34
- esphome/components/web_server/web_server.h +10 -1
- esphome/components/wifi/wifi_component_esp_idf.cpp +4 -5
- esphome/config_validation.py +1 -0
- esphome/const.py +12 -2
- esphome/core/defines.h +4 -2
- esphome/core/helpers.cpp +46 -10
- esphome/core/helpers.h +8 -0
- esphome/core/ring_buffer.cpp +12 -2
- esphome/core/ring_buffer.h +3 -0
- esphome/voluptuous_schema.py +3 -1
- esphome/wizard.py +0 -3
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/METADATA +5 -3
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/RECORD +196 -147
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/LICENSE +0 -0
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/WHEEL +0 -0
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/entry_points.txt +0 -0
- {esphome-2024.9.1.dist-info → esphome-2024.10.0.dist-info}/top_level.txt +0 -0
@@ -17,13 +17,14 @@ from esphome.const import (
|
|
17
17
|
CONF_JS_URL,
|
18
18
|
CONF_LOCAL,
|
19
19
|
CONF_LOG,
|
20
|
+
CONF_NAME,
|
20
21
|
CONF_OTA,
|
21
22
|
CONF_PASSWORD,
|
22
23
|
CONF_PORT,
|
23
24
|
CONF_USERNAME,
|
24
25
|
CONF_VERSION,
|
26
|
+
CONF_WEB_SERVER,
|
25
27
|
CONF_WEB_SERVER_ID,
|
26
|
-
CONF_WEB_SERVER_SORTING_WEIGHT,
|
27
28
|
PLATFORM_BK72XX,
|
28
29
|
PLATFORM_ESP32,
|
29
30
|
PLATFORM_ESP8266,
|
@@ -34,9 +35,15 @@ import esphome.final_validate as fv
|
|
34
35
|
|
35
36
|
AUTO_LOAD = ["json", "web_server_base"]
|
36
37
|
|
38
|
+
CONF_SORTING_GROUP_ID = "sorting_group_id"
|
39
|
+
CONF_SORTING_GROUPS = "sorting_groups"
|
40
|
+
CONF_SORTING_WEIGHT = "sorting_weight"
|
41
|
+
|
37
42
|
web_server_ns = cg.esphome_ns.namespace("web_server")
|
38
43
|
WebServer = web_server_ns.class_("WebServer", cg.Component, cg.Controller)
|
39
44
|
|
45
|
+
sorting_groups = {}
|
46
|
+
|
40
47
|
|
41
48
|
def default_url(config):
|
42
49
|
config = config.copy()
|
@@ -70,42 +77,74 @@ def validate_ota(config):
|
|
70
77
|
return config
|
71
78
|
|
72
79
|
|
73
|
-
def
|
74
|
-
|
80
|
+
def validate_sorting_groups(config):
|
81
|
+
if CONF_SORTING_GROUPS in config and config[CONF_VERSION] != 3:
|
82
|
+
raise cv.Invalid(
|
83
|
+
f"'{CONF_SORTING_GROUPS}' is only supported in 'web_server' version 3"
|
84
|
+
)
|
85
|
+
return config
|
86
|
+
|
87
|
+
|
88
|
+
def _validate_no_sorting_component(
|
89
|
+
sorting_component: str,
|
90
|
+
webserver_version: int,
|
91
|
+
config: dict,
|
92
|
+
path: list[str] | None = None,
|
75
93
|
) -> None:
|
76
94
|
if path is None:
|
77
95
|
path = []
|
78
|
-
if
|
96
|
+
if CONF_WEB_SERVER in config and sorting_component in config[CONF_WEB_SERVER]:
|
79
97
|
raise cv.FinalExternalInvalid(
|
80
|
-
f"
|
81
|
-
path=path + [
|
98
|
+
f"{sorting_component} on entities is not supported in web_server version {webserver_version}",
|
99
|
+
path=path + [sorting_component],
|
82
100
|
)
|
83
101
|
for p, value in config.items():
|
84
102
|
if isinstance(value, dict):
|
85
|
-
|
103
|
+
_validate_no_sorting_component(
|
104
|
+
sorting_component, webserver_version, value, path + [p]
|
105
|
+
)
|
86
106
|
elif isinstance(value, list):
|
87
107
|
for i, item in enumerate(value):
|
88
108
|
if isinstance(item, dict):
|
89
|
-
|
109
|
+
_validate_no_sorting_component(
|
110
|
+
sorting_component, webserver_version, item, path + [p, i]
|
111
|
+
)
|
90
112
|
|
91
113
|
|
92
|
-
def
|
114
|
+
def _final_validate_sorting(config):
|
93
115
|
if (webserver_version := config.get(CONF_VERSION)) != 3:
|
94
|
-
|
95
|
-
|
116
|
+
_validate_no_sorting_component(
|
117
|
+
CONF_SORTING_WEIGHT, webserver_version, fv.full_config.get()
|
118
|
+
)
|
119
|
+
_validate_no_sorting_component(
|
120
|
+
CONF_SORTING_GROUP_ID, webserver_version, fv.full_config.get()
|
121
|
+
)
|
96
122
|
return config
|
97
123
|
|
98
124
|
|
99
|
-
FINAL_VALIDATE_SCHEMA =
|
125
|
+
FINAL_VALIDATE_SCHEMA = _final_validate_sorting
|
100
126
|
|
127
|
+
sorting_group = {
|
128
|
+
cv.Required(CONF_ID): cv.declare_id(cg.int_),
|
129
|
+
cv.Required(CONF_NAME): cv.string,
|
130
|
+
cv.Optional(CONF_SORTING_WEIGHT): cv.float_,
|
131
|
+
}
|
101
132
|
|
102
133
|
WEBSERVER_SORTING_SCHEMA = cv.Schema(
|
103
134
|
{
|
104
|
-
cv.
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
135
|
+
cv.Optional(CONF_WEB_SERVER): cv.Schema(
|
136
|
+
{
|
137
|
+
cv.OnlyWith(CONF_WEB_SERVER_ID, "web_server"): cv.use_id(WebServer),
|
138
|
+
cv.Optional(CONF_SORTING_WEIGHT): cv.All(
|
139
|
+
cv.requires_component("web_server"),
|
140
|
+
cv.float_,
|
141
|
+
),
|
142
|
+
cv.Optional(CONF_SORTING_GROUP_ID): cv.All(
|
143
|
+
cv.requires_component("web_server"),
|
144
|
+
cv.use_id(cg.int_),
|
145
|
+
),
|
146
|
+
}
|
147
|
+
)
|
109
148
|
}
|
110
149
|
)
|
111
150
|
|
@@ -145,24 +184,38 @@ CONFIG_SCHEMA = cv.All(
|
|
145
184
|
): cv.boolean,
|
146
185
|
cv.Optional(CONF_LOG, default=True): cv.boolean,
|
147
186
|
cv.Optional(CONF_LOCAL): cv.boolean,
|
187
|
+
cv.Optional(CONF_SORTING_GROUPS): cv.ensure_list(sorting_group),
|
148
188
|
}
|
149
189
|
).extend(cv.COMPONENT_SCHEMA),
|
150
190
|
cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_BK72XX, PLATFORM_RTL87XX]),
|
151
191
|
default_url,
|
152
192
|
validate_local,
|
153
193
|
validate_ota,
|
194
|
+
validate_sorting_groups,
|
154
195
|
)
|
155
196
|
|
156
197
|
|
157
|
-
def
|
158
|
-
|
159
|
-
|
160
|
-
|
198
|
+
def add_sorting_groups(web_server_var, config):
|
199
|
+
for group in config:
|
200
|
+
sorting_groups[group[CONF_ID]] = group[CONF_NAME]
|
201
|
+
group_sorting_weight = group.get(CONF_SORTING_WEIGHT, 50)
|
202
|
+
cg.add(
|
203
|
+
web_server_var.add_sorting_group(
|
204
|
+
hash(group[CONF_ID]), group[CONF_NAME], group_sorting_weight
|
205
|
+
)
|
206
|
+
)
|
207
|
+
|
208
|
+
|
209
|
+
async def add_entity_config(entity, config):
|
210
|
+
web_server = await cg.get_variable(config[CONF_WEB_SERVER_ID])
|
211
|
+
sorting_weight = config.get(CONF_SORTING_WEIGHT, 50)
|
212
|
+
sorting_group_hash = hash(config.get(CONF_SORTING_GROUP_ID))
|
161
213
|
|
162
214
|
cg.add(
|
163
|
-
web_server.
|
215
|
+
web_server.add_entity_config(
|
164
216
|
entity,
|
165
217
|
sorting_weight,
|
218
|
+
sorting_group_hash,
|
166
219
|
)
|
167
220
|
)
|
168
221
|
|
@@ -241,3 +294,6 @@ async def to_code(config):
|
|
241
294
|
cg.add(var.set_include_internal(config[CONF_INCLUDE_INTERNAL]))
|
242
295
|
if CONF_LOCAL in config and config[CONF_LOCAL]:
|
243
296
|
cg.add_define("USE_WEBSERVER_LOCAL")
|
297
|
+
|
298
|
+
if (sorting_group_config := config.get(CONF_SORTING_GROUPS)) is not None:
|
299
|
+
add_sorting_groups(var, sorting_group_config)
|