multiple esphome device updates and new devices
This commit is contained in:
@@ -23,7 +23,12 @@ substitutions:
|
||||
# Add these if we are giving it a static ip, or remove them in the Wifi section
|
||||
static_ip_subnet: !secret ha_wifi_subnet
|
||||
static_ip_gateway: !secret ha_wifi_gateway
|
||||
static_ip_dns1: !secret ha_wifi_gateway
|
||||
static_ip_dns1: !secret ha_wifi_dns1
|
||||
static_ip_dns2: !secret ha_wifi_dns2
|
||||
|
||||
# Network reconnect every x hours to ensure best access point
|
||||
base_interval_hours: "6" # Base interval in hours
|
||||
random_offset_max_minutes: "59" # Max random offset in minutes
|
||||
|
||||
#############################################
|
||||
# Common Wifi Settings
|
||||
@@ -45,8 +50,9 @@ wifi:
|
||||
gateway: ${static_ip_gateway}
|
||||
subnet: ${static_ip_subnet}
|
||||
dns1: ${static_ip_dns1}
|
||||
dns2: ${static_ip_dns2}
|
||||
ap: # Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode
|
||||
ssid: ${device_name} AP
|
||||
ssid: ${local_device_name} AP
|
||||
password: ${fallback_ap_password}
|
||||
ap_timeout: 10min # Time until it brings up fallback AP. default is 1min
|
||||
# Allow rapid re-connection to previously connect WiFi SSID, skipping scan of all SSID
|
||||
@@ -78,4 +84,37 @@ safe_mode:
|
||||
# https://esphome.io/components/network.html
|
||||
#############################################
|
||||
network:
|
||||
enable_ipv6: ${ipv6_enable}
|
||||
enable_ipv6: ${ipv6_enable}
|
||||
|
||||
#############################################
|
||||
# Interval
|
||||
# Restart Networking every x hours + rand mins
|
||||
# This ensure that the device is connected to the best AP
|
||||
#############################################
|
||||
script:
|
||||
- id: random_reconnect
|
||||
mode: restart
|
||||
then:
|
||||
- lambda: |-
|
||||
// Compute total delay: base hours + random offset minutes
|
||||
uint32_t extra;
|
||||
#if defined(ESP32)
|
||||
// ESP32 (both Arduino & IDF builds) uses esp_random()
|
||||
extra = esp_random() % (${random_offset_max_minutes} + 1);
|
||||
#elif defined(ESP8266)
|
||||
// ESP8266 Arduino core
|
||||
extra = os_random() % (${random_offset_max_minutes} + 1);
|
||||
#else
|
||||
// Fallback to esp_random() on other platforms
|
||||
extra = esp_random() % (${random_offset_max_minutes} + 1);
|
||||
#endif
|
||||
uint32_t total_s = ${base_interval_hours} * 3600 + extra * 60;
|
||||
ESP_LOGI("random_reconnect", "Next reconnect in %u seconds", total_s);
|
||||
// Delay inside lambda (blocks script execution but OK for reconnect timing)
|
||||
delay(total_s * 1000);
|
||||
- logger.log: "network_check: performing reconnect"
|
||||
- wifi.disable: {}
|
||||
- delay: 1s
|
||||
- wifi.enable: {}
|
||||
- script.execute: random_reconnect
|
||||
|
||||
|
Reference in New Issue
Block a user