esphome 2024.8.0b1__py3-none-any.whl → 2024.8.0b2__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.
@@ -155,7 +155,7 @@ async def to_code(config):
155
155
  decoded = base64.b64decode(encryption_config[CONF_KEY])
156
156
  cg.add(var.set_noise_psk(list(decoded)))
157
157
  cg.add_define("USE_API_NOISE")
158
- cg.add_library("esphome/noise-c", "0.1.4")
158
+ cg.add_library("esphome/noise-c", "0.1.6")
159
159
  else:
160
160
  cg.add_define("USE_API_PLAINTEXT")
161
161
 
@@ -1,15 +1,14 @@
1
+ import esphome.codegen as cg
2
+ import esphome.config_validation as cv
1
3
  from esphome.const import (
4
+ CONF_MAC_ADDRESS,
2
5
  KEY_CORE,
3
6
  KEY_FRAMEWORK_VERSION,
4
7
  KEY_TARGET_FRAMEWORK,
5
8
  KEY_TARGET_PLATFORM,
6
9
  PLATFORM_HOST,
7
- CONF_MAC_ADDRESS,
8
10
  )
9
11
  from esphome.core import CORE
10
- from esphome.helpers import IS_MACOS
11
- import esphome.config_validation as cv
12
- import esphome.codegen as cg
13
12
 
14
13
  from .const import KEY_HOST
15
14
 
@@ -42,8 +41,5 @@ async def to_code(config):
42
41
  cg.add_build_flag("-DUSE_HOST")
43
42
  cg.add_define("USE_ESPHOME_HOST_MAC_ADDRESS", config[CONF_MAC_ADDRESS].parts)
44
43
  cg.add_build_flag("-std=c++17")
45
- cg.add_build_flag("-lsodium")
46
- if IS_MACOS:
47
- cg.add_build_flag("-L/opt/homebrew/lib")
48
44
  cg.add_define("ESPHOME_BOARD", "host")
49
45
  cg.add_platformio_option("platform", "platformio/native")
@@ -41,29 +41,29 @@ class ESPColorCorrection {
41
41
  if (this->max_brightness_.red == 0 || this->local_brightness_ == 0)
42
42
  return 0;
43
43
  uint16_t uncorrected = this->gamma_reverse_table_[red] * 255UL;
44
- uint8_t res = ((uncorrected / this->max_brightness_.red) * 255UL) / this->local_brightness_;
45
- return res;
44
+ uint16_t res = ((uncorrected / this->max_brightness_.red) * 255UL) / this->local_brightness_;
45
+ return (uint8_t) std::min(res, uint16_t(255));
46
46
  }
47
47
  inline uint8_t color_uncorrect_green(uint8_t green) const ESPHOME_ALWAYS_INLINE {
48
48
  if (this->max_brightness_.green == 0 || this->local_brightness_ == 0)
49
49
  return 0;
50
50
  uint16_t uncorrected = this->gamma_reverse_table_[green] * 255UL;
51
- uint8_t res = ((uncorrected / this->max_brightness_.green) * 255UL) / this->local_brightness_;
52
- return res;
51
+ uint16_t res = ((uncorrected / this->max_brightness_.green) * 255UL) / this->local_brightness_;
52
+ return (uint8_t) std::min(res, uint16_t(255));
53
53
  }
54
54
  inline uint8_t color_uncorrect_blue(uint8_t blue) const ESPHOME_ALWAYS_INLINE {
55
55
  if (this->max_brightness_.blue == 0 || this->local_brightness_ == 0)
56
56
  return 0;
57
57
  uint16_t uncorrected = this->gamma_reverse_table_[blue] * 255UL;
58
- uint8_t res = ((uncorrected / this->max_brightness_.blue) * 255UL) / this->local_brightness_;
59
- return res;
58
+ uint16_t res = ((uncorrected / this->max_brightness_.blue) * 255UL) / this->local_brightness_;
59
+ return (uint8_t) std::min(res, uint16_t(255));
60
60
  }
