First Commit

This commit is contained in:
darthsandmann
2022-07-29 03:05:27 +02:00
commit a7af1c3b93
22 changed files with 1226 additions and 0 deletions

View File

@ -0,0 +1,587 @@
## -------------------------------------------------------------------------------------------------##
## EQ3-Heizthermostat
## -------------------------------------------------------------------------------------------------##
climate:
- platform: eq3btsmart
devices:
kai:
mac: '00:1A:22:0E:FB:32'
## -------------------------------------------------------------------------------------------------##
## Scripts: um einzelne Temperaturen zu setzen da Variable Fehler ausgibt (BUG)
## Ugly but working....
## -------------------------------------------------------------------------------------------------##
script:
climate_set_15_0:
sequence:
- service: climate.turn_off
entity_id: climate.kai
climate_set_15_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "15.50"
hvac_mode: "heat"
climate_set_16_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "16.00"
hvac_mode: "heat"
climate_set_16_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "16.50"
hvac_mode: "heat"
climate_set_17_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "17.00"
hvac_mode: "heat"
climate_set_17_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "17.50"
hvac_mode: "heat"
climate_set_18_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "18.00"
hvac_mode: "heat"
climate_set_18_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "18.50"
hvac_mode: "heat"
climate_set_19_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "19.00"
hvac_mode: "heat"
climate_set_19_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "19.50"
hvac_mode: "heat"
climate_set_20_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "20.00"
hvac_mode: "heat"
climate_set_20_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "20.00"
hvac_mode: "heat"
climate_set_21_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "21.00"
hvac_mode: "heat"
climate_set_21_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "21.50"
hvac_mode: "heat"
climate_set_22_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "22.00"
hvac_mode: "heat"
climate_set_22_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "22.50"
hvac_mode: "heat"
climate_set_23_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "23.00"
hvac_mode: "heat"
climate_set_23_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "23.50"
hvac_mode: "heat"
climate_set_24_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "24.00"
hvac_mode: "heat"
climate_set_24_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "24.50"
hvac_mode: "heat"
climate_set_25_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "25.00"
hvac_mode: "heat"
climate_set_25_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "25.50"
hvac_mode: "heat"
climate_set_26_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "26.00"
hvac_mode: "heat"
climate_set_26_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "26.50"
hvac_mode: "heat"
climate_set_27_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "27.00"
hvac_mode: "heat"
climate_set_27_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "27.50"
hvac_mode: "heat"
climate_set_28_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "28.00"
hvac_mode: "heat"
climate_set_28_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "28.50"
hvac_mode: "heat"
climate_set_29_0:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "29.00"
hvac_mode: "heat"
climate_set_29_5:
sequence:
- service: climate.set_temperature
entity_id: climate.kai
data:
temperature: "29.50"
hvac_mode: "heat"
climate_set_off:
sequence:
- service: climate.turn_off
entity_id: climate.kai
climate_set:
alias: Setze Temperatur
sequence:
- service: script.turn_on
data_template:
entity_id: >
{% set temp_set = ( states("sensor.climate_temp_set") | float ) %}
{% if states("input_boolean.climate_power") == "off" %} script.climate_set_off
{% elif temp_set == ( "00.00" | float ) %} script.climate_set_20_5
{% elif temp_set <= ( "15.00" | float ) %} script.climate_set_15_0
{% elif temp_set == ( "15.50" | float ) %} script.climate_set_15_5
{% elif temp_set == ( "16.00" | float ) %} script.climate_set_16_0
{% elif temp_set == ( "16.50" | float ) %} script.climate_set_16_5
{% elif temp_set == ( "17.00" | float ) %} script.climate_set_17_0
{% elif temp_set == ( "17.50" | float ) %} script.climate_set_17_5
{% elif temp_set == ( "18.00" | float ) %} script.climate_set_18_0
{% elif temp_set == ( "18.50" | float ) %} script.climate_set_18_5
{% elif temp_set == ( "19.00" | float ) %} script.climate_set_19_0
{% elif temp_set == ( "19.50" | float ) %} script.climate_set_19_5
{% elif temp_set == ( "20.00" | float ) %} script.climate_set_20_0
{% elif temp_set == ( "20.50" | float ) %} script.climate_set_20_5
{% elif temp_set == ( "21.00" | float ) %} script.climate_set_21_0
{% elif temp_set == ( "21.50" | float ) %} script.climate_set_21_5
{% elif temp_set == ( "22.00" | float ) %} script.climate_set_22_0
{% elif temp_set == ( "22.50" | float ) %} script.climate_set_22_5
{% elif temp_set == ( "23.00" | float ) %} script.climate_set_23_0
{% elif temp_set == ( "23.50" | float ) %} script.climate_set_23_5
{% elif temp_set == ( "24.00" | float ) %} script.climate_set_24_0
{% elif temp_set == ( "24.50" | float ) %} script.climate_set_24_5
{% elif temp_set == ( "25.00" | float ) %} script.climate_set_25_0
{% elif temp_set == ( "25.50" | float ) %} script.climate_set_25_5
{% elif temp_set == ( "26.00" | float ) %} script.climate_set_26_0
{% elif temp_set == ( "26.50" | float ) %} script.climate_set_26_5
{% elif temp_set == ( "27.00" | float ) %} script.climate_set_27_0
{% elif temp_set == ( "27.50" | float ) %} script.climate_set_27_5
{% elif temp_set == ( "28.00" | float ) %} script.climate_set_28_0
{% elif temp_set == ( "28.50" | float ) %} script.climate_set_28_5
{% elif temp_set == ( "29.00" | float ) %} script.climate_set_29_0
{% elif temp_set >= ( "29.50" | float ) %} script.climate_set_29_5
{% else %} script.climate_set_20_5 {% endif %}
## -------------------------------------------------------------------------------------------------##
## Inputs
## -------------------------------------------------------------------------------------------------##
input_number:
climate_temp:
name: Ziel Manuell
#initial: 21.5
min: 15
max: 29
step: 0.5
climate_temp_morning:
name: Ziel Morgen
#initial: 20.5
min: 15
max: 29
step: 0.5
climate_temp_night:
name: Ziel Nacht
#initial: 17.0
min: 15
max: 29
step: 0.5
climate_temp_accuracy:
name: Genauigkeit
#initial: 1
min: 0
max: 5
step: 0.5
climate_temp_offset:
name: Offset Heizung->Temp
#initial: 1
min: -2
max: 2
step: 0.5
climate_temp_last:
name: Letzte Temp
min: 0
max: 29
step: 0.01
mode: box
input_datetime:
climate_morning:
name: "Morgen"
has_time: true
has_date: false
#initial: "10:00"
climate_morning_weekend:
name: "Morgen Sa"
has_time: true
has_date: false
#initial: "15:30"
climate_night:
name: "Nacht"
has_time: true
has_date: false
#initial: "23:59"
input_boolean:
climate_auto:
name: 'Automatisch'
icon: mdi:power
#initial: off
climate_power:
name: 'Power'
icon: mdi:power
#initial: off
climate_weekday:
name: 'Wochentag'
#initial: on
climate_away:
name: 'Away'
#initial: off
## -------------------------------------------------------------------------------------------------##
## Sensoren
## -------------------------------------------------------------------------------------------------##
sensor:
## -----------------------------------------------------------------------------------------------##
## Berechnung der Temperaturveränderung
## -----------------------------------------------------------------------------------------------##
- platform: template
sensors:
climate_temp_change:
friendly_name: Veränderung
value_template: >
{% set now = states("sensor.aqara_temperature_kai_temperature")|float %}
{% set last = states("input_number.climate_temp_last")|float %}
{% set change = (now | float - last) | float %}
{% if now == ("0.0"|float) %} {% set change = ("0.0"|float) %} {% endif %}
{{ change | round(2) }}
## -----------------------------------------------------------------------------------------------##
## Berechnung der aktuellen Zieltemperatur bzgl Morgen/Nacht, Automatik/Manuell
## -----------------------------------------------------------------------------------------------##
- platform: template
sensors:
climate_temp:
friendly_name: akt. Ziel
unit_of_measurement: '°C'
value_template: >
{% set auto = states("input_boolean.climate_auto") %}
{% set manual_temp = states("input_number.climate_temp") %}
{% if auto == "off" %} {{ manual_temp }}
{% else %}
{% set time = states("sensor.time") %}
{% set morning = states("sensor.climate_morning") %}
{% set weekday = states("input_boolean.climate_weekday") %}
{% if weekday == "on" %} {% set morning = states("input_datetime.climate_morning") %}
{% else %} {% set morning = states("input_datetime.climate_morning_weekend") %} {% endif %}
{% set night = states("input_datetime.climate_night") %}
{% set morning_temp = states("input_number.climate_temp_morning")|float %}
{% set night_temp = states("input_number.climate_temp_night")|float %}
{% if night > morning %}
{% if time > morning and time <= night %} {{ morning_temp|float }}
{% else %} {{ night_temp|float }} {% endif %}
{% else %}
{% if time <= morning and time > night %} {{ morning_temp|float }}
{% else %} {{ night_temp|float }} {% endif %}
{% endif %}
{% endif %}
## -----------------------------------------------------------------------------------------------##
## Berechnung von Unterschied zwischen Heizungstemperatur und realer Temperatur
## -----------------------------------------------------------------------------------------------##
- platform: template
sensors:
climate_temp_difference:
friendly_name: 'akt. Unterschied'
value_template: >
{% if states("sensor.aqara_temperature_kai_temperature") == "unknown" %}
{{ 0 | float }}
{% else %}
{{ ( states("sensor.aqara_temperature_kai_temperature") | float - (states.sensor.climate_temp.state | float) ) | round(2) }}
{% endif %}
unit_of_measurement: '°C'
## -----------------------------------------------------------------------------------------------##
## Schrittgröße, mit der die Heizung verstellt werden soll, abhängig vom Unterschied zur realen
## Temperatur
## Variable Schrittgröße, bei positiv (zu warm) größer, bei negativ (zu kalt) geringer
## -----------------------------------------------------------------------------------------------##
- platform: template
sensors:
climate_temp_steps:
friendly_name: 'Schrittgröße'
value_template: >
{% set difference = (states("sensor.climate_temp_difference" ) | float) %}
{% set zero = ("0.0" | float ) %}
{% if difference > zero %}
{% if difference >= ("2.00"|float) %} {% set steps = ( "3.00" | float ) %}
{% elif difference >= ("1.50"|float) %} {% set steps = ( "1.50" | float ) %}
{% elif difference >= ("1.00"|float) %} {% set steps = ( "1.00" | float ) %}
{% elif difference >= ("0.50"|float) %} {% set steps = ( "0.50" | float ) %}
{% elif difference >= ("0.00"|float) %} {% set steps = ( "0.00" | float ) %}
{% endif %}
{% else %}
{% if difference <= ("-2.00"|float) %} {% set steps = ( "3.00" | float ) %}
{% elif difference <= ("-1.50"|float) %} {% set steps = ( "1.50" | float ) %}
{% elif difference <= ("-1.00"|float) %} {% set steps = ( "0.50" | float ) %}
{% elif difference <= ("-0.50"|float) %} {% set steps = ( "0.50" | float ) %}
{% elif difference <= ("-0.00"|float) %} {% set steps = ( "0.00" | float ) %}
{% endif %}
{% endif %}
{{ steps }}
## -----------------------------------------------------------------------------------------------##
## Berechnung der Temperatur, auf die die Heizung gestellt werden soll, um Zieltemperatur zu
## erreichen. Berücksichtigung für Genauigkeit, variable Temperaturanpassung und Temperatur-
## anpassung aufgrund von Offset. Berechnung ob Anpassung Positiv oder Negativ
## -----------------------------------------------------------------------------------------------##
- platform: template
sensors:
climate_temp_set:
friendly_name: '-> Heizung'
value_template: >
{% set difference = (states("sensor.climate_temp_difference" ) | float) %}
{% set change = (states("sensor.climate_temp_change" ) | float) %}
{% set goal = (states("sensor.climate_temp" ) | float) %}
{% set temp = (states("sensor.aqara_temperature_kai_temperature") | float ) %}
{% set climate = (state_attr("climate.kai", "temperature") | float ) %}
{% if climate < ("15.0" | float ) %} {% set climate = ("15.0" | float) %} {% endif %}
{% set max = states("sensor.climate_temp") | float %}
{% set min = states("sensor.climate_temp") | float - (states.input_number.climate_temp_accuracy.state | float) %}
{% set zero = ("0.0" | float ) %}
{% set difference_max = ("1.5" | float ) %}
{% set difference_min = ("-2.0" | float ) %}
{% set change_max = ("1.0" | float ) %}
{% set offset = (states("input_number.climate_temp_offset") | float ) %}
{% set climate_goal = (goal | float + ("2.0" | float) | float - offset) | float %}
{% set steps = (states("sensor.climate_temp_steps") | float) %}
{% if difference == zero %} {% set result = climate %}
{% elif (difference > difference_max) %} {% set result = ("15.0"|float) %}
{% elif (difference < difference_min) %} {% set result = goal - offset %}
{% elif difference > zero %}
{% if (climate_goal <= climate) or (change >= change_max) %} {% set result = goal - offset %}
{% elif temp > max %} {% set result = (climate | float - steps) | float %}
{% else %} {% set result = climate %} {% endif %}
{% elif difference < zero %}
{% if temp < min %}
{% set result = (climate | float + steps) | float %}
{% else %}
{% if change >= change_max %}
{% set result = goal - offset %}
{% else %}
{% set result = climate %}
{% endif %}
{% endif %}
{% endif %}
{% if result < ("15.0"|float) %} {{ ("15.0"|float) }}
{% elif result > ("29.5"|float) %} {{ ("29.5"|float) }}
{% else %} {{ result }}
{% endif %}
unit_of_measurement: '°C'
## -----------------------------------------------------------------------------------------------##
## Time / Date
## -----------------------------------------------------------------------------------------------##
- platform: time_date
display_options:
- 'time'
- 'date'
automation:
## -----------------------------------------------------------------------------------------------##
## Trigger alle 15min um Abfrage und Temperaturanpassung durchzuführen
## -----------------------------------------------------------------------------------------------##
- alias: climate_set_auto
initial_state: on
trigger:
- platform: time_pattern
minutes: '/5'
- platform: state
entity_id: sensor.climate_temp
condition:
- condition: template
value_template: '{{ states.climate.kai.state != "unavailable" }}'
action:
- service: script.turn_on
entity_id: script.climate_set
- delay: '00:20'
- service: script.turn_on
entity_id: script.climate_set
- service: input_number.set_value
data_template:
entity_id: input_number.climate_temp_last
value: '{{ states("sensor.aqara_temperature_kai_temperature")|float }}'
- alias: climate_set_manual
initial_state: on
trigger:
- platform: state
entity_id: input_number.climate_temp
condition:
- condition: template
value_template: '{{ states.climate.kai.state != "unavailable" }}'
action:
- service: input_boolean.turn_off
entity_id: input_boolean.climate_auto
- service: script.turn_on
entity_id: script.climate_set
- delay: '00:20'
- service: script.turn_on
entity_id: script.climate_set
- alias: climate_set_power_off
initial_state: on
trigger:
- platform: state
entity_id: input_boolean.climate_power
to: "off"
action:
- service: climate.turn_off
entity_id: climate.kai
- delay: '00:20'
- service: climate.turn_off
entity_id: climate.kai
- alias: climate_set_power_on
initial_state: on
trigger:
- platform: state
entity_id: input_boolean.climate_power
to: "on"
action:
- service: climate.turn_on
entity_id: climate.kai
- delay: '00:20'
- service: climate.turn_on
entity_id: climate.kai
## -----------------------------------------------------------------------------------------------##
## Trigger alle 5min, wenn Wochentag -> aktiviere Weekday-Boolean
## -----------------------------------------------------------------------------------------------##
- alias: climate_weekday
initial_state: on
trigger:
platform: time_pattern
minutes: '/5'
condition:
- condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
- sun
action:
service: input_boolean.turn_on
entity_id: input_boolean.climate_weekday
## -----------------------------------------------------------------------------------------------##
## Trigger alle 5min, wenn Wochenende -> deaktiviere Weekday-Boolean
## -----------------------------------------------------------------------------------------------##
- alias: climate_weekend
initial_state: on
trigger:
platform: time_pattern
minutes: '/5'
condition:
- condition: time
weekday:
- sat
action:
service: input_boolean.turn_off
entity_id: input_boolean.climate_weekday

