First Commit
This commit is contained in:
		
							
								
								
									
										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