61
61
  inline uint8_t color_uncorrect_white(uint8_t white) const ESPHOME_ALWAYS_INLINE {
62
62
  if (this->max_brightness_.white == 0 || this->local_brightness_ == 0)
63
63
  return 0;
64
64
  uint16_t uncorrected = this->gamma_reverse_table_[white] * 255UL;
65
- uint8_t res = ((uncorrected / this->max_brightness_.white) * 255UL) / this->local_brightness_;
66
- return res;
65
+ uint16_t res = ((uncorrected / this->max_brightness_.white) * 255UL) / this->local_brightness_;
66
+ return (uint8_t) std::min(res, uint16_t(255));
67
67
  }
68
68
 
69
69
  protected:
@@ -24,7 +24,11 @@ CONFIG_SCHEMA = cv.Schema(
24
24
  esp32=False,
25
25
  rp2040=False,
26
26
  ): cv.All(
27
- cv.boolean, cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_RP2040])
27
+ cv.boolean,
28
+ cv.Any(
29
+ cv.only_on([PLATFORM_ESP32, PLATFORM_ESP8266, PLATFORM_RP2040]),
30
+ cv.boolean_false,
31
+ ),
28
32
  ),
29
33
  cv.Optional(CONF_MIN_IPV6_ADDR_COUNT, default=0): cv.positive_int,
30
34
  }
@@ -201,9 +201,6 @@ std::string ProntoProtocol::compensate_and_dump_sequence_(const RawTimings &data
201
201
  out += dump_duration_(t_duration, timebase);
202
202
  }
203
203
 
204
- // append minimum gap
205
- out += dump_duration_(PRONTO_DEFAULT_GAP, timebase, true);
206
-
207
204
  return out;
208
205
  }
209
206
 
