├── README.md
├── automations
├── media.json
├── motion.yaml
├── motion2.yaml
├── notify-machine-finishes.yaml
└── power_notify.yaml
├── blob
├── circles
│ ├── circle-speaker.yaml
│ ├── circle-x.yaml
│ └── circle.yaml
├── holds
│ ├── hold-action-es-3.yaml
│ ├── hold-action-es-cover.yaml
│ ├── hold-action-es-speaker-1.yaml
│ ├── hold-action-es-switch.yaml
│ ├── hold-action-es.yaml
│ ├── hold-action-lights.yaml
│ └── hold-action-vacuum.yaml
├── icon-action.yaml
├── icons
│ ├── arbeitszimmer.yaml
│ ├── badezimmer.yaml
│ ├── dusche.yaml
│ ├── eingang.yaml
│ ├── essbereich.yaml
│ ├── flur.yaml
│ ├── freizeitraum.yaml
│ ├── garten.yaml
│ ├── hauseingang.yaml
│ ├── kinderzimmer.yaml
│ ├── obergeschoss.yaml
│ ├── path-devices.yaml
│ ├── path-girl.yaml
│ ├── path-kid.yaml
│ ├── path-lights.yaml
│ ├── path-man.yaml
│ ├── path-sensors.yaml
│ ├── path-shutter.yaml
│ ├── schlafzimmer.yaml
│ ├── shutter.yaml
│ ├── speaker.yaml
│ ├── switch.yaml
│ ├── tv.yaml
│ ├── untergeschoss.yaml
│ ├── vacuum.yaml
│ └── wohnzimmer.yaml
├── sensors
│ ├── sensors-arbeitszimmer.yaml
│ ├── sensors-badezimmer.yaml
│ ├── sensors-dusche.yaml
│ ├── sensors-flur.yaml
│ ├── sensors-haus.yaml
│ ├── sensors-kinderzimmer.yaml
│ ├── sensors-kueche.yaml
│ ├── sensors-obergeschoss.yaml
│ ├── sensors-schlafzimmer.yaml
│ ├── sensors-untergeschoss.yaml
│ └── sensors-wohnzimmer.yaml
├── states
│ ├── state-es-speaker-1.yaml
│ ├── state-es.yaml
│ ├── state-icon.yaml
│ └── state-x.yaml
├── styles
│ ├── style-card-path.yaml
│ ├── style-card-sensors.yaml
│ ├── style-card.yaml
│ ├── style-icon-2.yaml
│ ├── style-icon.yaml
│ └── styles-x.yaml
└── taps
│ ├── tap-action-es-arbeitszimmer.yaml
│ ├── tap-action-es-dusche.yaml
│ ├── tap-action-es-flur.yaml
│ ├── tap-action-es-haus.yaml
│ ├── tap-action-es-kinderzimmer.yaml
│ ├── tap-action-es-kueche.yaml
│ ├── tap-action-es-obergeschoss.yaml
│ ├── tap-action-es-schlafzimmer.yaml
│ ├── tap-action-es-untergeschoss.yaml
│ ├── tap-action-es-vacuum.yaml
│ ├── tap-action-es-wohnzimmer.yaml
│ ├── tap-action-girl.yaml
│ ├── tap-action-kid.yaml
│ └── tap-action-man.yaml
├── logos
├── Custom cards for Home Assistant.png
├── Mattias Persson.png
├── Thomas Lovén.png
├── blob-1.png
├── blob-2.png
├── blob-3.png
├── blob-4.png
├── blob-5.png
├── blob-video.mp4
├── case.gif
├── case.jpg
├── the blob.gif
├── unraid-1.png
└── unraid-2.png
├── ui-lovelace.yaml
└── www
├── DarkBlue.jpg
├── DarkBlue_2.jpg
├── DarkGreen.jpg
├── DarkGreen_2.jpg
├── Disk-5s-400px.svg
├── Fluid-11.1s-101px.svg
├── Fluid-20s-100px.svg
├── Fluid-20s-150px.svg
├── Foam-10s-120px.svg
├── Foam-10s-1644px-3.svg
├── LightBlue.jpg
├── LightBlue_2.jpg
├── LightGreen.jpg
├── LightGreen_2.jpg
├── Mountains.jpg
├── Orange.jpg
├── Orange_2.jpg
├── Photon-10s-150px.svg
├── Red.jpg
├── Red_2.jpg
├── Vacuum - On-2.svg
├── Vacuum - On.svg
├── Valley-20s-100px.svg
├── Wave-10s-100px.svg
├── Wave-20s-100px.svg
├── ambiance.png
├── classic.png
├── color.png
├── css
└── sanfracisco.css
├── day.jpeg
├── day_2.jpeg
├── fan.svg
├── hass-bha-icons.html
├── hass-fontawesome-brands.html
├── hass-fontawesome-regular.html
├── hass-fontawesome-solid.html
├── images
├── abstract.jpg
├── apple-1.jpg
├── apple-10.jpg
├── apple-11.jpg
├── apple-12.jpg
├── apple-13.jpg
├── apple-14.jpg
├── apple-15.jpg
├── apple-16.jpg
├── apple-2.jpg
├── apple-3.jpg
├── apple-4.jpg
├── apple-5.jpg
├── apple-6.jpg
├── apple-7.jpg
├── apple-8.jpg
├── apple-9.jpg
└── ios.jpg
└── night.jpeg
/automations/motion.yaml:
--------------------------------------------------------------------------------
1 | blueprint:
2 | name: Motion sensor controls the light
3 | description: >
4 | Predefined scene is switched on based on movement and illuminance. And after no movement is registered, the so-called dimmed scene is switched on.
5 | And after that, the light is switched off. This blueprint uses auxiliary entities that need to be created for some input values themselves in order to set limits dynamically.
6 |
7 | This is a fork of this blueprint.
8 |
9 | https://community.home-assistant.io/t/turn-on-light-switch-scene-script-or-group-based-on-motion-and-illuminance-more-conditions
10 |
11 | - service: homeassistant.turn_on
12 | entity_id: !input target_entity_dimmed
13 |
14 | target_entity_dimmed:
15 | name: Enter the dimmed scene for the target entity.
16 | description: The light, switch, scene to turn on (or script to run) after the wait time.
17 | selector:
18 | entity:
19 |
20 | target_entity_dimmed: !input target_entity_dimmed
21 |
22 | Thank you very much.
23 |
24 | domain: automation
25 | input:
26 | motion_sensor:
27 | name: Motion Sensor
28 | description: This sensor will trigger the turning on of the target entity.
29 | selector:
30 | entity:
31 | domain: binary_sensor
32 | device_class: motion
33 | target_entity:
34 | name: Enter the scene for the target entity.
35 | description: The light, switch, scene to turn on (or script to run) when the automation is triggered.
36 | selector:
37 | entity:
38 | target_entity_dimmed:
39 | name: Enter the dimmed scene for the target entity.
40 | description: The light, switch, scene to turn on (or script to run) after the wait time.
41 | selector:
42 | entity:
43 | illuminance_sensor:
44 | name: (OPTIONAL) Illuminance sensor
45 | description: This sensor will be used to determine the illumination.
46 | default:
47 | selector:
48 | entity:
49 | domain: sensor
50 | device_class: illuminance
51 | illuminance_cutoff:
52 | name: (OPTIONAL) Illuminance cutoff value
53 | description: This input_number will be used to compare to the current illumination to determine if it is low.
54 | default:
55 | selector:
56 | entity:
57 | domain: input_number
58 | blocker_entity:
59 | name: (OPTIONAL) Blocking entity
60 | description: If this entity's state is on, it will prevent the automation from running. E.g. sleepmode or away mode.
61 | default:
62 | selector:
63 | entity:
64 | time_limit_before:
65 | name: (OPTIONAL) Only run before time.
66 | description: Automation will only run when time is earlier than this input_datetime value.
67 | default:
68 | selector:
69 | entity:
70 | domain: input_datetime
71 | time_limit_after:
72 | name: (OPTIONAL) Only run after time.
73 | description: Automation will only run when time is later than this input_datetime value.
74 | default:
75 | selector:
76 | entity:
77 | domain: input_datetime
78 | no_motion_wait:
79 | name: (OPTIONAL) Turn off wait time
80 | description: Time to leave the light on after last motion is detected. If not used entity will not auto turn off. Only works for target_entity types light and switch.
81 | default:
82 | selector:
83 | entity:
84 | domain: input_number
85 | turn_off_blocker_entity:
86 | name: (OPTIONAL) Turn-off Blocking entity
87 | description: If this entity's state is on, it will prevent the target entity from turning off after the set delay.
88 | default:
89 | selector:
90 | entity:
91 | target_off_entity:
92 | name: (OPTIONAL) Turn-off entity
93 | description: If defined, this entity will be turned off instead of the default target entity. This can be helpful when using target entities of type scene or script.
94 | default:
95 | selector:
96 | entity:
97 |
98 | mode: restart
99 | max_exceeded: silent
100 |
101 | variables:
102 | target_entity: !input target_entity
103 | target_entity_dimmed: !input target_entity_dimmed
104 | illuminance_currently: !input illuminance_sensor
105 | illuminance_cutoff: !input illuminance_cutoff
106 | blocker_entity: !input blocker_entity
107 | time_limit_before: !input time_limit_before
108 | time_limit_after: !input time_limit_after
109 | no_motion_wait: !input no_motion_wait
110 | entity_domain: "{{ states[target_entity].domain }}"
111 | turn_off_blocker_entity: !input turn_off_blocker_entity
112 | target_off_entity: !input target_off_entity
113 |
114 | trigger:
115 | platform: state
116 | entity_id: !input motion_sensor
117 | to: 'on'
118 |
119 | condition:
120 | # First condition: When entity was already on because the automation ran recently, do not check illuminance because it could have increased above threshold because of a light that was just turned on.
121 | - condition: template
122 | value_template: "{{ (states[target_entity].state == 'on') or (illuminance_currently == none) or (illuminance_cutoff == none) or (states[illuminance_currently].state | int < states[illuminance_cutoff].state | int) }}"
123 | - condition: template
124 | value_template: "{{ (blocker_entity == none) or (states[blocker_entity].state == 'off') }}"
125 | - condition: template
126 | value_template: >
127 | {% set current_time = now().strftime("%H:%M") %}
128 |
129 | {% if time_limit_before != none and time_limit_after == none %}
130 | {{ states[time_limit_before].state > current_time }}
131 | {% elif time_limit_before == none and time_limit_after != none %}
132 | {{ states[time_limit_after].state < current_time }}
133 | {% elif time_limit_before != none and time_limit_after != none %}
134 | {% set before_limit_is_on_next_day = states[time_limit_after].state > states[time_limit_before].state %}
135 | {{ (before_limit_is_on_next_day or states[time_limit_before].state > current_time) and states[time_limit_after].state < current_time }}
136 | {% else %}
137 | true
138 | {% endif %}
139 |
140 | action:
141 | - service: homeassistant.turn_on
142 | entity_id: !input target_entity
143 | - condition: template
144 | value_template: "{{ no_motion_wait != none }}"
145 | - wait_for_trigger:
146 | platform: state
147 | entity_id: !input motion_sensor
148 | from: "on"
149 | to: "off"
150 | - service: homeassistant.turn_on
151 | entity_id: !input target_entity_dimmed
152 | - delay:
153 | minutes: '{{ states[no_motion_wait].state | int }}'
154 | - condition: template
155 | value_template: "{{ (turn_off_blocker_entity == none) or (states[turn_off_blocker_entity].state == 'off') }}"
156 | - choose:
157 | - conditions:
158 | - condition: template
159 | value_template: "{{ (target_off_entity != none) }}"
160 | sequence:
161 | - service: homeassistant.turn_off
162 | entity_id: !input target_off_entity
163 | default:
164 | - service: homeassistant.turn_off
165 | entity_id: !input target_entity
166 |
--------------------------------------------------------------------------------
/automations/motion2.yaml:
--------------------------------------------------------------------------------
1 | blueprint:
2 | name: Motion sensor controls the light
3 | description: >
4 | Predefined scene is switched on based on movement and illuminance. And after no movement is registered, the so-called dimmed scene is switched on. And after that, the light is switched off. This blueprint uses auxiliary entities that need to be created for some input values themselves in order to set limits dynamically.
5 |
6 | This is a fork of this blueprint.
7 | https://community.home-assistant.io/t/turn-on-light-switch-scene-script-or-group-based-on-motion-and-illuminance-more-conditions
8 |
9 | domain: automation
10 | input:
11 | motion_sensor:
12 | name: Motion Sensor
13 | description: This sensor will trigger the turning on of the target entity.
14 | selector:
15 | entity:
16 | target_entity:
17 | name: Target entity.
18 | description: The light, switch, scene to turn on (or script to run) when the automation is triggered.
19 | selector:
20 | entity:
21 | light_brightness:
22 | name: Brightness for the dimmed light.
23 | description: Choose the brightness.
24 | default: 25
25 | selector:
26 | number:
27 | min: 1.0
28 | max: 255.0
29 | mode: slider
30 | step: 1.0
31 | illuminance_sensor:
32 | name: (OPTIONAL) Illuminance sensor
33 | description: This sensor will be used to determine the illumination.
34 | default:
35 | selector:
36 | entity:
37 | domain: sensor
38 | device_class: illuminance
39 | illuminance_cutoff:
40 | name: (OPTIONAL) Illuminance cutoff value
41 | description: This input_number will be used to compare to the current illumination to determine if it is low.
42 | default:
43 | selector:
44 | entity:
45 | domain: input_number
46 | blocker_entity:
47 | name: (OPTIONAL) Blocking entity
48 | description: If this entity's state is on, it will prevent the automation from running. E.g. sleepmode or away mode.
49 | default:
50 | selector:
51 | entity:
52 | time_limit_before:
53 | name: (OPTIONAL) Only run before time.
54 | description: Automation will only run when time is earlier than this input_datetime value.
55 | default:
56 | selector:
57 | entity:
58 | domain: input_datetime
59 | time_limit_after:
60 | name: (OPTIONAL) Only run after time.
61 | description: Automation will only run when time is later than this input_datetime value.
62 | default:
63 | selector:
64 | entity:
65 | domain: input_datetime
66 | no_motion_wait:
67 | name: (OPTIONAL) Turn off wait time
68 | description: Time to leave the target entity on after last motion is detected. If not used entity will not auto turn off.
69 | default:
70 | selector:
71 | entity:
72 | domain: input_number
73 | turn_off_blocker_entity:
74 | name: (OPTIONAL) Turn-off Blocking entity
75 | description: If this entity's state is on, it will prevent the target entity from turning off after the set delay.
76 | default:
77 | selector:
78 | entity:
79 | target_off_entity:
80 | name: (OPTIONAL) Turn-off entity
81 | description: If defined, this entity will be turned off instead of the default target entity. This can be helpful when using target entities of type scene or script.
82 | default:
83 | selector:
84 | entity:
85 |
86 | mode: restart
87 | max_exceeded: silent
88 |
89 | variables:
90 | target_entity: !input target_entity
91 | illuminance_currently: !input illuminance_sensor
92 | illuminance_cutoff: !input illuminance_cutoff
93 | blocker_entity: !input blocker_entity
94 | time_limit_before: !input time_limit_before
95 | time_limit_after: !input time_limit_after
96 | no_motion_wait: !input no_motion_wait
97 | entity_domain: "{{ states[target_entity].domain }}"
98 | turn_off_blocker_entity: !input turn_off_blocker_entity
99 | target_off_entity: !input target_off_entity
100 |
101 | trigger:
102 | platform: state
103 | entity_id: !input motion_sensor
104 | to: 'on'
105 |
106 | condition:
107 | # First condition: When entity was already on because the automation ran recently, do not check illuminance because it could have increased above threshold because of a light that was just turned on.
108 | - condition: template
109 | value_template: "{{ (states[target_entity].state == 'on') or (illuminance_currently == none) or (illuminance_cutoff == none) or (states[illuminance_currently].state | int < states[illuminance_cutoff].state | int) }}"
110 | - condition: template
111 | value_template: "{{ (blocker_entity == none) or (states[blocker_entity].state == 'off') }}"
112 | - condition: template
113 | value_template: >
114 | {% set current_time = now().strftime("%H:%M") %}
115 |
116 | {% if time_limit_before != none and time_limit_after == none %}
117 | {{ states[time_limit_before].state > current_time }}
118 | {% elif time_limit_before == none and time_limit_after != none %}
119 | {{ states[time_limit_after].state < current_time }}
120 | {% elif time_limit_before != none and time_limit_after != none %}
121 | {% set before_limit_is_on_next_day = time_limit_after > time_limit_before %}
122 | {% if not before_limit_is_on_next_day %}
123 | {{ (states[time_limit_after].state < current_time) and (states[time_limit_before].state > current_time) }}
124 | {% elif before_limit_is_on_next_day %}
125 | {{ (states[time_limit_before].state > current_time) or (states[time_limit_after].state < current_time) }}
126 | {% endif %}
127 | {% else %}
128 | true
129 | {% endif %}
130 |
131 | action:
132 | - service: homeassistant.turn_on
133 | entity_id: !input target_entity
134 | - condition: template
135 | value_template: "{{ no_motion_wait != none }}"
136 | - wait_for_trigger:
137 | platform: state
138 | entity_id: !input motion_sensor
139 | from: "on"
140 | to: "off"
141 | - service: light.turn_on
142 | data:
143 | brightness: !input 'light_brightness'
144 | entity_id: !input target_entity
145 | - delay:
146 | minutes: '{{ states[no_motion_wait].state | int }}'
147 | - condition: template
148 | value_template: "{{ (turn_off_blocker_entity == none) or (states[turn_off_blocker_entity].state == 'off') }}"
149 | - choose:
150 | - conditions:
151 | - condition: template
152 | value_template: "{{ (target_off_entity != none) }}"
153 | sequence:
154 | - service: homeassistant.turn_off
155 | entity_id: !input target_off_entity
156 | default:
157 | - service: homeassistant.turn_off
158 | entity_id: !input target_entity
159 |
--------------------------------------------------------------------------------
/automations/notify-machine-finishes.yaml:
--------------------------------------------------------------------------------
1 | blueprint:
2 | name: Appliance has finished
3 | description: Do something when an appliance (like a washing machine or dishwasher)
4 | has finished as detected by a power sensor.
5 | domain: automation
6 | input:
7 | power_sensor:
8 | name: Power Sensor
9 | description: 'Power sensor entity (e.g. from a smart plug device).'
10 | selector:
11 | entity:
12 | domain: switch
13 | starting_threshold:
14 | name: Starting power threshold
15 | description: Power threshold above which we assume the appliance has started.
16 | default: 5
17 | selector:
18 | number:
19 | min: 1.0
20 | max: 100.0
21 | unit_of_measurement: W
22 | mode: slider
23 | step: 1.0
24 | starting_hysteresis:
25 | name: Starting hysteresis
26 | description: Time duration the power measurement has to stay above the starting
27 | power threshold.
28 | default: 5
29 | selector:
30 | number:
31 | min: 0.25
32 | max: 60.0
33 | unit_of_measurement: min
34 | mode: slider
35 | step: 0.25
36 | finishing_threshold:
37 | name: Finishing power threshold
38 | description: Power threshold below which we assume the appliance has finished.
39 | default: 5
40 | selector:
41 | number:
42 | min: 1.0
43 | max: 100.0
44 | unit_of_measurement: W
45 | mode: slider
46 | step: 1.0
47 | finishing_hysteresis:
48 | name: Finishing hysteresis
49 | description: Time duration the power measurement has to stay below the finishing
50 | power threshold.
51 | default: 5
52 | selector:
53 | number:
54 | min: 0.25
55 | max: 60.0
56 | unit_of_measurement: min
57 | mode: slider
58 | step: 0.25
59 | actions:
60 | name: Actions
61 | description: Actions (e.g. pushing a notification, TTS announcement, ...)
62 | selector:
63 | action: {}
64 | trigger:
65 | - platform: numeric_state
66 | entity_id: !input 'power_sensor'
67 | attribute: current_power_w
68 | for:
69 | minutes: !input 'starting_hysteresis'
70 | above: !input 'starting_threshold'
71 | condition: []
72 | action:
73 | - wait_for_trigger:
74 | - platform: numeric_state
75 | entity_id: !input 'power_sensor'
76 | attribute: current_power_w
77 | below: !input 'finishing_threshold'
78 | for:
79 | minutes: !input 'finishing_hysteresis'
80 | - choose: []
81 | default: !input 'actions'
82 | mode: single
83 | max_exceeded: silent
84 |
--------------------------------------------------------------------------------
/automations/power_notify.yaml:
--------------------------------------------------------------------------------
1 | blueprint:
2 | name: Appliance has finished
3 | description: Do something when an appliance (like a washing machine or dishwasher)
4 | has finished as detected by a power sensor.
5 | domain: automation
6 | input:
7 | power_sensor:
8 | name: Power Sensor
9 | description: 'Power sensor entity (e.g. from a smart plug device).'
10 | selector:
11 | entity:
12 | domain: sensor
13 | starting_threshold:
14 | name: Starting power threshold
15 | description: Power threshold above which we assume the appliance has started.
16 | default: 5
17 | selector:
18 | number:
19 | min: 1.0
20 | max: 100.0
21 | unit_of_measurement: W
22 | mode: slider
23 | step: 1.0
24 | starting_hysteresis:
25 | name: Starting hysteresis
26 | description: Time duration the power measurement has to stay above the starting
27 | power threshold.
28 | default: 5
29 | selector:
30 | number:
31 | min: 0.25
32 | max: 60.0
33 | unit_of_measurement: min
34 | mode: slider
35 | step: 0.25
36 | finishing_threshold:
37 | name: Finishing power threshold
38 | description: Power threshold below which we assume the appliance has finished.
39 | default: 5
40 | selector:
41 | number:
42 | min: 1.0
43 | max: 100.0
44 | unit_of_measurement: W
45 | mode: slider
46 | step: 1.0
47 | finishing_hysteresis:
48 | name: Finishing hysteresis
49 | description: Time duration the power measurement has to stay below the finishing
50 | power threshold.
51 | default: 5
52 | selector:
53 | number:
54 | min: 0.25
55 | max: 60.0
56 | unit_of_measurement: min
57 | mode: slider
58 | step: 0.25
59 | actions:
60 | name: Actions
61 | description: Actions (e.g. pushing a notification, TTS announcement, ...)
62 | selector:
63 | action: {}
64 | source_url: https://gist.github.com/sbyx/6d8344d3575c9865657ac51915684696
65 | trigger:
66 | - platform: numeric_state
67 | entity_id: !input 'power_sensor'
68 | for:
69 | minutes: !input 'starting_hysteresis'
70 | above: !input 'starting_threshold'
71 | condition: []
72 | action:
73 | - wait_for_trigger:
74 | - platform: numeric_state
75 | entity_id: !input 'power_sensor'
76 | below: !input 'finishing_threshold'
77 | for:
78 | minutes: !input 'finishing_hysteresis'
79 | - choose: []
80 | default: !input 'actions'
81 | mode: single
82 | max_exceeded: silent
83 |
--------------------------------------------------------------------------------
/blob/circles/circle-speaker.yaml:
--------------------------------------------------------------------------------
1 | info: >
2 | [[[ var brightness = entity.attributes.volume_level * 100; if
3 | (entity.state === 'playing') return ''; ]]]
--------------------------------------------------------------------------------
/blob/circles/circle-x.yaml:
--------------------------------------------------------------------------------
1 |
2 | # info: >
3 | # [[[ var brightness = [[circle-1]] * [[circle-2]]; if
4 | # (entity.state === '[[circle-3]]') return ''; ]]]
11 |
12 | info: >
13 | [[[ if (entity.state === '[[circle-3]]' && [[circle-1]]) {
14 | const [[circle-4]] = Math.round([[circle-1]] / [[circle-2]]);
15 | const radius = 20.5; const circumference = radius * 2 * Math.PI;
16 | return ``; } ]]]
19 |
20 | icon_shade: >
21 |
--------------------------------------------------------------------------------
/blob/circles/circle.yaml:
--------------------------------------------------------------------------------
1 | info: >
2 | [[[ var brightness = entity.attributes.brightness / 2.54
3 | ; if (entity.state === 'on') return '';
10 | ]]]
--------------------------------------------------------------------------------
/blob/holds/hold-action-es-cover.yaml:
--------------------------------------------------------------------------------
1 | action: call-service
2 | service: browser_mod.popup
3 | service_data:
4 | card:
5 | cards:
6 |
7 | - type: custom:layout-card
8 | layout: vertical
9 | column_width: 24%
10 | cards:
11 | - template: es-icon
12 | type: 'custom:decluttering-card'
13 | variables:
14 | - template: '[[template]]'
15 | - entity-1: '[[entity-1]]'
16 | - name-1: '[[name-1]]'
17 | - state-1: 'open'
18 | - state-2: 'closed'
19 | - circle-1: entity.attributes.current_position
20 | - circle-2: 1
21 | - circle-3: 'open'
22 | - circle-4: current_position
23 | - scene-hell: '[[scene-hell]]'
24 | - scene-relax: '[[scene-relax]]'
25 |
26 | - type: custom:hui-vertical-stack-card
27 | cards:
28 | - style: 'ha-card { width: 10px; }'
29 | template: device
30 | type: 'custom:decluttering-card'
31 | variables:
32 | - content: '[[name-1]]'
33 |
34 | - entities:
35 | - actionSize: 50px
36 | actions:
37 | - icon: 'mdi:brightness-5'
38 | name: Hell
39 | service: scene.turn_on
40 | service_data:
41 | entity_id: '[[scene-hell]]'
42 | - icon: 'mdi:brightness-4'
43 | name: Relax
44 | service: scene.turn_on
45 | service_data:
46 | entity_id: '[[scene-relax]]'
47 | borderRadius: 20px
48 | brightnessHeight: 250px
49 | brightnessWidth: 100px
50 | sliderHeight: 250px
51 | sliderWidth: 100px
52 | entity: '[[entity-1]]'
53 | fullscreen: false
54 | icon: true
55 | sliderService: cover.set_cover_position
56 | sliderColor: '#a18568'
57 | sliderTrackColor: 'rgba(25, 25, 25, 0.9)'
58 | style: >
59 | #popup > div.action-holder > div > div {
60 | margin: 1em 1em 1em 1em;
61 | font-family: 'San Francisco';
62 | font-weight: 700;
63 | font-size: 0.9em;
64 | color: #fff;
65 | }
66 | div > div > h4 {
67 | color: rgba(255, 255, 255, 1);
68 | margin-top: -65px;
69 | margin-bottom: 20px;
70 | font-size: 10px;
71 | font-weight: 700;
72 | font-family: 'San Francisco';
73 | letter-spacing: 0.04em;
74 | }
75 | #popup {
76 | margin: 0 0 0.8em 0;
77 | }
78 | #popup > div.range-holder > input[type=range]::-webkit-slider-thumb {
79 | border: 100%
80 | height: 100%
81 | width: 10px;
82 | cursor: pointer;
83 | }
84 | type: 'custom:cover-popup-card'
85 | show_header_toggle: false
86 | type: entities
87 | type: vertical-stack
88 | deviceID: this
89 | style:
90 | '--ha-card-background': transparent
91 | '--ha-card-border-radius': transparent
92 | '--iron-icon-fill-color': '#ffffff'
93 | background: 'rgba(0, 0, 0, 0.95)'
94 | border-radius: 20px
95 | font-family: San Francisco !important;
96 | font-weight: 700 !important;
97 | width: 400px;
98 | margin: 0 auto;
99 | title: ' '
100 |
101 |
102 |
--------------------------------------------------------------------------------
/blob/holds/hold-action-es-switch.yaml:
--------------------------------------------------------------------------------
1 | action: call-service
2 | service: browser_mod.popup
3 | service_data:
4 | card:
5 | cards:
6 | - entities:
7 | - entity: light.arbeitszimmer
8 | name: dssdsd
9 | toggle: true
10 | type: 'custom:slider-entity-row'
11 | show_header_toggle: false
12 | type: entities
13 | type: vertical-stack
14 | deviceID: this
15 | style:
16 | '--ha-card-background': transparent
17 | '--ha-card-border-radius': transparent
18 | '--iron-icon-fill-color': '#ffffff'
19 | background: 'rgba(0, 0, 0, 0.95)'
20 | border-radius: 20px
21 | box-shadow: unset !important;
22 | font-family: San Francisco !important;
23 | font-weight: 700 !important;
24 | title: ' '
--------------------------------------------------------------------------------
/blob/holds/hold-action-es.yaml:
--------------------------------------------------------------------------------
1 | action: call-service
2 | service: browser_mod.popup
3 | service_data:
4 | card:
5 | cards:
6 |
7 | - type: custom:layout-card
8 | layout: vertical
9 | column_width: 24%
10 | cards:
11 | - template: es-icon
12 | type: 'custom:decluttering-card'
13 | variables:
14 | - template: '[[template]]'
15 | - entity-1: '[[entity-1]]'
16 | - name-1: '[[name-1]]'
17 | - state-1: 'open'
18 | - state-2: 'closed'
19 | - circle-1: entity.attributes.current_position
20 | - circle-2: 1
21 | - circle-3: 'open'
22 | - circle-4: current_position
23 | - scene-hell: '[[scene-hell]]'
24 | - scene-relax: '[[scene-relax]]'
25 |
26 | - type: custom:hui-vertical-stack-card
27 | cards:
28 | - style: 'ha-card { width: 10px; }'
29 | template: device
30 | type: 'custom:decluttering-card'
31 | variables:
32 | - content: '[[name-1]]'
33 |
34 | - entities:
35 | - actionSize: 50px
36 | actions:
37 | - icon: 'mdi:brightness-5'
38 | name: Hell
39 | service: scene.turn_on
40 | service_data:
41 | entity_id: '[[scene-hell]]'
42 | - icon: 'mdi:brightness-4'
43 | name: Relax
44 | service: scene.turn_on
45 | service_data:
46 | entity_id: '[[scene-relax]]'
47 | borderRadius: 20px
48 | brightnessHeight: 250px
49 | brightnessWidth: 100px
50 | entity: '[[entity-1]]'
51 | fullscreen: false
52 | icon: true
53 | sliderColor: '#f8cd41'
54 | sliderTrackColor: 'rgba(25, 25, 25, 0.9)'
55 | style: >
56 | #popup > div.action-holder > div > div {
57 | margin: 1em 1em 1em 1em;
58 | font-family: 'San Francisco';
59 | font-weight: 700;
60 | font-size: 0.9em;
61 | color: #fff;
62 | }
63 | #brightnessValue {
64 | color: rgba(255, 255, 255, 1);
65 | margin-top: -65px;
66 | margin-bottom: 20px;
67 | font-size: 10px;
68 | font-weight: 700;
69 | font-family: 'San Francisco';
70 | color: #c7c7c7;
71 | }
72 | #popup {
73 | margin: 0 0 0.8em 0;
74 | }
75 | #popup > div.range-holder > input[type=range]::-webkit-slider-thumb {
76 | border: 100%
77 | height: 100%
78 | width: 10px;
79 | cursor: pointer;
80 | }
81 | type: 'custom:light-popup-card'
82 | show_header_toggle: false
83 | type: entities
84 | type: vertical-stack
85 | deviceID: this
86 | style:
87 | '--ha-card-background': transparent
88 | '--ha-card-border-radius': transparent
89 | '--iron-icon-fill-color': '#ffffff'
90 | background: 'rgba(0, 0, 0, 0.95)'
91 | border-radius: 20px
92 | font-family: San Francisco !important;
93 | font-weight: 700 !important;
94 | width: 400px;
95 | title: ' '
--------------------------------------------------------------------------------
/blob/holds/hold-action-vacuum.yaml:
--------------------------------------------------------------------------------
1 | action: call-service
2 | service: browser_mod.popup
3 | service_data:
4 | card:
5 | cards:
6 | - entities:
7 | - entity: light.arbeitszimmer
8 | name: dssdsd
9 | toggle: true
10 | type: 'custom:slider-entity-row'
11 | show_header_toggle: false
12 | type: entities
13 | type: vertical-stack
14 | deviceID: this
15 | style:
16 | '--ha-card-background': transparent
17 | '--ha-card-border-radius': transparent
18 | '--iron-icon-fill-color': '#ffffff'
19 | background: 'rgba(0, 0, 0, 0.95)'
20 | border-radius: 20px
21 | box-shadow: unset !important;
22 | font-family: San Francisco !important;
23 | font-weight: 700 !important;
24 | title: ' '
--------------------------------------------------------------------------------
/blob/icon-action.yaml:
--------------------------------------------------------------------------------
1 | color: '#fff'
2 | styles:
3 | card:
4 | - background: transparent
5 | - border-radius: 50%
6 | - border: 1px solid white
7 | - box-shadow: none
8 | - transition: none
9 | - width: 50px
10 | - height: 50px
11 | icon:
12 | - color: '#fff'
13 | - width: 25px
14 | - height: 25px
--------------------------------------------------------------------------------
/blob/icons/arbeitszimmer.yaml:
--------------------------------------------------------------------------------
1 | #button_card_templates:
2 | # arbeitszimmer:
3 | # custom_fields:
4 | icon_hue: >
5 | [[[ if (entity.state === 'on') return ' ';
28 | else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/badezimmer.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
22 |
23 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/dusche.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' ' ;
23 | else return '';
43 | ]]]
--------------------------------------------------------------------------------
/blob/icons/eingang.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
23 |
24 | ; else return '';
45 | ]]]
--------------------------------------------------------------------------------
/blob/icons/essbereich.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
29 |
30 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/flur.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
22 |
23 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/freizeitraum.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' ' ;
22 | else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/garten.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
24 |
25 | ; else return '';
47 | ]]]
--------------------------------------------------------------------------------
/blob/icons/hauseingang.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
26 |
27 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/kinderzimmer.yaml:
--------------------------------------------------------------------------------
1 |
2 | icon_hue: >
3 | [[[ if (entity.state === 'on') return ' '
23 |
24 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/obergeschoss.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '
29 |
30 | ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/path-lights.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' ';
3 | else return ''; ]]]
4 | sd1: >
5 | [[[
6 | return ` ${states['sensor.status_lights_es_count_on'].state}`
7 | ]]]
--------------------------------------------------------------------------------
/blob/icons/switch.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/tv.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' '; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/untergeschoss.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' ' ; else return ''; ]]]
--------------------------------------------------------------------------------
/blob/icons/wohnzimmer.yaml:
--------------------------------------------------------------------------------
1 | icon_hue: >
2 | [[[ if (entity.state === 'on') return ' ' ;
32 | else return ''; ]]]
--------------------------------------------------------------------------------
/blob/sensors/sensors-arbeitszimmer.yaml:
--------------------------------------------------------------------------------
1 |
2 | icon_hue: >
3 | [[[ if (entity.state === 'on') return ' ';
26 | else return ''; ]]]
27 |
28 | temp: >
29 | [[[
30 | return `
33 | ${entity.state}°C`
34 | ]]]
35 |
36 | sd1: >
37 | [[[
38 | return `
41 | ${states['sensor.multisensor_1_2'].state} %`
42 | ]]]
43 |
44 | sd2: >
45 | [[[
46 | return `
49 | ${states['sensor.multisensor_1_3'].state} HPa`
50 | ]]]
51 |
52 | sd3: >
53 | [[[
54 | return `
57 | ${states['sensor.status_bewegungsmelder_2'].state}`
58 | ]]]
59 |
60 | sd4: >
61 | [[[
62 | return `
65 | ${states['sensor.bewegungsmelder_2'].state} Lux`
66 | ]]]
67 |
--------------------------------------------------------------------------------
/blob/states/state-es-speaker-1.yaml:
--------------------------------------------------------------------------------
1 | - styles:
2 | card:
3 | - background-color: 'rgba(255, 255, 255, 0.99)'
4 | - '--button-card-light-color-no-temperature': '#57A8D7'
5 | - overflow: hidden
6 | name:
7 | - color: 'rgba(0, 0, 0, 1)'
8 | state:
9 | - color: 'rgba(0, 0, 0, 0.4)'
10 | value: playing
11 | - styles:
12 | card:
13 | - background-color: 'rgba(255, 255, 255, 0.5)'
14 | name:
15 | - color: 'rgba(0, 0, 0, 0.4)'
16 | state:
17 | - color: 'rgba(0, 0, 0, 0.2)'
--------------------------------------------------------------------------------
/blob/states/state-es.yaml:
--------------------------------------------------------------------------------
1 | - styles:
2 | card:
3 | - background-color: 'rgba(255, 255, 255, 0.99)'
4 | - '--button-card-light-color-no-temperature': '#57A8D7'
5 | - overflow: hidden
6 | name:
7 | - color: 'rgba(0, 0, 0, 1)'
8 | state:
9 | - color: 'rgba(0, 0, 0, 0.4)'
10 | value: 'on'
11 | - styles:
12 | card:
13 | - background-color: 'rgba(255, 255, 255, 0.5)'
14 | name:
15 | - color: 'rgba(0, 0, 0, 0.4)'
16 | state:
17 | - color: 'rgba(0, 0, 0, 0.2)'
18 | value: 'off'
--------------------------------------------------------------------------------
/blob/states/state-icon.yaml:
--------------------------------------------------------------------------------
1 | - styles:
2 | card:
3 | - background-color: 'transparent'
4 | - '--button-card-light-color-no-temperature': '#transparent'
5 | - overflow: hidden
6 | name:
7 | - color: 'transparent'
8 | state:
9 | - color: 'transparent'
10 | value: '[[state-1]]'
11 | - styles:
12 | card:
13 | - background-color: 'transparent'
14 | name:
15 | - color: 'transparent'
16 | state:
17 | - color: 'transparent'
18 | value: '[[state-2]]'
--------------------------------------------------------------------------------
/blob/states/state-x.yaml:
--------------------------------------------------------------------------------
1 | - styles:
2 | card:
3 | - background-color: 'rgba(255, 255, 255, 0.99)'
4 | - '--button-card-light-color-no-temperature': '#57A8D7'
5 | - overflow: hidden
6 | name:
7 | - color: 'rgba(0, 0, 0, 1)'
8 | state:
9 | - color: 'rgba(0, 0, 0, 0.4)'
10 | value: '[[state-1]]'
11 | - styles:
12 | card:
13 | - background-color: 'rgba(255, 255, 255, 0.5)'
14 | name:
15 | - color: 'rgba(0, 0, 0, 0.4)'
16 | state:
17 | - color: 'rgba(0, 0, 0, 0.2)'
18 | value: '[[state-2]]'
--------------------------------------------------------------------------------
/blob/styles/style-card-path.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 110px
3 | - height: 110px
4 | - letter-spacing: 0.1em;
5 | - font-family: San Francisco
6 | - text-rendering: optimizeLegibility
7 | - font-weight: 700
8 | - color: 'rgba(87, 87, 87, 0.8)'
9 | - font-size: 12px
10 | - background-color: 'rgba(193,119,223, 0.3)'
11 | - border-radius: 15px
12 | - box-shadow: none
13 | - transition: none
14 | custom_fields:
15 | icon_hue:
16 | - top: 15%
17 | - left: 30%
18 | - width: 45px
19 | - position: absolute
20 | info:
21 | - top: 0px
22 | - left: 20px
23 | - width: 40px
24 | - position: absolute
25 | - letter-spacing: 0.03vw
26 | sd1:
27 | - font-size: 12px
28 | - color: 'rgba(0, 0, 0, 0.3)'
29 | - top: 79%
30 | - position: absolute
31 | - width: 100%
32 | grid:
33 | - grid-template-areas: '"i" "n" "s" "sd1 sd1"'
34 | - grid-template-columns: 1fr
35 | - grid-template-rows: 1fr min-content min-content
36 | img_cell:
37 | - align-self: start
38 | - text-align: start
39 | name:
40 | - align-self: center
41 | - text-align: center
42 | - padding-left: 0px
43 | - font-weight: bold
44 | - padding-bottom: 0px
45 | - margin-bottom: '-2px'
46 | - font-size: 12px
47 | - margin-top: 50px
48 | state:
49 | - justify-self: start
50 | - padding-left: 20px
51 | - padding-bottom: 5px
52 | - color: 'rgba(87, 87, 87, 0.5)'
53 | - display: none
54 | sd1:
55 | - align-self: center
56 | - text-align: center
--------------------------------------------------------------------------------
/blob/styles/style-card-sensors.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 165px
3 | - height: 110px
4 | - font-family: San Francisco
5 | - background-color: '#000044'
6 | - text-rendering: optimizeLegibility
7 | - font-weight: 700
8 | - color: '#666'
9 | - font-size: 8px
10 | - background-color: 'rgba(255, 255, 255, 0.9)'
11 | - border-radius: 15px
12 | - padding: 0px
13 | - box-shadow: none
14 | - transition: none
15 |
16 | custom_fields:
17 | icon_hue:
18 | - top: 10%
19 | - left: 4.5%
20 | - width: 40px
21 | - position: absolute
22 |
23 | temp:
24 | - top: 10px
25 | - right: 10px
26 | - position: absolute
27 | - color: '#f69836'
28 | - font-size: 14px
29 |
30 | sd1:
31 | - top: 75px
32 | - left: 8px
33 | - position: absolute
34 |
35 | sd2:
36 | - top: 90px
37 | - left: 8px
38 | - position: absolute
39 |
40 | sd3:
41 | - top: 75px
42 | - left: 60px
43 | - position: absolute
44 |
45 | sd4:
46 | - top: 90px
47 | - left: 60px
48 | - position: absolute
49 |
50 | sd5:
51 | - top: 75px
52 | - left: 115px
53 | - position: absolute
54 |
55 | sd6:
56 | - top: 90px
57 | - left: 115px
58 | - position: absolute
59 |
60 | grid:
61 | - grid-template-areas: '"i temp" "n n" "sd1 sd1" "sd2 sd2" "sd3 sd3" "sd4 sd4" "sd5 sd5" "sd6 sd6"'
62 | - grid-template-columns: 1fr 1fr
63 | - grid-template-rows: 1fr min-content min-content min-content min-content
64 |
65 | name:
66 | - font-weight: bold
67 | - font-size: 12px
68 | - color: '#111'
69 | - top: 55px
70 | - left: 10px
71 | - position: absolute
72 |
--------------------------------------------------------------------------------
/blob/styles/style-card.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 110px
3 | - height: 110px
4 | - letter-spacing: 0.1em;
5 | - font-family: San Francisco
6 | - text-rendering: optimizeLegibility
7 | - font-weight: 700
8 | - color: 'rgba(255, 255, 255, 0.3)'
9 | - font-size: 12px
10 | - background-color: 'rgba(115, 115, 115, 0.2)'
11 | - border-radius: 15px
12 | - box-shadow: none
13 | - transition: none
14 | custom_fields:
15 | icon_hue:
16 | - top: 10%
17 | - left: 4.5%
18 | - width: 40px
19 | - position: absolute
20 | info:
21 | - top: 10px
22 | - left: 65px
23 | - width: 40px
24 | - position: absolute
25 | - letter-spacing: 0.03vw
26 | extra_styles: >
27 | [[[ var radius = 20.5;
28 |
29 | var circumference = radius * 2 * Math.PI;
30 |
31 | var brightness = Math.round( entity.attributes.brightness / 2.54 );
32 |
33 | return "#c_brightness { transform: rotate(-90deg); transform-origin:
34 | 50% 50%; stroke-dasharray: " + circumference + "; stroke-dashoffset: "
35 | + (circumference - brightness / 100 * circumference) + ";}"; ]]]
36 | grid:
37 | - grid-template-areas: '"i" "n" "s"'
38 | - grid-template-columns: 1fr
39 | - grid-template-rows: 1fr min-content min-content
40 | img_cell:
41 | - align-self: start
42 | - text-align: start
43 | name:
44 | - justify-self: start
45 | - padding-left: 10px
46 | - font-weight: bold
47 | - padding-bottom: 0px
48 | - margin-bottom: '-2px'
49 | state:
50 | - justify-self: start
51 | - padding-left: 10px
52 | - padding-bottom: 5px
--------------------------------------------------------------------------------
/blob/styles/style-icon-2.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 200px
3 | - height: 70px
4 |
5 | - border-radius: 50%
6 | - box-shadow: none
7 | - transition: none
8 |
9 | - background-color: '#fff'
10 | - color: 'rgba(255, 255, 255, 0.3)'
11 | - font-size: 12px
12 | custom_fields:
13 | icon_hue:
14 | - top: 5%
15 | - left: 14%
16 | - width: 60px
17 | - position: absolute
18 | info:
19 | - width: 0px
20 | - position: absolute
21 |
22 | img_cell:
23 | - align-self: start
24 | - text-align: start
25 |
26 |
--------------------------------------------------------------------------------
/blob/styles/style-icon.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 80px
3 | - height: 80px
4 | - box-shadow: none
5 | - transition: none
6 |
7 | custom_fields:
8 | icon_hue:
9 | - top: 5%
10 | - left: 6%
11 | - width: 68px
12 | - position: absolute
13 |
14 | temp:
15 | - display: none
16 |
17 | sd1:
18 | - display: none
19 |
20 | sd2:
21 | - display: none
22 |
23 | sd3:
24 | - display: none
25 |
26 | sd4:
27 | - display: none
28 |
29 | sd5:
30 | - display: none
31 |
32 | sd6:
33 | - display: none
--------------------------------------------------------------------------------
/blob/styles/styles-x.yaml:
--------------------------------------------------------------------------------
1 | card:
2 | - width: 110px
3 | - height: 110px
4 | - letter-spacing: 0.1em;
5 | - font-family: San Francisco
6 | - text-rendering: optimizeLegibility
7 | - font-weight: 700
8 | - color: 'rgba(255, 255, 255, 0.3)'
9 | - font-size: 12px
10 | - background-color: 'rgba(115, 115, 115, 0.2)'
11 | - border-radius: 15px
12 | - box-shadow: none
13 | - transition: none
14 | custom_fields:
15 | icon_hue:
16 | - top: 10%
17 | - left: 4.5%
18 | - width: 40px
19 | - position: absolute
20 | info:
21 | - top: 10px
22 | - left: 65px
23 | - width: 40px
24 | - position: absolute
25 | - letter-spacing: 0.03vw
26 | extra_styles: >
27 | [[[ var radius = 20.5;
28 |
29 | var circumference = radius * 2 * Math.PI;
30 |
31 | var brightness = Math.round( entity.attributes.brightness / 2.54 );
32 |
33 | return "#c_brightness { transform: rotate(-90deg); transform-origin:
34 | 50% 50%; stroke-dasharray: " + circumference + "; stroke-dashoffset: "
35 | + (circumference - brightness / 100 * circumference) + ";}"; ]]]
36 | grid:
37 | - grid-template-areas: '"i" "n" "s"'
38 | - grid-template-columns: 1fr
39 | - grid-template-rows: 1fr min-content min-content
40 | img_cell:
41 | - align-self: start
42 | - text-align: start
43 | name:
44 | - justify-self: start
45 | - padding-left: 10px
46 | - font-weight: bold
47 | - padding-bottom: 0px
48 | - margin-bottom: '-2px'
49 | state:
50 | - justify-self: start
51 | - padding-left: 10px
52 | - padding-bottom: 5px
--------------------------------------------------------------------------------
/blob/taps/tap-action-man.yaml:
--------------------------------------------------------------------------------
1 | action: call-service
2 | service: browser_mod.popup
3 | service_data:
4 | card:
5 | cards:
6 |
7 | - type: custom:layout-card
8 | layout: vertical
9 | column_width: 24%
10 | cards:
11 | - template: es-icon
12 | type: 'custom:decluttering-card'
13 | variables:
14 | - template: '[[template]]'
15 | - entity-1: '[[entity-1]]'
16 | - name-1: '[[name-1]]'
17 | - state-1: 'cleaning'
18 | - state-2: 'cleaning'
19 | - circle-1: entity.attributes.current_position
20 | - circle-2: 1
21 | - circle-3: 'open'
22 | - circle-4: current_position
23 | - scene-hell: '[[scene-hell]]'
24 | - scene-relax: '[[scene-relax]]'
25 |
26 | - type: custom:hui-vertical-stack-card
27 | cards:
28 | - style: 'ha-card { width: 10px; }'
29 | template: device
30 | type: 'custom:decluttering-card'
31 | variables:
32 | - content: '[[name-1]]'
33 |
34 | - type: markdown
35 | style: >
36 | ha-card {
37 | box-shadow: none;
38 | height: 100%;
39 | background: none;
40 | font-family: San Francisco;
41 | font-weight: 700;
42 | font-size: 13px;
43 | color: #fff;
44 | text-rendering: optimizeLegibility;
45 | text-align: center;
46 | position: static;
47 | margin-top: -20px;
48 | margin-bottom: -25px;
49 | }
50 | content: >
51 |
52 | {% if is_state('sensor.vacuum_status', 'Status: Cleaning') %}
53 | Reinigung{% endif %}
54 | {% if is_state('sensor.vacuum_status', 'Status: Paused') %}
55 | Pausiert{% endif %}
56 | {% if is_state('sensor.vacuum_status', 'Status: Returning home') %}
57 | Zurück{% endif %}
58 | {% if is_state('sensor.vacuum_status', 'Status: Charging') %}
59 | Angedockt{% endif %}
60 | {% if is_state('sensor.vacuum_status', 'Status: Charger disconnected') %}
61 | Standby{% endif %}
62 |
63 |
64 |
65 | - entities:
66 | - actionSize: 50px
67 | actions:
68 | - icon: 'mdi:play-pause'
69 | name: Start/Pause
70 | service: >
71 | [[[ if (states['[[entity-1]]'].state ===
72 | 'docked' || states['[[entity-1]]'].state ===
73 | 'paused') return 'vacuum.start'; else return
74 | 'vacuum.pause'; ]]]
75 | service_data:
76 | entity_id: '[[entity-1]]'
77 |
78 | - icon: 'mdi:map-marker-question'
79 | name: Lokalisieren
80 | service: vacuum.locate
81 | service_data:
82 | entity_id: '[[entity-1]]'
83 |
84 | - icon: 'mdi:home-map-marker'
85 | name: Beenden
86 | service: vacuum.return_to_base
87 | service_data:
88 | entity_id: '[[entity-1]]'
89 |
90 |
91 |
92 | actionsInARow: 3
93 | borderRadius: 20px
94 | brightnessHeight: 250px
95 | brightnessWidth: 100px
96 | entity: '[[entity-1]]'
97 | fullscreen: false
98 | icon: true
99 | sliderColor: '#f8cd41'
100 | sliderTrackColor: 'rgba(25, 25, 25, 0.9)'
101 | style: >
102 | #popup > div.action-holder > div > div {
103 | margin: 1em 1em 1em 1em;
104 | font-family: 'San Francisco';
105 | font-weight: 700;
106 | font-size: 0.9em;
107 | color: #fff;
108 | }
109 | #brightnessValue {
110 | display: none !important;
111 | }
112 | #popup {
113 | margin: 0 0 0.8em 0;
114 | }
115 | #popup > div.range-holder {
116 | display: none !important;
117 | }
118 |
119 | type: 'custom:light-popup-card'
120 | show_header_toggle: false
121 | type: entities
122 |
123 | style: |
124 | ha-card {
125 | box-shadow: none;
126 | border-radius: 1em;
127 | background: rgba(0, 0, 0, 0.9);
128 | padding: 20px;
129 | font-family: 'San Francisco';
130 | font-weight: 700;
131 | color: white;
132 | }
133 | .card-header {
134 | margin-left: 0.4em;
135 | margin-bottom: 0.1em;
136 | font-family: 'San Francisco';
137 | letter-spacing: 0.005em;
138 | font-weight: 700;
139 | margin-top: -100px;
140 | }
141 | title: ' '
142 |
143 |
144 | - entities:
145 |
146 | - entity: '[[entity-2]]'
147 | style: |
148 | ha-card {
149 | box-shadow: none;
150 | border-radius: 1em;
151 | background: rgba(0, 0, 0, 0.9);
152 | padding: 20px;
153 | font-family: 'San Francisco';
154 | font-weight: 700;
155 | color: white;
156 | }
157 | - entity: '[[entity-3]]'
158 | - entity: '[[entity-4]]'
159 | - entity: '[[entity-5]]'
160 | - entity: '[[entity-6]]'
161 | - entity: '[[entity-7]]'
162 | - entity: '[[entity-8]]'
163 | show_header_toggle: false
164 | type: entities
165 |
166 |
167 | style: |
168 | ha-card {
169 | box-shadow: none;
170 | border-radius: 1em;
171 | background: rgba(0, 0, 0, 0.9);
172 | padding: 40px 10px 10px 0px;
173 | font-family: 'San Francisco';
174 | font-weight: 700;
175 | color: white;
176 | margin: 10px;
177 | font-size: 10px;
178 | }
179 | .card-header {
180 | margin-left: 0.4em;
181 | margin-bottom: 0.1em;
182 | font-family: 'San Francisco';
183 | letter-spacing: 0.005em;
184 | font-weight: 700;
185 | margin-top: -100px;
186 | }
187 | title: ' '
188 |
189 |
190 | type: custom:hui-vertical-stack-card
191 | deviceID: this
192 | style:
193 | '--ha-card-background': transparent
194 | '--ha-card-border-radius': transparent
195 | '--iron-icon-fill-color': '#ffffff'
196 | background: 'rgba(0, 0, 0, 0.95)'
197 | border-radius: 20px
198 | font-family: San Francisco !important;
199 | font-weight: 700 !important;
200 | width: 400px;
201 | title: ' '
--------------------------------------------------------------------------------
/logos/Custom cards for Home Assistant.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/Custom cards for Home Assistant.png
--------------------------------------------------------------------------------
/logos/Mattias Persson.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/Mattias Persson.png
--------------------------------------------------------------------------------
/logos/Thomas Lovén.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/Thomas Lovén.png
--------------------------------------------------------------------------------
/logos/blob-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-1.png
--------------------------------------------------------------------------------
/logos/blob-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-2.png
--------------------------------------------------------------------------------
/logos/blob-3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-3.png
--------------------------------------------------------------------------------
/logos/blob-4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-4.png
--------------------------------------------------------------------------------
/logos/blob-5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-5.png
--------------------------------------------------------------------------------
/logos/blob-video.mp4:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/blob-video.mp4
--------------------------------------------------------------------------------
/logos/case.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/case.gif
--------------------------------------------------------------------------------
/logos/case.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/case.jpg
--------------------------------------------------------------------------------
/logos/the blob.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/the blob.gif
--------------------------------------------------------------------------------
/logos/unraid-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/unraid-1.png
--------------------------------------------------------------------------------
/logos/unraid-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/logos/unraid-2.png
--------------------------------------------------------------------------------
/www/DarkBlue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/DarkBlue.jpg
--------------------------------------------------------------------------------
/www/DarkBlue_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/DarkBlue_2.jpg
--------------------------------------------------------------------------------
/www/DarkGreen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/DarkGreen.jpg
--------------------------------------------------------------------------------
/www/DarkGreen_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/DarkGreen_2.jpg
--------------------------------------------------------------------------------
/www/Disk-5s-400px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Fluid-11.1s-101px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Fluid-20s-100px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Fluid-20s-150px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Foam-10s-120px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Foam-10s-1644px-3.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/LightBlue.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/LightBlue.jpg
--------------------------------------------------------------------------------
/www/LightBlue_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/LightBlue_2.jpg
--------------------------------------------------------------------------------
/www/LightGreen.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/LightGreen.jpg
--------------------------------------------------------------------------------
/www/LightGreen_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/LightGreen_2.jpg
--------------------------------------------------------------------------------
/www/Mountains.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/Mountains.jpg
--------------------------------------------------------------------------------
/www/Orange.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/Orange.jpg
--------------------------------------------------------------------------------
/www/Orange_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/Orange_2.jpg
--------------------------------------------------------------------------------
/www/Red.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/Red.jpg
--------------------------------------------------------------------------------
/www/Red_2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/Red_2.jpg
--------------------------------------------------------------------------------
/www/Vacuum - On.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/www/Valley-20s-100px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Wave-10s-100px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/Wave-20s-100px.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/www/ambiance.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/ambiance.png
--------------------------------------------------------------------------------
/www/classic.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/classic.png
--------------------------------------------------------------------------------
/www/color.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/color.png
--------------------------------------------------------------------------------
/www/css/sanfracisco.css:
--------------------------------------------------------------------------------
1 |
2 | /** Ultra Light */
3 | @font-face {
4 | font-family: "San Francisco";
5 | font-weight: 100;
6 | src: url("sanfranciscodisplay-ultralight-webfont.woff");
7 | }
8 |
9 | /** Thin */
10 | @font-face {
11 | font-family: "San Francisco";
12 | font-weight: 200;
13 | src: url("sanfranciscodisplay-thin-webfont.woff");
14 | }
15 |
16 | /** Regular */
17 | @font-face {
18 | font-family: "San Francisco";
19 | font-weight: 400;
20 | src: url("sanfranciscodisplay-regular-webfont.woff");
21 | }
22 |
23 | /** Medium */
24 | @font-face {
25 | font-family: "San Francisco";
26 | font-weight: 500;
27 | src: url("sanfranciscodisplay-medium-webfont.woff");
28 | }
29 |
30 | /** Semi Bold */
31 | @font-face {
32 | font-family: "San Francisco";
33 | font-weight: 600;
34 | src: url("sanfranciscodisplay-semibold-webfont.woff");
35 | }
36 |
37 | /** Bold */
38 | @font-face {
39 | font-family: "San Francisco";
40 | font-weight: 700;
41 | src: url("sanfranciscodisplay-bold-webfont.woff");
42 | }
43 |
44 | * {
45 | font-family: "San Francisco"
46 | }
47 |
48 | h1 { font-weight: 700; }
49 | h2 { font-weight: 600; }
50 | h3 { font-weight: 500; }
51 | h4 { font-weight: 500; font-family: "San Francisco";}
52 | h5 { font-weight: 500; }
53 | p { font-weight: 400; }
54 | p.thin { font-weight: 200; }
55 | p.ultralight { font-weight: 100; }
56 |
--------------------------------------------------------------------------------
/www/day.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/day.jpeg
--------------------------------------------------------------------------------
/www/day_2.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/day_2.jpeg
--------------------------------------------------------------------------------
/www/fan.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/www/images/abstract.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/abstract.jpg
--------------------------------------------------------------------------------
/www/images/apple-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-1.jpg
--------------------------------------------------------------------------------
/www/images/apple-10.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-10.jpg
--------------------------------------------------------------------------------
/www/images/apple-11.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-11.jpg
--------------------------------------------------------------------------------
/www/images/apple-12.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-12.jpg
--------------------------------------------------------------------------------
/www/images/apple-13.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-13.jpg
--------------------------------------------------------------------------------
/www/images/apple-14.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-14.jpg
--------------------------------------------------------------------------------
/www/images/apple-15.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-15.jpg
--------------------------------------------------------------------------------
/www/images/apple-16.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-16.jpg
--------------------------------------------------------------------------------
/www/images/apple-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-2.jpg
--------------------------------------------------------------------------------
/www/images/apple-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-3.jpg
--------------------------------------------------------------------------------
/www/images/apple-4.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-4.jpg
--------------------------------------------------------------------------------
/www/images/apple-5.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-5.jpg
--------------------------------------------------------------------------------
/www/images/apple-6.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-6.jpg
--------------------------------------------------------------------------------
/www/images/apple-7.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-7.jpg
--------------------------------------------------------------------------------
/www/images/apple-8.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-8.jpg
--------------------------------------------------------------------------------
/www/images/apple-9.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/apple-9.jpg
--------------------------------------------------------------------------------
/www/images/ios.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/images/ios.jpg
--------------------------------------------------------------------------------
/www/night.jpeg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fastender/blob/b8029c7a557a48215b07ee7a7595a1c3c44cc494/www/night.jpeg
--------------------------------------------------------------------------------