22
packages/darksky.yaml Normal file
View File

@ -0,0 +1,22 @@
## -------------------------------------------------------------------------------------------------##
## DarkSky
## -------------------------------------------------------------------------------------------------##
## -------------------------------------------------------------------------------------------------##
## Wetter-Plattform
## -------------------------------------------------------------------------------------------------##
weather:
- platform: darksky
api_key: !secret darksky
mode: daily
sun:
sensor:
- platform: template
sensors:
temperature_outside_darksky:
value_template: '{{ states.weather.dark_sky.attributes.temperature }}'
friendly_name: 'Outside Temperature'

View File

@ -0,0 +1,12 @@
automation:
- id: 'default_theme'
alias: Set Theme on HA Start
description: ''
trigger:
- event: start
platform: homeassistant
condition: []
action:
- data:
name: minimalist-desktop
service: frontend.set_theme

View File

@ -0,0 +1,13 @@
homeassistant:
name: Home
latitude: !secret latitude
longitude: !secret longitude
elevation: !secret elevation
unit_system: metric
temperature_unit: C
time_zone: Europe/Berlin
allowlist_external_dirs:
- '/tmp'
default_config:

View File

@ -0,0 +1,22 @@
lovelace:
mode: yaml
resources:
- url: /hacsfiles/button-card/button-card.js
type: module
- url: /hacsfiles/light-entity-card/light-entity-card.js
type: module
- url: /hacsfiles/lovelace-auto-entities/auto-entities.js
type: module
- url: /hacsfiles/lovelace-card-mod/card-mod.js
type: module
- url: /hacsfiles/mini-graph-card/mini-graph-card-bundle.js
type: module
- url: /hacsfiles/mini-media-player/mini-media-player-bundle.js
type: module
- url: /hacsfiles/my-cards/my-slider.js
type: module
- url: /hacsfiles/simple-weather-card/simple-weather-card-bundle.js
type: module
- url: /hacsfiles/home-assistant-sun-card/home-assistant-sun-card.js
type: module

