From 83549c6c1eb902221d7ad889c9d4861c64867a1a Mon Sep 17 00:00:00 2001 From: root Date: Wed, 4 Sep 2024 22:46:30 +1200 Subject: [PATCH] esphome mi 1s lamp --- automations.yaml | 62 --- configuration.yaml | 21 +- esphome/esp-attobat.yaml | 147 ++++-- esphome/esp-btproxy1.yaml | 131 ----- esphome/esp-entbtproxy.yaml | 189 +++++++ esphome/esp-entmulti copy.yaml.old | 488 ++++++++++++++++++ esphome/esp-entmulti.yaml | 488 ++++++++++++++++++ esphome/esp-generic-startfile.yaml | 205 ++++++++ esphome/esp-leafbat.yaml | 247 +++++++++ esphome/esp-leafbat2.yaml | 177 ------- esphome/esp-mainovenmonitor.yaml | 33 +- esphome/esp-midesklamp1s.yaml | 291 +++++++++++ esphome/esp-occupancylaundry.yaml | 439 ---------------- esphome/esp-occupancyoffice.yaml | 81 +-- esphome/esp-occupancystair.yaml | 23 +- esphome/esp-weatherstation.yaml | 18 +- esphome/esp-winefridge.yaml | 228 ++++++++ esphome/trash/esp-entmulti.yaml | 486 +++++++++++++++++ packages/anniversaries.yaml | 7 + packages/firewall_control.yaml | 8 +- packages/fridge_temperatures.yaml | 45 ++ packages/media_players.yaml | 10 +- packages/ms_teams_status.yaml | 20 + packages/pool_light_switch_sync.yaml | 17 + scripts/zha.yaml | 2 - ...662545193-oem_zg_tl8258_plug_OTA_3.0.0.bin | Bin 0 -> 307682 bytes 26 files changed, 2934 insertions(+), 929 deletions(-) delete mode 100644 esphome/esp-btproxy1.yaml create mode 100644 esphome/esp-entbtproxy.yaml create mode 100644 esphome/esp-entmulti copy.yaml.old create mode 100644 esphome/esp-entmulti.yaml create mode 100644 esphome/esp-generic-startfile.yaml create mode 100644 esphome/esp-leafbat.yaml delete mode 100644 esphome/esp-leafbat2.yaml create mode 100644 esphome/esp-midesklamp1s.yaml delete mode 100644 esphome/esp-occupancylaundry.yaml create mode 100644 esphome/esp-winefridge.yaml create mode 100644 esphome/trash/esp-entmulti.yaml create mode 100644 packages/anniversaries.yaml create mode 100644 packages/fridge_temperatures.yaml create mode 100644 packages/ms_teams_status.yaml create mode 100644 packages/pool_light_switch_sync.yaml delete mode 100644 scripts/zha.yaml create mode 100644 zigpy_ota/1662545193-oem_zg_tl8258_plug_OTA_3.0.0.bin diff --git a/automations.yaml b/automations.yaml index c94a0b8..1f70e61 100644 --- a/automations.yaml +++ b/automations.yaml @@ -1,65 +1,3 @@ -- id: '1671746148141' - alias: Turn Off Xmas Decorations - description: '' - trigger: - - platform: state - entity_id: - - input_boolean.xmas_decorations - from: 'on' - to: 'off' - condition: [] - action: - - type: turn_off - device_id: bbfa51e4e883fafa1d38824f11d83ba1 - entity_id: switch.xmas_decoration_power_plug_zpp02 - domain: switch - - type: turn_off - device_id: 506b3518661f7b2854e42ba5a26e0610 - entity_id: switch.kogan_smarterhometm_smart_plug_new_socket_1 - domain: switch - - type: turn_off - device_id: a9865914a7b7de1e81d1df47784282a8 - entity_id: switch.tasmota_5 - domain: switch - mode: single -- id: '1671746242166' - alias: Turn On Xmas Decorations - description: '' - trigger: - - platform: state - entity_id: - - input_boolean.xmas_decorations - from: 'off' - to: 'on' - condition: [] - action: - - type: turn_on - device_id: bbfa51e4e883fafa1d38824f11d83ba1 - entity_id: switch.xmas_decoration_power_plug_zpp02 - domain: switch - - type: turn_on - device_id: 506b3518661f7b2854e42ba5a26e0610 - entity_id: switch.kogan_smarterhometm_smart_plug_new_socket_1 - domain: switch - - type: turn_on - device_id: a9865914a7b7de1e81d1df47784282a8 - entity_id: switch.tasmota_5 - domain: switch - mode: single -- id: '1682158655752' - description: '' - trigger: - - platform: state - entity_id: - - group.basement_lights - - group.foxhole_lights - to: 'ON' - from: 'OFF' - condition: - - condition: or - conditions: [] - action: [] - mode: single - id: '1693027703299' alias: Downstairs Kitchen turn ON LEDs on with main lights description: '' diff --git a/configuration.yaml b/configuration.yaml index 79631d9..ffbfc3f 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -24,14 +24,27 @@ conversation: logger: default: info - logs: - custom_components.hacs: debug - custom_components.evnex: debug - evnex: debug +# logs: +#custom_components.hacs: debug +#custom_components.evnex: debug +#evnex: debug zha: enable_quirks: true custom_quirks_path: /config/custom_zha_quirks/ + device_config: # https://community.home-assistant.io/t/turning-a-light-entity-to-switch-entity/589599/7 + a4:c1:38:02:58:65:86:ed-1: # format: {ieee}-{endpoint_id} + type: “switch” # corrected device type + a4:c1:38:a1:db:1d:38:b7-1: # format: {ieee}-{endpoint_id} + type: “switch” # corrected device type + zigpy_config: + ota: + otau_directory: /config/zigpy_ota + ikea_provider: true + ledvance_provider: true + salus_provider: true + inovelli_provider: true + thirdreality_provider: true device_tracker: - platform: bluetooth_le_tracker diff --git a/esphome/esp-attobat.yaml b/esphome/esp-attobat.yaml index 48f2353..b5104c8 100644 --- a/esphome/esp-attobat.yaml +++ b/esphome/esp-attobat.yaml @@ -19,19 +19,36 @@ substitutions: description_comment: "Atto3 12V Battery Monitor (when home)" api_key: !secret esp-attobat_api_key #unfortunately you can't use substitutions in secrets names ota_pass: !secret esp-attobat_ota_pass #unfortunately you can't use substitutions in secrets names - mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like - update_time: 30s #update time for for temp sensors etc + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + #Add these if we are giving it a static ip, or remove them in the Wifi section + #A static IP will speed things up slightly in that it doesn't have to negotiate DHCP static_ip_address: !secret esp-attobat_static_ip static_ip_gateway: !secret esp-attobat_gateway static_ip_subnet: !secret esp-attobat_subnet + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + mqtt_commandstopic: "viewroad-commands" #main topic for commands (ie sleep), call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 10s #update time for for general temp sensors etc + ############################################# # ESPHome -############################################# +# https://esphome.io/components/esphome.html +############################################# esphome: - name: $devicename + name: ${devicename} + friendly_name: ${friendly_name} comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 ############################################# # ESP Platform and Framework @@ -66,39 +83,49 @@ api: # https://esphome.io/components/ota.html?highlight=ota ############################################# ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: ############################################# # 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: !secret wifi_ssid - password: !secret wifi_password + ssid: ${wifi_ssid} + password: ${wifi_password} #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode - # Static IP (for lower power/quicker on time) - manual_ip: + manual_ip: #optional static IP address static_ip: ${static_ip_address} gateway: ${static_ip_gateway} subnet: ${static_ip_subnet} ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode ssid: ${devicename} fallback AP - password: !secret fallback_ap_password - ap_timeout: 5min #default is 1min -captive_portal: # Fallback captive portal https://esphome.io/components/captive_portal.html + password: ${fallback_ap_password} + ap_timeout: 30min #Time until it brings up fallback AP. default is 1min ############################################# # Web Portal for display and monitoring ############################################# web_server: port: 80 - version: 2 - include_internal: true - ota: false - auth: - username: !secret web_server_username - password: !secret web_server_password + #version: 2 + #include_internal: true + #ota: false + #auth: + #username: ${web_server_username} + #password: ${web_server_password} ############################################# # MQTT Monitoring @@ -106,29 +133,42 @@ web_server: # MUST also have api enabled if you enable MQTT ############################################# mqtt: - broker: !secret mqtt_server + broker: ${mqtt_server} topic_prefix: ${mqtt_topic}/${devicename} - #username: !secret mqtt_username - #password: !secret mqtt_password - # + username: ${mqtt_username} + password: ${mqtt_password} + # Availability Topic - #birth_message: - # topic: esphome/esp-leafbat2/availability - # payload: online - #will_message: - # topic: esphome/esp-leafbat2/availability - # payload: offline + birth_message: + topic: ${mqtt_topic}/${devicename}/availability + payload: online + will_message: + topic: ${mqtt_topic}/${devicename}/availability + payload: offline + # A way to prevent deep sleep using MQTT command on_message: - - topic: viewroad-commands/attobat/deepsleep - payload: 'OFF' + - topic: ${mqtt_commandstopic}/${devicename}/deepsleep + payload: "OFF" then: - deep_sleep.prevent: deep_sleep_1 - - topic: viewroad-commands/attobat/deepsleep - payload: 'ON' + - topic: ${mqtt_commandstopic}/${devicename}/deepsleep + payload: "ON" then: - deep_sleep.enter: deep_sleep_1 +# on_message: +# - topic: ${mqtt_commandstopic}/${devicename}/deepsleepon +# payload: 'ON' +# then: +# - deep_sleep.prevent: deep_sleep_1 +# - topic: ${mqtt_commandstopic}/${devicename}/deepsleepoff +# payload: 'OFF' +# then: +# - deep_sleep.enter: deep_sleep_1 + + + ######################################## # Deep Sleep # https://esphome.io/components/deep_sleep.html @@ -144,27 +184,32 @@ deep_sleep: ############################################# ############################################# sensor: - # Quality of Wifi in dBm + #Quality of Wifi in dBm - platform: wifi_signal name: "WiFi Signal" - update_interval: 10s - retain: true - # Analog sensor for voltage reading (A0) + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise + #Analog sensor for voltage reading (A0) + - platform: uptime + name: "Uptime" + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise - platform: adc pin: A0 name: "Battery Voltage" - update_interval: 10s - retain: true + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise filters: - #- multiply: 18.52 # trial and error calc/measure - - calibrate_linear: - - 0.41 -> 6.00 - - 0.48 -> 7.00 - - 0.54 -> 8.00 - - 0.61 -> 9.00 - - 0.68 -> 10.00 - - 0.75 -> 11.00 - - 0.81 -> 12.00 - - 0.88 -> 13.00 - - 0.94 -> 13.99 - - 0.99 -> 14.70 \ No newline at end of file + - multiply: 3.3 #D1 mini V divider, 3.3V -> 1V on esp8266 + - calibrate_linear: #Read values with voltmeter and bench supply + - 3.11 -> 14.00 + - 3.00 -> 13.50 + - 2.89 -> 13.00 + - 2.77 -> 12.50 + - 2.67 -> 12.00 + - 2.55 -> 11.50 + - 2.45 -> 11.00 + - 2.34 -> 10.50 + - 2.22 -> 10.00 + - 2.11 -> 09.50 + - 2.00 -> 09.00 diff --git a/esphome/esp-btproxy1.yaml b/esphome/esp-btproxy1.yaml deleted file mode 100644 index f5549a1..0000000 --- a/esphome/esp-btproxy1.yaml +++ /dev/null @@ -1,131 +0,0 @@ -############################################# -############################################# -# -############################################# -############################################# - -############################################# -# Variable Substitutions -############################################# -substitutions: - devicename: "esp-btproxy1" - friendly_name: "BT Proxy 1" - description_comment: "D1 Mini ESP32 with BT Proxy Test" - api_key: !secret esp-btproxy1_api_key #unfortunately you can't use substitutions in secrets names - ota_pass: !secret esp-btproxy1_ota_pass #unfortunately you can't use substitutions in secrets names - mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like - update_time: 30s #update time for for temp sensors etc - -############################################# -# ESPHome -# https://esphome.io/components/esphome.html -############################################# -esphome: - name: ${devicename} - comment: ${description_comment} #appears on the esphome page in HA - #on_boot: #Initial Setting, will remember previous values (if set) - #priority: -200 - #then: - - -############################################# -# ESP Platform and Framework -# https://esphome.io/components/esp32.html -############################################# -esp32: - board: esp32dev - framework: - #type: arduino - type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. - version: recommended #recommended, latest or dev - -############################################# -# ESPHome Logging Enable -# https://esphome.io/components/logger.html -############################################# -logger: - level: INFO #INFO Level suggested, or DEBUG for testing - baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) - #esp8266_store_log_strings_in_flash: false - #tx_buffer_size: 64 - -############################################# -# Enable the Home Assistant API -# https://esphome.io/components/api.html -############################################# -api: - encryption: - key: ${api_key} - -############################################# -# Enable Over the Air Update Capability -# https://esphome.io/components/ota.html?highlight=ota -############################################# -ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} - -############################################# -# Wifi Settings -# https://esphome.io/components/wifi.html -############################################# -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password - #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode - #manual_ip: #optional static IP address - #static_ip: 192.168.x.x - #gateway: 192.168.X.x - #subnet: 255.255.255.0 - ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode - ssid: $devicename fallback AP - password: !secret fallback_ap_password - ap_timeout: 5min #default is 1min - -############################################# -# Web Portal for display and monitoring -# Turning this off is probably a good idea to save resources. -# https://esphome.io/components/web_server.html -############################################# -web_server: - port: 80 -# username: !secret web_server_username #probably a good idea to secure it -# password: !secret web_server_password - -############################################# -# MQTT Monitoring -# https://esphome.io/components/mqtt.html?highlight=mqtt -# MUST also have api enabled if you enable MQTT -############################################# -mqtt: - broker: !secret mqtt_server - topic_prefix: ${mqtt_topic}/${devicename} - username: !secret mqtt_username - password: !secret mqtt_password - -############################################# -# Bluetooth -# https://esphome.io/components/bluetooth_proxy.html -# https://esphome.io/components/esp32_ble_tracker.html -# Remember that this takes a LOT of processing. On the -# ESP32, enable the IDF framework, and disable the -# Web server component. Changing to the IDF framework -# needs to be via cable not OTA to change the -# partition setup. -############################################# -bluetooth_proxy: - active: true - -esp32_ble_tracker: - -############################################# -# General esp status LED -# https://esphome.io/components/status_led.html -############################################# -status_led: - pin: - number: GPIO2 #ESP32 Onboard LED - ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins - inverted: false - - diff --git a/esphome/esp-entbtproxy.yaml b/esphome/esp-entbtproxy.yaml new file mode 100644 index 0000000..ff1614f --- /dev/null +++ b/esphome/esp-entbtproxy.yaml @@ -0,0 +1,189 @@ +############################################# +# Variable Substitutions +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + devicename: "esp-entbtproxy" + friendly_name: "Outside Entrance Bluetooth Proxy" + description_comment: "D1 Mini ESP32 outside entranceway with BT Proxy" + + #if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-entbyproxy_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-entbtproxy_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + #Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-entmulti_static_ip + #static_ip_gateway: !secret esp-entmulti_gateway + #static_ip_subnet: !secret esp-entmulti_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 30s #update time for for general temp sensors etc + + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + friendly_name: ${friendly_name} + comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 # + + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: esp32dev + framework: + #type: arduino + type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. + version: recommended #recommended, latest or dev + + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO #INFO Level suggested, or DEBUG for testing + baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} +# on_client_connected: +# - esp32_ble_tracker.start_scan: +# continuous: true +# on_client_disconnected: +# - esp32_ble_tracker.stop_scan: + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: $devicename fallback AP + password: !secret fallback_ap_password + ap_timeout: 5min #Time until it brings up fallback AP. default is 1min + +captive_portal: + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +#web_server: +# port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + + +############################################# +# Bluetooth +# https://esphome.io/components/bluetooth_proxy.html +# https://esphome.io/components/esp32_ble_tracker.html +# Remember that this takes a LOT of processing. On the +# ESP32, enable the IDF framework, and disable the +# Web server component. Changing to the IDF framework +# needs to be via cable not OTA to change the +# partition setup. +############################################# +bluetooth_proxy: + active: true + +esp32_ble_tracker: + scan_parameters: + # We currently use the defaults to ensure Bluetooth + # can co-exist with WiFi In the future we may be able to + # enable the built-in coexistence logic in ESP-IDF + active: true + + +button: + - platform: safe_mode + id: button_safe_mode + name: Safe Mode Boot + + - platform: factory_reset + id: factory_reset_btn + name: Factory reset + + +sensor: + ################################ + # WIFI SIGNAL + # Quality of Wifi in dBm + # https://esphome.io/components/sensor/wifi_signal.html + ################################ + - platform: wifi_signal + name: ${friendly_name} WiFi Signal + update_interval: 20s + #retain: true #retain useful if sleeping + + - platform: uptime + name: ${friendly_name} Uptime + update_interval: 10s + + + + diff --git a/esphome/esp-entmulti copy.yaml.old b/esphome/esp-entmulti copy.yaml.old new file mode 100644 index 0000000..f81da8d --- /dev/null +++ b/esphome/esp-entmulti copy.yaml.old @@ -0,0 +1,488 @@ +############################################# +############################################# +# +# +############################################# +############################################# + +############################################# +# Variable Substitutions +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + devicename: "esp-entmulti" + friendly_name: "Outside Entrance Multisensor" + description_comment: "D1 Mini ESP32 outside entranceway with, mmWave presence, PIR and more" + + #if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-entmulti_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-entmulti_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + #Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-entmulti_static_ip + #static_ip_gateway: !secret esp-entmulti_gateway + #static_ip_subnet: !secret esp-entmulti_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 30s #update time for for general temp sensors etc + + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + friendly_name: ${friendly_name} + comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 + + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: esp32dev + framework: + #type: arduino + type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. + version: recommended #recommended, latest or dev + +############################################# +# ESPHome external or custom components to use +# https://esphome.io/components/external_components.html +# https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +#external_components: +# - source: +# type: git +# url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. +# components: [ serial ] #text_sensor that reads lines for a uart. Also, a sensor that reads single binary values from the uart. + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO #INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} +# on_client_connected: +# - esp32_ble_tracker.start_scan: +# continuous: true +# on_client_disconnected: +# - esp32_ble_tracker.stop_scan: + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: $devicename fallback AP + password: !secret fallback_ap_password + ap_timeout: 5min #Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +#web_server: +# port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + +############################################# +# i2c bus +# https://esphome.io/components/i2c.html +# 10, 50, 100, 200, 800 are possible settings +# for frequency, 50kHz is default +############################################# +#i2c: +# sda: GPIO19 +# scl: GPIO21 +# scan: True #look for devices on boot up and report + #frequency: 100kHz + +############################################# +# UART Serial +# hardware on EPS32, but software, and can be glitchy on ESP8266 +# https://esphome.io/components/uart.html +############################################# +uart: + id: ld2410_uart + rx_pin: GPIO16 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang + tx_pin: GPIO17 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang + baud_rate: 256000 # default for LD2410 is 25600, 8, 0, NONE + data_bits: 8 + stop_bits: 1 + parity: NONE + +############################################# +# Bluetooth +# https://esphome.io/components/bluetooth_proxy.html +# https://esphome.io/components/esp32_ble_tracker.html +# Remember that this takes a LOT of processing. On the +# ESP32, enable the IDF framework, and disable the +# Web server component. Changing to the IDF framework +# needs to be via cable not OTA to change the +# partition setup. +############################################# +#bluetooth_proxy: +# active: true +# cache_services: true +# +#esp32_ble_tracker: +# scan_parameters: +# active: true +# continuous: false + +############################################# +# Global Variables for use in automations etc +# https://esphome.io/guides/automations.html?highlight=globals#global-variables +############################################# + + +############################################# +# General esp status LED +# https://esphome.io/components/status_led.html +############################################# +status_led: + pin: + number: GPIO2 #ESP32 Onboard LED + ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins + inverted: false + +############################################# +# Interval Automations +# https://esphome.io/guides/automations.html +############################################# + +############################################# +# LD2410 Sensors +# https://esphome.io/components/sensor/ld2410.html +# https://www.hlktech.net/index.php?id=988 +############################################# +ld2410: + uart_id: ld2410_uart + +############################################# +# Number Sensors (custom component) +# refer https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +number: + - platform: ld2410 + timeout: + name: Timeout + light_threshold: + name: Light Threshold + max_move_distance_gate: + name: Max Move Distance Gate + max_still_distance_gate: + name: Max Still Distance Gate + g0: + move_threshold: + name: g0 move threshold + still_threshold: + name: g0 still threshold + g1: + move_threshold: + name: g1 move threshold + still_threshold: + name: g1 still threshold + g2: + move_threshold: + name: g2 move threshold + still_threshold: + name: g2 still threshold + g3: + move_threshold: + name: g3 move threshold + still_threshold: + name: g3 still threshold + g4: + move_threshold: + name: g4 move threshold + still_threshold: + name: g4 still threshold + g5: + move_threshold: + name: g5 move threshold + still_threshold: + name: g5 still threshold + g6: + move_threshold: + name: g6 move threshold + still_threshold: + name: g6 still threshold + g7: + move_threshold: + name: g7 move threshold + still_threshold: + name: g7 still threshold + g8: + move_threshold: + name: g8 move threshold + still_threshold: + name: g8 still threshold + +#The ld2410 select allows you to control your LD2410 Sensor. +#distance_resolution (Optional): Control the gates distance resolution. Can be 0.75m or 0.2m. Defaults to 0.75m. All options from Select. +#baud_rate (Optional): Control the serial port baud rate. Defaults to 256000. Once changed, all sensors will stop working until a fresh install with an updated UART Component configuration. All options from Select. +#light_function (Optional): If set, will affect the OUT pin value, based on light threshold. Can be off, low or above. Defaults to off. All options from Select. +#out_pin_level (Optional): Control OUT pin away value. Can be low or high. Defaults to low. All options from Select. +#ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components. +select: + - platform: ld2410 + distance_resolution: + name: ${friendly_name} LD2140 Distance Resolution + baud_rate: + name: ${friendly_name} LD2140 Baud Rate + light_function: + name: ${friendly_name} LD2140 Light Function + out_pin_level: + name: ${friendly_name} LD2140 Out Pin Level + +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +sensor: +# - platform: bme280_i2c +# address: 0x76 +# update_interval: ${update_time} +# temperature: +# name: ${friendly_name} BME280 Temp +# accuracy_decimals: 1 +# oversampling: 2x +# pressure: +# name: ${friendly_name} BME280 Pressure +# oversampling: 2x +# humidity: +# name: ${friendly_name} BME280 Humidity +# accuracy_decimals: 1 +# oversampling: 2x + + ################################ + # WIFI SIGNAL + # Quality of Wifi in dBm + # https://esphome.io/components/sensor/wifi_signal.html + ################################ + - platform: wifi_signal + name: ${friendly_name} WiFi Signal + update_interval: 20s + #retain: true #retain useful if sleeping + + - platform: uptime + name: ${friendly_name} Uptime + update_interval: 20s + + +#The ld2410 sensor values + - platform: ld2410 + light: + name: Light + moving_distance: + name : Moving Distance + still_distance: + name: Still Distance + moving_energy: + name: Move Energy + still_energy: + name: Still Energy + detection_distance: + name: Detection Distance + g0: + move_energy: + name: g0 move energy + still_energy: + name: g0 still energy + g1: + move_energy: + name: g1 move energy + still_energy: + name: g1 still energy + g2: + move_energy: + name: g2 move energy + still_energy: + name: g2 still energy + g3: + move_energy: + name: g3 move energy + still_energy: + name: g3 still energy + g4: + move_energy: + name: g4 move energy + still_energy: + name: g4 still energy + g5: + move_energy: + name: g5 move energy + still_energy: + name: g5 still energy + g6: + move_energy: + name: g6 move energy + still_energy: + name: g6 still energy + g7: + move_energy: + name: g7 move energy + still_energy: + name: g7 still energy + g8: + move_energy: + name: g8 move energy + still_energy: + name: g8 still energy + +# The ld2410 switch allows you to control your LD2410 Sensor. +#Bluetooth switch is only useful of you have a B or C model +switch: + - platform: ld2410 + engineering_mode: + name: ${friendly_name} LD2140 Engineering Mode + #bluetooth: + #name: ${friendly_name} LD2140 Control Bluetooth + + +#The ld2410 button allows resetting +#button: +# - platform: ld2410 +# factory_reset: +# name: ${friendly_name} LD2140 Factory reset" +# restart: +# name: ${friendly_name} LD2140 Restart +## query_params: +# name: Query Parameters + +############################################# +# Text Sensors +# refer https://esphome.io/components/text_sensor/index.html +############################################# +#The ld2410 text sensor allows you to get information about your LD2410 Sensor. +#Bluetooth sensor is only useful of you have a B or C model +#text_sensor: +# - platform: ld2410 +# version: +# name: ${friendly_name} LD2140 Firmware Version + #mac_address: + #name: ${friendly_name} LD2140 BT MAC Address + + +############################################# +# Binary Sensors +# https://esphome.io/components/binary_sensor/index.html +############################################# +binary_sensor: + + - platform: ld2410 + has_target: + name: ${friendly_name} Presence + has_moving_target: + name: ${friendly_name} Moving Target + has_still_target: + name: ${friendly_name} Still Target + out_pin_presence_status: + name: ${friendly_name} LD2140 Out Pin Presence Status + + #Standard PIR Sensor + - platform: gpio + pin: + number: GPIO13 + mode: + input: True + pullup: False + inverted: True + filters: + - delayed_on: 50ms + name: ${friendly_name} PIR Sensor + device_class: motion + + #RF Input from Vibration Sensor (Green Bin) + - platform: gpio + pin: + number: GPIO04 + mode: + input: true + pullup: true + inverted: True + filters: + - delayed_on: 20ms + name: ${friendly_name} Green Bin motion + device_class: vibration + + #RF Input from Vibration Sensor (Red Bin) + - platform: gpio + pin: + number: GPIO15 + mode: + input: true + pullup: true + inverted: True + filters: + - delayed_on: 20ms + name: ${friendly_name} Red Bin motion + device_class: vibration \ No newline at end of file diff --git a/esphome/esp-entmulti.yaml b/esphome/esp-entmulti.yaml new file mode 100644 index 0000000..3329c93 --- /dev/null +++ b/esphome/esp-entmulti.yaml @@ -0,0 +1,488 @@ +############################################# +############################################# +# +# +############################################# +############################################# + +############################################# +# Variable Substitutions +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + devicename: "esp-entmulti" + friendly_name: "Outside Entrance Multisensor" + description_comment: "D1 Mini ESP32 outside entranceway with, mmWave presence, PIR and more" + + #if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-entmulti_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-entmulti_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + #Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-entmulti_static_ip + #static_ip_gateway: !secret esp-entmulti_gateway + #static_ip_subnet: !secret esp-entmulti_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 30s #update time for for general temp sensors etc + + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + friendly_name: ${friendly_name} + comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 + + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: esp32dev + framework: + #type: arduino + type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. + version: recommended #recommended, latest or dev + +############################################# +# ESPHome external or custom components to use +# https://esphome.io/components/external_components.html +# https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +#external_components: +# - source: +# type: git +# url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. +# components: [ serial ] #text_sensor that reads lines for a uart. Also, a sensor that reads single binary values from the uart. + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO #INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} +# on_client_connected: +# - esp32_ble_tracker.start_scan: +# continuous: true +# on_client_disconnected: +# - esp32_ble_tracker.stop_scan: + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: $devicename fallback AP + password: !secret fallback_ap_password + ap_timeout: 5min #Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +#web_server: +# port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + +############################################# +# i2c bus +# https://esphome.io/components/i2c.html +# 10, 50, 100, 200, 800 are possible settings +# for frequency, 50kHz is default +############################################# +#i2c: +# sda: GPIO19 +# scl: GPIO21 +# scan: True #look for devices on boot up and report + #frequency: 100kHz + +############################################# +# UART Serial +# hardware on EPS32, but software, and can be glitchy on ESP8266 +# https://esphome.io/components/uart.html +############################################# +#uart: +# id: ld2410_uart +# rx_pin: GPIO16 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang +# tx_pin: GPIO17 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang +# baud_rate: 256000 # default for LD2410 is 25600, 8, 0, NONE +# data_bits: 8 +# stop_bits: 1 +# parity: NONE + +############################################# +# Bluetooth +# https://esphome.io/components/bluetooth_proxy.html +# https://esphome.io/components/esp32_ble_tracker.html +# Remember that this takes a LOT of processing. On the +# ESP32, enable the IDF framework, and disable the +# Web server component. Changing to the IDF framework +# needs to be via cable not OTA to change the +# partition setup. +############################################# +#bluetooth_proxy: +# active: true +# cache_services: true +# +#esp32_ble_tracker: +# scan_parameters: +# active: true +# continuous: false + +############################################# +# Global Variables for use in automations etc +# https://esphome.io/guides/automations.html?highlight=globals#global-variables +############################################# + + +############################################# +# General esp status LED +# https://esphome.io/components/status_led.html +############################################# +status_led: + pin: + number: GPIO2 #ESP32 Onboard LED + ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins + inverted: false + +############################################# +# Interval Automations +# https://esphome.io/guides/automations.html +############################################# + +############################################# +# LD2410 Sensors +# https://esphome.io/components/sensor/ld2410.html +# https://www.hlktech.net/index.php?id=988 +############################################# +#ld2410: +# uart_id: ld2410_uart + +############################################# +# Number Sensors (custom component) +# refer https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +#number: +# - platform: ld2410 +# timeout: +# name: Timeout +# light_threshold: +# name: Light Threshold +# max_move_distance_gate: +# name: Max Move Distance Gate +# max_still_distance_gate: +# name: Max Still Distance Gate +# g0: +# move_threshold: +# name: g0 move threshold +# still_threshold: +# name: g0 still threshold +# g1: +# move_threshold: +# name: g1 move threshold +# still_threshold: +# name: g1 still threshold +# g2: +# move_threshold: +# name: g2 move threshold +# still_threshold: +# name: g2 still threshold +# g3: +# move_threshold: +# name: g3 move threshold +# still_threshold: +# name: g3 still threshold +# g4: +# move_threshold: +# name: g4 move threshold +# still_threshold: +# name: g4 still threshold +# g5: +# move_threshold: +# name: g5 move threshold +# still_threshold: +# name: g5 still threshold +# g6: +# move_threshold: +# name: g6 move threshold +# still_threshold: +# name: g6 still threshold +# g7: +# move_threshold: +# name: g7 move threshold +# still_threshold: +# name: g7 still threshold +# g8: +# move_threshold: +# name: g8 move threshold +# still_threshold: +# name: g8 still threshold + +#The ld2410 select allows you to control your LD2410 Sensor. +#distance_resolution (Optional): Control the gates distance resolution. Can be 0.75m or 0.2m. Defaults to 0.75m. All options from Select. +#baud_rate (Optional): Control the serial port baud rate. Defaults to 256000. Once changed, all sensors will stop working until a fresh install with an updated UART Component configuration. All options from Select. +#light_function (Optional): If set, will affect the OUT pin value, based on light threshold. Can be off, low or above. Defaults to off. All options from Select. +#out_pin_level (Optional): Control OUT pin away value. Can be low or high. Defaults to low. All options from Select. +#ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components. +#select: +# - platform: ld2410 +# distance_resolution: +# name: ${friendly_name} LD2140 Distance Resolution +# baud_rate: +# name: ${friendly_name} LD2140 Baud Rate +# light_function: +# name: ${friendly_name} LD2140 Light Function +# out_pin_level: +# name: ${friendly_name} LD2140 Out Pin Level + +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +sensor: +# - platform: bme280_i2c +# address: 0x76 +# update_interval: ${update_time} +# temperature: +# name: ${friendly_name} BME280 Temp +# accuracy_decimals: 1 +# oversampling: 2x +# pressure: +# name: ${friendly_name} BME280 Pressure +# oversampling: 2x +# humidity: +# name: ${friendly_name} BME280 Humidity +# accuracy_decimals: 1 +# oversampling: 2x + + ################################ + # WIFI SIGNAL + # Quality of Wifi in dBm + # https://esphome.io/components/sensor/wifi_signal.html + ################################ + - platform: wifi_signal + name: ${friendly_name} WiFi Signal + update_interval: 20s + #retain: true #retain useful if sleeping + + - platform: uptime + name: ${friendly_name} Uptime + update_interval: 20s + + +#The ld2410 sensor values +# - platform: ld2410 +# light: +# name: Light +# moving_distance: +# name : Moving Distance +# still_distance: +# name: Still Distance +# moving_energy: +# name: Move Energy +# still_energy: +# name: Still Energy +# detection_distance: +# name: Detection Distance +# g0: +# move_energy: +# name: g0 move energy +# still_energy: +# name: g0 still energy +# g1: +# move_energy: +# name: g1 move energy +# still_energy: +# name: g1 still energy +# g2: +# move_energy: +# name: g2 move energy +# still_energy: +# name: g2 still energy +# g3: +# move_energy: +# name: g3 move energy +# still_energy: +# name: g3 still energy +# g4: +# move_energy: +# name: g4 move energy +# still_energy: +# name: g4 still energy +# g5: +# move_energy: +# name: g5 move energy +# still_energy: +# name: g5 still energy +# g6: +# move_energy: +# name: g6 move energy +# still_energy: +# name: g6 still energy +# g7: +# move_energy: +# name: g7 move energy +# still_energy: +# name: g7 still energy +# g8: +# move_energy: +# name: g8 move energy +# still_energy: +# name: g8 still energy + +# The ld2410 switch allows you to control your LD2410 Sensor. +#Bluetooth switch is only useful of you have a B or C model +#switch: +# - platform: ld2410 +# engineering_mode: +# name: ${friendly_name} LD2140 Engineering Mode + #bluetooth: + #name: ${friendly_name} LD2140 Control Bluetooth + + +#The ld2410 button allows resetting +#button: +# - platform: ld2410 +# factory_reset: +# name: ${friendly_name} LD2140 Factory reset" +# restart: +# name: ${friendly_name} LD2140 Restart +## query_params: +# name: Query Parameters + +############################################# +# Text Sensors +# refer https://esphome.io/components/text_sensor/index.html +############################################# +#The ld2410 text sensor allows you to get information about your LD2410 Sensor. +#Bluetooth sensor is only useful of you have a B or C model +#text_sensor: +# - platform: ld2410 +# version: +# name: ${friendly_name} LD2140 Firmware Version + #mac_address: + #name: ${friendly_name} LD2140 BT MAC Address + + +############################################# +# Binary Sensors +# https://esphome.io/components/binary_sensor/index.html +############################################# +binary_sensor: + +# - platform: ld2410 +# has_target: +# name: ${friendly_name} Presence +# has_moving_target: +# name: ${friendly_name} Moving Target +# has_still_target: +# name: ${friendly_name} Still Target +# out_pin_presence_status: +# name: ${friendly_name} LD2140 Out Pin Presence Status + + #Standard PIR Sensor + - platform: gpio + pin: + number: GPIO13 + mode: + input: True + pullup: True + inverted: True + filters: + - delayed_on: 200ms + name: ${friendly_name} PIR Sensor + device_class: motion + + #RF Input from Vibration Sensor (Green Bin) + - platform: gpio + pin: + number: GPIO04 + mode: + input: true + pullup: true + inverted: True + filters: + - delayed_on: 20ms + name: ${friendly_name} Green Bin motion + device_class: vibration + + #RF Input from Vibration Sensor (Red Bin) + - platform: gpio + pin: + number: GPIO15 + mode: + input: true + pullup: true + inverted: True + filters: + - delayed_on: 20ms + name: ${friendly_name} Red Bin motion + device_class: vibration \ No newline at end of file diff --git a/esphome/esp-generic-startfile.yaml b/esphome/esp-generic-startfile.yaml new file mode 100644 index 0000000..7e4a16a --- /dev/null +++ b/esphome/esp-generic-startfile.yaml @@ -0,0 +1,205 @@ + +# This is a generic starter yaml file for +# espHome, by zorruno 2024 +# would be something like loungefancontroller +# yaml file would then be esp-loungefancontroller.yaml + +############################################# +############################################# +# TITLE +# Details of what the device is plus +# any relevant web links +############################################# +############################################# + +############################################# +# SECRETS +# Secrets file is usually at config/secrets.yaml +# or config/esphome/secrets.yaml +# depending on your setup with HA +############################################# +# SECRETS FILE needs these specific secrets: +# esp-_api_key +# esp-_ota_pass +# esp-_static_ip (Optional) +# esp-_gateway (Optional) +# esp-_subnet (Optional) +# +# SECRETS FILE needs these generic Secrets: +# wifi_ssid +# wifi_password +# fallback_ap_password +# mqtt_server +# mqtt_username +# mqtt_password +# web_server_username (Optional) +# web_server_password (Optional) +############################################# + +############################################# +# VARIABLE SUBSTITUTIONS +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + device_name: esp- + friendly_name: "Device friendly name" + description_comment: "A Description of this device" + + # if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-_api_key # unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-_ota_pass # unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + + # Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-_static_ip + #static_ip_gateway: !secret esp-_gateway + #static_ip_subnet: !secret esp-_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" # main topic for the mqtt server, call it what you like + + web_server_username: !secret web_server_username + web_server_password: !secret web_server_password + + update_time: 60s # update time for for general temp sensors etc + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${device_name} + friendly_name: ${friendly_name} # appears as main name on the esphome page in HA + comment: ${description_comment} # appears as comment on the esphome page in HA + #min_version: 2024.6.0 + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: + framework: + type: esp-idf # Suggest using the ESP-IDF Framework. Changing from 'arduino' to 'esp-idf' needs a cabled flash to correct partitions + version: recommended # recommended, latest or dev + +############################################# +# ESPHome Logging Enabl +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO # INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: # Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: ${device_name} fallback AP + password: ${fallback_ap_password} + ap_timeout: 30min # Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +#web_server: +# port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${device_name} + username: ${mqtt_username} + password: ${mqtt_password} + +############################################# +# Time Component +# https://esphome.io/components/time/index.html#time-component +# Sync with HA Time. Probably not really necessary. +############################################# +#time: +# - platform: homeassistant +# id: homeassistant_time + +############################################# +# Text Sensors +# https://esphome.io/components/text_sensor/index.html +############################################# +text_sensor: + - platform: version + name: ${friendly_name} Version + - platform: wifi_info + ip_address: + name: ${friendly_name} IP Address + +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +sensor: + - platform: uptime # Uptime for this device + name: ${friendly_name} Uptime + update_interval: ${update_time} + - platform: wifi_signal # Wifi Strength + name: ${friendly_name} Wifi Signal + update_interval: ${update_time} + + ############################################# +# Binary Sensors +# https://esphome.io/components/binary_sensor/index.html +############################################# +#binary_sensor: + diff --git a/esphome/esp-leafbat.yaml b/esphome/esp-leafbat.yaml new file mode 100644 index 0000000..6c755a4 --- /dev/null +++ b/esphome/esp-leafbat.yaml @@ -0,0 +1,247 @@ +############################################# +############################################# +# BYD ATTO3 12V Battery Monitor +# Monitoring the status of a vehicle 12V battery with +# an esp8266 (D1 Mini). It will obviously only +# transmit when the vehicle is within wifi range. +# Voltage is measured with a resistor voltage divider +# into the analogue GPIO on the esp8266. +# https://zorruno.com/2022/vehicle-12v-battery-monitoring/ +############################################## +############################################# + +############################################# +# Variable Substitutions +############################################# +substitutions: + devicename: "esp-leafbat" + friendly_name: "Nissan Leaf 12V Battery Monitor" + description_comment: "Nissan Leaf 12V Battery Monitor (when home)" + api_key: !secret esp-leafbat_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-leafbat_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + + #Add these if we are giving it a static ip, or remove them in the Wifi section + #A static IP will speed things up slightly in that it doesn't have to negotiate DHCP + static_ip_address: !secret esp-leafbat_static_ip + static_ip_gateway: !secret esp-leafbat_gateway + static_ip_subnet: !secret esp-leafbat_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + mqtt_commandstopic: "viewroad-commands" #main topic for commands (ie sleep), call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 10s #update time for for general temp sensors etc + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + friendly_name: ${friendly_name} + comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp8266.html +# https://esphome.io/components/esp32.html +############################################# +esp8266: + board: d1_mini + framework: + version: latest #recommended, latest or dev + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO #INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +#uart: +# id: uart_output +# tx_pin: GPIO12 +# rx_pin: GPIO13 +# baud_rate: 9600 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + manual_ip: #optional static IP address + static_ip: ${static_ip_address} + gateway: ${static_ip_gateway} + subnet: ${static_ip_subnet} + ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: ${devicename} fallback AP + password: ${fallback_ap_password} + ap_timeout: 30min #Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +############################################# +web_server: + port: 80 + #version: 2 + #include_internal: true + #ota: false + #auth: + #username: ${web_server_username} + #password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + + # Availability Topic + birth_message: + topic: ${mqtt_topic}/${devicename}/availability + payload: online + will_message: + topic: ${mqtt_topic}/${devicename}/availability + payload: offline + + # A way to prevent deep sleep using MQTT command + on_message: + - topic: ${mqtt_commandstopic}/${devicename}/deepsleep + payload: 'OFF' + then: + - deep_sleep.prevent: deep_sleep_1 + - topic: ${mqtt_commandstopic}/${devicename}/deepsleep + payload: 'ON' + then: + - deep_sleep.enter: deep_sleep_1 + +######################################## +# Deep Sleep +# https://esphome.io/components/deep_sleep.html +######################################## +deep_sleep: + run_duration: 20s + sleep_duration: 5min + id: deep_sleep_1 + +#time: +# - platform: homeassistant +# id: ha_time +# timezone: Pacific/Auckland + +#text_sensor: +# - platform: template +# name: "Current time" +# id: current_time +# lambda: return id(ha_time).now().strftime("%H%M"); +# lambda: |- +# char str[17]; + # time_t currTime = id(ha_time).now().timestamp; + # strftime(str, sizeof(str), "%Y-%m-%d %H:%M", localtime(&currTime)); + # return { str }; +# update_interval: ${update_time} + +############################################# +############################################# +# MAIN SENSORS +############################################# +############################################# +sensor: + #Quality of Wifi in dBm + - platform: wifi_signal + name: "WiFi Signal" + id: wifi_strength + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise + #Analog sensor for voltage reading (A0) + - platform: uptime + name: "Uptime" + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise + - platform: adc + pin: A0 + name: "Battery Voltage" + id: battery_voltage + #mqtt_id: battery_voltage + update_interval: ${update_time} + retain: true #Retain this as you'll have no value between sleeps otherwise + # This set used a voltage divider with a 100k and a 4.7k R value + filters: + - multiply: 3.3 #D1 mini V divider, 3.3V -> 1V on esp8266 + - calibrate_linear: #Read values with voltmeter and bench supply + - 0.72 -> 16.00 + - 0.68 -> 15.00 + - 0.63 -> 14.00 + - 0.59 -> 13.00 + - 0.55 -> 12.00 + - 0.51 -> 11.00 + - 0.45 -> 10.00 + - 0.40 -> 09.00 + - 0.36 -> 08.00 + - 0.32 -> 07.00 + - 0.28 -> 06.00 + - 0.23 -> 05.00 +# on_value: +# - logger.log: +# level: INFO +# format: "time,%s,battery,%.1f,wifi,%.1f" +# args: [ 'id(ha_time).now()', 'id(battery_voltage).state', 'id(wifi_strength).state' ] + +# - uart.write: +# id: uart_output +# data: !lambda char buf[128]; +# sprintf(buf, "%s", id(battery_voltage).state); +# std::string s = buf; +# return std::vector( s.begin(), s.end() ); +# - logger.log: +# level: INFO +# format: "time,%.1f,battery,%.1f,wifi,%.1f" +# args: [ 'id(sntp_time).now()', 'id(battery_voltage).state', 'id(wifi_strength).state' ] diff --git a/esphome/esp-leafbat2.yaml b/esphome/esp-leafbat2.yaml deleted file mode 100644 index 58d35ab..0000000 --- a/esphome/esp-leafbat2.yaml +++ /dev/null @@ -1,177 +0,0 @@ -############################################# -############################################# -# Nissan Leaf 12V Battery Monitor -# Monitoring the status of a vehicle 12V battery with -# an esp8266 (D1 Mini). It will obviously only -# transmit when the vehicle is within wifi range. -# Voltage is measured with a resistor voltage divider -# into the analogue GPIO on the esp8266. -# https://zorruno.com/2022/vehicle-12v-battery-monitoring/ -############################################## -# zorruno 2022-09-31 V1 Untested -# zorruno 2024-06-02 V2 YAML Tidyups -############################################# -############################################# - -############################################# -# Variable Substitutions -# Give this a useful name & description here -# and change values accordingly -############################################# -substitutions: - devicename: "esp-leafbat2" - friendly_name: "Nissan Leaf 12V Battery Monitor" - description_comment: "Nissan Leaf 12V Battery Monitor (when home)" - - #if NOT using a secrets file, just replace these with the passwords etc in speech marks - api_key: !secret esp-leafbat_api_key #unfortunately you can't use substitutions in secrets names - ota_pass: !secret esp-leafbat_ota_pass #unfortunately you can't use substitutions in secrets names - #update_time: 30s #update time for for temp sensors etc - - wifi_ssid: !secret wifi_ssid - wifi_pass: !secret wifi_password - #Add these if we are giving it a static ip, or remove them in the Wifi section - static_ip_address: !secret esp-leafbat_static_ip - static_ip_gateway: !secret esp-leafbat_gateway - static_ip_subnet: !secret esp-leafbat_subnet - - mqtt_server: !secret mqtt_server - mqtt_username: !secret mqtt_username - mqtt_password: !secret mqtt_password - mqtt_topic: "esphome/esp-leafbat2" #main topic for the mqtt server, call it what you like - - web_server_username: !secret web_server_username - web_server_password: !secret web_server_password - - fallback_ap_ssid: "Esp-Leafbat2 Fallback Hotspot" - fallback_ap_password: !secret fallback_ap_password - - - - -############################################# -# ESPHome -############################################# -esphome: - name: ${devicename} - comment: ${description_comment} #appears on the esphome page in HA - -######################################## -# Specific board for ESPHome device -######################################## -esp8266: - board: d1_mini - -############################################# -# ESPHome Logging Enable -############################################# -logger: - -######################################## -# Enable the Home Assistant API -######################################## -api: - encryption: - key: ${api_key} - -######################################## -# Enable Over the Air Update Capability -# Safe mode will detect boot loops -######################################## -ota: - safe_mode: true - password: ${ota_pass} - -######################################## -# Use Wifi -# (credentials are in secrets file) -######################################## -wifi: - ssid: ${wifi_ssid} - password: ${wifi_password} - # Details for fallback hotspot (captive portal) in case wifi connection fails - ap: - ssid: ${fallback_ap_ssid} - password: ${fallback_ap_password} - # Static IP (for lower power/quicker on time) - manual_ip: - static_ip: ${static_ip_address} - gateway: ${static_ip_gateway} - subnet: ${static_ip_subnet} - -############################################# -# Fallback captive portal -############################################# -captive_portal: - -######################################## -# Web Portal for display and monitoring -######################################## -web_server: - port: 80 - auth: - username: ${web_server_username} - password: ${web_server_password} - -######################################## -# MQTT Monitoring -######################################## -mqtt: - broker: ${mqtt_server} - topic_prefix: ${mqtt_topic} - username: ${mqtt_username} - password: ${mqtt_password} - # - # Availability Topic - #birth_message: - # topic: esphome/esp-leafbat2/availability - # payload: online - #will_message: - # topic: esphome/esp-leafbat2/availability - # payload: offline - # A way to prevent deep sleep using MQTT command - on_message: - - topic: viewroad-commands/leafbat2/deepsleep - payload: 'ON' - then: - - deep_sleep.prevent: deep_sleep_1 - - topic: viewroad-commands/leafbat2/deepsleep - payload: 'ON' - then: - - deep_sleep.enter: deep_sleep_1 - -######################################## -# Deep Sleep -######################################## -deep_sleep: - run_duration: 20s - sleep_duration: 10min - id: deep_sleep_1 - -############################################# -############################################# -# MAIN SENSORS -############################################# -############################################# -sensor: - # Quality of Wifi in dBm - - platform: wifi_signal - name: "WiFi Signal" - update_interval: 10s - retain: true - # Analog sensor for voltage reading (A0) - - platform: adc - pin: A0 - name: "Battery Voltage" - update_interval: 10s - retain: true - filters: - - multiply: 18.52 # trial and error calc/measure - - calibrate_linear: - - 5.99 -> 6.0 - - 11.98 -> 11.99 - - 16.98 -> 16.98 - -#name: "Battery Voltage" -# Optional variables: -#retain: true \ No newline at end of file diff --git a/esphome/esp-mainovenmonitor.yaml b/esphome/esp-mainovenmonitor.yaml index b1fbacf..dcd587d 100644 --- a/esphome/esp-mainovenmonitor.yaml +++ b/esphome/esp-mainovenmonitor.yaml @@ -69,8 +69,15 @@ api: # https://esphome.io/components/ota.html?highlight=ota ############################################# ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: ############################################# # Wifi Settings @@ -80,20 +87,21 @@ ota: # NONE (least power saving, Default for ESP8266) # LIGHT (Default for ESP32) # HIGH (most power saving) -############################################# +############################################# wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password + ssid: ${wifi_ssid} + password: ${wifi_password} #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode #manual_ip: #optional static IP address - #static_ip: 192.168.x.x - #gateway: 192.168.X.x - #subnet: 255.255.255.0 + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode - ssid: $devicename fallback AP - password: !secret fallback_ap_password - ap_timeout: 5min #default is 1min -captive_portal: # Fallback captive portal https://esphome.io/components/captive_portal.html + ssid: ${devicename} fallback AP + password: ${fallback_ap_password} + ap_timeout: 30min #Time until it brings up fallback AP. default is 1min + +captive_portal: ############################################# # Web Portal for display and monitoring @@ -127,7 +135,6 @@ mqtt: # PEZEM4 Power Monitoring # https://esphome.io/components/sensor/pzemac.html ############################################# - uart: rx_pin: GPIO3 tx_pin: GPIO1 diff --git a/esphome/esp-midesklamp1s.yaml b/esphome/esp-midesklamp1s.yaml new file mode 100644 index 0000000..8ba2518 --- /dev/null +++ b/esphome/esp-midesklamp1s.yaml @@ -0,0 +1,291 @@ +############################################# +############################################# +# Mi Smart LED Desk Lamp 1S +# ESP32, LED Strip with variable white colour temp, rotary encoder +# https://www.mi.com/global/product/mi-led-desk-lamp-1s/ +############################################# +############################################# + +############################################# +# SECRETS +# Secrets file is usually at config/secrets.yaml +# or config/esphome/secrets.yaml +# depending on your setup with HA +############################################# +# SECRETS FILE needs these specific secrets: +# esp-midesklamp1s_api_key +# esp-midesklamp1s_ota_pass +# esp-midesklamp1s_static_ip (Optional) +# esp-midesklamp1s_gateway (Optional) +# esp-midesklamp1s_subnet (Optional) +# +# SECRETS FILE needs these generic Secrets: +# wifi_ssid +# wifi_password +# fallback_ap_password +# mqtt_server +# mqtt_username +# mqtt_password +# web_server_username (Optional) +# web_server_password (Optional) +############################################# + +############################################# +# VARIABLE SUBSTITUTIONS +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + device_name: esp-midesklamp1s + friendly_name: "Mi 1S Lamp Office " + description_comment: "Office Desk Lamp with variable white colour temp and rotary encoder for brightness" + + # if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-midesklamp1s_api_key # unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-midesklamp1s_ota_pass # unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + + # Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-midesklamp1s_static_ip + #static_ip_gateway: !secret esp-midesklamp1s_gateway + #static_ip_subnet: !secret esp-midesklamp1s_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" # main topic for the mqtt server, call it what you like + + web_server_username: !secret web_server_username + web_server_password: !secret web_server_password + + update_time: 60s # update time for for general temp sensors etc + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${device_name} + friendly_name: ${friendly_name} # appears as main name on the esphome page in HA + comment: ${description_comment} # appears as comment on the esphome page in HA + #min_version: 2024.6.0 + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: esp32doit-devkit-v1 + framework: + type: esp-idf # Suggest using the ESP-IDF Framework. Changing from 'arduino' to 'esp-idf' needs a cabled flash to correct partitions + version: recommended # recommended, latest or dev + + # these just for the esp32doit-devkit-v1 and Mi S Lamp + sdkconfig_options: + CONFIG_FREERTOS_UNICORE: y + advanced: + ignore_efuse_mac_crc: true + +############################################# +# ESPHome Logging Enabl +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO # INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: # Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: ${device_name} fallback AP + password: ${fallback_ap_password} + ap_timeout: 30min # Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +#web_server: +# port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${device_name} + username: ${mqtt_username} + password: ${mqtt_password} + +############################################# +# Time Component +# https://esphome.io/components/time/index.html#time-component +# Sync with HA Time. Probably not really necessary. +############################################# +time: + - platform: homeassistant + id: homeassistant_time + +############################################# +# Text Sensors +# https://esphome.io/components/text_sensor/index.html +############################################# +text_sensor: + - platform: version + name: ${friendly_name} Version + - platform: wifi_info + ip_address: + name: ${friendly_name} IP Address + +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +sensor: + - platform: uptime # Uptime for this device + name: ${friendly_name} Uptime + update_interval: ${update_time} + - platform: wifi_signal # Wifi Strength + name: ${friendly_name} Wifi Signal + update_interval: ${update_time} + + # Mi Desk Lamp 1S Configuration + - platform: rotary_encoder + id: rotation + pin_a: GPIO27 + pin_b: GPIO26 + resolution: 2 + on_value: + then: + - if: + condition: + # Check if Button is pressed while rotating + lambda: "return id(button).state;" + then: + # If Button is pressed, change CW/WW + - lambda: |- + auto min_temp = id(light1).get_traits().get_min_mireds(); + auto max_temp = id(light1).get_traits().get_max_mireds(); + auto cur_temp = id(light1).current_values.get_color_temperature(); + auto new_temp = max(min_temp, min(max_temp, cur_temp + (x*10))); + auto call = id(light1).turn_on(); + call.set_color_temperature(new_temp); + call.perform(); + else: + # If Button is not pressed, change brightness + - light.dim_relative: + id: light1 + relative_brightness: !lambda |- + return x / 25.0; + # Reset Rotation to 0 + - sensor.rotary_encoder.set_value: + id: rotation + value: 0 + +############################################# +# Binary Sensors +# https://esphome.io/components/binary_sensor/index.html +############################################# +binary_sensor: + - platform: gpio + id: button + pin: + number: GPIO33 + inverted: True + mode: INPUT_PULLDOWN + on_click: + then: + - light.toggle: + id: light1 + transition_length: 0.2s + +############################################# +# Base Output Component +# https://esphome.io/components/output/index.html#base-output-configuration +############################################# +output: + - platform: ledc # Cool White LED PWM + pin: GPIO2 + id: output_cw + frequency: 40000Hz + power_supply: power + - platform: ledc + pin: GPIO4 # Warm White LED PWM + id: output_ww + power_supply: power + frequency: 40000Hz + +############################################# +# Power Supply Component +# https://esphome.io/components/power_supply.html#power-supply-component +############################################# +power_supply: + - id: power + pin: GPIO12 + enable_time: 0s + keep_on_time: 0s + +############################################# +# Light Component +# https://esphome.io/components/light/index.html#light-component +############################################# +light: + - platform: cwww # https://esphome.io/components/light/cwww.html#cold-white-warm-white-light + id: light1 + default_transition_length: 0s + constant_brightness: true + name: "${friendly_name} Light" + cold_white: output_cw + warm_white: output_ww + cold_white_color_temperature: 4800 K + warm_white_color_temperature: 2500 K # 2500k is the original value of the lamp. To correct binning for 2700k to look more like 2700k use 2650k instead + restore_mode: ALWAYS_ON + gamma_correct: 0 \ No newline at end of file diff --git a/esphome/esp-occupancylaundry.yaml b/esphome/esp-occupancylaundry.yaml deleted file mode 100644 index 722d840..0000000 --- a/esphome/esp-occupancylaundry.yaml +++ /dev/null @@ -1,439 +0,0 @@ - -############################################# -############################################# -# HiLink LD1125H mmWave sensor, with BME280 Temp/Hum/Pres Sensor on an ESP32 -# https://github.com/patrick3399/Hi-Link_mmWave_Radar_ESPHome/tree/main -# https://github.com/patrick3399/Hi-Link_mmWave_Radar_ESPHome/blob/main/LD1125H/ESP32-LD1125H-Complete.yaml -# -# mth1: 0 to 2.8m sensitive -# mth2: 2.8 to 8m sensitive -# mth3: above 8m sensitive -# rmax: max distance -# Clearance Time: Mov/Occ to Clearance waiting time -# Movement Time: Mov to Occ waiting time -# -############################################# -############################################# - -############################################# -# Variable Substitutions -############################################# -substitutions: - devicename: "esp-occupancylaundry" - friendly_name: "Laundry Occupancy" - description_comment: "D1 Mini ESP32 with LD1125H mmWave and environment sensors for laundry" - api_key: !secret esp-occupancylaundry_api_key #unfortunately you can't use substitutions in secrets names - ota_pass: !secret esp-occupancylaundry_ota_pass #unfortunately you can't use substitutions in secrets names - mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like - update_time: 30s #update time for for temp sensors etc - -############################################# -# ESPHome -# https://esphome.io/components/esphome.html -############################################# -esphome: - name: ${devicename} - comment: ${description_comment} #appears on the esphome page in HA - on_boot: #LD1125H Initial Setting, will remember previous values (if set) - priority: -200 - then: - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th1st = "mth1=" + str_sprintf("%.0f",id(LD1125H_mth1).state) +"\r\n"; - return std::vector(th1st.begin(), th1st.end()); - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th2st = "mth2=" + str_sprintf("%.0f",id(LD1125H_mth2).state) +"\r\n"; - return std::vector(th2st.begin(), th2st.end()); - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th3st = "mth3=" + str_sprintf("%.0f",id(LD1125H_mth3).state) +"\r\n"; - return std::vector(th3st.begin(), th3st.end()); - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string rmaxst = "rmax=" + str_sprintf("%.1f",id(LD1125H_rmax).state) +"\r\n"; - return std::vector(rmaxst.begin(), rmaxst.end()); - -############################################# -# ESP Platform and Framework -# https://esphome.io/components/esp32.html -############################################# -esp32: - #board: nodemcu-32s - board: esp32dev - framework: - #type: arduino - type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. - version: recommended #recommended, latest or dev - -############################################# -# i2s bus -# https://esphome.io/components/i2c.html -############################################# -i2c: - sda: GPIO19 - scl: GPIO21 - scan: True - frequency: 100kHz #10, 50, 100, 200, 800 are possible settings, 100kHz was reliable for me - -############################################# -# ESPHome external or custom components to use -# https://esphome.io/components/external_components.html -############################################# -external_components: - - source: - type: git - url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. - components: [ serial ] #text_sensor that reads lines for a uart. Also, a sensor that reads single values from the uart. - -############################################# -# ESPHome Logging Enable -# https://esphome.io/components/logger.html -############################################# -logger: - level: INFO #INFO Level suggested, or DEBUG for testing - #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) - #esp8266_store_log_strings_in_flash: false - #tx_buffer_size: 64 - -############################################# -# Enable the Home Assistant API -# https://esphome.io/components/api.html -############################################# -api: - encryption: - key: ${api_key} - -############################################# -# Enable Over the Air Update Capability -# https://esphome.io/components/ota.html?highlight=ota -############################################# -ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} - -############################################# -# Wifi Settings -# https://esphome.io/components/wifi.html -############################################# -wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password - #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode - #manual_ip: #optional static IP address - #static_ip: 192.168.x.x - #gateway: 192.168.X.x - #subnet: 255.255.255.0 - ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode - ssid: $devicename fallback AP - password: !secret fallback_ap_password - ap_timeout: 5min #default is 1min - -############################################# -# Web Portal for display and monitoring -# Turning this off is probably a good idea to save resources. -# https://esphome.io/components/web_server.html -############################################# -#web_server: -# port: 80 -# username: !secret web_server_username #probably a good idea to secure it -# password: !secret web_server_password - -############################################# -# MQTT Monitoring -# https://esphome.io/components/mqtt.html?highlight=mqtt -# MUST also have api enabled if you enable MQTT -############################################# -mqtt: - broker: !secret mqtt_server - topic_prefix: ${mqtt_topic}/${devicename} - username: !secret mqtt_username - password: !secret mqtt_password - -############################################# -# Bluetooth -# https://esphome.io/components/bluetooth_proxy.html -# https://esphome.io/components/esp32_ble_tracker.html -# Remember that this takes a LOT of processing. On the -# ESP32, enable the IDF framework, and disable the -# Web server component. Changing to the IDF framework -# needs to be via cable not OTA to change the -# partition setup. -############################################# -#esp32_ble_tracker: - -#bluetooth_proxy: - #active: true - - -############################################# -# UART Serial -# hardware on EPS32, but software, and can be glitchy on ESP8266 -# https://esphome.io/components/uart.html?highlight=uart -############################################# -uart: - id: LD1125H_UART_BUS - rx_pin: GPIO16 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang - tx_pin: GPIO17 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang -# rx_pin: GPIO1 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang -# tx_pin: GPIO0 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang - baud_rate: 115200 - data_bits: 8 - stop_bits: 1 - parity: NONE -# debug: -# direction: BOTH -# dummy_receiver: false -# after: -# delimiter: "\n" -# sequence: -# - lambda: UARTDebug::log_string(direction, bytes); - -############################################# -# Global Variables for use in automations etc -# https://esphome.io/guides/automations.html?highlight=globals#global-variables -############################################# -globals: - - id: LD1125H_Last_Time - type: time_t - restore_value: no - initial_value: time(NULL) - - id: LD1125H_Last_Mov_Time - type: time_t - restore_value: no - initial_value: time(NULL) - - id: LD1125H_Clearence_Status - type: bool - restore_value: no - initial_value: "false" - -############################################# -# General esp status LED -# https://esphome.io/components/status_led.html -############################################# -status_led: - pin: - number: GPIO2 #ESP32 Onboard LED - ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins - inverted: false - -############################################# -# Interval Automations -# https://esphome.io/guides/automations.html -############################################# -interval: - - interval: 1s #Clearance Scan Time - setup_priority: -200 - then: - lambda: |- - if ((time(NULL)-id(LD1125H_Last_Time))>id(LD1125H_Clear_Time).state) { - if ((id(LD1125H_Clearence_Status) == false) || (id(LD1125H_Occupancy).state != "Clearance")) { - id(LD1125H_Occupancy).publish_state("Clearance"); - id(LD1125H_Clearence_Status) = true; - } - if (id(LD1125H_MovOcc_Binary).state == true) { - id(LD1125H_MovOcc_Binary).publish_state(false); - } - if (id(LD1125H_Mov_Binary).state == true) { - id(LD1125H_Mov_Binary).publish_state(false); - } - } - -############################################# -# Number Sensors (custom component) -# refer https://github.com/ssieb/esphome_components/tree/master/components/serial -############################################# -number: - - platform: template - name: ${friendly_name} LD1125H mth1 #mth1 is 0~2.8m Sensitivity. - id: LD1125H_mth1 - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "60.0" #Default mth1 Setting - min_value: 10.0 - max_value: 600.0 - step: 5.0 - set_action: - then: - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th1st = "mth1=" + str_sprintf("%.0f",x) +"\r\n"; - return std::vector(th1st.begin(), th1st.end()); - - platform: template - name: ${friendly_name} LD1125H mth2 #mth2 is 2.8~8m Sensitivity. - id: LD1125H_mth2 - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "30" #Default mth2 Setting - min_value: 5 - max_value: 300 - step: 5 - set_action: - then: - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th2st = "mth2=" + str_sprintf("%.0f",x) +"\r\n"; - return std::vector(th2st.begin(), th2st.end()); - - platform: template - name: ${friendly_name} LD1125H mth3 #mth3 is above 8m Sensitivity. - id: LD1125H_mth3 - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "20" #Default mth3 Setting - min_value: 5 - max_value: 200 - step: 5 - set_action: - then: - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string th3st = "mth3=" + str_sprintf("%.0f",x) +"\r\n"; - return std::vector(th3st.begin(), th3st.end()); - - platform: template - name: ${friendly_name} LD1125H rmax #rmax is max detection distance. - id: LD1125H_rmax - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "8" #Default rmax Setting - min_value: 0.4 - max_value: 12 - step: 0.1 - set_action: - then: - - uart.write: - id: LD1125H_UART_BUS - data: !lambda |- - std::string rmaxst = "rmax=" + str_sprintf("%.1f",x) +"\r\n"; - return std::vector(rmaxst.begin(), rmaxst.end()); - - platform: template - name: ${friendly_name} LD1125H Clearence Time - id: LD1125H_Clear_Time - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "5" #LD1125H Mov/Occ > Clearence Time Here - min_value: 0.5 - max_value: 20 - step: 0.5 - - platform: template - name: ${friendly_name} LD1125H Movement Time - id: LD1125H_Mov_Time - icon: "mdi:cogs" - optimistic: true - restore_value: true #If you don't want to store the setting at ESP, set it to false. - initial_value: "1" #LD1125H Mov > Occ Time Here - min_value: 0.5 - max_value: 10 - step: 0.5 - -############################################# -# General Sensors -# https://esphome.io/components/sensor/index.html -############################################# -sensor: - - platform: bme280_i2c - temperature: - name: ${friendly_name} BME280 Temp - accuracy_decimals: 1 - oversampling: 2x - pressure: - name: ${friendly_name} BME280 Pressure - oversampling: 2x - humidity: - name: ${friendly_name} BME280 Humidity - accuracy_decimals: 1 - oversampling: 2x - address: 0x76 - update_interval: ${update_time} - - platform: uptime - name: ${friendly_name} Uptime - - platform: template - name: ${friendly_name} LD1125H Distance - id: LD1125H_Distance - icon: "mdi:signal-distance-variant" - unit_of_measurement: "m" - accuracy_decimals: 2 - filters: # Use Fliter To Debounce - - sliding_window_moving_average: - window_size: 8 - send_every: 2 - - heartbeat: 0.2s - -############################################# -# Text Sensors (custom component) -# refer https://github.com/ssieb/esphome_components/tree/master/components/serial -############################################# -text_sensor: - - platform: serial - uart_id: LD1125H_UART_BUS - name: ${friendly_name} LD1125H UART Text - id: LD1125H_UART_Text - icon: "mdi:format-text" - internal: True #If Don't Want to See UART Receive Data, Set To True - on_value: - lambda: |- - if (id(LD1125H_UART_Text).state.substr(0,3) == "occ") { - id(LD1125H_Distance).publish_state(atof(id(LD1125H_UART_Text).state.substr(9).c_str())); - if ((time(NULL)-id(LD1125H_Last_Mov_Time))>id(LD1125H_Mov_Time).state) { - id(LD1125H_Occupancy).publish_state("Occupancy"); - if (id(LD1125H_MovOcc_Binary).state == false) { - id(LD1125H_MovOcc_Binary).publish_state(true); - } - if (id(LD1125H_Mov_Binary).state == true) { - id(LD1125H_Mov_Binary).publish_state(false); - } - } - if (id(LD1125H_MovOcc_Binary).state == false) { - id(LD1125H_MovOcc_Binary).publish_state(true); - } - id(LD1125H_Last_Time) = time(NULL); - if (id(LD1125H_Clearence_Status) == true) { - id(LD1125H_Clearence_Status) = false; - } - } - else if (id(LD1125H_UART_Text).state.substr(0,3) == "mov") { - id(LD1125H_Distance).publish_state(atof(id(LD1125H_UART_Text).state.substr(9).c_str())); - id(LD1125H_Occupancy).publish_state("Movement"); - if (id(LD1125H_MovOcc_Binary).state == false) { - id(LD1125H_MovOcc_Binary).publish_state(true); - } - if (id(LD1125H_Mov_Binary).state == false) { - id(LD1125H_Mov_Binary).publish_state(true); - } - id(LD1125H_Last_Mov_Time) = time(NULL); - id(LD1125H_Last_Time) = time(NULL); - if (id(LD1125H_Clearence_Status) == true) { - id(LD1125H_Clearence_Status) = false; - } - } - - platform: template - name: ${friendly_name} LD1125H Occupancy Status - id: LD1125H_Occupancy - icon: "mdi:motion-sensor" - -############################################# -# Binary Sensors -# https://esphome.io/components/binary_sensor/index.html -############################################# -binary_sensor: - - platform: status - name: ${friendly_name} Status - - platform: template - name: ${friendly_name} LD1125H Occupancy or Movement - id: LD1125H_MovOcc_Binary - device_class: occupancy - - platform: template - name: ${friendly_name} LD1125H Movement - id: LD1125H_Mov_Binary - device_class: motion \ No newline at end of file diff --git a/esphome/esp-occupancyoffice.yaml b/esphome/esp-occupancyoffice.yaml index d862a24..2375a74 100644 --- a/esphome/esp-occupancyoffice.yaml +++ b/esphome/esp-occupancyoffice.yaml @@ -1,4 +1,3 @@ - ############################################# ############################################# # HiLink LD1125H mmWave sensor, with BME280 Temp/Hum/Pres Sensor on an ESP32 @@ -24,7 +23,7 @@ ############################################# substitutions: devicename: "esp-occupancyoffice" - friendly_name: "Office State" + friendly_name: "Office Occupancy & Environment" description_comment: "D1 Mini ESP32 with LD1125H mmWave and environment sensors for downstairs office" #if NOT using a secrets file, just replace these with the passwords etc (in quotes) @@ -54,7 +53,9 @@ substitutions: ############################################# esphome: name: ${devicename} + friendly_name: ${friendly_name} comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 on_boot: #LD1125H Initial Setting, will remember previous values (if set) priority: -200 then: @@ -84,23 +85,12 @@ esphome: # https://esphome.io/components/esp32.html ############################################# esp32: - #board: nodemcu-32s board: esp32dev framework: #type: arduino type: esp-idf #Suggest using the ESP-IDF Framework. Changing from arduino to esp-idf needs a cabled download to change partitions version: recommended #recommended, latest or dev -############################################# -# i2s bus -# https://esphome.io/components/i2c.html -############################################# -i2c: - sda: GPIO19 - scl: GPIO21 - scan: True - frequency: 100kHz #10, 50, 100, 200, 800 are possible settings, 100kHz was reliable for me - ############################################# # ESPHome external or custom components to use # https://esphome.io/components/external_components.html @@ -129,14 +119,26 @@ logger: api: encryption: key: ${api_key} + on_client_connected: + - esp32_ble_tracker.start_scan: + continuous: true + on_client_disconnected: + - esp32_ble_tracker.stop_scan: ############################################# # Enable Over the Air Update Capability # https://esphome.io/components/ota.html?highlight=ota ############################################# ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: ############################################# # Wifi Settings @@ -155,10 +157,10 @@ wifi: #static_ip: ${static_ip_address} #gateway: ${static_ip_gateway} #subnet: ${static_ip_subnet} - ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode ssid: ${devicename} fallback AP password: ${fallback_ap_password} - ap_timeout: 5min #default is 1min + ap_timeout: 30min #Time until it brings up fallback AP. default is 1min ############################################# # Web Portal for display and monitoring @@ -182,20 +184,17 @@ mqtt: username: ${mqtt_username} password: ${mqtt_password} -############################################# -# Bluetooth -# https://esphome.io/components/bluetooth_proxy.html -# https://esphome.io/components/esp32_ble_tracker.html -# Remember that this takes a LOT of processing. On the -# ESP32, enable the IDF framework, and disable the -# Web server component. Changing to the IDF framework -# needs to be via cable not OTA to change the -# partition setup. -############################################# -#bluetooth_proxy: -# active: true - -#esp32_ble_tracker: +############################################# +# i2c bus +# https://esphome.io/components/i2c.html +# 10, 50, 100, 200, 800 are possible settings +# for frequency, 50kHz is default +############################################# +i2c: + sda: GPIO19 + scl: GPIO21 + scan: True #look for devices on boot up and report + frequency: 50kHz ############################################# # UART Serial @@ -211,6 +210,24 @@ uart: stop_bits: 1 parity: NONE +############################################# +# Bluetooth +# https://esphome.io/components/bluetooth_proxy.html +# https://esphome.io/components/esp32_ble_tracker.html +# Remember that this takes a LOT of processing. On the +# ESP32, enable the IDF framework, and disable the +# Web server component. Changing to the IDF framework +# needs to be via cable not OTA to change the +# partition setup. +############################################# +bluetooth_proxy: + active: true + cache_services: true + +esp32_ble_tracker: + scan_parameters: + continuous: false + ############################################# # Global Variables for use in automations etc # https://esphome.io/guides/automations.html?highlight=globals#global-variables @@ -374,8 +391,10 @@ sensor: oversampling: 2x address: 0x76 update_interval: ${update_time} + - platform: uptime name: ${friendly_name} Uptime + - platform: template name: ${friendly_name} LD1125H Distance id: LD1125H_Distance diff --git a/esphome/esp-occupancystair.yaml b/esphome/esp-occupancystair.yaml index f2af4f0..ae89c80 100644 --- a/esphome/esp-occupancystair.yaml +++ b/esphome/esp-occupancystair.yaml @@ -18,7 +18,7 @@ ############################################# substitutions: devicename: "esp-occupancystair" - friendly_name: "Stair Occupancy" + friendly_name: "Stair Occupancy and Underhouse Environment" description_comment: "D1 Mini ESP32 with LD2410 mmWave for internal stairwell and environment sensors for under house" api_key: !secret esp-occupancystair_api_key #unfortunately you can't use substitutions in secrets names ota_pass: !secret esp-occupancystair_ota_pass #unfortunately you can't use substitutions in secrets names @@ -46,7 +46,9 @@ substitutions: ############################################# esphome: name: ${devicename} + friendly_name: ${friendly_name} comment: ${description_comment} #appears on the esphome page in HA + min_version: 2024.6.0 #on_boot: #Initial Setting, will remember previous values (if set) #priority: -200 #then: @@ -95,8 +97,15 @@ api: # https://esphome.io/components/ota.html?highlight=ota ############################################# ota: - safe_mode: true #Safe mode will detect boot loops - password: ${ota_pass} + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: ############################################# # Wifi Settings @@ -115,18 +124,18 @@ wifi: #static_ip: ${static_ip_address} #gateway: ${static_ip_gateway} #subnet: ${static_ip_subnet} - ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode ssid: ${devicename} fallback AP password: ${fallback_ap_password} - ap_timeout: 5min #default is 1min + ap_timeout: 30min #Time until it brings up fallback AP. default is 1min ############################################# # Web Portal for display and monitoring # Turning this off is probably a good idea to save resources. # https://esphome.io/components/web_server.html ############################################# -web_server: - port: 80 +#web_server: +# port: 80 # auth: # username: ${web_server_username} #probably a good idea to secure it # password: ${web_server_password} diff --git a/esphome/esp-weatherstation.yaml b/esphome/esp-weatherstation.yaml index 716d58f..b255825 100644 --- a/esphome/esp-weatherstation.yaml +++ b/esphome/esp-weatherstation.yaml @@ -171,9 +171,15 @@ api: ############################################# ota: - platform: esphome - #safe_mode: true #Safe mode will detect boot loops password: ${ota_pass} +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + ############################################# # Wifi Settings # https://esphome.io/components/wifi.html @@ -191,10 +197,10 @@ wifi: #static_ip: 192.168.x.x #gateway: 192.168.X.x #subnet: 255.255.255.0 - ap: #Details for fallback hotspot (captive portal) in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode ssid: $devicename fallback AP password: !secret fallback_ap_password - ap_timeout: 5min #default is 1min + ap_timeout: 30min #default is 1min ############################################# # Web Portal for display and monitoring @@ -473,9 +479,9 @@ sensor: window_size: 4 send_every: 1 #- clamp: - # min_value: 0 - # max_value: 250 #if anything over that, we have debounce issues or are going to die - # ignore_out_of_range: true + # min_value: 0 + # max_value: 250 #if anything over that, we have debounce issues or are going to die + # ignore_out_of_range: true ################################ # Pulse Meter for measuring wind speed diff --git a/esphome/esp-winefridge.yaml b/esphome/esp-winefridge.yaml new file mode 100644 index 0000000..08044ed --- /dev/null +++ b/esphome/esp-winefridge.yaml @@ -0,0 +1,228 @@ +############################################# +############################################# + +############################################# +############################################# + +############################################# +# Variable Substitutions +# Give this a useful name & description here +# and change values accordingly +############################################# +substitutions: + devicename: "esp-winefridge" + friendly_name: "Wine Fridge Controller" + description_comment: "Peltier based wine fridge thermostat controller" + + #if NOT using a secrets file, just replace these with the passwords etc in speech marks + api_key: !secret esp-winefridge_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-winefridge_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_pass: !secret wifi_password + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + update_time: 30s #update time for for various temp sensors etc + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + comment: ${description_comment} #appears on the esphome page in HA + #on_boot: #Initial Setting stuff + #priority: -200 + #then: + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html OR +# https://esphome.io/components/esp8266.html +############################################# +#esp32: +# board: +# framework: +# type: arduino +# #type: esp-idf #Suggested Use ESP-IDF Framework for ESP32, or unplugging the UART Cable Might Cause ESP32 Hang. +# version: recommended #recommended, latest or dev + +esp8266: + board: d1_mini + + + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: INFO #INFO Level suggested, or DEBUG for testing + #baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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_pass} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: 192.168.x.x + #gateway: 192.168.X.x + #subnet: 255.255.255.0 + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: $devicename fallback AP + password: !secret fallback_ap_password + ap_timeout: 30min #default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off if you don't really need it +# is probably a good idea to save resources. +# Also, don't use it with other big ESP32 components +# such as Bluetooth proxy (it will run out of flash +# and not compile, or it will crash occasionally) +# https://esphome.io/components/web_server.html +############################################# +web_server: + port: 80 +# version: 1 #V1 occasionally works better, V2 The nicer page +# username: !secret web_server_username #probably a good idea to secure it +# password: !secret web_server_password + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + + +############################################# +# General espHome status LED +# Not needed, but can be useful to see issues +# https://esphome.io/components/status_led.html +############################################# +status_led: + pin: + number: GPIO2 #Wemos ESP32 and ESP8266 Onboard LEDs use GPIO2 + inverted: false + #ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins + +############################################# +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +############################################# +sensor: + + ################################ + # UPTIME + # Device uptime info + # https://esphome.io/components/sensor/uptime.html + ################################ + - platform: uptime + name: ${friendly_name} Uptime + + ################################ + # WIFI SIGNAL + # Quality of Wifi in dBm + # https://esphome.io/components/sensor/wifi_signal.html + ################################ + - platform: wifi_signal + name: ${friendly_name} WiFi Signal + update_interval: ${update_time} + #retain: true #retain useful if sleeping + + - platform: resistance + sensor: temp_analogue + configuration: DOWNSTREAM + resistor: 4.7kOhm + name: Resistance Sensor + + - platform: adc + id: temp_analogue + #update_interval: 10s + update_interval: never #don't update until the correect GPIO turns on. This allows two devices on one AI. + name: "Temp Analogue" + pin: A0 + filters: + - multiply: 3.3 + + - platform: template + name: "Analogue Sensor 1" + update_interval: never + id: template_analoguesensor_1 + lambda: |- + return id(temp_analogue); + + - platform: template + name: "Analogue Sensor 2" + update_interval: never + id: template_analoguesensor_2 + lambda: |- + return id(temp_analogue); + # lambda: |- return float(id(ch1s)); + +switch: + - platform: gpio + pin: D0 + id: a1_sensor_vcc + + - platform: gpio + pin: D1 + id: a2_sensor_vcc + +interval: + - interval: 60s + then: + - switch.turn_on: a1_sensor_vcc + - component.update: temp_analogue + - component.update: template_analoguesensor_1 + - switch.turn_off: a1_sensor_vcc + - switch.turn_on: a2_sensor_vcc + - component.update: temp_analogue + - component.update: template_analoguesensor_2 + - switch.turn_off: a2_sensor_vcc + + + diff --git a/esphome/trash/esp-entmulti.yaml b/esphome/trash/esp-entmulti.yaml new file mode 100644 index 0000000..f0c7195 --- /dev/null +++ b/esphome/trash/esp-entmulti.yaml @@ -0,0 +1,486 @@ +############################################# +############################################# +# +# HiLink LD1125H mmWave sensor, with BME280 Temp/Hum/Pres Sensor on an ESP32 +# https://zorruno.com/2024/mmwave-occupancy-with-esp32-ld1125h/ +# +# https://github.com/patrick3399/Hi-Link_mmWave_Radar_ESPHome/tree/main +# https://github.com/patrick3399/Hi-Link_mmWave_Radar_ESPHome/blob/main/LD1125H/ESP32-LD1125H-Complete.yaml +# +# mth1: 0 to 2.8m sensitive +# mth2: 2.8 to 8m sensitive +# mth3: above 8m sensitive +# rmax: max distance +# Clearance Time: Mov/Occ to Clearance waiting time +# Movement Time: Mov to Occ waiting time +# +############################################# +############################################# + +############################################# +# Variable Substitutions +# Give the device a useful name & description here +# and change values accordingly. +############################################# +substitutions: + devicename: "esp-entmulti" + friendly_name: "Entrance Multisensor" + description_comment: "D1 Mini ESP32 outside entranceway with BT Proxy, mmWave presence and more" + + #if NOT using a secrets file, just replace these with the passwords etc (in quotes) + api_key: !secret esp-entmulti_api_key #unfortunately you can't use substitutions in secrets names + ota_pass: !secret esp-entmulti_ota_pass #unfortunately you can't use substitutions in secrets names + wifi_ssid: !secret wifi_ssid + wifi_password: !secret wifi_password + fallback_ap_password: !secret fallback_ap_password + #Add these if we are giving it a static ip, or remove them in the Wifi section + #static_ip_address: !secret esp-entmulti_static_ip + #static_ip_gateway: !secret esp-entmulti_gateway + #static_ip_subnet: !secret esp-entmulti_subnet + + mqtt_server: !secret mqtt_server + mqtt_username: !secret mqtt_username + mqtt_password: !secret mqtt_password + mqtt_topic: "esphome" #main topic for the mqtt server, call it what you like + + #web_server_username: !secret web_server_username + #web_server_password: !secret web_server_password + + update_time: 30s #update time for for general temp sensors etc + +############################################# +# ESPHome +# https://esphome.io/components/esphome.html +############################################# +esphome: + name: ${devicename} + comment: ${description_comment} #appears on the esphome page in HA + + +############################################# +# ESP Platform and Framework +# https://esphome.io/components/esp32.html +############################################# +esp32: + board: esp32dev + framework: + #type: arduino + type: esp-idf #Suggested Use ESP-IDF Framework, or Plug Out the UART Cable Might Cause ESP32 Hang. + version: recommended #recommended, latest or dev + +############################################# +# ESPHome external or custom components to use +# https://esphome.io/components/external_components.html +# https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +#external_components: +# - source: +# type: git +# url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. +# components: [ serial ] #text_sensor that reads lines for a uart. Also, a sensor that reads single binary values from the uart. + +############################################# +# ESPHome Logging Enable +# https://esphome.io/components/logger.html +############################################# +logger: + level: DEBUG #INFO Level suggested, or DEBUG for testing + baud_rate: 0 #set to 0 for no logging via UART, needed if you are using it for other serial things (eg PZEM) + #esp8266_store_log_strings_in_flash: false + #tx_buffer_size: 64 + +############################################# +# Enable the Home Assistant API +# https://esphome.io/components/api.html +############################################# +api: + encryption: + key: ${api_key} + +############################################# +# Enable Over the Air Update Capability +# https://esphome.io/components/ota.html?highlight=ota +############################################# +ota: + - platform: esphome + password: ${ota_pass} + +############################################# +# Safe Mode +# Safe mode will detect boot loops +# https://esphome.io/components/safe_mode +############################################# +safe_mode: + +############################################# +# 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} + #power_save_mode: LIGHT #https://esphome.io/components/wifi.html#wifi-power-save-mode + #manual_ip: #optional static IP address + #static_ip: ${static_ip_address} + #gateway: ${static_ip_gateway} + #subnet: ${static_ip_subnet} + ap: #Details for fallback hotspot in case wifi connection fails https://esphome.io/components/wifi.html#access-point-mode + ssid: $devicename fallback AP + password: !secret fallback_ap_password + ap_timeout: 5min #Time until it brings up fallback AP. default is 1min + +############################################# +# Web Portal for display and monitoring +# Turning this off is probably a good idea to save resources. +# https://esphome.io/components/web_server.html +############################################# +web_server: + port: 80 +# auth: +# username: ${web_server_username} #probably a good idea to secure it +# password: ${web_server_password} + +############################################# +# MQTT Monitoring +# https://esphome.io/components/mqtt.html?highlight=mqtt +# MUST also have api enabled if you enable MQTT +############################################# +mqtt: + broker: ${mqtt_server} + topic_prefix: ${mqtt_topic}/${devicename} + username: ${mqtt_username} + password: ${mqtt_password} + +############################################# +# i2c bus +# https://esphome.io/components/i2c.html +# 10, 50, 100, 200, 800 are possible settings +# for frequency, 50kHz is default +############################################# +#i2c: +# sda: GPIO19 +# scl: GPIO21 +# scan: True #look for devices on boot up and report + #frequency: 100kHz + +############################################# +# UART Serial +# hardware on EPS32, but software, and can be glitchy on ESP8266 +# https://esphome.io/components/uart.html +############################################# +uart: + id: ld2410_uart + rx_pin: GPIO16 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang + tx_pin: GPIO17 #For ESP32, you can use any pin, Recommend Use UART_2, Don't use UART_0, It might Cause Boot Fail or System Hang + baud_rate: 256000 # default for LD2410 is 25600, 8, 0, NONE + data_bits: 8 + stop_bits: 1 + parity: NONE + +############################################# +# Bluetooth +# https://esphome.io/components/bluetooth_proxy.html +# https://esphome.io/components/esp32_ble_tracker.html +# Remember that this takes a LOT of processing. On the +# ESP32, enable the IDF framework, and disable the +# Web server component. Changing to the IDF framework +# needs to be via cable not OTA to change the +# partition setup. +############################################# +bluetooth_proxy: + active: true + +esp32_ble_tracker: + +############################################# +# Global Variables for use in automations etc +# https://esphome.io/guides/automations.html?highlight=globals#global-variables +############################################# + + +############################################# +# General esp status LED +# https://esphome.io/components/status_led.html +############################################# +status_led: + pin: + number: GPIO2 #ESP32 Onboard LED + ignore_strapping_warning: True #https://esphome.io/guides/faq.html#why-am-i-getting-a-warning-about-strapping-pins + inverted: false + +############################################# +# Interval Automations +# https://esphome.io/guides/automations.html +############################################# + +############################################# +# LD2410 Sensors +# https://esphome.io/components/sensor/ld2410.html +# https://www.hlktech.net/index.php?id=988 +############################################# +ld2410: + uart_id: ld2410_uart + +############################################# +# Number Sensors (custom component) +# refer https://github.com/ssieb/esphome_components/tree/master/components/serial +############################################# +number: + - platform: ld2410 + timeout: + name: Timeout + light_threshold: + name: Light Threshold + max_move_distance_gate: + name: Max Move Distance Gate + max_still_distance_gate: + name: Max Still Distance Gate + g0: + move_threshold: + name: g0 move threshold + still_threshold: + name: g0 still threshold + g1: + move_threshold: + name: g1 move threshold + still_threshold: + name: g1 still threshold + g2: + move_threshold: + name: g2 move threshold + still_threshold: + name: g2 still threshold + g3: + move_threshold: + name: g3 move threshold + still_threshold: + name: g3 still threshold + g4: + move_threshold: + name: g4 move threshold + still_threshold: + name: g4 still threshold + g5: + move_threshold: + name: g5 move threshold + still_threshold: + name: g5 still threshold + g6: + move_threshold: + name: g6 move threshold + still_threshold: + name: g6 still threshold + g7: + move_threshold: + name: g7 move threshold + still_threshold: + name: g7 still threshold + g8: + move_threshold: + name: g8 move threshold + still_threshold: + name: g8 still threshold + +#The ld2410 select allows you to control your LD2410 Sensor. +#distance_resolution (Optional): Control the gates distance resolution. Can be 0.75m or 0.2m. Defaults to 0.75m. All options from Select. +#baud_rate (Optional): Control the serial port baud rate. Defaults to 256000. Once changed, all sensors will stop working until a fresh install with an updated UART Component configuration. All options from Select. +#light_function (Optional): If set, will affect the OUT pin value, based on light threshold. Can be off, low or above. Defaults to off. All options from Select. +#out_pin_level (Optional): Control OUT pin away value. Can be low or high. Defaults to low. All options from Select. +#ld2410_id (Optional, ID): Manually specify the ID for the LD2410 Sensor component if you are using multiple components. +select: + - platform: ld2410 + distance_resolution: + name: ${friendly_name} LD2140 Distance Resolution + baud_rate: + name: ${friendly_name} LD2140 Baud Rate + light_function: + name: ${friendly_name} LD2140 Light Function + out_pin_level: + name: ${friendly_name} LD2140 Out Pin Level + +############################################# +# General Sensors +# https://esphome.io/components/sensor/index.html +############################################# +sensor: +# - platform: bme280_i2c +# address: 0x76 +# update_interval: ${update_time} +# temperature: +# name: ${friendly_name} BME280 Temp +# accuracy_decimals: 1 +# oversampling: 2x +# pressure: +# name: ${friendly_name} BME280 Pressure +# oversampling: 2x +# humidity: +# name: ${friendly_name} BME280 Humidity +# accuracy_decimals: 1 +# oversampling: 2x + + ################################ + # WIFI SIGNAL + # Quality of Wifi in dBm + # https://esphome.io/components/sensor/wifi_signal.html + ################################ + - platform: wifi_signal + name: ${friendly_name} WiFi Signal + update_interval: 20s + #retain: true #retain useful if sleeping + + - platform: uptime + name: ${friendly_name} Uptime + update_interval: 10s + + +#The ld2410 sensor values + - platform: ld2410 + light: + name: Light + moving_distance: + name : Moving Distance + still_distance: + name: Still Distance + moving_energy: + name: Move Energy + still_energy: + name: Still Energy + detection_distance: + name: Detection Distance + g0: + move_energy: + name: g0 move energy + still_energy: + name: g0 still energy + g1: + move_energy: + name: g1 move energy + still_energy: + name: g1 still energy + g2: + move_energy: + name: g2 move energy + still_energy: + name: g2 still energy + g3: + move_energy: + name: g3 move energy + still_energy: + name: g3 still energy + g4: + move_energy: + name: g4 move energy + still_energy: + name: g4 still energy + g5: + move_energy: + name: g5 move energy + still_energy: + name: g5 still energy + g6: + move_energy: + name: g6 move energy + still_energy: + name: g6 still energy + g7: + move_energy: + name: g7 move energy + still_energy: + name: g7 still energy + g8: + move_energy: + name: g8 move energy + still_energy: + name: g8 still energy + +# The ld2410 switch allows you to control your LD2410 Sensor. +#Bluetooth switch is only useful of you have a B or C model +switch: + - platform: ld2410 + engineering_mode: + name: ${friendly_name} LD2140 Engineering Mode + #bluetooth: + #name: ${friendly_name} LD2140 Control Bluetooth + + +#The ld2410 button allows resetting +button: + - platform: ld2410 + factory_reset: + name: ${friendly_name} LD2140 Factory reset" + restart: + name: ${friendly_name} LD2140 Restart + query_params: + name: Query Parameters + +############################################# +# Text Sensors +# refer https://esphome.io/components/text_sensor/index.html +############################################# +#The ld2410 text sensor allows you to get information about your LD2410 Sensor. +#Bluetooth sensor is only useful of you have a B or C model +text_sensor: + - platform: ld2410 + version: + name: ${friendly_name} LD2140 Firmware Version + #mac_address: + #name: ${friendly_name} LD2140 BT MAC Address + + +############################################# +# Binary Sensors +# https://esphome.io/components/binary_sensor/index.html +############################################# +binary_sensor: + + - platform: ld2410 + has_target: + name: ${friendly_name} Presence + has_moving_target: + name: ${friendly_name} Moving Target + has_still_target: + name: ${friendly_name} Still Target + out_pin_presence_status: + name: ${friendly_name} LD2140 Out Pin Presence Status + + #Standard PIR Sensor + - platform: gpio + pin: + number: GPIO13 + mode: + input: True + pullup: False + inverted: True + filters: + - delayed_on: 200ms + name: ${friendly_name} PIR Sensor + device_class: motion + + #RF Input from Vibration Sensor (Green Bin) + - platform: gpio + pin: + number: GPIO04 + mode: + input: true + pullup: true + inverted: True + name: ${friendly_name} Green Bin motion + device_class: vibration + + #RF Input from Vibration Sensor (Red Bin) + - platform: gpio + pin: + number: GPIO15 + mode: + input: true + pullup: true + inverted: True + filters: + - delayed_on: 20ms + name: ${friendly_name} Red Bin motion + device_class: vibration \ No newline at end of file diff --git a/packages/anniversaries.yaml b/packages/anniversaries.yaml new file mode 100644 index 0000000..85cdf9b --- /dev/null +++ b/packages/anniversaries.yaml @@ -0,0 +1,7 @@ +sensor: + - platform: anniversary + name: events + multiple: false + anniversaries: + - event: "Holiday" + date: "2024-9-14" diff --git a/packages/firewall_control.yaml b/packages/firewall_control.yaml index bb1e30a..d8f2436 100644 --- a/packages/firewall_control.yaml +++ b/packages/firewall_control.yaml @@ -2,7 +2,7 @@ mqtt: switch: - unique_id: mollies.internet name: "Mollie's Internet Blocking" - state_topic: "viewroad-status/firewall/block-unblock-mollie-iphone7" + state_topic: "viewroad-status/firewall/block-unblock-mollie-iphone8" command_topic: "viewroad-commands/firewall/block-unblock-mollie-devices" payload_off: "Unblocked" payload_on: "Blocked" @@ -21,3 +21,9 @@ mqtt: payload_press: "Unblocked" icon: mdi:web retain: false + - unique_id: mollies.internet.temp.unblock.1hr + name: "Mollie's Internet (1hr Unblock)" + command_topic: "viewroad-commands/firewall/tempunblock-mollie-devices-1hr" + payload_press: "Unblocked" + icon: mdi:web + retain: false diff --git a/packages/fridge_temperatures.yaml b/packages/fridge_temperatures.yaml new file mode 100644 index 0000000..83c13a4 --- /dev/null +++ b/packages/fridge_temperatures.yaml @@ -0,0 +1,45 @@ +automation: + - id: publish_fridge_temps_drinks_fridge + alias: publish_fridge_temps_drinks_fridge + trigger: + - platform: state + entity_id: sensor.drinks_fridge_environment_lcd_btt01_temperature + not_to: + - "unavailable" + - "unknown" + action: + - service: mqtt.publish + data: + topic: "viewroad-status/fridges/drinks-fridge" + payload: "{{ trigger.to_state.state }}" + mode: single + + - id: publish_freezer_temps_drinks_fridge + alias: pub_freezer_temps_drinks_fridge + trigger: + - platform: state + entity_id: sensor.drinks_freezer_environment_lcd_btt02_temperature + not_to: + - "unavailable" + - "unknown" + action: + - service: mqtt.publish + data: + topic: "viewroad-status/fridges/drinks-freezer" + payload: "{{ trigger.to_state.state }}" + mode: single + + - id: publish_main_kitchen_fridge_temp_zth08 + alias: publish_main_kitchen_fridge_temp_zth08 + trigger: + - platform: state + entity_id: sensor.main_kitchen_fridge_temp_zth08 + not_to: + - "unavailable" + - "unknown" + action: + - service: mqtt.publish + data: + topic: "viewroad-status/fridges/mainkitchen_fridge" + payload: "{{ trigger.to_state.state }}" + mode: single diff --git a/packages/media_players.yaml b/packages/media_players.yaml index f0b996c..49e0244 100644 --- a/packages/media_players.yaml +++ b/packages/media_players.yaml @@ -1,5 +1,5 @@ -media_player: - # MPD Media Player on Lounge Touchscreen - - platform: mpd - host: !secret lounge_mpd_player - scan_interval: 1 +#media_player: +# MPD Media Player on Lounge Touchscreen +# - platform: mpd +# host: !secret lounge_mpd_player +# scan_interval: 1 diff --git a/packages/ms_teams_status.yaml b/packages/ms_teams_status.yaml new file mode 100644 index 0000000..4c3b4ba --- /dev/null +++ b/packages/ms_teams_status.yaml @@ -0,0 +1,20 @@ +input_text: + teams_status: + name: Microsoft Teams status + icon: mdi:microsoft-teams + teams_activity: + name: Microsoft Teams activity + icon: mdi:phone-off + +sensor: + - platform: template + sensors: + teams_status: + friendly_name: "Microsoft Teams status" + value_template: "{{states('input_text.teams_status')}}" + icon_template: "{{state_attr('input_text.teams_status','icon')}}" + unique_id: sensor.teams_status + teams_activity: + friendly_name: "Microsoft Teams activity" + value_template: "{{states('input_text.teams_activity')}}" + unique_id: sensor.teams_activity diff --git a/packages/pool_light_switch_sync.yaml b/packages/pool_light_switch_sync.yaml new file mode 100644 index 0000000..495e5b5 --- /dev/null +++ b/packages/pool_light_switch_sync.yaml @@ -0,0 +1,17 @@ +automation: + - alias: Turn on pool light with downstairs lounge switch + trigger: + platform: state + entity_id: switch.tasmo_ks811t_0707_downstloun_2c + to: "on" + action: + service: homeassistant.turn_on + entity_id: switch.tasmo_athplug_5103_1 + - alias: Turn off pool light with downstairs lounge switch + trigger: + platform: state + entity_id: switch.tasmo_ks811t_0707_downstloun_2c + to: "off" + action: + service: homeassistant.turn_off + entity_id: switch.tasmo_athplug_5103_1 diff --git a/scripts/zha.yaml b/scripts/zha.yaml deleted file mode 100644 index 4535aaa..0000000 --- a/scripts/zha.yaml +++ /dev/null @@ -1,2 +0,0 @@ -zha: - custom_quirks_path: /config/custom_zha_quirks/ diff --git a/zigpy_ota/1662545193-oem_zg_tl8258_plug_OTA_3.0.0.bin b/zigpy_ota/1662545193-oem_zg_tl8258_plug_OTA_3.0.0.bin new file mode 100644 index 0000000000000000000000000000000000000000..02ec479b7ed4edd2adf11e985223948e336bca18 GIT binary patch literal 307682 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%0Aa2`Hs&xCZm~Q`Ur3arq;Kz4Y>Fz7Lz`U~(8ZKlj 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 U&)z!4Gw-7ygebp*hGnMz0ms->@Bjb+ literal 0 HcmV?d00001