First Commit
This commit is contained in:
commit
a7af1c3b93
22
README.md
Normal file
22
README.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
# Homeassistant Config
|
||||||
|
|
||||||
|
## Hacs
|
||||||
|
|
||||||
|
### Integrations
|
||||||
|
|
||||||
|
- Circadian Lighting
|
||||||
|
- browser_mod
|
||||||
|
- UI Lovelace Minimalist
|
||||||
|
|
||||||
|
|
||||||
|
### Frontend
|
||||||
|
|
||||||
|
- button-card
|
||||||
|
- Mini Media Player
|
||||||
|
- Simple Weather Card
|
||||||
|
- Light Entity Card
|
||||||
|
- auto-entities
|
||||||
|
- card-mod
|
||||||
|
- Sun Card
|
||||||
|
- mini-graph-card
|
||||||
|
- My Cards Bundle (https://github.com/AnthonMS/my-cards)
|
6
configuration.yaml
Normal file
6
configuration.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
homeassistant:
|
||||||
|
packages: !include_dir_named packages
|
||||||
|
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
themes: !include_dir_merge_named themes
|
24
lovelace/batteries.yaml
Normal file
24
lovelace/batteries.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: Batteries
|
||||||
|
|
||||||
|
|
||||||
|
- type: "horizontal-stack"
|
||||||
|
cards:
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_battery
|
||||||
|
entity: sensor.iphone_battery_level
|
||||||
|
variables:
|
||||||
|
ulm_card_battery_charger_type_entity_id: sensor.iphone_battery_level
|
||||||
|
ulm_card_battery_battery_level_danger: 30
|
||||||
|
ulm_card_battery_battery_level_warning: 80
|
||||||
|
ulm_card_battery_name: iPhone
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_battery
|
||||||
|
entity: sensor.ipad_battery_level
|
||||||
|
variables:
|
||||||
|
ulm_card_battery_charger_type_entity_id: sensor.ipad_battery_level
|
||||||
|
ulm_card_battery_battery_level_danger: 30
|
||||||
|
ulm_card_battery_battery_level_warning: 80
|
||||||
|
ulm_card_battery_name: iPad
|
47
lovelace/climate.yaml
Normal file
47
lovelace/climate.yaml
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: Climate
|
||||||
|
|
||||||
|
|
||||||
|
- type: custom:button-card
|
||||||
|
template: custom_card_httpedo13_sun
|
||||||
|
|
||||||
|
|
||||||
|
- type: "custom:button-card"
|
||||||
|
template: card_weather
|
||||||
|
entity: weather.dark_sky
|
||||||
|
variables:
|
||||||
|
ulm_card_weather_name: " "
|
||||||
|
ulm_card_weather_primary_info:
|
||||||
|
- wind_speed
|
||||||
|
- precipitation_probability
|
||||||
|
ulm_card_weather_backdrop:
|
||||||
|
fade: true
|
||||||
|
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_graph
|
||||||
|
entity: sensor.temperature_kai_temperature
|
||||||
|
variables:
|
||||||
|
ulm_card_graph_color: "var(--google-blue)"
|
||||||
|
ulm_card_graph_name: Temperature
|
||||||
|
ulm_card_graph_entity: sensor.temperature_kai_temperature
|
||||||
|
ulm_card_graph_color2: "var(--google-green)"
|
||||||
|
ulm_card_graph_entity2: sensor.temperature_outside_darksky
|
||||||
|
ulm_card_graph_type: fill
|
||||||
|
ulm_card_graph_hours: 6
|
||||||
|
|
||||||
|
|
||||||
|
- type: "horizontal-stack"
|
||||||
|
cards:
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_generic
|
||||||
|
entity: sensor.temperature_kai_humidity
|
||||||
|
variables:
|
||||||
|
ulm_card_generic_name: Humidity
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_generic
|
||||||
|
entity: sensor.temperature_kai_pressure
|
||||||
|
variables:
|
||||||
|
ulm_card_generic_name: Pressure
|
31
lovelace/energy.yaml
Normal file
31
lovelace/energy.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: Energy
|
||||||
|
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_graph
|
||||||
|
entity: sensor.schreibtisch_current_consumption
|
||||||
|
variables:
|
||||||
|
ulm_card_graph_color: "var(--google-green)"
|
||||||
|
ulm_card_graph_name: Desk
|
||||||
|
ulm_card_graph_entity: sensor.schreibtisch_current_consumption
|
||||||
|
ulm_card_graph_type: fill
|
||||||
|
ulm_card_graph_hours: 12
|
||||||
|
|
||||||
|
|
||||||
|
- type: "horizontal-stack"
|
||||||
|
cards:
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_generic
|
||||||
|
entity: sensor.schreibtisch_today_s_consumption
|
||||||
|
variables:
|
||||||
|
ulm_card_generic_name: Today
|
||||||
|
ulm_card_generic_icon: "mdi:home-lightning-bolt"
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_generic
|
||||||
|
entity: sensor.schreibtisch_total_consumption
|
||||||
|
variables:
|
||||||
|
ulm_card_generic_name: Total
|
||||||
|
ulm_card_generic_icon: "mdi:home-lightning-bolt"
|
29
lovelace/lights.yaml
Normal file
29
lovelace/lights.yaml
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: Lights
|
||||||
|
|
||||||
|
|
||||||
|
- type: "horizontal-stack"
|
||||||
|
cards:
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_light_slider_collapse
|
||||||
|
variables:
|
||||||
|
ulm_card_light_slider_collapse_name: Indirect
|
||||||
|
ulm_card_light_enable_collapse: false
|
||||||
|
ulm_card_light_name: Indirect
|
||||||
|
entity: light.all_indirect
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_light_slider_collapse
|
||||||
|
variables:
|
||||||
|
ulm_card_light_slider_collapse_name: Direct
|
||||||
|
ulm_card_light_enable_collapse: false
|
||||||
|
ulm_card_light_name: Direct
|
||||||
|
entity: light.all_direct
|
||||||
|
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_input_boolean
|
||||||
|
entity: switch.circadian_lighting_circadian_lighting
|
||||||
|
variables:
|
||||||
|
ulm_card_input_boolean_name: Circadian Lighting
|
24
lovelace/nas.yaml
Normal file
24
lovelace/nas.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: NAS
|
||||||
|
|
||||||
|
|
||||||
|
- type: "horizontal-stack"
|
||||||
|
cards:
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_script
|
||||||
|
variables:
|
||||||
|
ulm_card_script_title: WOL
|
||||||
|
ulm_card_script_icon: 'mdi:power'
|
||||||
|
tap_action:
|
||||||
|
action: call-service
|
||||||
|
service: switch.turn_on
|
||||||
|
service_data:
|
||||||
|
entity_id: switch.server
|
||||||
|
|
||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_binary_sensor
|
||||||
|
variables:
|
||||||
|
ulm_card_binary_sensor_alert: true
|
||||||
|
ulm_show_last_changed: true
|
||||||
|
entity: switch.server_template
|
40
lovelace/welcome.yaml
Normal file
40
lovelace/welcome.yaml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
- type: 'custom:button-card'
|
||||||
|
template: card_title
|
||||||
|
name: Home Assistant
|
||||||
|
- type: "custom:button-card"
|
||||||
|
template: "card_welcome_scenes"
|
||||||
|
triggers_update: input_boolean.welcome_collapse
|
||||||
|
entity: input_boolean.welcome_collapse
|
||||||
|
variables:
|
||||||
|
ulm_card_welcome_scenes_collapse: input_boolean.welcome_collapse
|
||||||
|
ulm_weather: "weather.dark_sky"
|
||||||
|
entity_1:
|
||||||
|
entity_id: scene.light_flux
|
||||||
|
icon: "mdi:theme-light-dark"
|
||||||
|
icon_color: "yellow"
|
||||||
|
name: "Flux"
|
||||||
|
bg_color: "yellow"
|
||||||
|
entity_2:
|
||||||
|
entity_id: scene.light_blue
|
||||||
|
icon: "mdi:television-play"
|
||||||
|
icon_color: "blue"
|
||||||
|
name: "Blue"
|
||||||
|
bg_color: "blue"
|
||||||
|
entity_3:
|
||||||
|
entity_id: "scene.light_night"
|
||||||
|
icon: "mdi:weather-night"
|
||||||
|
icon_color: "purple"
|
||||||
|
name: "Night"
|
||||||
|
bg_color: "purple"
|
||||||
|
entity_4:
|
||||||
|
entity_id: "script.light_store_restore"
|
||||||
|
icon: "mdi:lightbulb-group"
|
||||||
|
icon_color: "green"
|
||||||
|
name: "All On"
|
||||||
|
bg_color: "green"
|
||||||
|
entity_5:
|
||||||
|
entity_id: "scene.light_alloff"
|
||||||
|
icon: "mdi:lightbulb-group-off-outline"
|
||||||
|
icon_color: "red"
|
||||||
|
name: "All Off"
|
||||||
|
bg_color: "red"
|
587
packages/climate/eq3.yaml.disabled
Normal file
587
packages/climate/eq3.yaml.disabled
Normal 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
22
packages/darksky.yaml
Normal 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'
|
12
packages/homeassistant/default_theme.yaml
Normal file
12
packages/homeassistant/default_theme.yaml
Normal 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
|
13
packages/homeassistant/homeassistant.yaml
Normal file
13
packages/homeassistant/homeassistant.yaml
Normal 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:
|
22
packages/homeassistant/lovelace.yaml
Normal file
22
packages/homeassistant/lovelace.yaml
Normal 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
|
7
packages/homeassistant/recorder.yaml
Normal file
7
packages/homeassistant/recorder.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
recorder:
|
||||||
|
db_url: !secret db_url
|
||||||
|
auto_purge: true
|
||||||
|
purge_keep_days: 60
|
||||||
|
exclude:
|
||||||
|
entities:
|
||||||
|
- sensor.time
|
16
packages/light/circadian.yaml
Normal file
16
packages/light/circadian.yaml
Normal 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
|
25
packages/light/lightscenes.yaml
Normal file
25
packages/light/lightscenes.yaml
Normal 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
|
28
packages/light/lightstore.yaml
Normal file
28
packages/light/lightstore.yaml
Normal 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
|
||||||
|
|
83
packages/light/yeelight.yaml
Normal file
83
packages/light/yeelight.yaml
Normal 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
|
||||||
|
|
||||||
|
|
3
packages/minimalist/custom_entities.yaml
Normal file
3
packages/minimalist/custom_entities.yaml
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
input_boolean:
|
||||||
|
welcome_collapse:
|
||||||
|
name: welcome_collapse
|
29
packages/nas/wol.yaml
Normal file
29
packages/nas/wol.yaml
Normal 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
|
119
python_scripts/light_store.py
Normal file
119
python_scripts/light_store.py
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
VERSION = '1.2.0'
|
||||||
|
|
||||||
|
DOMAIN = 'light_store'
|
||||||
|
|
||||||
|
ATTR_OPERATION = 'operation'
|
||||||
|
ATTR_OP_SAVE = 'save'
|
||||||
|
ATTR_OP_RESTORE = 'restore'
|
||||||
|
ATTR_OVERWRITE = 'overwrite'
|
||||||
|
|
||||||
|
ATTR_STORE_NAME = 'store_name'
|
||||||
|
ATTR_ENTITY_ID = 'entity_id'
|
||||||
|
|
||||||
|
# Select light attributes to save/restore.
|
||||||
|
ATTR_BRIGHTNESS = "brightness"
|
||||||
|
ATTR_EFFECT = "effect"
|
||||||
|
ATTR_WHITE_VALUE = "white_value"
|
||||||
|
ATTR_COLOR_TEMP = "color_temp"
|
||||||
|
ATTR_HS_COLOR = "hs_color"
|
||||||
|
# Save any of these attributes.
|
||||||
|
GEN_ATTRS = [ATTR_BRIGHTNESS, ATTR_EFFECT]
|
||||||
|
# Save only one of these attributes, in order of precedence.
|
||||||
|
COLOR_ATTRS = [ATTR_WHITE_VALUE, ATTR_COLOR_TEMP, ATTR_HS_COLOR]
|
||||||
|
|
||||||
|
def store_entity_id(store_name, entity_id):
|
||||||
|
return '{}.{}'.format(store_name, entity_id.replace('.', '_'))
|
||||||
|
|
||||||
|
# Get operation (default to save.)
|
||||||
|
operation = data.get(ATTR_OPERATION, ATTR_OP_SAVE)
|
||||||
|
if operation not in [ATTR_OP_SAVE, ATTR_OP_RESTORE]:
|
||||||
|
logger.error('Invalid operation. Expected {} or {}, got: {}'.format(
|
||||||
|
ATTR_OP_SAVE, ATTR_OP_RESTORE, operation))
|
||||||
|
else:
|
||||||
|
# Get optional store name (default to DOMAIN.)
|
||||||
|
store_name = data.get(ATTR_STORE_NAME, DOMAIN)
|
||||||
|
|
||||||
|
# Get optional overwrite parameter (only applies to saving.)
|
||||||
|
overwrite = data.get(ATTR_OVERWRITE, True)
|
||||||
|
|
||||||
|
# Get optional list (or comma separated string) of switches & lights to
|
||||||
|
# save/restore.
|
||||||
|
entity_id = data.get(ATTR_ENTITY_ID)
|
||||||
|
if isinstance(entity_id, str):
|
||||||
|
entity_id = [e.strip() for e in entity_id.split(',')]
|
||||||
|
|
||||||
|
# Replace any group entities with their contents.
|
||||||
|
# Repeat until no groups left in list.
|
||||||
|
expanded_a_group = True
|
||||||
|
while entity_id and expanded_a_group:
|
||||||
|
expanded_a_group = False
|
||||||
|
for e in entity_id:
|
||||||
|
if e.startswith('group.'):
|
||||||
|
entity_id.remove(e)
|
||||||
|
g = hass.states.get(e)
|
||||||
|
if g and 'entity_id' in g.attributes:
|
||||||
|
entity_id.extend(g.attributes['entity_id'])
|
||||||
|
expanded_a_group = True
|
||||||
|
|
||||||
|
# Get lists of switches and lights that actually exist,
|
||||||
|
# and list of entities that were previously saved.
|
||||||
|
entity_ids = (hass.states.entity_ids('switch') +
|
||||||
|
hass.states.entity_ids('light'))
|
||||||
|
saved = hass.states.entity_ids(store_name)
|
||||||
|
# When restoring, limit to existing entities that were saved.
|
||||||
|
if operation == ATTR_OP_RESTORE:
|
||||||
|
saved_entity_ids = []
|
||||||
|
for e in entity_ids:
|
||||||
|
if store_entity_id(store_name, e) in saved:
|
||||||
|
saved_entity_ids.append(e)
|
||||||
|
entity_ids = saved_entity_ids
|
||||||
|
|
||||||
|
# If a list of entities was specified, further limit to just those.
|
||||||
|
# Otherwise, save all existing switches and lights, or restore
|
||||||
|
# all existing switches and lights that were previously saved.
|
||||||
|
if entity_id:
|
||||||
|
entity_ids = tuple(set(entity_ids).intersection(set(entity_id)))
|
||||||
|
|
||||||
|
if operation == ATTR_OP_SAVE:
|
||||||
|
# Only save if not already saved, or if overwite is True.
|
||||||
|
if not saved or overwrite:
|
||||||
|
# Clear out any previously saved states.
|
||||||
|
for entity_id in saved:
|
||||||
|
hass.states.remove(entity_id)
|
||||||
|
|
||||||
|
# Save selected switches and lights to store.
|
||||||
|
for entity_id in entity_ids:
|
||||||
|
cur_state = hass.states.get(entity_id)
|
||||||
|
if cur_state is None:
|
||||||
|
logger.error('Could not get state of {}.'.format(entity_id))
|
||||||
|
else:
|
||||||
|
attributes = {}
|
||||||
|
if entity_id.startswith('light.') and cur_state.state == 'on':
|
||||||
|
for attr in GEN_ATTRS:
|
||||||
|
if attr in cur_state.attributes:
|
||||||
|
attributes[attr] = cur_state.attributes[attr]
|
||||||
|
for attr in COLOR_ATTRS:
|
||||||
|
if attr in cur_state.attributes:
|
||||||
|
attributes[attr] = cur_state.attributes[attr]
|
||||||
|
break
|
||||||
|
hass.states.set(store_entity_id(store_name, entity_id),
|
||||||
|
cur_state.state, attributes)
|
||||||
|
else:
|
||||||
|
# Restore selected switches and lights from store.
|
||||||
|
for entity_id in entity_ids:
|
||||||
|
old_state = hass.states.get(store_entity_id(store_name, entity_id))
|
||||||
|
if old_state is None:
|
||||||
|
logger.error('No saved state for {}.'.format(entity_id))
|
||||||
|
else:
|
||||||
|
turn_on = old_state.state == 'on'
|
||||||
|
service_data = {'entity_id': entity_id}
|
||||||
|
component = entity_id.split('.')[0]
|
||||||
|
if component == 'light' and turn_on and old_state.attributes:
|
||||||
|
service_data.update(old_state.attributes)
|
||||||
|
hass.services.call(component,
|
||||||
|
'turn_on' if turn_on else 'turn_off',
|
||||||
|
service_data)
|
||||||
|
|
||||||
|
# Remove saved states now that we're done with them.
|
||||||
|
for entity_id in saved:
|
||||||
|
hass.states.remove(entity_id)
|
37
ui-lovelace.yaml
Normal file
37
ui-lovelace.yaml
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
---
|
||||||
|
button_card_templates: !include_dir_merge_named "custom_components/ui_lovelace_minimalist/__ui_minimalist__/ulm_templates/"
|
||||||
|
|
||||||
|
|
||||||
|
title: "Overview"
|
||||||
|
theme: "minimalist-desktop"
|
||||||
|
background: "var(--background-image)"
|
||||||
|
|
||||||
|
|
||||||
|
views:
|
||||||
|
- title: "Overview"
|
||||||
|
path: 0
|
||||||
|
cards:
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/welcome.yaml
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/lights.yaml
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/climate.yaml
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/batteries.yaml
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/energy.yaml
|
||||||
|
|
||||||
|
- type: "vertical-stack"
|
||||||
|
cards:
|
||||||
|
!include lovelace/nas.yaml
|
Reference in New Issue
Block a user