From 910a90888039a9e50836abcd67868e7cb5b97d86 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 20 Oct 2023 13:27:48 +1300 Subject: [PATCH] ESPresence, OBK, and other updates --- automations.yaml | 14 + automations/two_way_light_switching.yaml | 65 +++ .../weekly_battery_notifications_check.yaml | 2 +- .../zigbee_low_battery_notifications_2.yaml | 2 +- configuration.yaml | 3 + esphome/bt-fridge-temps.yaml | 2 + esphome/esp-attobat.yaml | 136 +++++ esphome/esp-nfcaccess1-33ad74.yaml | 477 ++++++++++++++++++ esphome/m5stack-atom-echo-80be58.yaml | 136 +++++ esphome/m5stack-atom-echo-82d244.yaml | 17 + group/nspanel_keepawake.yaml | 10 + packages/alexa_tplink_actions.yaml | 37 ++ packages/appliance_status.yaml | 11 - packages/appliance_status_mqttfeed.yaml | 30 ++ packages/bedroom_3_led_actions.yaml | 24 + packages/ev_charging.yaml | 27 + packages/firewall_control.yaml | 13 + packages/media_players.yaml | 6 +- packages/nspanel_entities.yaml | 8 + packages/openbeken.yaml | 32 ++ packages/pet_feeding.yaml | 21 - packages/pet_feeding_and_jobs.yaml | 26 + packages/pool_controls.yaml | 32 ++ packages/tautulli.yaml | 10 +- packages/waste_collection.yaml | 5 + packages/weather_additional.yaml | 8 + 26 files changed, 1112 insertions(+), 42 deletions(-) create mode 100644 automations/two_way_light_switching.yaml create mode 100644 esphome/esp-attobat.yaml create mode 100644 esphome/esp-nfcaccess1-33ad74.yaml create mode 100644 esphome/m5stack-atom-echo-80be58.yaml create mode 100644 esphome/m5stack-atom-echo-82d244.yaml create mode 100644 group/nspanel_keepawake.yaml create mode 100644 packages/alexa_tplink_actions.yaml delete mode 100644 packages/appliance_status.yaml create mode 100644 packages/appliance_status_mqttfeed.yaml create mode 100644 packages/bedroom_3_led_actions.yaml create mode 100644 packages/ev_charging.yaml create mode 100644 packages/nspanel_entities.yaml create mode 100644 packages/openbeken.yaml delete mode 100644 packages/pet_feeding.yaml create mode 100644 packages/pet_feeding_and_jobs.yaml create mode 100644 packages/pool_controls.yaml create mode 100644 packages/waste_collection.yaml create mode 100644 packages/weather_additional.yaml diff --git a/automations.yaml b/automations.yaml index 83511a9..08d42c9 100644 --- a/automations.yaml +++ b/automations.yaml @@ -46,3 +46,17 @@ 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 diff --git a/automations/two_way_light_switching.yaml b/automations/two_way_light_switching.yaml new file mode 100644 index 0000000..5c4d499 --- /dev/null +++ b/automations/two_way_light_switching.yaml @@ -0,0 +1,65 @@ +- alias: "Two Way Lights - Garage Corridor - 1" + trigger: + - platform: state + entity_id: switch.obk_garageswitch_1_e6f7_1 + action: + - choose: + - conditions: + - condition: state + entity_id: switch.obk_garageswitch_1_e6f7_1 + state: "on" + sequence: + - service: switch.turn_on + entity_id: switch.tasmo_ks811d_5613_lounge_4b + default: + - service: switch.turn_off + entity_id: switch.tasmo_ks811d_5613_lounge_4b +- alias: "Two Way Lights - Garage Corridor - 2" + trigger: + - platform: state + entity_id: switch.tasmo_ks811d_5613_lounge_4b + action: + - choose: + - conditions: + - condition: state + entity_id: switch.tasmo_ks811d_5613_lounge_4b + state: "on" + sequence: + - service: switch.turn_on + entity_id: switch.obk_garageswitch_1_e6f7_1 + default: + - service: switch.turn_off + entity_id: switch.obk_garageswitch_1_e6f7_1 + +- alias: "Two Way Lights - Garage Main - 1" + trigger: + - platform: state + entity_id: switch.obk_garageswitch_1_e6f7_2 + action: + - choose: + - conditions: + - condition: state + entity_id: switch.obk_garageswitch_1_e6f7_2 + state: "on" + sequence: + - service: switch.turn_on + entity_id: switch.tasmo_sbas_0407_garagelight + default: + - service: switch.turn_off + entity_id: switch.tasmo_sbas_0407_garagelight +- alias: "Two Way Lights - Garage Main - 2" + trigger: + - platform: state + entity_id: switch.tasmo_sbas_0407_garagelight + action: + - choose: + - conditions: + - condition: state + entity_id: switch.tasmo_sbas_0407_garagelight + state: "on" + sequence: + - service: switch.turn_on + entity_id: switch.obk_garageswitch_1_e6f7_2 + default: + - service: switch.turn_off + entity_id: switch.obk_garageswitch_1_e6f7_2 diff --git a/automations/weekly_battery_notifications_check.yaml b/automations/weekly_battery_notifications_check.yaml index 1b60125..babd5bc 100644 --- a/automations/weekly_battery_notifications_check.yaml +++ b/automations/weekly_battery_notifications_check.yaml @@ -7,7 +7,7 @@ day: 1 time: "21:00:00" actions: - - service: notify.pushover_notifications + - service: notify.pushover_2 data: message: > Weekly Battery Check. Low Devices: diff --git a/automations/zigbee_low_battery_notifications_2.yaml b/automations/zigbee_low_battery_notifications_2.yaml index b8e6c85..31fc0d3 100644 --- a/automations/zigbee_low_battery_notifications_2.yaml +++ b/automations/zigbee_low_battery_notifications_2.yaml @@ -19,7 +19,7 @@ {% endfor -%} {{ ns.found }} action: - - service: notify.pushover_notifications + - service: notify.pushover_2 data: title: View Road Sensors message: > diff --git a/configuration.yaml b/configuration.yaml index 9302218..1361e15 100644 --- a/configuration.yaml +++ b/configuration.yaml @@ -19,6 +19,9 @@ scene: !include scenes.yaml #sensor merged: !include_dir_merge_list sensor/ sensor: !include_dir_merge_list sensor/ +# Example base configuration.yaml entry +conversation: + logger: default: info logs: diff --git a/esphome/bt-fridge-temps.yaml b/esphome/bt-fridge-temps.yaml index ff03970..7b43e71 100644 --- a/esphome/bt-fridge-temps.yaml +++ b/esphome/bt-fridge-temps.yaml @@ -80,6 +80,8 @@ bluetooth_proxy: esp32_ble_tracker: +#xiaomi_ble: + ################################################################################### ## Help with Mi Bluetooth Temp Sensors ## Youtube Howto https://www.youtube.com/watch?v=l5ea7lQWpMk&t=0s diff --git a/esphome/esp-attobat.yaml b/esphome/esp-attobat.yaml new file mode 100644 index 0000000..dde9492 --- /dev/null +++ b/esphome/esp-attobat.yaml @@ -0,0 +1,136 @@ +############################################# +# Common +############################################# +substitutions: + devicename: esp-attobat + nice_devicename: "Atto Battery Monitor" + + +############################################# +# ESPHome +############################################# +esphome: + name: $devicename + +######################################## +# Specific board for ESPHome device +######################################## +esp8266: + board: d1_mini + +############################################# +# ESPHome Logging Enable +############################################# +logger: + +######################################## +# Enable the Home Assistant API +######################################## +api: + encryption: + key: !secret esp-attobat_api_key + +######################################## +# Enable Over the Air Update Capability +# Safe mode will detect boot loops +######################################## +ota: + safe_mode: true + password: !secret esp-attobat_ota_pass + +######################################## +# Use Wifi +# (credentials are in secrets file) +######################################## +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + # Details for fallback hotspot (captive portal) in case wifi connection fails + ap: + ssid: "Esp-attobat2 Fallback Hotspot" + password: !secret fallback_ap_password + # Static IP (for lower power/quicker on time) + manual_ip: + static_ip: !secret esp-attobat_static_ip + gateway: !secret esp-attobat_gateway + subnet: !secret esp-attobat_subnet + +############################################# +# Fallback captive portal +############################################# +captive_portal: + +######################################## +# Web Portal for display and monitoring +######################################## +web_server: + port: 80 + auth: + username: !secret web_server_username + password: !secret web_server_password + +######################################## +# MQTT Monitoring +######################################## +mqtt: + broker: !secret mqtt_server + topic_prefix: esphome/esp-attobat + username: !secret mqtt_username + password: !secret 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/attobat/deepsleepoff + payload: 'ON' + then: + - deep_sleep.prevent: deep_sleep_1 + - topic: viewroad-commands/attobat/deepsleepon + payload: 'ON' + then: + - deep_sleep.enter: deep_sleep_1 + +######################################## +# Deep Sleep +######################################## +deep_sleep: + run_duration: 20s + sleep_duration: 5min + 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: + - 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 diff --git a/esphome/esp-nfcaccess1-33ad74.yaml b/esphome/esp-nfcaccess1-33ad74.yaml new file mode 100644 index 0000000..32d8d76 --- /dev/null +++ b/esphome/esp-nfcaccess1-33ad74.yaml @@ -0,0 +1,477 @@ +############################################# +############################################# +# +# ESP Home +# NFC Tag Reader for Home Assistant +# +############################################# +############################################# +# Project Link: +# https://github.com/adonno/tagreader +############################################# +# Remember to set the switches on the PN532 +# for i2C, Switch1: On (up), Switch2: Off (down) +############################################# + + +############################################# +# Substitution Text +############################################# +substitutions: + name: esp-nfcaccess1-33ad74 + friendly_name: TagReader + +############################################# +# Inport the project from Github +############################################# +#dashboard_import: +# package_import_url: github://adonno/tagreader/tagreader.yaml + +############################################# +# Use Wifi +############################################# +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + # Details for fallback hotspot (captive portal) + # in case wifi connection fails + ap: + ssid: "${name} Hotspot" + password: !secret fallback_ap_password + +############################################# +# Improv +# Use the open Improv standard for configuring Wi-Fi on the +# device by using a serial connection to the device, eg. USB. +############################################# +improv_serial: + +############################################# +# Fallback captive portal +# Enable the captive portal for inital WiFi setup +############################################# +captive_portal: + +############################################# +# Enable Over the Air Update Capability +# Safe mode will detect boot loops +############################################# +ota: + safe_mode: true # Avoid boot loops + password: !secret esp-nfcaccess1-33ad74_ota_pass + +############################################# +# ESPHome Logging Enable +############################################# +logger: + # baud_rate: 0 # Set baud rate to 0 if using the UART for soething else + # level: VERY_VERBOSE + # level: VERBOSE + +############################################# +# Web Portal for display and monitoring +############################################# +#web_server: +# port: 80 +# auth: +# username: !secret web_server_username +# password: !secret web_server_password + +######################################## +# Specific board for ESPHome device +######################################## +esp8266: + board: d1_mini + +############################################# +# ESPHome +############################################# +esphome: + name: ${name} + # Automatically add the mac address to the name + # so you can use a single firmware for all devices + name_add_mac_suffix: false + # This will allow for (future) project identification, + # configuration and updates. + project: + name: adonno.tag_reader + version: "1.4" + # If buzzer is enabled, notify on api connection success + on_boot: + priority: -10 + then: + - wait_until: + api.connected: + - logger.log: API is connected! + - rtttl.play: "success:d=24,o=5,b=100:c,g,b" + - light.turn_on: + id: activity_led + brightness: 100% + red: 0% + green: 0% + blue: 100% + flash_length: 500ms + - switch.turn_on: buzzer_enabled + - switch.turn_on: led_enabled + + +############################################# +# Global variables +############################################# +globals: + - id: source + type: std::string + - id: url + type: std::string + - id: info + type: std::string + + +############################################# +############################################# +# MAIN SENSORS +############################################# +############################################# + +############################################# +# Switches +# Define switches to control LED and buzzer from HA +############################################# +switch: +- platform: template + name: "${friendly_name} Buzzer Enabled" + id: buzzer_enabled + icon: mdi:volume-high + optimistic: true + restore_state: true + entity_category: config +- platform: template + name: "${friendly_name} LED enabled" + id: led_enabled + icon: mdi:alarm-light-outline + optimistic: true + restore_state: true + entity_category: config + +############################################# +# Buttons +# Define buttons for writing tags via HA +############################################# +button: + - platform: template + name: Write Tag Random + id: write_tag_random + # Optional variables: + icon: "mdi:pencil-box" + on_press: + then: + - light.turn_on: + id: activity_led + brightness: 100% + red: 100% + green: 0% + blue: 100% + - lambda: |- + static const char alphanum[] = "0123456789abcdef"; + std::string uri = "https://www.home-assistant.io/tag/"; + for (int i = 0; i < 8; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + uri += "-"; + for (int j = 0; j < 3; j++) { + for (int i = 0; i < 4; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + uri += "-"; + } + for (int i = 0; i < 12; i++) + uri += alphanum[random_uint32() % (sizeof(alphanum) - 1)]; + auto message = new nfc::NdefMessage(); + message->add_uri_record(uri); + ESP_LOGD("tagreader", "Writing payload: %s", uri.c_str()); + id(pn532_board).write_mode(message); + - rtttl.play: "write:d=24,o=5,b=100:b" + - wait_until: + not: + pn532.is_writing: + - light.turn_off: + id: activity_led + - rtttl.play: "write:d=24,o=5,b=100:b,b" + + - platform: template + name: Clean Tag + id: clean_tag + icon: "mdi:nfc-variant-off" + on_press: + then: + - light.turn_on: + id: activity_led + brightness: 100% + red: 100% + green: 64.7% + blue: 0% + - lambda: 'id(pn532_board).clean_mode();' + - rtttl.play: "write:d=24,o=5,b=100:b" + - wait_until: + not: + pn532.is_writing: + - light.turn_off: + id: activity_led + - rtttl.play: "write:d=24,o=5,b=100:b,b" + + - platform: template + name: Cancel writing + id: cancel_writing + icon: "mdi:pencil-off" + on_press: + then: + - lambda: 'id(pn532_board).read_mode();' + - light.turn_off: + id: activity_led + - rtttl.play: "write:d=24,o=5,b=100:b,b" + + - platform: restart + name: "${friendly_name} Restart" + entity_category: config + +############################################# +# HA API +# Enable Home Assistant API +############################################# +api: + encryption: + key: "K2H5vBNv8NLegc3RmwTQVFV7ULtba2DWDOlABmXmGBM=" + services: + - service: rfidreader_tag_ok + then: + - rtttl.play: "beep:d=16,o=5,b=100:b" + - service: rfidreader_tag_ko + then: + - rtttl.play: "beep:d=8,o=5,b=100:b" + - service: play_rtttl + variables: + song_str: string + then: + - rtttl.play: !lambda 'return song_str;' + - service: write_tag_id + variables: + tag_id: string + then: + - light.turn_on: + id: activity_led + brightness: 100% + red: 100% + green: 0% + blue: 0% + - lambda: |- + auto message = new nfc::NdefMessage(); + std::string uri = "https://www.home-assistant.io/tag/"; + uri += tag_id; + message->add_uri_record(uri); + id(pn532_board).write_mode(message); + - rtttl.play: "write:d=24,o=5,b=100:b" + - wait_until: + not: + pn532.is_writing: + - light.turn_off: + id: activity_led + - rtttl.play: "write:d=24,o=5,b=100:b,b" + - service: write_music_tag + variables: + music_url: string + music_info: string + then: + - light.turn_on: + id: activity_led + brightness: 100% + red: 100% + green: 0% + blue: 0% + - lambda: |- + auto message = new nfc::NdefMessage(); + std::string uri = ""; + std::string text = ""; + uri += music_url; + text += music_info; + if ( music_url != "" ) { + message->add_uri_record(uri); + } + if ( music_info != "" ) { + message->add_text_record(text); + } + id(pn532_board).write_mode(message); + - rtttl.play: "write:d=24,o=5,b=100:b" + - wait_until: + not: + pn532.is_writing: + - light.turn_off: + id: activity_led + - rtttl.play: "write:d=24,o=5,b=100:b,b" + +############################################# +# i2C bus +############################################# +i2c: + scan: False + frequency: 400kHz + +############################################# +# NFC Reader +############################################# +pn532_i2c: + id: pn532_board + on_tag: + then: + - if: + condition: + switch.is_on: led_enabled + then: + - light.turn_on: + id: activity_led + brightness: 100% + red: 0% + green: 100% + blue: 0% + flash_length: 500ms + + - delay: 0.15s #to fix slow component + + - lambda: |- + id(source)=""; + id(url)=""; + id(info)=""; + if (tag.has_ndef_message()) { + auto message = tag.get_ndef_message(); + auto records = message->get_records(); + for (auto &record : records) { + std::string payload = record->get_payload(); + std::string type = record->get_type(); + size_t hass = payload.find("https://www.home-assistant.io/tag/"); + size_t applemusic = payload.find("https://music.apple.com"); + size_t spotify = payload.find("https://open.spotify.com"); + size_t sonos = payload.find("sonos-2://"); + + if (type == "U" and hass != std::string::npos ) { + ESP_LOGD("tagreader", "Found Home Assistant tag NDEF"); + id(source)="hass"; + id(url)=payload; + id(info)=payload.substr(hass + 34); + } + else if (type == "U" and applemusic != std::string::npos ) { + ESP_LOGD("tagreader", "Found Apple Music tag NDEF"); + id(source)="amusic"; + id(url)=payload; + } + else if (type == "U" and spotify != std::string::npos ) { + ESP_LOGD("tagreader", "Found Spotify tag NDEF"); + id(source)="spotify"; + id(url)=payload; + } + else if (type == "U" and sonos != std::string::npos ) { + ESP_LOGD("tagreader", "Found Sonos app tag NDEF"); + id(source)="sonos"; + id(url)=payload; + } + else if (type == "T" ) { + ESP_LOGD("tagreader", "Found music info tag NDEF"); + id(info)=payload; + } + else if ( id(source)=="" ) { + id(source)="uid"; + } + } + } + else { + id(source)="uid"; + } + + - if: + condition: + lambda: 'return ( id(source)=="uid" );' + then: + - homeassistant.tag_scanned: !lambda |- + ESP_LOGD("tagreader", "No HA NDEF, using UID"); + return x; + else: + - if: + condition: + lambda: 'return ( id(source)=="hass" );' + then: + - homeassistant.tag_scanned: !lambda 'return id(info);' + else: + - homeassistant.event: + event: esphome.music_tag + data: + reader: !lambda |- + return App.get_name().c_str(); + source: !lambda |- + return id(source); + url: !lambda |- + return id(url); + info: !lambda |- + return id(info); + + - if: + condition: + switch.is_on: buzzer_enabled + then: + - rtttl.play: "success:d=24,o=5,b=100:c,g,b" + on_tag_removed: + then: + - homeassistant.event: + event: esphome.tag_removed + +############################################# +# OUTPUTS +############################################# +# Define the buzzer output +output: +- platform: esp8266_pwm + pin: D7 + id: buzzer + +############################################# +# BINARY SENSORS +############################################# +binary_sensor: + - platform: status + name: "${friendly_name} Status" + entity_category: diagnostic + +############################################# +# TEXT SENSORS +############################################# +text_sensor: + - platform: version + hide_timestamp: true + name: "${friendly_name} ESPHome Version" + entity_category: diagnostic + - platform: wifi_info + ip_address: + name: "${friendly_name} IP Address" + icon: mdi:wifi + entity_category: diagnostic + ssid: + name: "${friendly_name} Connected SSID" + icon: mdi:wifi-strength-2 + entity_category: diagnostic + +############################################# +# Ring Tone Text Transfer Language for melody +############################################# +# Define buzzer as output for RTTTL +rtttl: + output: buzzer + +############################################# +# LED +############################################# +# Configure LED +light: +- platform: neopixelbus + variant: WS2812 + pin: D8 + num_leds: 1 + flash_transition_length: 500ms + type: GRB + id: activity_led + name: "${friendly_name} LED" + restore_mode: ALWAYS_OFF diff --git a/esphome/m5stack-atom-echo-80be58.yaml b/esphome/m5stack-atom-echo-80be58.yaml new file mode 100644 index 0000000..17b8dba --- /dev/null +++ b/esphome/m5stack-atom-echo-80be58.yaml @@ -0,0 +1,136 @@ +substitutions: + name: m5stack-atom-echo-80be58 + friendly_name: M5Stack Atom Echo 80be58 + +esphome: + name: "${name}" + friendly_name: "${friendly_name}" + name_add_mac_suffix: false + project: + name: m5stack.atom-echo-voice-assistant + version: "1.0" + min_version: 2023.5.0 + +api: + encryption: + key: XmXtlYVEuioSNapvz8G/9caKCI0T7aRW/CFy/f83D6g= + +esp32: + board: m5stack-atom + framework: + type: esp-idf + +logger: +ota: + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + + +dashboard_import: + package_import_url: github://esphome/firmware/voice-assistant/m5stack-atom-echo.yaml@main + +improv_serial: + +i2s_audio: + i2s_lrclk_pin: GPIO33 + i2s_bclk_pin: GPIO19 + +microphone: + - platform: i2s_audio + id: echo_microphone + i2s_din_pin: GPIO23 + adc_type: external + pdm: true + +speaker: + - platform: i2s_audio + id: echo_speaker + i2s_dout_pin: GPIO22 + dac_type: external + mode: mono + +voice_assistant: + microphone: echo_microphone + speaker: echo_speaker + on_start: + - light.turn_on: + id: led + blue: 100% + red: 0% + green: 0% + effect: none + on_tts_start: + - light.turn_on: + id: led + blue: 0% + red: 0% + green: 100% + effect: none + on_tts_end: + - light.turn_on: + id: led + blue: 0% + red: 0% + green: 100% + effect: pulse + on_end: + - delay: 1s + - wait_until: + not: + speaker.is_playing: + - light.turn_off: led + on_error: + - light.turn_on: + id: led + blue: 0% + red: 100% + green: 0% + effect: none + - delay: 1s + - light.turn_off: led + + +binary_sensor: + - platform: gpio + pin: + number: GPIO39 + inverted: true + name: Button + disabled_by_default: true + entity_category: diagnostic + id: echo_button + on_multi_click: + - timing: + - ON FOR AT LEAST 350ms + then: + - voice_assistant.start: + - timing: + - ON FOR AT LEAST 350ms + - OFF FOR AT LEAST 10ms + then: + - light.turn_on: + id: led + blue: 100% + red: 0% + green: 0% + effect: pulse + - voice_assistant.stop: + +light: + - platform: esp32_rmt_led_strip + id: led + name: None + disabled_by_default: true + entity_category: config + pin: GPIO27 + default_transition_length: 0s + chipset: SK6812 + num_leds: 1 + rgb_order: grb + rmt_channel: 0 + effects: + - pulse: + transition_length: 250ms + update_interval: 250ms \ No newline at end of file diff --git a/esphome/m5stack-atom-echo-82d244.yaml b/esphome/m5stack-atom-echo-82d244.yaml new file mode 100644 index 0000000..d4fd79f --- /dev/null +++ b/esphome/m5stack-atom-echo-82d244.yaml @@ -0,0 +1,17 @@ +substitutions: + name: m5stack-atom-echo-82d244 + friendly_name: M5Stack Atom Echo 82d244 +packages: + m5stack.atom-echo-voice-assistant: github://esphome/firmware/voice-assistant/m5stack-atom-echo.yaml@main +esphome: + name: ${name} + name_add_mac_suffix: false + friendly_name: ${friendly_name} +api: + encryption: + key: Oh2XL+cpsK1jjTO8lW31IZ6CQiQNdqCpUgCZpoe4eYI= + + +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password diff --git a/group/nspanel_keepawake.yaml b/group/nspanel_keepawake.yaml new file mode 100644 index 0000000..bd432d7 --- /dev/null +++ b/group/nspanel_keepawake.yaml @@ -0,0 +1,10 @@ +nspanel_keepawake: + name: Entities to keep NSPanel Awake + # Keeps the bedroom NSPanel Bright if any of these are true + # If 'all' is set to true, they are 'ANDed' otherwise 'ORd' + #all: true + entities: + - binary_sensor.inverted_quiet_time_sensor + - light.tasmo_arlecrgb_3522_bulb_3 + - light.tasmo_ifan02_3793_bedrm1_1 + - light.tasmo_ks811t_3647_bedrm1_1b diff --git a/packages/alexa_tplink_actions.yaml b/packages/alexa_tplink_actions.yaml new file mode 100644 index 0000000..11cdd2a --- /dev/null +++ b/packages/alexa_tplink_actions.yaml @@ -0,0 +1,37 @@ +automation: + - alias: "Turn on the Wifi Guest Network" + trigger: + platform: state + entity_id: input_boolean.wifi_guest_network + to: "on" + action: + service: media_player.play_media + target: + entity_id: media_player.view_rd_kitchen_echo_show + data: + media_content_type: "custom" + media_content_id: "ask t.p.link to enable guest network" + - alias: "Turn off the Wifi Guest Network" + trigger: + platform: state + entity_id: input_boolean.wifi_guest_network + to: "off" + action: + service: media_player.play_media + target: + entity_id: media_player.view_rd_kitchen_echo_show + data: + media_content_type: "custom" + media_content_id: "ask t.p.link to disable guest network" + - alias: "Switch guest network off after time" + trigger: + platform: state + entity_id: input_boolean.wifi_guest_network + from: "off" + to: "on" + for: "02:00:00" + condition: [] + action: + service: input_boolean.turn_off + entity_id: input_boolean.wifi_guest_network + mode: single diff --git a/packages/appliance_status.yaml b/packages/appliance_status.yaml deleted file mode 100644 index 160c529..0000000 --- a/packages/appliance_status.yaml +++ /dev/null @@ -1,11 +0,0 @@ -mqtt: - sensor: - - unique_id: washing_machine_finished - name: "Washing Machine Finished" - state_topic: "viewroad-status/activityfeed/washercomplete" - - unique_id: dryer_finished - name: "Dryer Finished" - state_topic: "viewroad-status/activityfeed/dryercomplete" - - unique_id: dishwasher_finished - name: "Dishwasher Finished" - state_topic: "viewroad-status/activityfeed/dishwashercomplete" diff --git a/packages/appliance_status_mqttfeed.yaml b/packages/appliance_status_mqttfeed.yaml new file mode 100644 index 0000000..0571d8c --- /dev/null +++ b/packages/appliance_status_mqttfeed.yaml @@ -0,0 +1,30 @@ +mqtt: + sensor: + - unique_id: washing_machine_finished + name: "Washer Finished" + state_topic: "viewroad-status/activityfeed/Washer_complete" + icon: mdi:washing-machine + - unique_id: dryer_finished + name: "Dryer Finished" + state_topic: "viewroad-status/activityfeed/Dryer_complete" + icon: mdi:tumble-dryer + - unique_id: dishwasher_finished + name: "Dishwasher Finished" + state_topic: "viewroad-status/activityfeed/Dishwasher_complete" + icon: mdi:dishwasher + - unique_id: 16Acharger_finished + name: "Leaf Done" + state_topic: "viewroad-status/activityfeed/Leaf_Charger_complete" + icon: mdi:car-electric + - unique_id: 32Acharger_finished + name: "Atto Done" + state_topic: "viewroad-status/activityfeed/Atto_Charger_complete" + icon: mdi:car-electric + - unique_id: Ryobi_Charger_1_finished + name: "Ryobi 1 Done" + state_topic: "viewroad-status/activityfeed/Ryobi_Charger_1_complete" + icon: mdi:circular-saw + - unique_id: Ryobi_Charger_2_finished + name: "Ryobi 2 Done" + state_topic: "viewroad-status/activityfeed/Ryobi_Charger_2_complete" + icon: mdi:circular-saw diff --git a/packages/bedroom_3_led_actions.yaml b/packages/bedroom_3_led_actions.yaml new file mode 100644 index 0000000..3335c54 --- /dev/null +++ b/packages/bedroom_3_led_actions.yaml @@ -0,0 +1,24 @@ +input_select: + bedroom_3_led_actions: + icon: mdi:led-strip + name: Bedroom 3 LED Controls + initial: "----" + options: + - "----" + - "Off" + - "1 Hour Fade" + +automation: + - id: set_the_bedroom_3_led_actions + alias: Set the Bedroom 3 LED Actions + trigger: + entity_id: input_select.bedroom_3_led_actions + platform: state + action: + service: mqtt.publish + data: + topic: viewroad-commands/bedroom3controls/windowledactions + payload: + '{% set mapping = { "----":"----", "Off":"off", "1 Hour Fade":"fade_1" } %} {% set dta = trigger.to_state.state %} + {{ mapping[dta] }} + ' diff --git a/packages/ev_charging.yaml b/packages/ev_charging.yaml new file mode 100644 index 0000000..89ae71e --- /dev/null +++ b/packages/ev_charging.yaml @@ -0,0 +1,27 @@ +input_select: + leaf_ev_charging_mode: + icon: mdi:ev-plug-type1 + name: Leaf EV Charge Mode + initial: "Normal (Offpeak)" + options: + - "Normal (Offpeak)" + - "Offpeak until charged" + - "1hr top-up now" + - "Charge now until full" + - "Stop charging now" + +automation: + - id: set_the_leaf_ev_charging_mode + alias: Set the Leaf EV Charging MOde + trigger: + entity_id: input_select.leaf_ev_charging_mode + platform: state + action: + service: mqtt.publish + data: + topic: viewroad-status/evcharging/leaf-chargemode + payload: + '{% set mapping = { "Normal (Offpeak)":"normal", "Offpeak until charged":"offpeak-full", + "1hr top-up now":"boost", "Charge now until full":"now-full", "Stop charging now":"stop" } %} {% set dta = trigger.to_state.state %} + {{ mapping[dta] }} + ' diff --git a/packages/firewall_control.yaml b/packages/firewall_control.yaml index fe086f7..bb1e30a 100644 --- a/packages/firewall_control.yaml +++ b/packages/firewall_control.yaml @@ -8,3 +8,16 @@ mqtt: payload_on: "Blocked" icon: mdi:web retain: false + button: + - unique_id: mollies.internet.temp.block + name: "Mollie's Internet (1 hr Block)" + command_topic: "viewroad-commands/firewall/tempblock-mollie-devices" + payload_press: "Blocked" + icon: mdi:web + retain: false + - unique_id: mollies.internet.temp.unblock + name: "Mollie's Internet (15min Unblock)" + command_topic: "viewroad-commands/firewall/tempunblock-mollie-devices" + payload_press: "Unblocked" + icon: mdi:web + retain: false diff --git a/packages/media_players.yaml b/packages/media_players.yaml index 4be5330..f0b996c 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 + - platform: mpd + host: !secret lounge_mpd_player + scan_interval: 1 diff --git a/packages/nspanel_entities.yaml b/packages/nspanel_entities.yaml new file mode 100644 index 0000000..5e0615f --- /dev/null +++ b/packages/nspanel_entities.yaml @@ -0,0 +1,8 @@ +binary_sensor: + - platform: template + sensors: + inverted_quiet_time_sensor: + value_template: >- + {{ is_state('input_boolean.quiet_time', 'off') }} + #device_class: None + friendly_name: Quiet Time (Inverted) diff --git a/packages/openbeken.yaml b/packages/openbeken.yaml new file mode 100644 index 0000000..afa7bb5 --- /dev/null +++ b/packages/openbeken.yaml @@ -0,0 +1,32 @@ +mqtt: + switch: + - unique_id: "Garage Entry Switch (Triple, obkE6F7)_relay_1" + name: "obk-garageswitch-1-E6F7 1" + state_topic: "obk-garageswitch-1-E6F7/1/get" + command_topic: "obk-garageswitch-1-E6F7/1/set" + qos: 1 + payload_on: 1 + payload_off: 0 + retain: true + availability: + - topic: "obk-garageswitch-1-E6F7/connected" + - unique_id: "Garage Entry Switch (Triple, obkE6F7)_relay_2" + name: "obk-garageswitch-1-E6F7 2" + state_topic: "obk-garageswitch-1-E6F7/2/get" + command_topic: "obk-garageswitch-1-E6F7/2/set" + qos: 1 + payload_on: 1 + payload_off: 0 + retain: true + availability: + - topic: "obk-garageswitch-1-E6F7/connected" + - unique_id: "Garage Entry Switch (Triple, obkE6F7)_relay_3" + name: "obk-garageswitch-1-E6F7 3" + state_topic: "obk-garageswitch-1-E6F7/3/get" + command_topic: "obk-garageswitch-1-E6F7/3/set" + qos: 1 + payload_on: 1 + payload_off: 0 + retain: true + availability: + - topic: "obk-garageswitch-1-E6F7/connected" diff --git a/packages/pet_feeding.yaml b/packages/pet_feeding.yaml deleted file mode 100644 index 7d7652b..0000000 --- a/packages/pet_feeding.yaml +++ /dev/null @@ -1,21 +0,0 @@ -mqtt: - sensor: - - unique_id: pets_fed - name: "Pets Fed" - state_topic: "viewroad-status/activityfeed/petsfed" - - unique_id: hours_since_cat_fed - name: "Hours Since Cat Fed" - state_topic: "viewroad-tele/petfeeding/hoursSinceCatFed" - unit_of_measurement: "Hours" - - unique_id: hours_since_zorro_fed - name: "Hours Since Zorro Fed" - state_topic: "viewroad-tele/petfeeding/hoursSinceDogFed" - unit_of_measurement: "Hours" - - unique_id: hours_since_water_filled - name: "Hours Since Pet Water Filled" - state_topic: "viewroad-tele/petfeeding/hoursSinceWaterFilled" - unit_of_measurement: "Hours" - - unique_id: hours_since_pets_fed - name: "Hours Since Pets Fed" - state_topic: "viewroad-tele/petfeeding/averageHoursSincePetsFed" - unit_of_measurement: "Hours" diff --git a/packages/pet_feeding_and_jobs.yaml b/packages/pet_feeding_and_jobs.yaml new file mode 100644 index 0000000..a69ca4d --- /dev/null +++ b/packages/pet_feeding_and_jobs.yaml @@ -0,0 +1,26 @@ +mqtt: + sensor: + - unique_id: dog_fed_activity + name: "Dog Fed" + state_topic: "viewroad-status/activityfeed/dogfed" + icon: mdi:dog + - unique_id: depooped_activity + name: "DePooped" + state_topic: "viewroad-status/activityfeed/depooped" + icon: mdi:emoticon-poop + - unique_id: jobs_done_activity + name: "Jobs Done" + state_topic: "viewroad-status/activityfeed/jobsdone" + icon: mdi:notebook + - unique_id: hours_since_jobs_done + name: "Hours Since Jobs Done" + state_topic: "viewroad-tele/petfeeding/hoursSinceJobsDone" + unit_of_measurement: "Hours" + - unique_id: hours_since_zorro_fed + name: "Hours Since Zorro Fed" + state_topic: "viewroad-tele/petfeeding/hoursSinceDogFed" + unit_of_measurement: "Hours" + - unique_id: hours_since_depooped + name: "Hours Since DePooped" + state_topic: "viewroad-tele/petfeeding/hoursSinceDePooped" + unit_of_measurement: "Hours" diff --git a/packages/pool_controls.yaml b/packages/pool_controls.yaml new file mode 100644 index 0000000..aeb2610 --- /dev/null +++ b/packages/pool_controls.yaml @@ -0,0 +1,32 @@ +input_select: + pool_light_colour_select: + icon: mdi:swimming-pool + name: Pool Light Colour + initial: "Off" + options: + - "Off" + - "Dk Blue" + - "Red" + - "Green" + - "Lt Blue" + - "Disco" + - "9" + - "10" + - "11" + - "12" + - "13" + +automation: + - id: set_the_pool_light_colour + alias: Set the Pool Light Colour + trigger: + entity_id: input_select.pool_light_colour_select + platform: state + action: + service: mqtt.publish + data: + topic: viewroad-commands/poolcontrols/poollightcolour + payload: '{% set mapping = { "Off":"0", "Dk Blue":"1", + "Red":"2", "Green":"3", "4":"4" ,"Lt Blue":"5", "6":"6", "7":"7", "Disco":"8", "9":"9", "10":"10", "11":"11", "12":"12", "13":"13" } %} {% set dta = trigger.to_state.state %} + {{ mapping[dta] }} + ' diff --git a/packages/tautulli.yaml b/packages/tautulli.yaml index 77c5801..82bce9d 100644 --- a/packages/tautulli.yaml +++ b/packages/tautulli.yaml @@ -1,5 +1,5 @@ -sensor: - - platform: tautulli - api_key: !secret tautulli_api_key - host: !secret tautulli_api_host - port: !secret tautulli_api_port +#sensor: +# - platform: tautulli +# api_key: !secret tautulli_api_key +# host: !secret tautulli_api_host +# port: !secret tautulli_api_port diff --git a/packages/waste_collection.yaml b/packages/waste_collection.yaml new file mode 100644 index 0000000..9365af4 --- /dev/null +++ b/packages/waste_collection.yaml @@ -0,0 +1,5 @@ +waste_collection_schedule: + sources: + - name: aucklandcouncil_govt_nz + args: + area_number: 12344403722 # see 'How to get the source argument below' diff --git a/packages/weather_additional.yaml b/packages/weather_additional.yaml new file mode 100644 index 0000000..39383fa --- /dev/null +++ b/packages/weather_additional.yaml @@ -0,0 +1,8 @@ +sensor: + - platform: template + sensors: + weewx_wind_bearing_template: + value_template: > + {% set direction = ['N','NNE','NE','ENE','E','ESE','SE','SSE','S','SSW','SW','WSW','W','WNW','NW','NNW','N'] %} + {% set degree = states('sensor.weewx_wind_direction')|float %} + {{ direction[((degree+11.25)/22.5)|int] }}