mirror of
				https://github.com/esphome/esphome.git
				synced 2025-11-04 09:01:49 +00:00 
			
		
		
		
	Compare commits
	
		
			15 Commits
		
	
	
		
			2024.11.0b
			...
			2024.11.1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					ee3cfb2b76 | ||
| 
						 | 
					2cc2a2153b | ||
| 
						 | 
					e51f3d9498 | ||
| 
						 | 
					1c1f3f7c55 | ||
| 
						 | 
					ea424b0699 | ||
| 
						 | 
					489d0d20d2 | ||
| 
						 | 
					f04e3de7b8 | ||
| 
						 | 
					a0693060e4 | ||
| 
						 | 
					888b237964 | ||
| 
						 | 
					9a7d5dcad8 | ||
| 
						 | 
					ef78c404dd | ||
| 
						 | 
					01a24de3a8 | ||
| 
						 | 
					ae46dcef7e | ||
| 
						 | 
					872b8ee753 | ||
| 
						 | 
					eb8a2326ad | 
@@ -1,10 +1,9 @@
 | 
			
		||||
import logging
 | 
			
		||||
 | 
			
		||||
import esphome.codegen as cg
 | 
			
		||||
import esphome.config_validation as cv
 | 
			
		||||
import esphome.final_validate as fv
 | 
			
		||||
from esphome.components.ota import BASE_OTA_SCHEMA, ota_to_code, OTAComponent
 | 
			
		||||
from esphome.components.ota import BASE_OTA_SCHEMA, OTAComponent, ota_to_code
 | 
			
		||||
from esphome.config_helpers import merge_config
 | 
			
		||||
import esphome.config_validation as cv
 | 
			
		||||
