This repository has no description
0

Configure Feed

Select the types of activity you want to include in your feed.

1{ lib, ... }: 2rec { 3 lights = { 4 bett = "l_bett"; 5 essen = "l_essen"; 6 arbeit = "l_arbeit"; 7 nass = "l_nass"; 8 }; 9 10 switches = { 11 dimmer = { 12 bett = "i_bett"; 13 essen = "i_essen"; 14 nass = "i_nass"; 15 }; 16 }; 17 18 sensors = { 19 movement = { 20 essen = "s_essen"; 21 nass = "s_nass"; 22 }; 23 }; 24 25 friendly_names = 26 lib.mapAttrs' (n: v: lib.nameValuePair "light.${v}" { friendly_name = "l.${n}"; }) lights // 27 lib.mapAttrs' (n: v: lib.nameValuePair "binary_sensor.${v}_update_available" { friendly_name = "s.${n}_up"; }) switches.dimmer // 28 lib.mapAttrs' (n: v: lib.nameValuePair "binary_sensor.${v}_update_available" { friendly_name = "i.${n}_up"; }) sensors.movement // 29 lib.mapAttrs' (n: v: lib.nameValuePair "binary_sensor.${v}_update_available" { friendly_name = "l.${n}_up"; }) lights // 30 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_linkquality" { friendly_name = "s.${n}_link"; }) switches.dimmer // 31 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_linkquality" { friendly_name = "i.${n}_link"; }) sensors.movement // 32 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_linkquality" { friendly_name = "l.${n}_link"; }) lights // 33 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_battery" { friendly_name = "s.${n}_bat"; }) switches.dimmer // 34 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_battery" { friendly_name = "i.${n}_bat"; }) sensors.movement // 35 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_action" { friendly_name = "s.${n}_act"; }) switches.dimmer // 36 lib.mapAttrs' (n: v: lib.nameValuePair "binary_sensor.${v}_occupancy" { friendly_name = "i.${n}_move"; }) sensors.movement // 37 lib.mapAttrs' (n: v: lib.nameValuePair "binary_sensor.${v}_occupancy" { friendly_name = "i.${n}_move"; }) sensors.movement // 38 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_temperature" { friendly_name = "i.${n}_heat"; }) sensors.movement // 39 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_temperature" { friendly_name = "i.${n}_heat"; }) sensors.movement // 40 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_illuminance" { friendly_name = "i.${n}_lux"; }) sensors.movement // 41 lib.mapAttrs' (n: v: lib.nameValuePair "sensor.${v}_illuminance" { friendly_name = "i.${n}_lux"; }) sensors.movement // 42 {}; 43 44 detect_movement = name: sensor: light: delay: 45 let 46 id = name; 47 sensor_ = "binary_sensor.${sensor}_occupancy"; 48 light_ = "light.${light}"; 49 in { 50 input_boolean."${id}" = { 51 }; 52 timer."${id}" = { 53 duration = delay; 54 }; 55 automation = [ 56 # { 57 # alias = "debug detect_movement"; 58 # trigger = { 59 # platform = "state"; 60 # entity_id = sensor_; 61 # }; 62 # action = [ 63 # { 64 # service = "system_log.write"; 65 # data_template = { 66 # message = "XXXXXXXXXXXXXXXXXXXXXX {{ states('input_boolean.${sensor}_${light}_triggered') == 'on' }}"; 67 # #message = "XXXXXXXXXXXXXXXXXXXXXX {{ state_attr('trigger.to_state.state', 'illuminance') }}"; 68 # }; 69 # } 70 # ]; 71 # } 72 { 73 alias = "movement reset timer ${id}"; 74 trigger = { 75 platform = "state"; 76 entity_id = sensor_; 77 from = "off"; 78 to = "on"; 79 }; 80 action = [ 81 { 82 service = "timer.cancel"; 83 data_template.entity_id = "timer.${id}"; 84 } 85 ]; 86 } 87 { 88 alias = "movement on ${id}"; 89 trigger = { 90 platform = "state"; 91 entity_id = "binary_sensor.${sensor}_occupancy"; 92 from = "off"; 93 to = "on"; 94 }; 95 condition = { 96 condition = "and"; 97 conditions = [ 98 { 99 condition = "template"; 100 value_template = "{{ trigger.to_state.attributes.illuminance < 7500 }}"; 101 } 102 { 103 condition = "template"; 104 value_template = "{{ states('${light_}') == 'off' }}"; 105 } 106 ]; 107 }; 108 action = [ 109 { 110 service = "light.turn_on"; 111 data_template = { 112 entity_id = light_; 113 brightness = "100"; 114 }; 115 } 116 { delay = "0:00:02"; } 117 { 118 service = "input_boolean.turn_on"; 119 data_template.entity_id = "input_boolean.${id}"; 120 } 121 ]; 122 } 123 { 124 alias = "movement off ${id}"; 125 trigger = { 126 platform = "state"; 127 entity_id = sensor_; 128 from = "on"; 129 to = "off"; 130 }; 131 condition = { 132 condition = "template"; 133 value_template = "{{ states('input_boolean.${id}') == 'on' }}"; 134 }; 135 action = [ 136 { 137 service = "timer.start"; 138 entity_id = "timer.${id}"; 139 } 140 ]; 141 } 142 { 143 alias = "movement override ${id}"; 144 trigger = { 145 platform = "state"; 146 entity_id = light_; 147 }; 148 action = [ 149 { 150 service = "input_boolean.turn_off"; 151 data_template.entity_id = "input_boolean.${id}"; 152 } 153 { 154 service = "system_log.write"; 155 data_template = { 156 message = "XXXXXXXXXXXXXXXXXXXXXX {{ trigger }}"; 157 }; 158 } 159 ]; 160 } 161 { 162 alias = "movement expired ${id}"; 163 trigger = { 164 platform = "event"; 165 event_type = "timer.finished"; 166 event_data.entity_id = "timer.${id}"; 167 }; 168 action = [ 169 { 170 service = "light.turn_off"; 171 data_template = { 172 entity_id = light_; 173 }; 174 } 175 { 176 service = "input_boolean.turn_off"; 177 data_template.entity_id = "input_boolean.${id}"; 178 } 179 ]; 180 } 181 ]; 182 }; 183 184 lightswitch = name: switch: light: { 185 automation = [ 186 { 187 alias = "lightswitch ${name} turn on"; 188 trigger = { 189 platform = "mqtt"; 190 topic = "zigbee/${switch}"; 191 }; 192 condition = { 193 condition = "or"; 194 conditions = [ 195 { 196 condition = "template"; 197 value_template = "{{ trigger.payload_json.action == 'on-press' }}"; 198 } 199 { 200 condition = "template"; 201 value_template = "{{ trigger.payload_json.action == 'up-press' }}"; 202 } 203 { 204 condition = "and"; 205 conditions = [ 206 { 207 condition = "template"; 208 value_template = "{{ trigger.payload_json.action == 'down-press' }}"; 209 } 210 { 211 condition = "template"; 212 value_template = "{{ trigger.payload_json.brightness > 30 }}"; 213 } 214 ]; 215 } 216 ]; 217 }; 218 action = [ 219 { 220 service = "light.turn_on"; 221 data_template = { 222 entity_id = "light.${light}"; 223 brightness = "{{ trigger.payload_json.brightness }}"; 224 }; 225 } 226 ]; 227 } 228 { 229 alias = "lightswitch ${name} turn off"; 230 trigger = { 231 platform = "mqtt"; 232 topic = "zigbee/${switch}"; 233 }; 234 condition = { 235 condition = "or"; 236 conditions = [ 237 { 238 condition = "template"; 239 value_template = "{{ trigger.payload_json.action == 'off-press' }}"; 240 } 241 { 242 condition = "template"; 243 value_template = "{{ trigger.payload_json.brightness < 30 }}"; 244 } 245 ]; 246 }; 247 action = { 248 service = "light.turn_off"; 249 data_template = { 250 entity_id = "light.${light}"; 251 }; 252 }; 253 } 254 ]; 255 }; 256}