substitutions: ############################################################################################ # SPECIFIC DEVICE VARIABLE SUBSTITUTIONS # If NOT using a secrets file, just replace these with the passwords etc (in quotes) ########################################################################################### wifi_ssid: !secret ha_wifi_ssid wifi_password: !secret ha_wifi_password fallback_ap_password: !secret fallback_ap_password # Enables faster network connections, with last connected SSID being connected to and no full scan for SSID being undertaken wifi_fast_connect: "false" # Define a domain for this device to use. i.e. iot.home.lan (so device will appear as athom-smart-plug-v2.iot.home.lan in DNS/DHCP logs) dns_domain: ".local" # Automatically add the mac address to the name # eg so you can use a single firmware for all devices add_mac_suffix: "false" # Enable or disable the use of IPv6 networking on the device ipv6_enable: "false" # 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_dns1 static_ip_dns2: !secret ha_wifi_dns2 # Network reconnect every x hours to ensure best access point base_interval_hours: "23" # Base interval in hours random_offset_max_minutes: "59" # Max random offset in minutes ########################################################################################### # Common Wifi Settings # https://esphome.io/components/wifi.html # # Power Save mode (can reduce wifi reliability) # NONE (least power saving, Default for ESP8266) # LIGHT (Default for ESP32) # HIGH (most power saving) ########################################################################################### wifi: ssid: ${wifi_ssid} password: ${wifi_password} #enable_rrm: true # (ESP32 only) enable 802.11k Radio Resource Management #enable_btm: true # (ESP32 only) enable 802.11v BSS Transition Management power_save_mode: none # https://esphome.io/components/wifi.html#wifi-power-save-mode manual_ip: # optional static IP address static_ip: ${local_static_ip_address} gateway: ${static_ip_gateway} subnet: ${static_ip_subnet} dns1: ${static_ip_dns1} dns2: ${static_ip_dns2} use_address: ${local_static_ip_address} ap: # Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode ssid: ${local_device_name} 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 fast_connect: ${wifi_fast_connect} # Define dns domain / suffix to add to hostname domain: "${dns_domain}" #min_auth_mode: WPA2 #captive_portal: # extra fallback mechanism for when connecting if the configured WiFi fails ########################################################################################### # Enable Over the Air Update Capability # https://esphome.io/components/ota.html?highlight=ota ########################################################################################### ota: - platform: esphome password: ${local_ota_pass} version: 2 #- platform: web_server # Uncomment if you want to be able to do OTA with the web interface ########################################################################################### # Safe Mode # Safe mode will detect boot loops # https://esphome.io/components/safe_mode ########################################################################################### safe_mode: ########################################################################################### # Network # global configuration for all types of networks # https://esphome.io/components/network.html ########################################################################################### network: 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