@@ -29,6 +29,13 @@ inline double deg2rad(double degrees) {
29
29
  void Rtttl::dump_config() { ESP_LOGCONFIG(TAG, "Rtttl"); }
30
30
 
31
31
  void Rtttl::play(std::string rtttl) {
32
+ if (this->state_ != State::STATE_STOPPED && this->state_ != State::STATE_STOPPING) {
33
+ int pos = this->rtttl_.find(':');
34
+ auto name = this->rtttl_.substr(0, pos);
35
+ ESP_LOGW(TAG, "RTTL Component is already playing: %s", name.c_str());
36
+ return;
37
+ }
38
+
32
39
  this->rtttl_ = std::move(rtttl);
33
40
 
34
41
  this->default_duration_ = 4;
@@ -98,13 +105,20 @@ void Rtttl::play(std::string rtttl) {
98
105
  this->note_duration_ = 1;
99
106
 
100
107
  #ifdef USE_SPEAKER
101
- this->samples_sent_ = 0;
102
- this->samples_count_ = 0;
108
+ if (this->speaker_ != nullptr) {
109
+ this->set_state_(State::STATE_INIT);
110
+ this->samples_sent_ = 0;
111
+ this->samples_count_ = 0;
112
+ }
113
+ #endif
114
+ #ifdef USE_OUTPUT
115
+ if (this->output_ != nullptr) {
116
+ this->set_state_(State::STATE_RUNNING);
117
+ }
103
118
  #endif
104
119
  }
105
120
 
106
121
  void Rtttl::stop() {
107
- this->note_duration_ = 0;
108
122
  #ifdef USE_OUTPUT
109
123
  if (this->output_ != nullptr) {
110
124
  this->output_->set_level(0.0);
@@ -117,16 +131,35 @@ void Rtttl::stop() {
117
131
  }
118
132
  }
119
133
  #endif
134
+ this->note_duration_ = 0;
135
+ this->set_state_(STATE_STOPPING);
120
136
  }
121
137
 
122
138
  void Rtttl::loop() {
123
- if (this->note_duration_ == 0)
139
+ if (this->note_duration_ == 0 || this->state_ == State::STATE_STOPPED)
124
140
  return;
125
141
 
126
142
  #ifdef USE_SPEAKER
127
143
  if (this->speaker_ != nullptr) {
144
+ if (this->state_ == State::STATE_STOPPING) {
145
+ if (this->speaker_->is_stopped()) {
146
+ this->set_state_(State::STATE_STOPPED);
147
+ }
148
+ } else if (this->state_ == State::STATE_INIT) {
149
+ if (this->speaker_->is_stopped()) {
150
+ this->speaker_->start();
151
+ this->set_state_(State::STATE_STARTING);
152
+ }
153
+ } else if (this->state_ == State::STATE_STARTING) {
154
+ if (this->speaker_->is_running()) {
155
+ this->set_state_(State::STATE_RUNNING);
156
+ }
157
+ }
158
+ if (!this->speaker_->is_running()) {
159
+ return;
160
+ }
128
161
  if (this->samples_sent_ != this->samples_count_) {
129
- SpeakerSample sample[SAMPLE_BUFFER_SIZE + 1];
162
+ SpeakerSample sample[SAMPLE_BUFFER_SIZE + 2];
130
163
  int x = 0;
131
164
  double rem = 0.0;
132
165
 
@@ -136,7 +169,7 @@ void Rtttl::loop() {
136
169
  if (this->samples_per_wave_ != 0 && this->samples_sent_ >= this->samples_gap_) { // Play note//
137
170
  rem = ((this->samples_sent_ << 10) % this->samples_per_wave_) * (360.0 / this->samples_per_wave_);
138
171
 
139
- int16_t val = (49152 * this->gain_) * sin(deg2rad(rem));
172
+ int16_t val = (127 * this->gain_) * sin(deg2rad(rem)); // 16bit = 49152
140
173
 
141
174
  sample[x].left = val;
142
175
  sample[x].right = val;
@@ -153,9 +186,9 @@ void Rtttl::loop() {
153
186
  x++;
154
187
  }
155
188
  if (x > 0) {
156
- int send = this->speaker_->play((uint8_t *) (&sample), x * 4);
189
+ int send = this->speaker_->play((uint8_t *) (&sample), x * 2);
157
190
  if (send != x * 4) {
158
- this->samples_sent_ -= (x - (send / 4));
191
+ this->samples_sent_ -= (x - (send / 2));
159
192
  }
160
193
  return;
161
194
  }
@@ -167,14 +200,7 @@ void Rtttl::loop() {
167
200
  return;
168
201
  #endif
169
202
  if (!this->rtttl_[position_]) {
170
- this->note_duration_ = 0;
171
- #ifdef USE_OUTPUT
172
- if (this->output_ != nullptr) {
173
- this->output_->set_level(0.0);
174
- }
175
- #endif
176
- ESP_LOGD(TAG, "Playback finished");
177
- this->on_finished_playback_callback_.call();
203
+ this->finish_();
178
204
  return;
179
205
  }
180
206
 
@@ -213,6 +239,7 @@ void Rtttl::loop() {
213
239
  case 'a':
214
240
  note = 10;
215
241
  break;
242
+ case 'h':
216
243
  case 'b':
217
244
  note = 12;
218
245
  break;
@@ -238,14 +265,21 @@ void Rtttl::loop() {
238
265
  uint8_t scale = get_integer_();
239
266
  if (scale == 0)
240
267
  scale = this->default_octave_;
268
+
269
+ if (scale < 4 || scale > 7) {
270
+ ESP_LOGE(TAG, "Octave out of valid range. Should be between 4 and 7. (Octave: %d)", scale);
271
+ this->finish_();
272
+ return;
273
+ }
241
274
  bool need_note_gap = false;
242
275
 
243
276
  // Now play the note
244
277
  if (note) {
245
278
  auto note_index = (scale - 4) * 12 + note;
246
279
  if (note_index < 0 || note_index >= (int) sizeof(NOTES)) {
247
- ESP_LOGE(TAG, "Note out of valid range");
248
- this->note_duration_ = 0;
280
+ ESP_LOGE(TAG, "Note out of valid range (note: %d, scale: %d, index: %d, max: %d)", note, scale, note_index,
281
+ (int) sizeof(NOTES));
282
+ this->finish_();
249
283
  return;
250
284
  }
251
285
  auto freq = NOTES[note_index];
@@ -285,14 +319,17 @@ void Rtttl::loop() {
285
319
  this->samples_gap_ = (this->sample_rate_ * DOUBLE_NOTE_GAP_MS) / 1600; //(ms);
286
320
  }
287
321
  if (this->output_freq_ != 0) {
322
+ // make sure there is enough samples to add a full last sinus.
323
+
324
+ uint16_t samples_wish = this->samples_count_;
288
325
  this->samples_per_wave_ = (this->sample_rate_ << 10) / this->output_freq_;
289
326
 
290
- // make sure there is enough samples to add a full last sinus.
291
327
  uint16_t division = ((this->samples_count_ << 10) / this->samples_per_wave_) + 1;
292
- uint16_t x = this->samples_count_;
328
+
293
329
  this->samples_count_ = (division * this->samples_per_wave_);
294
- ESP_LOGD(TAG, "play time old: %d div: %d new: %d %d", x, division, this->samples_count_, this->samples_per_wave_);
295
330
  this->samples_count_ = this->samples_count_ >> 10;
331
+ ESP_LOGVV(TAG, "- Calc play time: wish: %d gets: %d (div: %d spw: %d)", samples_wish, this->samples_count_,
332
+ division, this->samples_per_wave_);
296
333
  }
297
334
  // Convert from frequency in Hz to high and low samples in fixed point
298
335
  }
@@ -301,5 +338,53 @@ void Rtttl::loop() {
301
338
  this->last_note_ = millis();
302
339
  }
303
340
 
341
+ void Rtttl::finish_() {
342
+ #ifdef USE_OUTPUT
343
+ if (this->output_ != nullptr) {
344
+ this->output_->set_level(0.0);
345
+ }
346
+ #endif
347
+ #ifdef USE_SPEAKER
348
+ if (this->speaker_ != nullptr) {
349
+ SpeakerSample sample[2];
350
+ sample[0].left = 0;
351
+ sample[0].right = 0;
352
+ sample[1].left = 0;
353
+ sample[1].right = 0;
354
+ this->speaker_->play((uint8_t *) (&sample), 8);
355
+
356
+ this->speaker_->finish();
357
+ }
358
+ #endif
359
+ this->set_state_(State::STATE_STOPPING);
360
+ this->note_duration_ = 0;
361
+ this->on_finished_playback_callback_.call();
362
+ ESP_LOGD(TAG, "Playback finished");
363
+ }
364
+
365
+ static const LogString *state_to_string(State state) {
366
+ switch (state) {
367
+ case STATE_STOPPED:
368
+ return LOG_STR("STATE_STOPPED");
369
+ case STATE_STARTING:
370
+ return LOG_STR("STATE_STARTING");
371
+ case STATE_RUNNING:
372
+ return LOG_STR("STATE_RUNNING");
373
+ case STATE_STOPPING:
374
+ return LOG_STR("STATE_STOPPING");
375
+ case STATE_INIT:
376
+ return LOG_STR("STATE_INIT");
377
+ default:
378
+ return LOG_STR("UNKNOWN");
379
+ }
380
+ };
381
+
382
+ void Rtttl::set_state_(State state) {
383
+ State old_state = this->state_;
384
+ this->state_ = state;
385
+ ESP_LOGD(TAG, "State changed from %s to %s", LOG_STR_ARG(state_to_string(old_state)),
386
+ LOG_STR_ARG(state_to_string(state)));
387
+ }
388
+
304
389
  } // namespace rtttl
305
390
  } // namespace esphome
@@ -14,12 +14,20 @@
14
14
  namespace esphome {
15
15
  namespace rtttl {
16
16
 
17
+ enum State : uint8_t {
18
+ STATE_STOPPED = 0,
19
+ STATE_INIT,
20
+ STATE_STARTING,
21
+ STATE_RUNNING,
22
+ STATE_STOPPING,
23
+ };
24
+
17
25
  #ifdef USE_SPEAKER
18
- static const size_t SAMPLE_BUFFER_SIZE = 512;
26
+ static const size_t SAMPLE_BUFFER_SIZE = 2048;
19
27
 
20
28
  struct SpeakerSample {
21
- int16_t left{0};
22
- int16_t right{0};
29
+ int8_t left{0};
30
+ int8_t right{0};
23
31
  };
24
32
  #endif
25
33
 
@@ -42,7 +50,7 @@ class Rtttl : public Component {
42
50
  void stop();
43
51
  void dump_config() override;
44
52
 
45
- bool is_playing() { return this->note_duration_ != 0; }
53
+ bool is_playing() { return this->state_ != State::STATE_STOPPED; }
46
54
  void loop() override;
47
55
 
48
56
  void add_on_finished_playback_callback(std::function<void()> callback) {
@@ -57,6 +65,8 @@ class Rtttl : public Component {
57
65
  }
58
66
  return ret;
59
67
  }
68
+ void finish_();
69
+ void set_state_(State state);
60
70
 
61
71
  std::string rtttl_{""};
62
72
  size_t position_{0};
@@ -68,13 +78,12 @@ class Rtttl : public Component {
68
78
 
69
79
  uint32_t output_freq_;
70
80
  float gain_{0.6f};
81
+ State state_{State::STATE_STOPPED};
71
82
 
72
83
  #ifdef USE_OUTPUT
73
84
  output::FloatOutput *output_;
74
85
  #endif
75
86
 
76
- void play_output_();
77
-
78
87
  #ifdef USE_SPEAKER
79
88
  speaker::Speaker *speaker_{nullptr};
80
89
  int sample_rate_{16000};
@@ -370,6 +370,20 @@ def boolean(value):
370
370
  )
371
371
 
372
372
 
373
+ def boolean_false(value):
374
+ """Validate the given config option to be a boolean, set to False.
375
+
376
+ This option allows a bunch of different ways of expressing boolean values:
377
+ - instance of boolean
378
+ - 'true'/'false'
379
+ - 'yes'/'no'
380
+ - 'enable'/disable
381
+ """
382
+ if boolean(value):
383
+ raise Invalid("Expected boolean value to be false")
384
+ return False
385
+
386
+
373
387
  @schema_extractor_list
374
388
  def ensure_list(*validators):
375
389
  """Validate this configuration option to be a list.
@@ -1850,7 +1864,7 @@ def maybe_simple_value(*validators, **kwargs):
1850
1864
  if value == SCHEMA_EXTRACT:
1851
1865
  return (validator, key)
1852
1866
 
1853
- if isinstance(value, dict) and key in value:
1867
+ if isinstance(value, dict):
1854
1868
  return validator(value)
1855
1869
  return validator({key: value})
1856
1870
 
esphome/const.py CHANGED
@@ -1,6 +1,6 @@
1
1
  """Constants used by esphome."""
2
2
 
3
- __version__ = "2024.8.0b1"
3
+ __version__ = "2024.8.0b2"
4
4
 
5
5
  ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
6
6
  VALID_SUBSTITUTIONS_CHARACTERS = (
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: esphome
3
- Version: 2024.8.0b1
3
+ Version: 2024.8.0b2
4
4
  Summary: Make creating custom firmwares for ESP32/ESP8266 super easy.
5
5
  Author-email: The ESPHome Authors <esphome@nabucasa.com>
6
6
  License: MIT
@@ -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=4cZR-RBzWzszUwLXGl9ArbMsi148OHNib6NuL-VdbSg,65466
8
- esphome/const.py,sha256=exhwYf7fr1ZAUWdp2jF_OGEMcXHGRnGMLJ0JW4H6O4I,39410
7
+ esphome/config_validation.py,sha256=mMpuN14yszcnKweuJjvG1f2IibZPXwfAommZoliNpyg,65827
8
+ esphome/const.py,sha256=OnMxq49qcVWv6uYfNYxbT3ak0pzDxh7s-RzH2nZ9pIA,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
@@ -172,7 +172,7 @@ esphome/components/apds9960/apds9960.cpp,sha256=5KibjOjWcgl7Ywk-5UkGCeenkNcj3r3F
172
172
  esphome/components/apds9960/apds9960.h,sha256=oFrXPQrPDS16gNSVdN1n6SKuvjwc9LdvpKJckr5Tbdc,2136
173
173
  esphome/components/apds9960/binary_sensor.py,sha256=DcfxkwZFvgmOU3C_gVSfZOpJ-EZlZXMd0gHnAUnxxCs,786
174
174
  esphome/components/apds9960/sensor.py,sha256=HoGfwl7WqJkpKI7BjeM1alXPcppdWVRrWwFzrZ0ISAo,871
175
- esphome/components/api/__init__.py,sha256=TV6hzCL8rRSiShpmqbNYYcvF-kTSltQY04S3OwFBKoc,9895
175
+ esphome/components/api/__init__.py,sha256=grnorxG9QG00eQwcIsiijno_o_JS6xKzOitqLS1DkXg,9895
176
176
  esphome/components/api/api_connection.cpp,sha256=bZ9AD5XLA3HwO8-faAGEvbiLSS89rKpUXdBJ9oYQeyw,56690
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
@@ -1068,7 +1068,7 @@ esphome/components/honeywellabp2_i2c/__init__.py,sha256=q4EX44dXWVPn_6bcR0pbzsGW
1068
1068
  esphome/components/honeywellabp2_i2c/honeywellabp2.cpp,sha256=BNId9_2ey5W97Z8C7iyf8UynCczC4NvrmNy57eXVb8I,3435
1069
1069
  esphome/components/honeywellabp2_i2c/honeywellabp2.h,sha256=oKx_nWi07fYioDxWPcNKtzDVKiyqBTvDIdREJoaHfMY,2140
1070
1070
  esphome/components/honeywellabp2_i2c/sensor.py,sha256=RepjqSYlTrq-IgTMhB-y1oBkjAPdEm2uRiCH_zWDMeU,2574
1071
- esphome/components/host/__init__.py,sha256=Lw6pfBikCNURCGlpd1eqGG9z28n2tsxjjXp_F18DWgw,1312
1071
+ esphome/components/host/__init__.py,sha256=LKE6IICarnNbEpE22ej3HVy6VDeXS3rJ72tA2Bds3VI,1175
1072
1072
  esphome/components/host/const.py,sha256=GvsG6HlxHm1Oh5rpiFTswpNIpG0xmfUvSHxtjZwmyuU,91
1073
1073
  esphome/components/host/core.cpp,sha256=_CSOmrSgL-Zo707ff0xVsWnAFBRzjKWwE4EP-0LosZg,1766
1074
1074
  esphome/components/host/gpio.cpp,sha256=OjPFXl9ZDLhsqUEuNvpAvZiiyeNuUyWjbi6DqZM2hFs,1582
@@ -1335,7 +1335,7 @@ esphome/components/light/base_light_effects.h,sha256=Gaf-zNUuH08r1dDCBo4sQVXUVx6
1335
1335
  esphome/components/light/color_mode.h,sha256=oyGFoWEyQqQ7_dF5lrSAM8qVnKJTkwtNjlCXVKhS-5g,5193
1336
1336
  esphome/components/light/effects.py,sha256=-seVxYLqdNvspTbTmK9t1f4PqcNVRccyjeStQA58N2Q,18286
1337
1337
  esphome/components/light/esp_color_correction.cpp,sha256=-IKGJXJpixagMrhqU5nfM_H_HXG7MYWn0jPTVf8WKvI,748
1338
- esphome/components/light/esp_color_correction.h,sha256=dfhhMSONCLKlY4zW8H7EJZqEsnDO2COLepGxNNbUw9U,3639
1338
+ esphome/components/light/esp_color_correction.h,sha256=xSGLomrn8_T5zQIrYwCiDPFh4D7cV1ZkwQK1_IbgmmI,3783
1339
1339
  esphome/components/light/esp_color_view.h,sha256=eRWa7kOvhQ7XdQg2BPkFwQkaA8U96HIJMd_d42rkZAo,4103
1340
1340
  esphome/components/light/esp_hsv_color.cpp,sha256=Wcxw1RaFCZxlNoxF1O7WDyMVx-yD5M67U2HiDGRxANU,1786
1341
1341
  esphome/components/light/esp_hsv_color.h,sha256=hbeWvic6PIAn2vuBPKWtIN-estB_LvmTf62EyVg9p7Q,878
@@ -1785,7 +1785,7 @@ esphome/components/neopixelbus/_methods.py,sha256=Qt6aC4K-9ySyRVD2aUy8UmM_H9brdf
1785
1785
  esphome/components/neopixelbus/const.py,sha256=8dPnqN1skzSEnjjsr3H2Q3BJOEn-TyFB1PApCSSsYUw,824
1786
1786
  esphome/components/neopixelbus/light.py,sha256=Qm2eq4wSt7jVcX81wtGvOmTHHIStP4GM1mNnHzrtUuQ,7289
1787
1787
  esphome/components/neopixelbus/neopixelbus_light.h,sha256=Q-F19U58RBjGcE_0mJc7rZG5JPnxKNgcBWRVvbEH1V4,4650
1788
- esphome/components/network/__init__.py,sha256=hCM31YwLZNy8HvJMZn2KvMFi_hIf9Y1JfnGlB20BsGM,1698
1788
+ esphome/components/network/__init__.py,sha256=IUrCGnUyg2U2R-AWFQp63VpB5PQgpKv1LGA5tFqBZ7E,1784
1789
1789
  esphome/components/network/ip_address.h,sha256=Lo5e_hL1SVPnNxuRIApLQPxQ1HdQpyENknGU6NgSAm8,4291
1790
1790
  esphome/components/network/util.cpp,sha256=OeOxJwdSrquCMNus24FbQ36BLd0nCywfIV49IVMYXJg,1509
1791
1791
  esphome/components/network/util.h,sha256=nAgCt6G1XhB5LC2VQ3C_L6hy1IFdG7d1STktNdtWhqM,490
@@ -2131,7 +2131,7 @@ esphome/components/remote_base/panasonic_protocol.cpp,sha256=08JEhN4vcVv1FJ0it9q
2131
2131
  esphome/components/remote_base/panasonic_protocol.h,sha256=YrtXNxZiPVFw3rtkQU4NKjC-niGAItqL3FE-FCVdSIE,1090
2132
2132
  esphome/components/remote_base/pioneer_protocol.cpp,sha256=8X89lbk_aC2npTu8TaUIFAiDx47idcytdjkn4cTej4E,4131
2133
2133
  esphome/components/remote_base/pioneer_protocol.h,sha256=qGaRii3aWsHDPV_0uobRJk4q872SM1ICz4no2Ix_Sxo,1034
2134
- esphome/components/remote_base/pronto_protocol.cpp,sha256=pfIsIv93NHc7tsl6uCoWjYSY8oFPxZ3Mj6ulcFNO_ZY,8197
2134
+ esphome/components/remote_base/pronto_protocol.cpp,sha256=yYNsT4EZJQyAFavqu4IXoGo16hPH6s_1ITtOBweJGTg,8111
2135
2135
  esphome/components/remote_base/pronto_protocol.h,sha256=FO4Ph0bymIwxJEsZNAtrZgGcUsJGaxVOwpsrKa9YmMY,1619
2136
2136
  esphome/components/remote_base/raw_protocol.cpp,sha256=UqPDj5BXVLJGUh_SC0XJPJivLbTbOI1bo0VjO5DtiVQ,1295
2137
2137
  esphome/components/remote_base/raw_protocol.h,sha256=HN9cXJoPx747UcIZ9gnXgioI_E31DZjGQe0nbiQblpM,2198
@@ -2225,8 +2225,8 @@ esphome/components/rpi_dpi_rgb/rpi_dpi_rgb.h,sha256=wQwb2lt50tVEkQ53Pj6Bm-KCGlc4
2225
2225
  esphome/components/rtl87xx/__init__.py,sha256=HIcczzFYGdNtOj635-gH0VVmBOZjmvcS4mxFWdlPtBo,1362
2226
2226
  esphome/components/rtl87xx/boards.py,sha256=JItSPj4n2UAvUXISoL2PTyTAqIi2Wp3sjGjs1fgS-3M,29269
2227
2227
  esphome/components/rtttl/__init__.py,sha256=m8vjSNfwcgbJm6NhDe_ErddMMwUpe2StubWcMY8sd28,4383
2228
- esphome/components/rtttl/rtttl.cpp,sha256=dE5otTj-5gBhL15r0Mb8Qkxp-wvPdVTBL7pblLkWTYk,8320
2229
- esphome/components/rtttl/rtttl.h,sha256=-qskl0bnrYQEd2hoVdT94d3PQdwEb6hoyiOpmFbk2oo,2757
2228
+ esphome/components/rtttl/rtttl.cpp,sha256=RbVz9upUhTCqoPMnQjLUDmDzuEBlA6yWKQ2Ml_aTxts,10779
2229
+ esphome/components/rtttl/rtttl.h,sha256=8xnisjG4Glm8JhCDB-RIyyS0yySGCLRsLnT24brQtYs,2946
2230
2230
  esphome/components/ruuvi_ble/__init__.py,sha256=9LmcfStqBeEzcuWdON_iGuI6Xh0BUssV1Aebv98Krks,619
2231
2231
  esphome/components/ruuvi_ble/ruuvi_ble.cpp,sha256=XXeYIgr1OB20MxtdcTDAWowFeK8qRQmQKTMeSEuhAec,5724
2232
2232
  esphome/components/ruuvi_ble/ruuvi_ble.h,sha256=F5lb-4gHnOMArTrh0jTPUjRcScDFEX2V9JHwd_Q_-t4,997
@@ -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.0b1.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3229
- esphome-2024.8.0b1.dist-info/METADATA,sha256=JgHERlBk-FV_Ihvmo4rpE5si5UedZ3Tg8wzck9hXNEg,3265
3230
- esphome-2024.8.0b1.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3231
- esphome-2024.8.0b1.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3232
- esphome-2024.8.0b1.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3233
- esphome-2024.8.0b1.dist-info/RECORD,,
3228
+ esphome-2024.8.0b2.dist-info/LICENSE,sha256=HzEjkBInJe44L4WvAOPfhPJJDNj6YbnqFyvGWRzArGM,36664
3229
+ esphome-2024.8.0b2.dist-info/METADATA,sha256=JACkKX-kcjNpHwsw05HK7NX06baqhoQcYjqLv1y4oY8,3265
3230
+ esphome-2024.8.0b2.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
3231
+ esphome-2024.8.0b2.dist-info/entry_points.txt,sha256=mIxVNuWtbYzeEcaWCl-AQ-97aBOWbnYBAK8nbF6P4M0,50
3232
+ esphome-2024.8.0b2.dist-info/top_level.txt,sha256=0GSXEW3cnITpgG3qnsSMz0qoqJHAFyfw7Y8MVtEf1Yk,8
3233
+ esphome-2024.8.0b2.dist-info/RECORD,,