View File

@ -0,0 +1,7 @@
recorder:
db_url: !secret db_url
auto_purge: true
purge_keep_days: 60
exclude:
entities:
- sensor.time

View File

@ -0,0 +1,16 @@
## -------------------------------------------------------------------------------------------------##
## Circadian Lighting / Flux
## -------------------------------------------------------------------------------------------------##
circadian_lighting:
min_colortemp: 2700
max_colortemp: 6500
interval: 450
transition: 8
switch:
- platform: circadian_lighting
lights_ct:
- light.stripe
- light.direct
max_brightness: 80

View File

@ -0,0 +1,25 @@
scene:
- name: light_alloff
entities:
light.all_lights: false
- name: light_flux
entities:
light.all_direct: false
light.all_indirect: true
switch.circadian_lighting_circadian_lighting: on
- name: light_blue
entities:
switch.circadian_lighting_circadian_lighting: off
light.all_direct: false
light.all_indirect:
rgb_color: [0, 0, 255]
state: true
brightness: 20
- name: light_night
entities:
switch.circadian_lighting_circadian_lighting: off
light.all_direct: false
light.all_indirect:
rgb_color: [255, 139, 21]
state: true
brightness: 1

View File

@ -0,0 +1,28 @@
## -------------------------------------------------------------------------------------------------##
## Light_Store
## https://github.com/pnbruckner/homeassistant-config/blob/master/python_scripts/light_store.py
## -------------------------------------------------------------------------------------------------##
script:
light_store_save:
sequence:
- service: python_script.light_store
data:
store_name: flash_store
entity_id:
- light.bed
- light.closet
- light.desk
- light.direct
- light.tv
light_store_off:
sequence:
- service: script.light_store_save
- service: light.turn_off
entity_id: light.all_lights
light_store_restore:
sequence:
- service: python_script.light_store
data:
store_name: flash_store
operation: restore