from esphome.const import (
 | 
			
		||||
    CONF_ESPHOME,
 | 
			
		||||
    CONF_ID,
 | 
			
		||||
@@ -18,6 +17,7 @@ from esphome.const import (
 | 
			
		||||
    CONF_VERSION,
 | 
			
		||||
)
 | 
			
		||||
from esphome.core import coroutine_with_priority
 | 
			
		||||
import esphome.final_validate as fv
 | 
			
		||||
 | 
			
		||||
_LOGGER = logging.getLogger(__name__)
 | 
			
		||||
 | 
			
		||||
@@ -124,7 +124,6 @@ FINAL_VALIDATE_SCHEMA = ota_esphome_final_validate
 | 
			
		||||
@coroutine_with_priority(52.0)
 | 
			
		||||
async def to_code(config):
 | 
			
		||||
    var = cg.new_Pvariable(config[CONF_ID])
 | 
			
		||||
    await ota_to_code(var, config)
 | 
			
		||||
    cg.add(var.set_port(config[CONF_PORT]))
 | 
			
		||||
    if CONF_PASSWORD in config:
 | 
			
		||||
        cg.add(var.set_auth_password(config[CONF_PASSWORD]))
 | 
			
		||||
@@ -132,3 +131,4 @@ async def to_code(config):
 | 
			
		||||
    cg.add_define("USE_OTA_VERSION", config[CONF_VERSION])
 | 
			
		||||
 | 
			
		||||
    await cg.register_component(var, config)
 | 
			
		||||
    await ota_to_code(var, config)
 | 
			
		||||
 
 | 
			
		||||
@@ -189,7 +189,7 @@ template<typename... Ts> class HttpRequestSendAction : public Action<Ts...> {
 | 
			
		||||
 | 
			
		||||
    if (container == nullptr) {
 | 
			
		||||
      for (auto *trigger : this->error_triggers_)
 | 
			
		||||
        trigger->trigger(x...);
 | 
			
		||||
        trigger->trigger();
 | 
			
		||||
      return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,9 @@ std::shared_ptr<HttpContainer> HttpRequestArduino::start(std::string url, std::s
 | 
			
		||||
  static const size_t HEADER_COUNT = sizeof(header_keys) / sizeof(header_keys[0]);
 | 
			
		||||
  container->client_.collectHeaders(header_keys, HEADER_COUNT);
 | 
			
		||||
 | 
			
		||||
  App.feed_wdt();
 | 
			
		||||
  container->status_code = container->client_.sendRequest(method.c_str(), body.c_str());
 | 
			
		||||
  App.feed_wdt();
 | 
			
		||||
  if (container->status_code < 0) {
 | 
			
		||||
    ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %s", url.c_str(),
 | 
			
		||||
             HTTPClient::errorToString(container->status_code).c_str());
 | 
			
		||||
 
 | 
			
		||||
@@ -117,8 +117,11 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin
 | 
			
		||||
    return nullptr;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  App.feed_wdt();
 | 
			
		||||
  container->content_length = esp_http_client_fetch_headers(client);
 | 
			
		||||
  App.feed_wdt();
 | 
			
		||||
  container->status_code = esp_http_client_get_status_code(client);
 | 
			
		||||
  App.feed_wdt();
 | 
			
		||||
  if (is_success(container->status_code)) {
 | 
			
		||||
    container->duration_ms = millis() - start;
 | 
			
		||||
    return container;
 | 
			
		||||
@@ -148,8 +151,11 @@ std::shared_ptr<HttpContainer> HttpRequestIDF::start(std::string url, std::strin
 | 
			
		||||
        return nullptr;
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      App.feed_wdt();
 | 
			
		||||
      container->content_length = esp_http_client_fetch_headers(client);
 | 
			
		||||
      App.feed_wdt();
 | 
			
		||||
      container->status_code = esp_http_client_get_status_code(client);
 | 
			
		||||
      App.feed_wdt();
 | 
			
		||||
      if (is_success(container->status_code)) {
 | 
			
		||||
        container->duration_ms = millis() - start;
 | 
			
		||||
        return container;
 | 
			
		||||
 
 | 
			
		||||
@@ -92,6 +92,7 @@ async def to_code(config):
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
async def ota_to_code(var, config):
 | 
			
		||||
    await cg.past_safe_mode()
 | 
			
		||||
    use_state_callback = False
 | 
			
		||||
    for conf in config.get(CONF_ON_STATE_CHANGE, []):
 | 
			
		||||
        trigger = cg.new_Pvariable(conf[CONF_TRIGGER_ID], var)
 | 
			
		||||
 
 | 
			
		||||
@@ -55,6 +55,7 @@ chip.cmd(PAGESEL, 0x00)
 | 
			
		||||
chip.cmd(0xC2, 0x00)
 | 
			
		||||
chip.delay(10)
 | 
			
		||||
chip.cmd(TEON, 0x00)
 | 
			
		||||
chip.cmd(PIXFMT, 0x55)
 | 
			
		||||
 | 
			
		||||
chip = DriverChip("AXS15231")
 | 
			
		||||
chip.cmd(0xBB, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5A, 0xA5)
 | 
			
		||||
 
 | 
			
		||||
@@ -40,13 +40,7 @@ class Rtttl : public Component {
 | 
			
		||||
  void set_speaker(speaker::Speaker *speaker) { this->speaker_ = speaker; }
 | 
			
		||||
#endif
 | 
			
		||||
  float get_gain() { return gain_; }
 | 
			
		||||
  void set_gain(float gain) {
 | 
			
		||||
    if (gain < 0.1f)
 | 
			
		||||
      gain = 0.1f;
 | 
			
		||||
    if (gain > 1.0f)
 | 
			
		||||
      gain = 1.0f;
 | 
			
		||||
    this->gain_ = gain;
 | 
			
		||||
  }
 | 
			
		||||
  void set_gain(float gain) { this->gain_ = clamp(gain, 0.0f, 1.0f); }
 | 
			
		||||
  void play(std::string rtttl);
 | 
			
		||||
  void stop();
 | 
			
		||||
  void dump_config() override;
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ from esphome.const import CONF_DATA, CONF_ID, CONF_VOLUME
 | 
			
		||||
from esphome.core import CORE
 | 
			
		||||
from esphome.coroutine import coroutine_with_priority
 | 
			
		||||
 | 
			
		||||
AUTO_LOAD = ["audio"]
 | 
			
		||||
CODEOWNERS = ["@jesserockz", "@kahrendt"]
 | 
			
		||||
 | 
			
		||||
IS_PLATFORM_COMPONENT = True
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
"""Constants used by esphome."""
 | 
			
		||||
 | 
			
		||||
__version__ = "2024.11.0b3"
 | 
			
		||||
__version__ = "2024.11.1"
 | 
			
		||||
 | 
			
		||||
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
 | 
			
		||||
VALID_SUBSTITUTIONS_CHARACTERS = (
 | 
			
		||||
 
 | 
			
		||||
@@ -184,6 +184,9 @@ PRELOAD_CONFIG_SCHEMA = cv.Schema(
 | 
			
		||||
        cv.Optional(CONF_ESP8266_RESTORE_FROM_FLASH): cv.valid,
 | 
			
		||||
        cv.Optional(CONF_BOARD_FLASH_MODE): cv.valid,
 | 
			
		||||
        cv.Optional(CONF_ARDUINO_VERSION): cv.valid,
 | 
			
		||||
        cv.Optional(CONF_MIN_VERSION, default=ESPHOME_VERSION): cv.All(
 | 
			
		||||
            cv.version_number, cv.validate_esphome_version
 | 
			
		||||
        ),
 | 
			
		||||
    },
 | 
			
		||||
    extra=cv.ALLOW_EXTRA,
 | 
			
		||||
)
 | 
			
		||||
 
 | 
			
		||||
@@ -103,7 +103,7 @@ class ESPHomeDashboard:
 | 
			
		||||
        self.loop = asyncio.get_running_loop()
 | 
			
		||||
        self.ping_request = asyncio.Event()
 | 
			
		||||
        self.entries = DashboardEntries(self)
 | 
			
		||||
        self.load_ignored_devices()
 | 
			
		||||
        await self.loop.run_in_executor(None, self.load_ignored_devices)
 | 
			
		||||
 | 
			
		||||
    def load_ignored_devices(self) -> None:
 | 
			
		||||
        storage_path = Path(ignored_devices_storage_path())
 | 
			
		||||
 
 | 
			
		||||
@@ -544,7 +544,7 @@ class ImportRequestHandler(BaseHandler):
 | 
			
		||||
 | 
			
		||||
class IgnoreDeviceRequestHandler(BaseHandler):
 | 
			
		||||
    @authenticated
 | 
			
		||||
    def post(self) -> None:
 | 
			
		||||
    async def post(self) -> None:
 | 
			
		||||
        dashboard = DASHBOARD
 | 
			
		||||
        try:
 | 
			
		||||
            args = json.loads(self.request.body.decode())
 | 
			
		||||
@@ -576,7 +576,8 @@ class IgnoreDeviceRequestHandler(BaseHandler):
 | 
			
		||||
        else:
 | 
			
		||||
            dashboard.ignored_devices.discard(ignored_device.device_name)
 | 
			
		||||
 | 
			
		||||
        dashboard.save_ignored_devices()
 | 
			
		||||
        loop = asyncio.get_running_loop()
 | 
			
		||||
        await loop.run_in_executor(None, dashboard.save_ignored_devices)
 | 
			
		||||
 | 
			
		||||
        self.set_status(204)
 | 
			
		||||
        self.finish()
 | 
			
		||||
 
 | 
			
		||||
@@ -12,7 +12,7 @@ pyserial==3.5
 | 
			
		||||
platformio==6.1.16  # When updating platformio, also update Dockerfile
 | 
			
		||||
esptool==4.7.0
 | 
			
		||||
click==8.1.7
 | 
			
		||||
esphome-dashboard==20241118.0
 | 
			
		||||
esphome-dashboard==20241120.0
 | 
			
		||||
aioesphomeapi==24.6.2
 | 
			
		||||
zeroconf==0.132.2
 | 
			
		||||
puremagic==1.27
 | 
			
		||||
 
 | 
			
		||||
@@ -39,6 +39,14 @@ http_request:
 | 
			
		||||
  timeout: 10s
 | 
			
		||||
  verify_ssl: ${verify_ssl}
 | 
			
		||||
 | 
			
		||||
script:
 | 
			
		||||
  - id: does_not_compile
 | 
			
		||||
    parameters:
 | 
			
		||||
      api_url: string
 | 
			
		||||
    then:
 | 
			
		||||
      - http_request.get:
 | 
			
		||||
          url: "http://google.com"
 | 
			
		||||
 | 
			
		||||
ota:
 | 
			
		||||
  - platform: http_request
 | 
			
		||||
    on_begin:
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user