View File

@ -0,0 +1,83 @@
## -------------------------------------------------------------------------------------------------##
## Yeelight
## -------------------------------------------------------------------------------------------------##
## -------------------------------------------------------------------------------------------------##
## Discovery disable
## -------------------------------------------------------------------------------------------------##
discovery:
ignore:
- yeelight
## -------------------------------------------------------------------------------------------------##
## Lampen-Konfig
## -------------------------------------------------------------------------------------------------##
yeelight:
devices:
10.10.10.82:
name: ceiling1
save_on_change: False
transition: 2500
10.10.10.83:
name: ceiling2
save_on_change: False
transition: 2500
10.10.10.80:
name: ceiling3
save_on_change: False
transition: 2500
10.10.10.81:
name: bed_ceiling
save_on_change: False
transition: 2500
10.10.10.84:
name: bed
save_on_change: False
transition: 2500
model: strip1
10.10.10.85:
name: desk
save_on_change: False
transition: 2500
model: strip1
## -------------------------------------------------------------------------------------------------##
## Lampengruppen
## -------------------------------------------------------------------------------------------------##
light:
- platform: group
name: ceiling
entities:
- light.ceiling1
- light.ceiling2
- light.ceiling3
- platform: group
name: direct
entities:
- light.bed_ceiling
- light.ceiling1
- light.ceiling2
- light.ceiling3
- platform: group
name: stripe
entities:
- light.bed
- light.desk
- platform: group
name: all_direct
entities:
- light.direct
- platform: group
name: all_indirect
entities:
- light.stripe
- platform: group
name: all_lights
entities:
- light.all_direct
- light.all_indirect

View File

@ -0,0 +1,3 @@
input_boolean:
welcome_collapse:
name: welcome_collapse

29
packages/nas/wol.yaml Normal file
View File

@ -0,0 +1,29 @@
## -------------------------------------------------------------------------------------------------##
## NAS - Wake on Lan
## -------------------------------------------------------------------------------------------------##
wake_on_lan:
switch:
- platform: wake_on_lan
mac: 54:04:A6:BF:1E:43
name: Server
host: ip.wnsrt.de
#switch:
- platform: template
switches:
server_template:
friendly_name: Server
value_template: "{{ is_state('device_tracker.nas', 'home') }}"
icon_template: mdi:desktop-tower
turn_on:
service: switch.turn_on
target:
entity_id: switch.server
turn_off:
device_tracker:
- platform: ping
hosts:
nas: 192.168.178.81