├── sensors ├── saj.yaml ├── misc.yaml ├── essent.yaml ├── weather.yaml ├── afval.yaml ├── zigbee2mqtt_map.yaml ├── mqtt_room.yaml ├── bayesian.yaml ├── mqtt.yaml └── octorint.yaml ├── .assets ├── day.jpg ├── logo.png ├── night.jpg └── hass-docker-compose.gif ├── input_boolean └── bedtime.yaml ├── camera ├── synology.yaml ├── 3dprinter.yaml ├── stream.yaml └── tensorflow.yaml ├── lights ├── groups.yaml └── mqtt.yaml ├── .travis.yml ├── docker-compose.yml ├── covers ├── bedroom.yaml ├── office.yaml └── livingroom.yaml ├── automations ├── good_morning.yaml ├── telegram.yaml ├── welcome_home.yaml └── automations.yaml ├── .gitignore ├── components.md ├── scenes.yaml ├── blueprints └── automation │ └── homeassistant │ ├── notify_leaving_zone.yaml │ └── motion_light.yaml ├── customize.yaml ├── travis_secrets.yaml ├── themes ├── animated-weather-card │ ├── animated-weather-card.yaml │ └── icons │ │ ├── exceptional.svg │ │ ├── rainy.svg │ │ ├── clear-night.svg │ │ ├── pouring.svg │ │ ├── hail.svg │ │ ├── fog.svg │ │ ├── cloudy.svg │ │ ├── sunny.svg │ │ ├── lightning.svg │ │ ├── partlycloudy.svg │ │ └── snowy.svg ├── clear.yaml ├── slate.yaml ├── clear2.yaml ├── bluenight.yaml └── dark.yaml ├── weatherdata.yaml ├── includes └── rest_command.yaml ├── template.yaml ├── scripts.yaml ├── README.MD ├── groups.yaml ├── configuration.yaml ├── ui-lovelace.yaml ├── themes.yaml ├── LICENSE └── automations.yaml /sensors/saj.yaml: -------------------------------------------------------------------------------- 1 | - platform: saj 2 | host: 192.168.1.44 3 | -------------------------------------------------------------------------------- /.assets/day.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/patatman/patatman-homeassistant-config/HEAD/.assets/day.jpg -------------------------------------------------------------------------------- /.assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/patatman/patatman-homeassistant-config/HEAD/.assets/logo.png -------------------------------------------------------------------------------- /.assets/night.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/patatman/patatman-homeassistant-config/HEAD/.assets/night.jpg -------------------------------------------------------------------------------- /sensors/misc.yaml: -------------------------------------------------------------------------------- 1 | - platform: dsmr 2 | host: 192.168.1.32 3 | port: 2001 4 | dsmr_version: 4 5 | -------------------------------------------------------------------------------- /input_boolean/bedtime.yaml: -------------------------------------------------------------------------------- 1 | - bedtime: 2 | name: Is someone in bed? 3 | initial: off 4 | icon: mdi:bed 5 | -------------------------------------------------------------------------------- /sensors/essent.yaml: -------------------------------------------------------------------------------- 1 | - platform: essent 2 | username: !secret essent_user 3 | password: !secret essent_password 4 | -------------------------------------------------------------------------------- /.assets/hass-docker-compose.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/patatman/patatman-homeassistant-config/HEAD/.assets/hass-docker-compose.gif -------------------------------------------------------------------------------- /sensors/weather.yaml: -------------------------------------------------------------------------------- 1 | - platform: buienradar 2 | monitored_conditions: 3 | - symbol 4 | - humidity 5 | - temperature 6 | - windspeed 7 | -------------------------------------------------------------------------------- /camera/synology.yaml: -------------------------------------------------------------------------------- 1 | # - platform: synology 2 | # url: https://192.168.1.10:5001 3 | # username: !secret dsm_user 4 | # password: !secret dsm 5 | # verify_ssl: False 6 | -------------------------------------------------------------------------------- /camera/3dprinter.yaml: -------------------------------------------------------------------------------- 1 | - platform: mjpeg 2 | name: octoprint 3 | still_image_url: http://192.168.1.75/webcam/?action=snapshot 4 | mjpeg_url: http://192.168.1.75/webcam/?action=stream 5 | -------------------------------------------------------------------------------- /lights/groups.yaml: -------------------------------------------------------------------------------- 1 | - platform: group 2 | name: "Bathroom lights group" 3 | entities: 4 | - light.0x90fd9ffffe08e345_light 5 | - light.0x90fd9ffffe6d296e_light 6 | - light.0x000b57fffec2a885_light 7 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: python 2 | python: 3 | - "3.5" 4 | before_install: 5 | - mv travis_secrets.yaml secrets.yaml 6 | - mkdir tensorflow 7 | - touch tensorflow/frozen_inference_graph.pb 8 | install: 9 | - pip3 install homeassistant 10 | script: 11 | - hass -c . --script check_config 12 | -------------------------------------------------------------------------------- /sensors/afval.yaml: -------------------------------------------------------------------------------- 1 | - platform: afvalbeheer 2 | wastecollector: Circulus-Berkel 3 | resources: 4 | - restafval 5 | - gft 6 | - papier 7 | - pmd 8 | postcode: !secret zip 9 | streetnumber: !secret housenr 10 | upcomingsensor: 1 11 | dateformat: '%d-%m-%Y' 12 | dateonly: 0 13 | name: '' 14 | nameprefix: 1 15 | builtinicons: 0 16 | dutch: 0 17 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | homeassistant: 4 | container_name: home-assistant 5 | image: homeassistant/home-assistant:latest 6 | environment: 7 | - TZ=Europe/Amsterdam 8 | volumes: 9 | - /opt/hass/patatman-homeassistant-config:/config 10 | devices: 11 | - /dev/ttyUSB0:/dev/ttyUSB0 12 | restart: always 13 | network_mode: host 14 | -------------------------------------------------------------------------------- /sensors/zigbee2mqtt_map.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: Zigbee2mqtt Networkmap 3 | # if you change base_topic of Zigbee2mqtt, change state_topic accordingly 4 | state_topic: zigbee2mqtt/bridge/networkmap/raw 5 | value_template: >- 6 | {{ now().strftime('%Y-%m-%d %H:%M:%S') }} 7 | # again, if you change base_topic of Zigbee2mqtt, change json_attributes_topic accordingly 8 | json_attributes_topic: zigbee2mqtt/bridge/networkmap/raw 9 | -------------------------------------------------------------------------------- /covers/bedroom.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "Blinds bedroom" 3 | command_topic: "Blinds_bedroom/blindsCommand" 4 | set_position_topic: "Blinds_bedroom/positionCommand" 5 | position_topic: "Blinds_bedroom/positionState" 6 | state_topic: "Blinds_bedroom/positionState" 7 | retain: true 8 | payload_open: "OPEN" 9 | payload_close: "CLOSE" 10 | payload_stop: "STOP" 11 | position_open: 0 12 | position_closed: 46 13 | -------------------------------------------------------------------------------- /camera/stream.yaml: -------------------------------------------------------------------------------- 1 | - platform: generic 2 | name: zijdeur_streaming 3 | still_image_url: !secret zijdeur_stream_still 4 | stream_source: !secret zijdeur_stream 5 | verify_ssl: false 6 | - platform: generic 7 | name: voordeur_streaming 8 | still_image_url: !secret voordeur_stream_still 9 | stream_source: !secret voordeur_stream 10 | verify_ssl: false 11 | - platform: generic 12 | name: garage_streaming 13 | still_image_url: !secret garage_stream_still 14 | stream_source: !secret garage_stream 15 | verify_ssl: false 16 | -------------------------------------------------------------------------------- /sensors/mqtt_room.yaml: -------------------------------------------------------------------------------- 1 | # One entry for each beacon you want to track 2 | - platform: mqtt_room 3 | device_id: "2F234454CF6D4A0FADF2F4911BA9FFA6-1-0" # Note that major version must match, but any minor version will be ignored 4 | name: 'Phone Pim' 5 | state_topic: 'room_presence' 6 | timeout: 10 7 | away_timeout: 15 8 | - platform: mqtt_room 9 | device_id: "fda50693a4e24fb1afcfc6eb07647825-5-6" # Note that major version must match, but any minor version will be ignored 10 | name: 'Keys Pim' 11 | state_topic: 'room_presence' 12 | timeout: 20 13 | away_timeout: 30 14 | 15 | -------------------------------------------------------------------------------- /automations/good_morning.yaml: -------------------------------------------------------------------------------- 1 | {% if now().strftime("%H")|int < 12 %} 2 | Good morning, 3 | {% elif now().strftime("%H")|int < 18 %} 4 | Good afternoon, 5 | {% else %} 6 | Good evening, 7 | {% endif %} 8 | 9 | The current weather is {{ states ("weather.dark_sky") }}, with a temperature of {{ state_attr ("weather.dark_sky", "temperature" )| int }} degrees. 10 | 11 | {% if is_state ("calender.containers", "on") %} 12 | {{ state_attr ("calender.containers", "message") }}. 13 | {% endif %} 14 | {% if is_state ("binary_sensor.door_window_sensor_158d0002133b59", "on") %} 15 | Reminder, The bedroom window is open. 16 | {% endif %} 17 | -------------------------------------------------------------------------------- /covers/office.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "office roller" 3 | state_topic: "shellies/shellyswitch-559DFC/roller/0" # Returns open,close while in motion, stop when not moving 4 | command_topic: "shellies/shellyswitch-559DFC/roller/0/command" # Accepts open, close, stop 5 | position_topic: "shellies/shellyswitch-559DFC/roller/0/pos" 6 | set_position_topic: "shellies/shellyswitch-559DFC/roller/0/command/pos" 7 | payload_open: "open" 8 | payload_close: "close" 9 | payload_stop: "stop" 10 | state_open: "open" 11 | state_closed: "close" 12 | retain: true 13 | optimistic: false 14 | qos: 2 15 | -------------------------------------------------------------------------------- /covers/livingroom.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "livingroom roller" 3 | state_topic: "shellies/shellyswitch-32B772/roller/0" # Returns open,close while in motion, stop when not moving 4 | command_topic: "shellies/shellyswitch-32B772/roller/0/command" # Accepts open, close, stop 5 | position_topic: "shellies/shellyswitch-32B772/roller/0/pos" 6 | set_position_topic: "shellies/shellyswitch-32B772/roller/0/command/pos" 7 | payload_open: "open" 8 | payload_close: "close" 9 | payload_stop: "stop" 10 | state_open: "open" 11 | state_closed: "close" 12 | retain: true 13 | optimistic: false 14 | qos: 2 15 | -------------------------------------------------------------------------------- /sensors/bayesian.yaml: -------------------------------------------------------------------------------- 1 | #- platform: bayesian 2 | # prior: 0.6 3 | # name: Pim Presence 4 | # probability_threshold: 0.9 5 | # observations: 6 | # - entity_id: 'input_boolean.pim_present' 7 | # prob_given_true: 0.9 8 | # prob_given_false: 0.3 9 | # platform: 'state' 10 | # to_state: 'on' 11 | # - entity_id: 'device_tracker.mi9_miphone' 12 | # prob_given_true: 0.9 13 | # prob_given_false: 0.2 14 | # platform: 'state' 15 | # to_state: 'home' 16 | # - entity_id: 'device_tracker.30_95_e3_13_e9_ba' 17 | # prob_given_true: 0.8 18 | # prob_given_false: 0.3 19 | # platform: 'state' 20 | # to_state: 'home' 21 | -------------------------------------------------------------------------------- /automations/telegram.yaml: -------------------------------------------------------------------------------- 1 | - id: '1550564308364' 2 | alias: Telegram bot that reply pong to ping 3 | trigger: 4 | - event_data: 5 | text: ping 6 | event_type: telegram_text 7 | platform: event 8 | - event_data: 9 | text: Ping 10 | event_type: telegram_text 11 | platform: event 12 | condition: [] 13 | action: 14 | - data: 15 | message: pong 16 | service: telegram_bot.send_message 17 | - id: '1550565595309' 18 | alias: Telegram bot light status 19 | trigger: 20 | - event_data: 21 | text: status 22 | event_type: telegram_text 23 | platform: event 24 | - event_data: 25 | text: Status 26 | event_type: telegram_text 27 | platform: event 28 | condition: [] 29 | action: [] -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Extensions 2 | *.uuid 3 | *.conf 4 | *.db 5 | *.db-journal 6 | *.noload 7 | *.txt 8 | *.sqlite 9 | *.xml 10 | *.log 11 | *.backup 12 | *.mp3 13 | 14 | # Folders 15 | .cloud 16 | .HA_VERSION 17 | .storage 18 | .google.token 19 | www 20 | zones 21 | deps 22 | tmp 23 | __pycache__ 24 | tensorflow 25 | security 26 | video 27 | tts 28 | 29 | # Files 30 | custom_components 31 | adbkey 32 | google_calendars.yaml 33 | secrets.yaml 34 | known_devices.yaml 35 | entity_registry.yaml 36 | ip_bans.yaml 37 | smartyone_nl.pem 38 | server.pem 39 | home-assistant_v2.db-shm 40 | home-assistant_v2.db-wal 41 | image_processing.yaml 42 | .tradfri_psk.conf 43 | .spotify-token-cache 44 | .ios.conf 45 | 46 | # For security reasons 47 | cameras 48 | camera.yaml 49 | -------------------------------------------------------------------------------- /camera/tensorflow.yaml: -------------------------------------------------------------------------------- 1 | #currently not in use, still need to optimize. 2 | 3 | - platform: local_file 4 | file_path: /config/video/voordeur_latest.jpg 5 | name: tf_voordeur 6 | - platform: local_file 7 | file_path: /config/video/zijdeur_latest.jpg 8 | name: tf_zijdeur 9 | - platform: local_file 10 | file_path: /config/www/tmpimage/printer.jpg 11 | name: tensorflow_test 12 | 13 | # Example configuration.yaml entry 14 | #image_processing: 15 | # - platform: tensorflow 16 | # scan_interval: 10000 17 | # source: 18 | # - entity_id: camera.voordeur 19 | # - entity_id: camera.zijdeur 20 | # file_out: 21 | # - "/config/video/{{ camera_entity.split('.')[1] }}_latest.jpg" 22 | # - "/config/video/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg" 23 | # model: 24 | # graph: /config/tensorflow/frozen_inference_graph.pb 25 | -------------------------------------------------------------------------------- /components.md: -------------------------------------------------------------------------------- 1 | ### Sensors/devices 2 | - Xiaomi Aqara 3 | - 6 motion sensors 4 | - 5 temperature sensors 5 | - 1 Gateway 6 | - 2 wireless switch (Double) 7 | - 1 Single button 8 | - 2 door/window sensors 9 | 10 | - Ikea Tradfri 11 | - 14 GU10 spots 12 | - 1 e14 bulb 13 | - 1 e27 bulb 14 | 15 | - Xiaomi Vacuum 16 | 17 | - 3D printer 18 | - AnyCubic Kossel (non linear) 19 | 20 | - 2 Wemos D1 21 | - 1 Falcon heavy lamp (addressable led ring) 22 | - 1 3d printer light (addressable led strip) 23 | 24 | - Google: 25 | - 2 Home Mini's 26 | - 1 Home 27 | - 1 Home Hub 28 | - 2 ChromeCast 29 | - 1 Android TV 30 | - Nest Hello (doorbell) 31 | 32 | - Synology Surveilence station 33 | - 2 camera's 34 | 35 | - Honeywell Evo Home 36 | - 3 radiator valves 37 | - 1 floorheating valve 38 | 39 | - RFlink (legacy) 40 | - 3 Klik Aan Klik Uit switches 41 | 42 | - Sonoff 43 | - 3 sonoff basic's 44 | - 1 sonoff POW 45 | - 1 sonoff TH 46 | -------------------------------------------------------------------------------- /scenes.yaml: -------------------------------------------------------------------------------- 1 | - id: '1578256623103' 2 | name: ALARM 3 | entities: 4 | group.all_lights: 5 | auto: true 6 | entity_id: 7 | - light.falcon_light 8 | - light.fireplace 9 | - light.gateway_light_7811dcb27710 10 | - light.hallway_3 11 | - light.kossel_light 12 | - light.officeleft 13 | - light.officeright 14 | - light.sonoff_basement 15 | - light.tradfri_bulb_e27_w_opal_1000lm_2 16 | - light.tradfri_bulb_gu10_w_400lm_11 17 | - light.tradfri_bulb_gu10_w_400lm_12 18 | - light.wled_light 19 | - light.bathroom1 20 | - light.bathroom2 21 | - light.bathroom3 22 | - light.deur 23 | - light.hallway1 24 | - light.hallway2 25 | - light.kitchen1 26 | - light.kitchen2 27 | - light.rode_lamp 28 | - light.status_unicorn 29 | - light.verwarming 30 | - light.vierkant 31 | friendly_name: all lights 32 | hidden: true 33 | order: 28 34 | state: 'on' 35 | -------------------------------------------------------------------------------- /sensors/mqtt.yaml: -------------------------------------------------------------------------------- 1 | - platform: mqtt 2 | name: "Basement Temperature" 3 | state_topic: "tele/sonoff1/SENSOR" 4 | value_template: "{{ value_json['AM2301'].Temperature }}" 5 | unit_of_measurement: "°C" 6 | 7 | - platform: mqtt 8 | name: "Basement Humidity" 9 | state_topic: "tele/sonoff1/SENSOR" 10 | value_template: "{{ value_json['AM2301'].Humidity }}" 11 | unit_of_measurement: "%" 12 | 13 | - platform: mqtt 14 | name: "Fireplace Energy" 15 | state_topic: "tele/sonoff2/SENSOR" 16 | value_template: '{{ value_json["ENERGY"]["Today"] }}' 17 | unit_of_measurement: "kWh" 18 | 19 | - platform: mqtt 20 | name: "Fireplace Power" 21 | state_topic: "tele/sonoff2/SENSOR" 22 | value_template: '{{ value_json["ENERGY"]["Power"] }}' 23 | unit_of_measurement: "W" 24 | 25 | - platform: mqtt 26 | name: "Fireplace Voltage" 27 | state_topic: "tele/sonoff2/SENSOR" 28 | value_template: '{{ value_json["ENERGY"]["Voltage"] }}' 29 | unit_of_measurement: "V" 30 | 31 | - platform: mqtt 32 | name: "Fireplace Current" 33 | state_topic: "tele/sonoff2/SENSOR" 34 | value_template: '{{ value_json["ENERGY"]["Current"] }}' 35 | unit_of_measurement: "A" 36 | -------------------------------------------------------------------------------- /blueprints/automation/homeassistant/notify_leaving_zone.yaml: -------------------------------------------------------------------------------- 1 | blueprint: 2 | name: Send notification when a person leaves a zone 3 | domain: automation 4 | source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml 5 | input: 6 | person_entity: 7 | name: Person 8 | selector: 9 | entity: 10 | domain: person 11 | zone_entity: 12 | name: Zone 13 | selector: 14 | entity: 15 | domain: zone 16 | notify_device: 17 | name: Device to notify 18 | description: Device needs to run the official Home Assistant app to receive notifications. 19 | selector: 20 | device: 21 | integration: mobile_app 22 | 23 | trigger: 24 | platform: state 25 | entity_id: !input person_entity 26 | 27 | variables: 28 | zone_entity: !input zone_entity 29 | zone_state: "{{ states[zone_entity].name }}" 30 | person_entity: !input person_entity 31 | person_name: "{{ states[person_entity].name }}" 32 | 33 | condition: 34 | condition: template 35 | value_template: "{{ trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}" 36 | 37 | action: 38 | domain: mobile_app 39 | type: notify 40 | device_id: !input notify_device 41 | message: "{{ person_name }} has left {{ zone_state }}" 42 | -------------------------------------------------------------------------------- /blueprints/automation/homeassistant/motion_light.yaml: -------------------------------------------------------------------------------- 1 | blueprint: 2 | name: Motion-activated Light 3 | domain: automation 4 | source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml 5 | input: 6 | motion_entity: 7 | name: Motion Sensor 8 | selector: 9 | entity: 10 | domain: binary_sensor 11 | device_class: motion 12 | light_target: 13 | name: Light 14 | selector: 15 | target: 16 | entity: 17 | domain: light 18 | no_motion_wait: 19 | name: Wait time 20 | description: Time to wait until the light should be turned off. 21 | default: 120 22 | selector: 23 | number: 24 | min: 0 25 | max: 3600 26 | unit_of_measurement: seconds 27 | 28 | # If motion is detected within the delay, 29 | # we restart the script. 30 | mode: restart 31 | max_exceeded: silent 32 | 33 | trigger: 34 | platform: state 35 | entity_id: !input motion_entity 36 | from: "off" 37 | to: "on" 38 | 39 | action: 40 | - service: light.turn_on 41 | target: !input light_target 42 | - wait_for_trigger: 43 | platform: state 44 | entity_id: !input motion_entity 45 | from: "on" 46 | to: "off" 47 | - delay: !input no_motion_wait 48 | - service: light.turn_off 49 | target: !input light_target 50 | -------------------------------------------------------------------------------- /customize.yaml: -------------------------------------------------------------------------------- 1 | light.gateway_light_7811dcb27710: 2 | friendly_name: Gateway 3 | binary_sensor.door_window_sensor_158d0002254184: 4 | friendly_name: Doorbell1 5 | binary_sensor.door_window_sensor_158d0002254443: 6 | friendly_name: Door Sensor Basement 7 | binary_sensor.door_window_sensor_158d0002133b59: 8 | friendly_name: Door Window Sensor Bedroom 9 | sensor.humidity_158d00022b6766: 10 | friendly_name: Humidity Bedroom 11 | sensor.temperature_158d00022b6766: 12 | friendly_name: Temperature Bedroom 13 | sensor.humidity_158d00022cc752: 14 | friendly_name: Humidity Bathroom 15 | sensor.pressure_158d00022cc752: 16 | friendly_name: Pressure Bathroom 17 | sensor.temperature_158d00022cc752: 18 | friendly_name: Temperature Bathroom 19 | sensor.pressure_158d00022b6766: 20 | friendly_name: Pressure Bedroom 21 | sensor.humidity_158d00022c9653: 22 | friendly_name: Humidity Hallway 23 | sensor.pressure_158d00022c9653: 24 | friendly_name: Pressure hallway 25 | sensor.temperature_158d00022c9653: 26 | friendly_name: Temperature hallway 27 | binary_sensor.motion_sensor_158d0001a92381: 28 | friendly_name: Motion Sensor Hallway 29 | light.tradfri_bulb_gu10_w_400lm_9: 30 | friendly_name: Kitchen 1 31 | light.tradfri_bulb_gu10_w_400lm_10: 32 | friendly_name: Kitchen 2 33 | binary_sensor.motion_sensor_158d0001e55662: 34 | friendly_name: Motion Sensor Kitchen 35 | binary_sensor.motion_sensor_158d0001e56350: 36 | friendly_name: Motion Sensor upstairs 37 | -------------------------------------------------------------------------------- /travis_secrets.yaml: -------------------------------------------------------------------------------- 1 | ### Fake secrets for travis 2 | 3 | lat: 00000 4 | long: 00000 5 | 6 | http_password: blahblahblah 7 | 8 | zijdeur_stream: "rtsp://abcde:123456789@10.10.10.10:554/Sms=8.unicast" 9 | zijdeur_stream_still: "http://10.10.10.111/cgi-bin/snapshot.cgi" 10 | 11 | voordeur_stream_still: "http://10.10.10.110/cgi-bin/snapshot.cgi" 12 | voordeur_stream: "rtsp://abcde:123456789@10.10.10.10:554/Sms=8.unicast" 13 | 14 | garage_stream_still: "http://10.10.10.110/cgi-bin/snapshot.cgi" 15 | garage_stream: "rtsp://abcde:123456789@10.10.10.10:554/Sms=8.unicast" 16 | 17 | pushapi: lkjdlkjdsflkj 18 | pushapi2: lkjdfslkjdsflkj 19 | 20 | nest_id: blahblah@blah.com 21 | nest_secret: fake1234 22 | 23 | honeywell_user: blah@blah.com 24 | honeywell_pass: fake1234 25 | 26 | aqara_password: aaaaaaa198765432 27 | 28 | essent_username: blah@blah.com 29 | esset_password: fake1234 30 | 31 | google_cal_id: "123456789101-1a2b3cd4e5fghi6jk78l9mn1pqrst3vw.apps.googleusercontent.com" 32 | google_cal_secret: "ab12_3cdefghijk4lmnopqrs" 33 | 34 | miiotoken: 1234567891234a678912345678912345 35 | 36 | octo-api: lkjdljsdkljsdf 37 | 38 | spotify_client: ljdfsjksdflkjdfs 39 | spotify: fake1234 40 | 41 | tesla_username: blah@blah.com 42 | tesla_password: "fake1234" 43 | 44 | unifi_username: blah 45 | unifi_password: "Fake1234" 46 | 47 | darksky: lkjdfslkjsdflkj 48 | 49 | seventeentrack_un: blah@blah.com 50 | seventeentrack_pw: fake1234 51 | 52 | telegram_id: 123456789 53 | telegram_key: 1234567891234a678912345678912345 54 | telegram_chat_id: 123456789 55 | 56 | dsm_user: blah@blah.com 57 | dsm: fake1234 58 | 59 | database: "mysql://fake:fake@fake/fake" 60 | -------------------------------------------------------------------------------- /themes/animated-weather-card/animated-weather-card.yaml: -------------------------------------------------------------------------------- 1 | # Animated icons for default Home Assistant weather card 2 | # 3 | # Creator: Anton Averkiev - @wowgamr 4 | # Repo: https://github.com/wowgamr/animated-weather-card 5 | 6 | Animated Weather Card: 7 | weather-icon-clear-night: url("/hacsfiles/themes/animated-weather-card/icons/clear-night.svg") 8 | weather-icon-cloudy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 9 | weather-icon-fog: url("/hacsfiles/themes/animated-weather-card/icons/fog.svg") 10 | weather-icon-lightning: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 11 | weather-icon-lightning-rainy: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 12 | weather-icon-partlycloudy: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 13 | weather-icon-pouring: url("/hacsfiles/themes/animated-weather-card/icons/pouring.svg") 14 | weather-icon-rainy: url("/hacsfiles/themes/animated-weather-card/icons/rainy.svg") 15 | weather-icon-hail: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 16 | weather-icon-snowy: url("/hacsfiles/themes/animated-weather-card/icons/snowy.svg") 17 | weather-icon-snowy-rainy: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 18 | weather-icon-sunny: url("/hacsfiles/themes/animated-weather-card/icons/sunny.svg") 19 | weather-icon-windy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 20 | weather-icon-windy-variant: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 21 | weather-icon-exceptional: url("/hacsfiles/themes/animated-weather-card/icons/exceptional.svg") -------------------------------------------------------------------------------- /automations/welcome_home.yaml: -------------------------------------------------------------------------------- 1 | {% if now().strftime("%H")|int < 12 %} 2 | Good morning, 3 | {% elif now().strftime("%H")|int < 18 %} 4 | Good afternoon, 5 | {% else %} 6 | Good evening, 7 | {% endif %} 8 | 9 | Resident. 10 | 11 | The current weather is {{ states ("weather.dark_sky") }}, with a temperature of {{ state_attr ("weather.dark_sky" , "temperature" ) | int }} degrees. 12 | 13 | The current livingroom temperature is {{ state_attr ("climate.woonkamer", "current_temperature" )|int }} degrees. 14 | 15 | The solar panels produced {{ states ("sensor.energy_today").split(".").0 }} Kilowatthours today. 16 | 17 | {% if is_state ("binary_sensor.door_window_sensor_158d0002133b59", "on") %} 18 | Reminder, The bedroom window is open. 19 | {% endif %} 20 | 21 | {% if state_attr ("vacuum.miep", "clean_stop").strftime("%d") == now().strftime("%d") %} 22 | Vacuum finished today at {{ state_attr ("vacuum.miep", "clean_stop").strftime("%H:%M")}}. 23 | {% else %} 24 | Vacuum did not clean, last run was {{state_attr ("vacuum.miep", "clean_stop").strftime("%A, %d %B")}}. 25 | {% endif %} 26 | 27 | {% if state_attr ("vacuum.miep", "sensor_dirty_left") < 2 %} 28 | The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "sensor_dirty_left")}} hours. 29 | {% endif %} 30 | {% if state_attr ("vacuum.miep", "filter_left") < 2 %} 31 | The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "filter_left")}} hours. 32 | {% endif %} 33 | {% if state_attr ("vacuum.miep", "side_brush_left") < 2 %} 34 | The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "side_brush_left")}} hours. 35 | {% endif %} 36 | {% if state_attr ("vacuum.miep", "main_brush_left") < 2 %} 37 | The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "main_brush_left")}} hours. 38 | {% endif %} -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/exceptional.svg: -------------------------------------------------------------------------------- 1 | 2 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /weatherdata.yaml: -------------------------------------------------------------------------------- 1 | esphome: 2 | name: weerhuisje 3 | platform: ESP8266 4 | board: nodemcuv2 5 | 6 | wifi: 7 | ssid: "...." 8 | password: "...." 9 | ap: 10 | ssid: "Weerhuisje AP" 11 | password: "...." 12 | reboot_timeout: 1min 13 | power_save_mode: none 14 | manual_ip: 15 | static_ip: 192.168.x.x 16 | gateway: 192.168.x.x 17 | subnet: 255.255.255.0 18 | 19 | captive_portal: 20 | 21 | logger: 22 | 23 | # Enable Home Assistant API 24 | api: 25 | 26 | ota: 27 | 28 | time: 29 | - platform: homeassistant 30 | id: homeassistant_time 31 | timezone: Europe/Amsterdam 32 | 33 | # Enable UART for SDS011 34 | uart: 35 | rx_pin: D1 36 | tx_pin: D2 37 | baud_rate: 9600 38 | 39 | # Enable i2c for BME280 40 | i2c: 41 | sda: D5 42 | scl: D6 43 | scan: true 44 | 45 | sensor: 46 | - platform: sds011 47 | pm_2_5: 48 | name: "Particulate Matter <2.5µm Concentration" 49 | pm_10_0: 50 | name: "Particulate Matter <10.0µm Concentration" 51 | update_interval: 30min 52 | 53 | - platform: bme280 54 | update_interval: 60s 55 | address: 0x76 56 | temperature: 57 | name: "BME280 Temperature" 58 | pressure: 59 | name: "BME280 Pressure" 60 | humidity: 61 | name: "BME280 Humidity" 62 | - platform: uptime 63 | name: "Weerhuisje uptime" 64 | update_interval: 60s 65 | - platform: wifi_signal 66 | name: "Weerhuisje WiFi signaal" 67 | update_interval: 60s 68 | 69 | binary_sensor: 70 | - platform: status 71 | name: "Weerhuisje Status" 72 | 73 | text_sensor: 74 | - platform: wifi_info 75 | ip_address: 76 | name: Weerhuisje IP Address 77 | ssid: 78 | name: Weerhuisje Connected SSID 79 | bssid: 80 | name: Weerhuisje Connected BSSID 81 | - platform: version 82 | name: Weerhuisje Version 83 | 84 | switch: 85 | - platform: restart 86 | name: "Weerhuisje Restart" 87 | -------------------------------------------------------------------------------- /lights/mqtt.yaml: -------------------------------------------------------------------------------- 1 | 2 | - platform: mqtt 3 | name: "Sonoff Basement" 4 | state_topic: "stat/sonoff1/POWER" 5 | command_topic: "cmnd/sonoff1/POWER" 6 | availability_topic: "tele/sonoff1/LWT" 7 | qos: 1 8 | payload_on: "ON" 9 | payload_off: "OFF" 10 | payload_available: "Online" 11 | payload_not_available: "Offline" 12 | retain: true 13 | 14 | # - platform: mqtt 15 | # schema: json 16 | # name: "Falcon light" 17 | # state_topic: "light/falcon" 18 | # command_topic: "light/falcon/set" 19 | # effect: true 20 | # effect_list: 21 | # - bpm 22 | # - candy cane 23 | # - confetti 24 | # - cyclon rainbow 25 | # - dots 26 | # - fire 27 | # - glitter 28 | # - juggle 29 | # - lightning 30 | # - noise 31 | # - police all 32 | # - police one 33 | # - rainbow 34 | # - rainbow with glitter 35 | # - ripple 36 | # - sinelon 37 | # - solid 38 | # - twinkle 39 | # brightness: true 40 | # rgb: true 41 | # optimistic: false 42 | # qos: 0 43 | # 44 | # - platform: mqtt 45 | # name: "Fireplace" 46 | # state_topic: "stat/sonoff2/POWER" 47 | # command_topic: "cmnd/sonoff2/POWER" 48 | # availability_topic: "tele/sonoff2/LWT" 49 | # qos: 1 50 | # payload_on: "ON" 51 | # payload_off: "OFF" 52 | # payload_available: "Online" 53 | # payload_not_available: "Offline" 54 | # retain: true 55 | # 56 | # - platform: mqtt 57 | # name: "Hallway 3" 58 | # state_topic: "stat/sonoff6/POWER" 59 | # command_topic: "cmnd/sonoff6/POWER" 60 | # availability_topic: "tele/sonoff6/LWT" 61 | # qos: 1 62 | # payload_on: "ON" 63 | # payload_off: "OFF" 64 | # payload_available: "Online" 65 | # payload_not_available: "Offline" 66 | # retain: true 67 | -------------------------------------------------------------------------------- /includes/rest_command.yaml: -------------------------------------------------------------------------------- 1 | ################################## 2 | ## Push values to Air Quality APIs 3 | ################################## 4 | 5 | # The BME280 pressure value in HA is in hPa - the APIs expect it in Pa, hence the 6 | # multiplication of the value in the templates below. 7 | 8 | # Push to Luftdaten API. Luftdaten uses headers to distinguish between different sensor 9 | # types, so we need to push twice. The X-Sensor header contains the sensorID from Luftdaten, 10 | # typically formatted as esp8266-12345678 or similar. 11 | send_luftdaten_pm: 12 | url: https://api.sensor.community/v1/push-sensor-data/ 13 | method: POST 14 | content_type: "application/json" 15 | headers: 16 | X-Pin: 1 ## This tells Luftdaten that it is SDS011 data 17 | X-Sensor: !secret luftdaten_x_sensor 18 | payload: > 19 | { 20 | "software_version": "HomeAssistant-{{ states('sensor.current_version') }}", 21 | "sensordatavalues":[ 22 | {% if states('sensor.weerhuisje_particulate_matter_10_0um_concentration') and ('sensor.weerhuisje_particulate_matter_2_5um_concentration') != 'unavailable' %} 23 | {"value_type":"P1","value":"{{ states('sensor.weerhuisje_particulate_matter_10_0um_concentration') }}"}, 24 | {"value_type":"P2","value":"{{ states('sensor.weerhuisje_particulate_matter_2_5um_concentration') }}"} 25 | {% endif %} 26 | ] 27 | } 28 | send_luftdaten_tph: 29 | url: https://api.sensor.community/v1/push-sensor-data/ 30 | method: POST 31 | content_type: "application/json" 32 | headers: 33 | X-Pin: 11 ## This tells Luftdaten that it is BME280 data 34 | X-Sensor: !secret luftdaten_x_sensor 35 | payload: > 36 | { 37 | "software_version": "HomeAssistant-{{ states('sensor.current_version') }}", 38 | "sensordatavalues":[ 39 | {"value_type":"temperature","value":"{{ states('sensor.weerhuisje_temperature') }}"}, 40 | {"value_type":"pressure","value":"{{ states('sensor.weerhuisje_pressure') | float * 100 }}"}, 41 | {"value_type":"humidity","value":"{{ states('sensor.weerhuisje_humidity') }}"} 42 | ] 43 | } 44 | 45 | -------------------------------------------------------------------------------- /sensors/octorint.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | octoprint_time_elapsed_format: 4 | friendly_name: 'Printing Time Elapsed' 5 | value_template: >- 6 | {% set etime = states.sensor.octoprint_time_elapsed.state | int %} 7 | {% set seconds = etime % 60 %} 8 | {% set minutes = ((etime % 3600) / 60) | int %} 9 | {% set hours = ((etime % 86400) / 3600) | int %} 10 | {% set days = (etime / 86400) | int %} 11 | {%- if days > 0 -%} 12 | {%- if days == 1 -%} 13 | 1 day 14 | {%- else -%} 15 | {{ days }} days 16 | {%- endif -%} 17 | {{ ', ' }} 18 | {%- endif -%} 19 | {%- if hours > 0 -%} 20 | {%- if hours == 1 -%} 21 | 1 hour 22 | {%- else -%} 23 | {{ hours }} hours 24 | {%- endif -%} 25 | {{ ', ' }} 26 | {%- endif -%} 27 | {%- if minutes > 0 -%} 28 | {%- if minutes == 1 -%} 29 | 1 minute 30 | {%- else -%} 31 | {{ minutes }} minutes 32 | {%- endif -%} 33 | {%- endif -%} 34 | octoprint_time_remaining_format: 35 | friendly_name: 'Printing Time Remaining' 36 | value_template: >- 37 | {% set rtime = states.sensor.octoprint_time_remaining.state | int %} 38 | {% set seconds = rtime % 60 %} 39 | {% set minutes = ((rtime % 3600) / 60) | int %} 40 | {% set hours = ((rtime % 86400) / 3600) | int %} 41 | {% set days = (rtime / 86400) | int %} 42 | {%- if days > 0 -%} 43 | {%- if days == 1 -%} 44 | 1 day 45 | {%- else -%} 46 | {{ days }} days 47 | {%- endif -%} 48 | {{ ', ' }} 49 | {%- endif -%} 50 | {%- if hours > 0 -%} 51 | {%- if hours == 1 -%} 52 | 1 hour 53 | {%- else -%} 54 | {{ hours }} hours 55 | {%- endif -%} 56 | {{ ', ' }} 57 | {%- endif -%} 58 | {%- if minutes > 0 -%} 59 | {%- if minutes == 1 -%} 60 | 1 minute 61 | {%- else -%} 62 | {{ minutes }} minutes 63 | {%- endif -%} 64 | {%- endif -%} 65 | -------------------------------------------------------------------------------- /template.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | octoprint_time_elapsed_format: 4 | friendly_name: 'Printing Time Elapsed' 5 | value_template: >- 6 | {% set etime = states.sensor.octoprint_time_elapsed.state | int %} 7 | {% set seconds = etime % 60 %} 8 | {% set minutes = ((etime % 3600) / 60) | int %} 9 | {% set hours = ((etime % 86400) / 3600) | int %} 10 | {% set days = (etime / 86400) | int %} 11 | {%- if days > 0 -%} 12 | {%- if days == 1 -%} 13 | 1 day 14 | {%- else -%} 15 | {{ days }} days 16 | {%- endif -%} 17 | {{ ', ' }} 18 | {%- endif -%} 19 | {%- if hours > 0 -%} 20 | {%- if hours == 1 -%} 21 | 1 hour 22 | {%- else -%} 23 | {{ hours }} hours 24 | {%- endif -%} 25 | {{ ', ' }} 26 | {%- endif -%} 27 | {%- if minutes > 0 -%} 28 | {%- if minutes == 1 -%} 29 | 1 minute 30 | {%- else -%} 31 | {{ minutes }} minutes 32 | {%- endif -%} 33 | {%- endif -%} 34 | octoprint_time_remaining_format: 35 | friendly_name: 'Printing Time Remaining' 36 | value_template: >- 37 | {% set rtime = states.sensor.octoprint_time_remaining.state | int %} 38 | {% set seconds = rtime % 60 %} 39 | {% set minutes = ((rtime % 3600) / 60) | int %} 40 | {% set hours = ((rtime % 86400) / 3600) | int %} 41 | {% set days = (rtime / 86400) | int %} 42 | {%- if days > 0 -%} 43 | {%- if days == 1 -%} 44 | 1 day 45 | {%- else -%} 46 | {{ days }} days 47 | {%- endif -%} 48 | {{ ', ' }} 49 | {%- endif -%} 50 | {%- if hours > 0 -%} 51 | {%- if hours == 1 -%} 52 | 1 hour 53 | {%- else -%} 54 | {{ hours }} hours 55 | {%- endif -%} 56 | {{ ', ' }} 57 | {%- endif -%} 58 | {%- if minutes > 0 -%} 59 | {%- if minutes == 1 -%} 60 | 1 minute 61 | {%- else -%} 62 | {{ minutes }} minutes 63 | {%- endif -%} 64 | {%- endif -%} 65 | 66 | no_one_home: 67 | friendly_name: 'No one is home' 68 | value_template: >- 69 | {{ not is_state("person.pim", "home") 70 | and not is_state("person.joyce", "home") }} 71 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/rainy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/clear-night.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/pouring.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/hail.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /themes/clear.yaml: -------------------------------------------------------------------------------- 1 | clear: 2 | # Background image 3 | background-image: 'center / cover no-repeat url("/local/day.jpg") fixed' 4 | # Colors 5 | text-color: '#636B75' # Grey text 6 | text-medium-color: '#8c96a5' # Medium grey text 7 | text-light-color: '#BAC0C6' # Light grey text 8 | accent-color: '#00a1ff' # Blue 9 | background-color: '#F7F8F9' # Light grey background 10 | background-color-2: '#F4F5F6' # Light grey background 11 | background-card-color: 'rgba(255,255,255,1.0)' # White background 12 | border-color: '#EAEAEA' # Light grey border 13 | # Header 14 | primary-color: 'var(--text-color)' # Background 15 | text-primary-color: '#FFF' # Text 16 | 17 | # Left Menu 18 | paper-listbox-background-color: 'var(--background-color)' # Background 19 | # UI 20 | paper-card-header-color: 'var(--text-color)' # Title in settings 21 | primary-background-color: 'var(--background-color)' # Background (also title background in left menu) 22 | 23 | # Card 24 | paper-card-background-color: 'var(--background-card-color)' # Background 25 | dark-primary-color: 'var(--text-color)' 26 | primary-text-color: 'var(--text-color)' 27 | paper-listbox-color: 'var(--text-color)' 28 | light-primary-color: 'var(--text-light-color)' 29 | secondary-text-color: 'var(--text-medium-color)' 30 | disabled-text-color: 'var(--text-light-color)' 31 | paper-dialog-button-color: 'var(--text-color)' 32 | secondary-background-color: 'var(--background-color-2)' # Background more info title 33 | # Icons 34 | paper-item-icon-color: 'var(--text-light-color)' # Off 35 | paper-item-icon-active-color: 'var(--accent-color)' # On 36 | 37 | # Switches 38 | paper-toggle-button-checked-button-color: '#FFF' # Knob On 39 | paper-toggle-button-checked-bar-color: '#0077FF' # Background On 40 | paper-toggle-button-unchecked-button-color: '#FFF' # Knob Off 41 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' # Background Off 42 | # Shadows 43 | shadow-elevation-2dp_-_box-shadow: 'inset 0px 0px 0px 1px var(--border-color)' 44 | shadow-elevation-4dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 45 | shadow-elevation-6dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 46 | shadow-elevation-8dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 47 | shadow-elevation-10dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 48 | shadow-elevation-12dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 49 | shadow-elevation-14dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 50 | shadow-elevation-16dp_-_box-shadow: '0px 0px 0px 3px var(--light-color)' -------------------------------------------------------------------------------- /themes/slate.yaml: -------------------------------------------------------------------------------- 1 | slate: 2 | # Main colors 3 | primary-color: '#2980b9' 4 | accent-color: '#b58e31' 5 | dark-primary-color: '#2980b9' 6 | light-primary-color: '#2980b9' 7 | # Text colors 8 | primary-text-color: '#FFFFFF' 9 | text-primary-color: 'var(--primary-text-color)' 10 | secondary-text-color: '#b58e31' 11 | disabled-text-color: '#777777' 12 | label-badge-border-color: 'green' 13 | # Sidebar 14 | sidebar-icon-color: '#777777' 15 | # Background colors 16 | primary-background-color: '#222222' 17 | secondary-background-color: '#222222' 18 | divider-color: 'rgba(0, 0, 0, .12)' 19 | table-row-background-color: '#292929' 20 | table-row-alternative-background-color: '#292929' 21 | # Nav Menu 22 | paper-listbox-color: '#777777' 23 | paper-listbox-background-color: '#141414' 24 | paper-grey-50: 'var(--primary-text-color)' 25 | paper-grey-200: '#222222' 26 | # Paper card 27 | paper-card-header-color: '#2980b9' 28 | paper-card-background-color: '#292929' 29 | paper-dialog-background-color: '#292929' 30 | paper-item-icon-color: 'var(--primary-text-color)' 31 | paper-item-icon-active-color: '#b58e31' 32 | paper-item-icon_-_color: 'green' 33 | paper-item-selected_-_background-color: '#292929' 34 | paper-tabs-selection-bar-color: 'green' 35 | # Labels 36 | label-badge-red: 'var(--primary-color)' 37 | label-badge-text-color: 'var(--primary-text-color)' 38 | label-badge-background-color: '#222222' 39 | # Switches 40 | paper-toggle-button-checked-button-color: '#2980b9' 41 | paper-toggle-button-checked-bar-color: '#2980b9' 42 | paper-toggle-button-checked-ink-color: '#2980b9' 43 | paper-toggle-button-unchecked-button-color: 'var(--disabled-text-color)' 44 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' 45 | paper-toggle-button-unchecked-ink-color: 'var(--disabled-text-color)' 46 | # Sliders 47 | paper-slider-knob-color: '#2980b9' 48 | paper-slider-knob-start-color: '#2980b9' 49 | paper-slider-pin-color: '#2980b9' 50 | paper-slider-active-color: '#2980b9' 51 | paper-slider-container-color: 'linear-gradient(var(--primary-background-color), var(--secondary-background-color)) no-repeat' 52 | paper-slider-secondary-color: 'var(--secondary-background-color)' 53 | paper-slider-disabled-active-color: 'var(--disabled-text-color)' 54 | paper-slider-disabled-secondary-color: 'var(--disabled-text-color)' 55 | # Google colors 56 | google-red-500: '#b58e31' 57 | google-green-500: '#2980b9' 58 | #Changes to fix history/logbook menus 59 | lumo-primary-text-color: '#2980b9' 60 | lumo-secondary-text-color: '#2980b9' 61 | lumo-primary-color: '#2980b9' 62 | #Calendar day numbers 63 | lumo-body-text-color: '#b58e31' 64 | #Calendar/Date-Picker Background 65 | lumo-base-color: '#222222' 66 | #Month/Year header 67 | lumo-header-text-color: 'var(--lumo-body-text-color)' 68 | #DayOfWeek Header 69 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 70 | lumo-shade: '#222222' 71 | lumo-shade-90pct: 'rgba(34, 34, 34, .9)' 72 | lumo-shade-80pct: 'rgba(34, 34, 34, .8)' 73 | lumo-shade-70pct: 'rgba(34, 34, 34, .7)' 74 | lumo-shade-60pct: 'rgba(34, 34, 34, .6)' 75 | lumo-shade-50pct: 'rgba(34, 34, 34, .5)' 76 | lumo-shade-40pct: 'rgba(34, 34, 34, .4)' 77 | lumo-shade-30pct: 'rgba(34, 34, 34, .3)' 78 | lumo-shade-20pct: 'rgba(34, 34, 34, .2)' 79 | lumo-shade-10pct: 'rgba(34, 34, 34, .1)' 80 | lumo-shade-5pct: 'rgba(34, 34, 34, .05)' 81 | lumo-tint-5pct: '#222222' -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/fog.svg: -------------------------------------------------------------------------------- 1 | 2 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | -------------------------------------------------------------------------------- /scripts.yaml: -------------------------------------------------------------------------------- 1 | livingroom_tv_power: 2 | sequence: 3 | - condition: state 4 | entity_id: alarm_control_panel.home_alarm 5 | state: pending 6 | - delay: 00:00:01 7 | - data: {} 8 | entity_id: script.alarm_pending_sound 9 | service: script.turn_on 10 | mode: single 11 | alias: alarm_pending_loop 12 | alarm_pending_sound: 13 | alias: alarm_pending_sound 14 | mode: single 15 | sequence: 16 | - data: 17 | volume_level: 0.1 18 | entity_id: media_player.alarm 19 | service: media_player.volume_set 20 | - data: 21 | media_content_id: http://192.168.1.79:8080/pending-beep.mp3 22 | media_content_type: audio/mp4 23 | entity_id: media_player.alarm 24 | service: media_player.play_media 25 | - delay: 00:00:03 26 | - data: {} 27 | entity_id: script.livingroom_tv_power 28 | service: script.turn_on 29 | alarm_triggered_loop: 30 | alias: alarm_triggered_loop 31 | mode: single 32 | sequence: 33 | - condition: state 34 | entity_id: alarm_control_panel.home_alarm 35 | state: triggered 36 | - delay: 00:00:01 37 | - data: {} 38 | entity_id: script.alarm_triggered_sound 39 | service: script.turn_on 40 | alarm_triggered_sound: 41 | alias: alarm_triggered_sound 42 | mode: single 43 | sequence: 44 | - data: {} 45 | entity_id: media_player.alarm 46 | service: media_player.volume_up 47 | - data: 48 | media_content_id: http://192.168.1.79:8080/purge.m4a 49 | media_content_type: audio/mp4 50 | entity_id: media_player.alarm 51 | service: media_player.play_media 52 | - delay: 00:00:03 53 | - data: {} 54 | entity_id: script.alarm_triggered_loop 55 | service: script.turn_on 56 | increase_brightness: 57 | alias: increase_brightness 58 | sequence: 59 | - service: light.turn_on 60 | data: 61 | entity_id: '{{ group }}' 62 | brightness: "{% set b = state_attr(group, 'brightness') %} {% if b == None %}\n\ 63 | \ 15\n{% elif b < 20 %}\n 128\n{% elif b < 140 %}\n 255\n{% else %}\n \ 64 | \ 15\n{% endif %}\n" 65 | mode: single 66 | '1606902947169': 67 | alias: lights_off_except 68 | icon: mdi:home-lightbulb 69 | fields: 70 | exclude_lights: 71 | description: Excluded lights as list 72 | sequence: 73 | - service: logbook.log 74 | data_template: 75 | entity_id: script.turn_off_lights 76 | name: Exclude log 77 | message: 'Turning of all lights except: {{ exclude_lights }}' 78 | - service: light.turn_off 79 | data_template: 80 | entity_id: '{%- for device in states.light|rejectattr(''entity_id'',''in'', 81 | exclude_lights )|rejectattr(''state'',''in'',''off'') %}{%- if loop.first 82 | %}{%- else %}, {% endif %}{{ device.entity_id }}{%- if loop.last %}{% endif 83 | %}{%- endfor %} 84 | 85 | ' 86 | mode: single 87 | switch_off_except: 88 | alias: switch_off_except 89 | sequence: 90 | - service: logbook.log 91 | data_template: 92 | entity_id: script.turn_off_switch 93 | name: Exclude log 94 | message: 'Turning of all switches except: {{ exclude_switch }}' 95 | - service: switch.turn_off 96 | data_template: 97 | entity_id: '{%- for device in states.switch|rejectattr(''entity_id'',''in'', 98 | exclude_switches )|rejectattr(''state'',''in'',''off'') %}{%- if loop.first 99 | %}{%- else %}, {% endif %}{{ device.entity_id }}{%- if loop.last %}{% endif 100 | %}{%- endfor %} 101 | 102 | ' 103 | icon: mdi:home-lightbulb 104 | fields: 105 | exclude_switches: 106 | description: Excluded switches as list 107 | mode: single 108 | -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | # Patatman HASS Config 🍟 2 | 3 | Basic Home Assistant config, with regular updates 4 | 5 | 6 | 7 | - over 20 different components 8 | - Updated love-lace 9 | - Minimal custom components, so it just works! 10 | - Simple automations 11 | - Tutorials (coming soon!) 12 | 13 | [![Build Status](https://travis-ci.org/patatman/patatman-homeassistant-config.svg?branch=master)](https://travis-ci.org/patatman/patatman-homeassistant-config) 14 | [![GitHub Last Commit](https://img.shields.io/github/last-commit/patatman/patatman-homeassistant-config.svg)](https://img.shields.io/github/last-commit/patatman/patatman-homeassistant-config.svg) 15 | [![HA Version](https://img.shields.io/badge/Home%20Assistant-0.84.6-blue.svg)](https://img.shields.io/badge/Home%20Assistant-0.84.6-blue.svg) 16 | 17 | ## Naming convention 18 | 19 | #### Zigbee naming scheme: 20 | `___` e.g. `livingroom_couch_light_1` or `office_window_sensor` 21 | 22 | It is possible for sensor not having a Number, for instance the Office window only has 1 door/window sensor so naming should be kept short as possible. 23 | 24 | #### Automation naming: 25 | If room specific, lighting for example. 26 | `__` e.g. `kitchen_light_motion-on` or `livingroom_light_button-1` 27 | 28 | If it's a virtual automation, like alarm: 29 | `__` e.g. `alarm_pending_notification` or `telegram_windows-open_notification` 30 | 31 | ## Installation 32 | First clone the repo: 33 | ``` 34 | $ git clone https://github.com/patatman/patatman-homeassistant-config.git 35 | ``` 36 | Next, edit the docker-compose file to match our enviroment. More about docker-compose here: [Docker](https://www.home-assistant.io/docs/installation/docker/) 37 | Then move the `docker-compose.yml` file one folder up. 38 | ``` 39 | $ cp docker-compose.yml ../docker-compose.yml 40 | ``` 41 | This is needed since we're mounting the whole directory as our config. 42 | 43 | If you'd only like to use a certain compenent, just copy the configuration to your own configuration, and create a Frankensteie config (made up of bits and pieces of everyone's configuration) 44 | 45 | ## Docker-compose Usage 46 | 47 | 48 | 49 | I like to use Docker-compose opposed to a long docker run command. Since it gives me more flexibility in restarting home-assistant. It's also easier to maintain, since it's a single file. 50 | Some of the basics commands you might already use with docker: 51 | ### Start the container in the foreground 52 | 53 | ``` 54 | $ docker-compose run 55 | ``` 56 | This runs the container in the foreground, showing all TTY straight into your terminal. Handy for debugging. 57 | To exit, hit `ctrl + c` 58 | 61 | 62 | ### Start the container in the background 63 | 64 | ``` 65 | $ docker-compose run -d 66 | ``` 67 | With the `-d` parameter you send the TTY to the background. This is the recommended way of running Home Assistant, since you can use your terminal. 68 | 69 | ### Restart containers 70 | ``` 71 | $ docker-compose restart 72 | ``` 73 | 74 | ### Show running containers 75 | ``` 76 | $ docker-compose ps 77 | ``` 78 | 79 | ### View logs 80 | 81 | ``` 82 | $ docker-compose logs -f 83 | ``` 84 | This will open the logs, and automatically follow them(showing new entries). 85 | You can also send it without `-f`, this will not follow the logs. 86 | 87 | 88 | 89 | 90 | ## Hardware 91 | To see a full list of Hardware, please see [Components](./components.md) 92 | ### Server 93 | ### Hardware 94 | - Intel core i3-6100 95 | - 16GB Ram 96 | - 256GB SSD 97 | - 4 TB disk 98 | ## Software 99 | - Hyperviser: Proxmox 100 | - VM's: 2 101 | - Docker 102 | - other (influx, grafana etc) 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /groups.yaml: -------------------------------------------------------------------------------- 1 | #default_view: 2 | # view: yes 3 | # icon: mdi:home 4 | # entities: 5 | # - group.kitchen 6 | # - group.livingroom 7 | # - group.upstairs 8 | 9 | livingroom: 10 | name: Livingroom 11 | entities: 12 | - light.kitchen 13 | - group.livingroom_group 14 | upstairs: 15 | name: Upstairs 16 | entities: 17 | - group.bathroom_group 18 | bathroom: 19 | name: bathroom 20 | icon: mdi:shower 21 | entities: 22 | - group.bathroom_group 23 | kitchen: 24 | name: Kitchen 25 | entities: 26 | - light.0x000b57fffee6d100_light 27 | - light.0x90fd9ffffe71aa29_light 28 | 29 | bathroom_group: 30 | name: "Bathroom lights" 31 | entities: 32 | - light.0x90fd9ffffe08e345_light 33 | - light.0x90fd9ffffe6d296e_light 34 | - light.0x000b57fffec2a885_light 35 | livingroom_group: 36 | name: Livingroom_group 37 | entities: 38 | - light.livingroom_couch_light_light 39 | - light.0x90fd9ffffe00ef0c_light 40 | - light.livingroom_diner_table_light_light 41 | - switch.livingroom_window_switch_switch 42 | - switch.fireplace_basic_relay 43 | - light.wled 44 | # - light.livingroom_red_light_light 45 | - switch.sonoff_basic_relay 46 | 47 | motion: 48 | name: motion 49 | entities: 50 | - binary_sensor.door_window_sensor_158d0002133b59 51 | - binary_sensor.door_window_sensor_158d0002254443 52 | - binary_sensor.motion_sensor_158d0001a92381 53 | - binary_sensor.motion_sensor_158d0001e55662 54 | - binary_sensor.motion_sensor_158d0001e56350 55 | - sensor.illumination_158d0001e55662 56 | Climate_temp: 57 | name: "Climate Temperature" 58 | entities: 59 | - sensor.basement_temperature 60 | - sensor.temperature_158d00022c9653 61 | - sensor.temperature_158d00022b6766 62 | - sensor.temperature_158d00022cc752 63 | Climate_hum: 64 | name: "Climate Humidity" 65 | entities: 66 | - sensor.basement_humidity 67 | - sensor.humidity_158d00022c9653 68 | - sensor.humidity_158d00022b6766 69 | - sensor.humidity_158d00022cc752 70 | Weather: 71 | name: Weather 72 | entities: 73 | - sensor.pws_weather 74 | - sensor.pws_alerts 75 | - sensor.pws_feelslike_c 76 | - sensor.pws_temp_c 77 | - sensor.pws_uv 78 | 79 | bedroom_lights: 80 | name: "Bedroom lights" 81 | entities: 82 | - light.0xccccccfffe2c31f7_light 83 | - light.0xccccccfffec13e57_light 84 | office_lights: 85 | name: "Office lights" 86 | entities: 87 | - light.0x90fd9ffffe353e1f_light 88 | - light.0x90fd9ffffe35b677_light 89 | kitchenspots: 90 | name: Kitchenspots 91 | entities: 92 | - light.0x90fd9ffffe71aa29_light 93 | - light.0x000b57fffee6d100_light 94 | 95 | upstairs_spots: 96 | name: upstairspots 97 | entities: 98 | - light.0x90fd9ffffe3490c2_light 99 | - light.0x90fd9ffffe08e2a7_light 100 | 101 | hallway: 102 | name: hallway 103 | entities: 104 | - light.0x000b57fffed62b55_light 105 | - switch.staircase_window_light_relay 106 | - light.0x90fd9ffffe6e9514_light 107 | meter_readings: 108 | name: "Meter readings" 109 | entities: 110 | - sensor.power_consumption_low 111 | - sensor.power_consumption_normal 112 | - sensor.power_production_low 113 | - sensor.power_production_normal 114 | - sensor.gas_consumption 115 | 116 | outside_doors: 117 | name: "outside doors" 118 | entities: 119 | - binary_sensor.back_hallway_outside_door_sensor_contact 120 | - binary_sensor.bedroom_outside_door_sensor_contact 121 | - binary_sensor.garage_garden_door_sensor_contact 122 | - binary_sensor.garage_outside_door_sensor_contact 123 | - binary_sensor.0x00158d0003eef6c2_contact 124 | - binary_sensor.basement_window_sensor_contact 125 | outside_windows: 126 | name: "windows" 127 | entities: 128 | - binary_sensor.livingroom_fireplace_window_sensor_contact 129 | - binary_sensor.bathroom_window_sensor_contact 130 | - binary_sensor.bedroom_window_door_sensor_contact 131 | - binary_sensor.office_window_sensor_contact 132 | - binary_sensor.basement_window_sensor_contact 133 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/cloudy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | -------------------------------------------------------------------------------- /themes/clear2.yaml: -------------------------------------------------------------------------------- 1 | clear2: 2 | # Rounded borders 3 | ha-card-border-radius: '20px' 4 | # Background image 5 | background-image: 'center / cover no-repeat url("/local/day.jpg") fixed' 6 | # Colors 7 | text-color: '#636B75' # Grey text 8 | text-medium-color: '#8c96a5' # Medium grey text 9 | text-light-color: '#8d967f' # Light grey text 10 | accent-color: '#b1ce82' # Blue 11 | background-color: 'rgba(247,248,249,1)' # Light grey background 12 | background-color-2: 'rgba(244,245,246,1)' # Light grey background 13 | background-card-color: 'rgba(255,255,255,0.5)' # White background 14 | border-color: '#EAEAEA' # Light grey border 15 | # Header 16 | primary-color: '#627562' # Background 17 | text-primary-color: '#FFF' # Text 18 | 19 | # Left Menu 20 | paper-listbox-background-color: 'var(--background-color)' # Background 21 | # UI 22 | paper-card-header-color: 'var(--text-color)' # Title in settings 23 | primary-background-color: 'var(--background-color)' # Background (also title background in left menu) 24 | 25 | # Card 26 | paper-card-background-color: 'var(--background-card-color)' # Background 27 | dark-primary-color: 'var(--text-color)' 28 | primary-text-color: 'var(--text-color)' 29 | paper-listbox-color: 'var(--text-color)' 30 | light-primary-color: 'var(--text-light-color)' 31 | secondary-text-color: 'var(--text-medium-color)' 32 | disabled-text-color: 'var(--text-light-color)' 33 | paper-dialog-button-color: 'var(--text-color)' 34 | secondary-background-color: 'var(--background-color-2)' # Background more info title 35 | # Icons 36 | paper-item-icon-color: 'var(--text-light-color)' # Off 37 | paper-item-icon-active-color: 'var(--accent-color)' # On 38 | 39 | # Switches 40 | paper-toggle-button-checked-button-color: '#FFF' # Knob On 41 | paper-toggle-button-checked-bar-color: '#0077FF' # Background On 42 | paper-toggle-button-unchecked-button-color: '#FFF' # Knob Off 43 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' # Background Off 44 | # Shadows 45 | shadow-elevation-2dp_-_box-shadow: 'inset 0px 0px 0px 1px var(--border-color)' 46 | shadow-elevation-4dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 47 | shadow-elevation-6dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 48 | shadow-elevation-8dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 49 | shadow-elevation-10dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 50 | shadow-elevation-12dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 51 | shadow-elevation-14dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 52 | shadow-elevation-16dp_-_box-shadow: '0px 0px 0px 3px var(--light-color)' 53 | 54 | weather-icon-clear-night: url("/hacsfiles/themes/animated-weather-card/icons/clear-night.svg") 55 | weather-icon-cloudy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 56 | weather-icon-fog: url("/hacsfiles/themes/animated-weather-card/icons/fog.svg") 57 | weather-icon-lightning: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 58 | weather-icon-lightning-rainy: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 59 | weather-icon-partlycloudy: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 60 | weather-icon-pouring: url("/hacsfiles/themes/animated-weather-card/icons/pouring.svg") 61 | weather-icon-rainy: url("/hacsfiles/themes/animated-weather-card/icons/rainy.svg") 62 | weather-icon-hail: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 63 | weather-icon-snowy: url("/hacsfiles/themes/animated-weather-card/icons/snowy.svg") 64 | weather-icon-snowy-rainy: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 65 | weather-icon-sunny: url("/hacsfiles/themes/animated-weather-card/icons/sunny.svg") 66 | weather-icon-windy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 67 | weather-icon-windy-variant: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 68 | weather-icon-exceptional: url("/hacsfiles/themes/animated-weather-card/icons/exceptional.svg") 69 | -------------------------------------------------------------------------------- /themes/bluenight.yaml: -------------------------------------------------------------------------------- 1 | BlueNight: 2 | # MyVariables 3 | base-hue: '220' #Controls the base (and accent) color hue (0-360) | 0=Red 60=Yellow 120=Green 180=Cyan 240=Blue 300=Magenta 360=Red 4 | base-sat: '5%' #Controls the saturation of the theme (0%-100%) | 0%=Grey 100%=Full Saturation 5 | # MyVar 6 | huesat: 'var(--base-hue), var(--base-sat),' 7 | # Primary Color 8 | primary-color: '#2581ab' #hsl(var(--huesat) 50%)' #header colors and some text colors 9 | dark-primary-color: 'hsl(var(--huesat) 60%)' 10 | light-primary-color: 'hsl(var(--huesat) 30%)' 11 | accent-color: 'hsl(var(--huesat) 30%)' 12 | medium-grey-color: '#202020' 13 | # Backgrounds 14 | primary-background-color: 'hsl(var(--huesat) 16%)' 15 | secondary-background-color: 'hsl(var(--huesat) 16%)' # background behind cards 16 | paper-listbox-background-color: 'hsl(var(--huesat) 16%)' 17 | paper-card-background-color: 'hsl(var(--huesat) 12%)' 18 | paper-dialog-background-color: 'var(--paper-card-background-color)' 19 | table-row-background-color: 'hsl(var(--huesat) 12%)' 20 | table-row-alternative-background-color: 'hsl(var(--huesat) 10%)' 21 | # Divider 22 | divider-color: 'hsla(0, 0%, 0%, 0)' 23 | dark-divider-opacity: '0' 24 | light-divider-opacity: '0' 25 | dark-secondary-opacity: '1' 26 | # Text colors 27 | primary-text-color: 'hsl(var(--huesat) 90%)' 28 | text-primary-color: 'hsl(var(--huesat) 90%)' 29 | secondary-text-color: 'hsl(var(--huesat) 80%)' 30 | disabled-text-color: 'hsl(var(--huesat) 70%)' 31 | sidebar-text_-_color: 'hsl(var(--huesat) 90%)' 32 | sidebar-text-color: 'hsl(var(--huesat) 90%)' 33 | paper-card-header-color: 'hsl(var(--huesat) 90%)' 34 | paper-button-ink-color: 'hsl(var(--huesat) 50%)' 35 | # Text Adjustments 36 | paper-font-headline_-_letter-spacing: '-0.5px' 37 | paper-font-headline_-_font-weight: '400' 38 | paper-font-body1_-_font-weight: '300' 39 | # Nav Menu 40 | paper-listbox-color: 'hsl(var(--huesat) 50%)' 41 | paper-grey-50: 'hsl(var(--huesat) 50%)' 42 | paper-grey-200: 'hsl(var(--huesat) 10%)' #active menu item 43 | sidebar-icon-color: 'hsl(var(--huesat) 50%)' #iron-icon-fill-color 44 | # Paper card 45 | paper-item-icon-color: 'hsl(var(--huesat) 40%)' 46 | #paper-item-icon-active-color: 'var(--paper-item-icon-color)' 47 | paper-item-icon_-_color: 'var(--paper-item-icon-color)' 48 | paper-item-selected_-_background-color: 'hsla(0, 0%, 0%, 0.2)' 49 | paper-item-selected_-_color: 'hsl(var(--huesat) 20%)' #? 50 | paper-tabs-selection-bar-color: 'hsla(0, 0%, 0%, 0.2)' 51 | paper-tab-ink: 'hsl(var(--huesat) 70%)' 52 | paper-input-container-color: 'hsl(var(--huesat) 60%)' 53 | # Labels 54 | label-badge-red: 'var(--paper-card-background-color)' 55 | label-badge-border-color: 'var(--label-badge-red)' 56 | label-badge-background-color: 'var(--paper-card-background-color)' 57 | label-badge-text-color: 'var(--primary-text-color)' 58 | # Shadows 59 | shadow-elevation-2dp_-_box-shadow: '0px 0px 0px 0px hsl(var(--huesat) 10%)' 60 | shadow-elevation-16dp_-_box-shadow: '0px 0px 0px 0px hsl(var(--huesat) 25%)' 61 | # Switches 62 | paper-toggle-button-checked-button-color: 'hsl(var(--base-hue), 90%, 50%)' 63 | paper-toggle-button-checked-bar-color: 'hsl(var(--huesat) 25%)' 64 | paper-toggle-button-unchecked-button-color: 'hsl(var(--huesat) 25%)' 65 | paper-toggle-button-unchecked-bar-color: 'hsl(var(--huesat) 5%)' 66 | # Sliders 67 | paper-slider-knob-color: 'hsl(var(--base-hue), 90%, 50%)' 68 | paper-slider-knob-start-color: 'hsl(var(--base-hue), 80%, 25%)' 69 | paper-slider-pin-color: 'hsl(var(--base-hue), 90%, 50%)' 70 | paper-slider-active-color: 'hsl(var(--base-hue), 90%, 50%)' 71 | paper-slider-container-color: 'hsl(var(--huesat) 28%)' 72 | paper-slider-secondary-color: 'hsl(var(--huesat) 90%)' 73 | paper-slider-disabled-active-color: 'hsl(var(--base-hue), 80%, 25%)' 74 | paper-slider-disabled-secondary-color: 'hsl(var(--base-hue), 80%, 25%)' 75 | paper-dialog-color: 'hsl(var(--base-hue), 20%, 80%)' 76 | 77 | #Changes to fix history/logbook menus 78 | lumo-primary-text-color: 'var(--primary-color)' 79 | lumo-secondary-text-color: 'var(--primary-color)' 80 | lumo-primary-color: 'var(--primary-color)' 81 | lumo-primary-color-50pct: 'rgba(37,129,172, .5)' 82 | lumo-primary-color-10pct: 'rgba(37,129,172, .1)' 83 | #Calendar day numbers 84 | lumo-body-text-color: 'var(--primary-text-color)' 85 | #Calendar/Date-Picker Background 86 | lumo-base-color: 'var(--medium-grey-color)' 87 | #Month/Year header 88 | lumo-header-text-color: 'var(--lumo-body-text-color)' 89 | #DayOfWeek Header 90 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 91 | # Background of date in History/Logbook that you clcim to view date-picker 92 | lumo-shade: 'var(--medium-grey-color)' 93 | lumo-shade-90pct: 'rgba(41, 41, 41, .9)' 94 | lumo-shade-80pct: 'rgba(41, 41, 41, .8)' 95 | lumo-shade-70pct: 'rgba(41, 41, 41, .7)' 96 | lumo-shade-60pct: 'rgba(41, 41, 41, .6)' 97 | lumo-shade-50pct: 'rgba(41, 41, 41, .5)' 98 | lumo-shade-40pct: 'rgba(41, 41, 41, .4)' 99 | lumo-shade-30pct: 'rgba(41, 41, 41, .3)' 100 | lumo-shade-20pct: 'rgba(41, 41, 41, .2)' 101 | lumo-shade-10pct: 'rgba(41, 41, 41, .1)' 102 | lumo-shade-5pct: 'rgba(41, 41, 41, .05)' 103 | #Removes Gradient in Calendar/Date-Picker and Drop-down lists 104 | lumo-tint-5pct: 'var(--darker-grey-color)' -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/sunny.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 125 | 126 | 127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | -------------------------------------------------------------------------------- /themes/dark.yaml: -------------------------------------------------------------------------------- 1 | dark: 2 | # Background image 3 | lovelace-background: 'center / cover no-repeat url("/local/night.jpg") fixed' 4 | 5 | # Colors 6 | text-color: '#DADADB' # Grey text 7 | text-medium-light-color: '#A0A2A8' # Medium-light grey text 8 | text-medium-color: '#80828A' # Medium grey text 9 | text-dark-color: '#6A6B74' # Dark grey text 10 | accent-color: '#008bef' # Blue 11 | accent-medium-color: '#2484C9' # Decent blue 12 | background-color: '#3b4049' # Dark grey background 13 | background-color-2: '#484E59' # Light grey background 14 | background-card-color: '#434952' # Grey background 15 | border-color: '#383C46' # Grey border 16 | 17 | # Header 18 | app-header-background-color: '#363941' # Background color 19 | 20 | # Text 21 | primary-color: 'var(--text-color)' 22 | text-primary-color: 'var(--text-color)' 23 | 24 | # Left Menu 25 | paper-listbox-background-color: 'var(--background-color)' # Background 26 | sidebar-icon-color: 'var(--text-medium-color)' # icons 27 | sidebar-selected-icon-color: 'var(--text-medium-light-color)' # Selected row icon and background (15%) 28 | sidebar-selected-text-color: 'var(--text-color)' # Selected row label 29 | 30 | # UI 31 | paper-card-header-color: 'var(--text-color)' # Title in settings 32 | primary-background-color: 'var(--background-color)' # Background (also title background in left menu) 33 | mdc-theme-primary: 'var(--accent-medium-color)' # Action Buttons (save, restart etc.) 34 | card-background-color: 'var(--background-card-color)' # Entity Registry Background 35 | 36 | # Card 37 | paper-card-background-color: 'var(--background-card-color)' # Background 38 | dark-primary-color: 'var(--text-color)' 39 | primary-text-color: 'var(--text-color)' 40 | paper-listbox-color: 'var(--text-color)' 41 | light-primary-color: 'var(--text-dark-color)' 42 | secondary-text-color: 'var(--text-medium-color)' 43 | disabled-text-color: 'var(--text-dark-color)' 44 | paper-dialog-button-color: 'var(--text-color)' 45 | secondary-background-color: 'var(--background-color-2)' # Background more info title 46 | 47 | # Icons 48 | paper-item-icon-color: 'var(--text-dark-color)' # Off 49 | paper-item-icon-active-color: 'var(--accent-color)' # On 50 | 51 | # Switches 52 | switch-checked-button-color: 'var(--text-medium-light-color)' # Knob On 53 | switch-unchecked-button-color: 'var(--text-medium-light-color)' # Knob Off 54 | switch-checked-track-color: '#009FFF' # Background On 55 | switch-unchecked-track-color: '#767682' # Background Off 56 | 57 | # Slider 58 | paper-slider-active-color: 'var(--accent-color)' # Line On 59 | paper-slider-knob-color: 'var(--text-medium-light-color)' # Knob On 60 | paper-slider-container-color: 'var(--text-dark-color)' # Line Off 61 | paper-slider-knob-start-color: 'var(--text-medium-light-color)' # Knob Off 62 | 63 | # Badges 64 | label-badge-text-color: 'var(--text-color)' 65 | label-badge-background-color: 'rgba(54, 57, 65, 0.6)' 66 | 67 | # Shadows 68 | ha-card-box-shadow: 'inset 0px 0px 0px 1px var(--border-color)' 69 | 70 | # HACS 71 | hacs-badge-color: 'var(--accent-color)' # New Badge 72 | hacs-status-installed: 'var(--text-color)' # Installed Icon 73 | hacs-status-pending-restart: 'var(--text-dark-color)' # Restart Icon 74 | hacs-status-pending-update: 'var(--accent-color)' 75 | # Animated weather icons 76 | weather-icon-clear-night: url("/hacsfiles/themes/animated-weather-card/icons/clear-night.svg") 77 | weather-icon-cloudy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 78 | weather-icon-fog: url("/hacsfiles/themes/animated-weather-card/icons/fog.svg") 79 | weather-icon-lightning: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 80 | weather-icon-lightning-rainy: url("/hacsfiles/themes/animated-weather-card/icons/lightning.svg") 81 | weather-icon-partlycloudy: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 82 | weather-icon-pouring: url("/hacsfiles/themes/animated-weather-card/icons/pouring.svg") 83 | weather-icon-rainy: url("/hacsfiles/themes/animated-weather-card/icons/rainy.svg") 84 | weather-icon-hail: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 85 | weather-icon-snowy: url("/hacsfiles/themes/animated-weather-card/icons/snowy.svg") 86 | weather-icon-snowy-rainy: url("/hacsfiles/themes/animated-weather-card/icons/hail.svg") 87 | weather-icon-sunny: url("/hacsfiles/themes/animated-weather-card/icons/sunny.svg") 88 | weather-icon-windy: url("/hacsfiles/themes/animated-weather-card/icons/cloudy.svg") 89 | weather-icon-windy-variant: url("/hacsfiles/themes/animated-weather-card/icons/partlycloudy.svg") 90 | weather-icon-exceptional: url("/hacsfiles/themes/animated-weather-card/icons/exceptional.svg") 91 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/lightning.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/partlycloudy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | -------------------------------------------------------------------------------- /configuration.yaml: -------------------------------------------------------------------------------- 1 | homeassistant: 2 | latitude: !secret lat 3 | longitude: !secret long 4 | elevation: 430 5 | packages: !include_dir_named packages 6 | unit_system: metric 7 | time_zone: Europe/Amsterdam 8 | customize: !include customize.yaml 9 | auth_providers: 10 | - type: homeassistant 11 | allowlist_external_dirs: 12 | - /config/video 13 | 14 | default_config: 15 | 16 | recorder: 17 | db_url: !secret database 18 | purge_keep_days: 7 19 | 20 | history: 21 | exclude: 22 | domains: 23 | - automation 24 | - weblink 25 | 26 | stream: 27 | system_health: 28 | 29 | zone: 30 | - name: Home 31 | latitude: !secret lat 32 | longitude: !secret long 33 | radius: 27 34 | icon: mdi:home 35 | frontend: 36 | themes: !include_dir_merge_named themes 37 | 38 | discovery: 39 | 40 | notify: 41 | - name: telegram_bot 42 | platform: telegram 43 | chat_id: !secret telegram_chat_id 44 | 45 | telegram_bot: 46 | - platform: polling 47 | api_key: !secret telegram_key 48 | allowed_chat_ids: 49 | - !secret telegram_id 50 | - !secret telegram_group_id 51 | 52 | scene: !include scenes.yaml 53 | 54 | wake_on_lan: 55 | 56 | rest_command: !include includes/rest_command.yaml 57 | 58 | sun: 59 | logbook: 60 | influxdb: 61 | host: 192.168.1.80 62 | 63 | #nest: 64 | # client_id: !secret nest_id 65 | # client_secret: !secret nest_secret 66 | 67 | evohome: 68 | username: !secret honeywell_user 69 | password: !secret honeywell_pass 70 | scan_interval: 600 71 | 72 | #rflink: 73 | # port: /dev/ttyUSB0 74 | 75 | map: 76 | 77 | tts: 78 | - platform: google_translate 79 | service_name: google_say 80 | base_url: http://192.168.1.79:8123 81 | - platform: microsoft 82 | api_key: !secret azure_tts_api 83 | region: westeurope 84 | language: nl-nl 85 | type: ColetteNeural 86 | 87 | vacuum: 88 | - platform: xiaomi_miio 89 | name: miep 90 | host: 192.168.1.34 91 | token: !secret miiotoken 92 | 93 | octoprint: 94 | host: 192.168.1.132 95 | port: 5000 96 | api_key: !secret octo-api 97 | 98 | ffmpeg: 99 | lovelace: 100 | 101 | input_select: 102 | sean_room_location: 103 | name: Pim's Room Location 104 | options: 105 | - Bathroom 106 | - Office 107 | - Away 108 | - Home 109 | 110 | input_number: 111 | stepper_control: 112 | name: Stepper Control 113 | initial: 0 114 | min: -1000 115 | max: 1000 116 | step: 1 117 | mode: slider 118 | falcon_animation_speed: 119 | name: Falcon Animation Speed 120 | initial: 150 121 | min: 1 122 | max: 150 123 | step: 10 124 | 125 | 126 | kossel_animation_speed: 127 | name: Kossel Animation Speed 128 | initial: 150 129 | min: 1 130 | max: 150 131 | step: 10 132 | 133 | webostv: 134 | host: 192.168.1.33 135 | name: LG livingroom 136 | 137 | cover: !include_dir_merge_list covers 138 | 139 | camera: !include_dir_merge_list camera 140 | 141 | image_processing: 142 | - platform: tensorflow 143 | scan_interval: 10000 144 | source: 145 | # - entity_id: camera.voordeur 146 | - entity_id: camera.zijdeur 147 | file_out: 148 | - "/config/video/{{ camera_entity.split('.')[1] }}_latest.jpg" 149 | # - "/config/video/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg" 150 | model: 151 | graph: "/config/tensorflow/models/efficientdet_d0_coco17_tpu-32/" 152 | # categories: 153 | # - person 154 | # - cat 155 | # - car 156 | # - dog 157 | - platform: tensorflow 158 | scan_interval: 10000 159 | source: 160 | # - entity_id: camera.voordeur 161 | - entity_id: camera.schuur 162 | file_out: 163 | - "/config/video/{{ camera_entity.split('.')[1] }}_latest.jpg" 164 | # - "/config/video/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg" 165 | model: 166 | graph: "/config/tensorflow/models/efficientdet_d0_coco17_tpu-32/" 167 | # categories: 168 | # - person 169 | # - cat 170 | # - car 171 | # - dog 172 | area: 173 | top: 0.1 174 | - platform: tensorflow 175 | scan_interval: 10000 176 | source: 177 | - entity_id: camera.voordeur 178 | file_out: 179 | - "/config/video/{{ camera_entity.split('.')[1] }}_latest.jpg" 180 | # - "/config/video/{{ camera_entity.split('.')[1] }}_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg" 181 | model: 182 | graph: "/config/tensorflow/models/efficientdet_d0_coco17_tpu-32/" 183 | # categories: 184 | # - person 185 | # - cat 186 | # - car 187 | # - dog 188 | area: 189 | top: 0.4 190 | 191 | surepetcare: 192 | username: !secret surepet_user 193 | password: !secret surepet_pass 194 | # household_id: !secret surepet_household 195 | flaps: [209692] 196 | pets: [52825] 197 | 198 | binary_sensor: 199 | - platform: stookalert 200 | province: Gelderland 201 | 202 | # One entry per sensor node to understand when the device is online/offline and see device metadata such as IP address and settings values 203 | - platform: mqtt 204 | name: ESP32 A 205 | state_topic: "presence_nodes/esp32_office_room_presence" 206 | json_attributes_topic: "presence_nodes/esp32_office_room_presence/tele" 207 | payload_on: "CONNECTED" 208 | payload_off: "DISCONNECTED" 209 | device_class: connectivity 210 | 211 | tesla: 212 | username: !secret tesla_username 213 | password: !secret tesla_password 214 | 215 | light: !include_dir_merge_list lights 216 | 217 | sensor: !include_dir_merge_list sensors 218 | 219 | input_boolean: 220 | bedtime: 221 | name: it's bedtime 222 | initial: off 223 | icon: mdi:bed 224 | pim_present: 225 | name: Pim Presence 226 | initial: on 227 | 228 | spotify: 229 | client_id: !secret spotify_id 230 | client_secret: !secret spotify_secret 231 | 232 | weather: 233 | # - platform: openweathermap 234 | #api_key: !secret openweather 235 | #mode: freedaily 236 | 237 | alarm_control_panel: 238 | - platform: manual_mqtt 239 | state_topic: !secret alarm_state 240 | command_topic: !secret alarm_command 241 | name: Home Alarm 242 | code: !secret alarm_pin 243 | pending_time: 20 244 | delay_time: 20 245 | trigger_time: 120 246 | disarmed: 247 | trigger_time: 0 248 | armed_home: 249 | pending_time: 0 250 | delay_time: 0 251 | 252 | #logger: 253 | # default: error 254 | # logs: 255 | # homeassistant.components.image_processing: debug 256 | 257 | group: !include groups.yaml 258 | automation: !include automations.yaml 259 | 260 | script: !include scripts.yaml 261 | -------------------------------------------------------------------------------- /ui-lovelace.yaml: -------------------------------------------------------------------------------- 1 | resources: 2 | - type: js 3 | url: /local/monster-card.js 4 | - type: module 5 | url: /local/mini-media-player-bundle.js?v=0.9.5 6 | title: Home 7 | views: 8 | - cards: 9 | - card: 10 | title: Motion Detected 11 | type: entities 12 | entities: 13 | - entity: binary_sensor.door_window_sensor_158d0002133b59 14 | - entity: binary_sensor.front_door_camera_online 15 | - entity: binary_sensor.motion_sensor_158d0001a92381 16 | - entity: binary_sensor.motion_sensor_158d0001e55662 17 | - entity: binary_sensor.octoprint_printing 18 | filter: 19 | include: 20 | - domain: binary_sensor 21 | state: 'on' 22 | show_empty: true 23 | type: 'custom:monster-card' 24 | - card: 25 | title: Lights On 26 | type: entities 27 | entities: 28 | - entity: light.hallway_3 29 | - entity: light.kitchen1 30 | - entity: light.kitchen2 31 | - entity: light.rode_lamp 32 | - entity: light.tradfri_bulb_e27_w_opal_1000lm_2 33 | - entity: light.tradfri_bulb_gu10_w_400lm_11 34 | - entity: light.tradfri_bulb_gu10_w_400lm_12 35 | filter: 36 | include: 37 | - domain: light 38 | state: 'on' 39 | show_empty: true 40 | type: 'custom:monster-card' 41 | - card: 42 | title: Currently playing 43 | type: entities 44 | entities: 45 | - entity: media_player.livingroom_ 46 | filter: 47 | exclude: 48 | - entity_id: media_player.spotify 49 | include: 50 | - domain: media_player 51 | state: playing 52 | show_empty: true 53 | type: 'custom:monster-card' 54 | show_header_toggle: false 55 | - card: 56 | title: Climate 57 | type: entities 58 | entities: 59 | - entity: climate.kleine_kamer 60 | - entity: climate.slaapkamer 61 | - entity: climate.voorkamer 62 | - entity: climate.woonkamer 63 | filter: 64 | include: 65 | - domain: climate 66 | type: 'custom:monster-card' 67 | - cards: 68 | - entity: camera.voordeur 69 | show_name: false 70 | show_state: false 71 | type: picture-entity 72 | - entity: camera.zijdeur 73 | show_name: false 74 | show_state: false 75 | type: picture-entity 76 | - entity: camera.front_door 77 | show_name: false 78 | show_state: false 79 | type: picture-entity 80 | type: vertical-stack 81 | - entities: 82 | - entity: media_player.bedroom_speaker 83 | group: true 84 | type: 'custom:mini-media-player' 85 | - entity: media_player.living_room_speaker 86 | group: true 87 | type: 'custom:mini-media-player' 88 | - entity: media_player.old_speaker 89 | group: true 90 | type: 'custom:mini-media-player' 91 | - entity: media_player.upstairs_speaker 92 | group: true 93 | type: 'custom:mini-media-player' 94 | - entity: media_player.googlehomehub2919 95 | group: true 96 | title: Media Players 97 | type: entities 98 | - entities: 99 | - artwork: cover 100 | entity: media_player.livingroom_ 101 | group: true 102 | type: 'custom:mini-media-player' 103 | - artwork: cover 104 | entity: media_player.party 105 | group: true 106 | power_color: true 107 | type: 'custom:mini-media-player' 108 | - artwork: cover 109 | entity: media_player.upstairs 110 | group: true 111 | type: 'custom:mini-media-player' 112 | title: Media Player Groups 113 | type: entities 114 | - artwork: cover 115 | entity: media_player.spotify 116 | media_buttons: 117 | - name: Easy on Sunday 118 | type: playlist 119 | url: 'spotify:user:spotify:playlist:37i9dQZF1DWZpGSuzrdTXg' 120 | - name: Joost New Releases 121 | type: playlist 122 | url: 'spotify:user:foost:playlist:7JLymXyQVjbeupuaapu95L' 123 | - name: De Yaylist 124 | type: playlist 125 | url: 'spotify:user:faberyayo:playlist:4I0NnAhaMaPcynq0xbLdyL' 126 | name: Spotify player 127 | show_source: full 128 | type: 'custom:mini-media-player' 129 | title: Home 130 | - cards: 131 | - entities: 132 | - sensor.octoprint_actual_bed_temp 133 | - sensor.octoprint_actual_tool0_temp 134 | - sensor.octoprint_current_state 135 | - sensor.octoprint_job_percentage 136 | - sensor.octoprint_target_bed_temp 137 | - sensor.octoprint_target_tool0_temp 138 | - sensor.octoprint_time_elapsed_format 139 | - sensor.octoprint_time_remaining_format 140 | type: entities 141 | - entity: camera.ffmpeg 142 | show_name: false 143 | show_state: false 144 | type: picture-entity 145 | - entities: [] 146 | show_header_toggle: true 147 | title: 3d printer light 148 | type: entities 149 | icon: 'mdi:printer-3d' 150 | title: 3d printer 151 | - cards: 152 | - type: entities 153 | entities: 154 | - entity: light.tradfri_bulb_e27_w_opal_1000lm_2 155 | - entity: light.window_light 156 | - entity: light.rode_lamp 157 | show_header_toggle: true 158 | title: Livingroom_group 159 | - type: entities 160 | entities: 161 | - entity: cover.livingroom_roller 162 | title: Blinds 163 | title: Livingroom 164 | - badges: [] 165 | cards: 166 | - entities: 167 | - entity: light.bathroom1 168 | - entity: light.bathroom2 169 | - entity: light.bathroom3 170 | show_header_toggle: true 171 | title: Bathroom lights 172 | type: entities 173 | icon: '' 174 | title: Bathroom 175 | - cards: 176 | - entities: 177 | - entity: light.kitchen1 178 | - entity: light.kitchen2 179 | - entity: light.kitchen_ledstrip 180 | show_header_toggle: true 181 | title: Kitchen 182 | type: entities 183 | title: Kitchen 184 | - cards: 185 | - type: entities 186 | entities: 187 | - entity: cover.office_roller 188 | title: Blinds 189 | show_header_toggle: false 190 | - type: entities 191 | entities: 192 | - entity: light.falcon_light 193 | - entity: light.officeleft 194 | - entity: light.officeright 195 | badges: [] 196 | title: Office 197 | icon: '' 198 | -------------------------------------------------------------------------------- /themes.yaml: -------------------------------------------------------------------------------- 1 | slate: 2 | # Rounded borders 3 | ha-card-border-radius: '20px' 4 | # Background image 5 | background-image: 'center / cover no-repeat url("/local/night.jpg") fixed' 6 | # Main colors 7 | primary-color: '#2980b9' 8 | accent-color: '#b58e31' 9 | dark-primary-color: '#2980b9' 10 | light-primary-color: '#2980b9' 11 | # Text colors 12 | primary-text-color: '#FFFFFF' 13 | text-primary-color: 'var(--primary-text-color)' 14 | secondary-text-color: '#b58e31' 15 | disabled-text-color: '#777777' 16 | label-badge-border-color: 'green' 17 | # Sidebar 18 | sidebar-icon-color: '#777777' 19 | # Background colors 20 | primary-background-color: '#222222' 21 | secondary-background-color: '#222222' 22 | divider-color: 'rgba(0, 0, 0, .12)' 23 | table-row-background-color: '#292929' 24 | table-row-alternative-background-color: '#292929' 25 | # Nav Menu 26 | paper-listbox-color: '#777777' 27 | paper-listbox-background-color: '#141414' 28 | paper-grey-50: 'var(--primary-text-color)' 29 | paper-grey-200: '#222222' 30 | # Paper card 31 | paper-card-header-color: '#2980b9' 32 | paper-card-background-color: '#292929' 33 | paper-dialog-background-color: '#292929' 34 | paper-item-icon-color: 'var(--primary-text-color)' 35 | paper-item-icon-active-color: '#b58e31' 36 | paper-item-icon_-_color: 'green' 37 | paper-item-selected_-_background-color: '#292929' 38 | paper-tabs-selection-bar-color: 'green' 39 | # Labels 40 | label-badge-red: 'var(--primary-color)' 41 | label-badge-text-color: 'var(--primary-text-color)' 42 | label-badge-background-color: '#222222' 43 | # Switches 44 | paper-toggle-button-checked-button-color: '#2980b9' 45 | paper-toggle-button-checked-bar-color: '#2980b9' 46 | paper-toggle-button-checked-ink-color: '#2980b9' 47 | paper-toggle-button-unchecked-button-color: 'var(--disabled-text-color)' 48 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' 49 | paper-toggle-button-unchecked-ink-color: 'var(--disabled-text-color)' 50 | # Sliders 51 | paper-slider-knob-color: '#2980b9' 52 | paper-slider-knob-start-color: '#2980b9' 53 | paper-slider-pin-color: '#2980b9' 54 | paper-slider-active-color: '#2980b9' 55 | paper-slider-container-color: 'linear-gradient(var(--primary-background-color), var(--secondary-background-color)) no-repeat' 56 | paper-slider-secondary-color: 'var(--secondary-background-color)' 57 | paper-slider-disabled-active-color: 'var(--disabled-text-color)' 58 | paper-slider-disabled-secondary-color: 'var(--disabled-text-color)' 59 | # Google colors 60 | google-red-500: '#b58e31' 61 | google-green-500: '#2980b9' 62 | #Changes to fix history/logbook menus 63 | lumo-primary-text-color: '#2980b9' 64 | lumo-secondary-text-color: '#2980b9' 65 | lumo-primary-color: '#2980b9' 66 | #Calendar day numbers 67 | lumo-body-text-color: '#b58e31' 68 | #Calendar/Date-Picker Background 69 | lumo-base-color: '#222222' 70 | #Month/Year header 71 | lumo-header-text-color: 'var(--lumo-body-text-color)' 72 | #DayOfWeek Header 73 | lumo-tertiary-text-color: 'var(--lumo-body-text-color)' 74 | lumo-shade: '#222222' 75 | lumo-shade-90pct: 'rgba(34, 34, 34, .9)' 76 | lumo-shade-80pct: 'rgba(34, 34, 34, .8)' 77 | lumo-shade-70pct: 'rgba(34, 34, 34, .7)' 78 | lumo-shade-60pct: 'rgba(34, 34, 34, .6)' 79 | lumo-shade-50pct: 'rgba(34, 34, 34, .5)' 80 | lumo-shade-40pct: 'rgba(34, 34, 34, .4)' 81 | lumo-shade-30pct: 'rgba(34, 34, 34, .3)' 82 | lumo-shade-20pct: 'rgba(34, 34, 34, .2)' 83 | lumo-shade-10pct: 'rgba(34, 34, 34, .1)' 84 | lumo-shade-5pct: 'rgba(34, 34, 34, .05)' 85 | lumo-tint-5pct: '#222222' 86 | 87 | rounded: 88 | # Rounded borders 89 | ha-card-border-radius: '20px' 90 | # Background image 91 | background-image: 'center / cover no-repeat url("/local/day.jpg") fixed' 92 | background-card-color: 'rgba(255,255,255,0.3)' 93 | paper-card-background-color: 'var(--background-card-color)' 94 | 95 | clear: 96 | # Rounded borders 97 | ha-card-border-radius: '20px' 98 | # Background image 99 | background-image: 'center / cover no-repeat url("/local/day.jpg") fixed' 100 | # Colors 101 | text-color: '#636B75' # Grey text 102 | text-medium-color: '#8c96a5' # Medium grey text 103 | text-light-color: '#8d967f' # Light grey text 104 | accent-color: '#b1ce82' # Blue 105 | background-color: 'rgba(247,248,249,1)' # Light grey background 106 | background-color-2: 'rgba(244,245,246,1)' # Light grey background 107 | background-card-color: 'rgba(255,255,255,0.5)' # White background 108 | border-color: '#EAEAEA' # Light grey border 109 | # Header 110 | primary-color: '#627562' # Background 111 | text-primary-color: '#FFF' # Text 112 | 113 | # Left Menu 114 | paper-listbox-background-color: 'var(--background-color)' # Background 115 | # UI 116 | paper-card-header-color: 'var(--text-color)' # Title in settings 117 | primary-background-color: 'var(--background-color)' # Background (also title background in left menu) 118 | 119 | # Card 120 | paper-card-background-color: 'var(--background-card-color)' # Background 121 | dark-primary-color: 'var(--text-color)' 122 | primary-text-color: 'var(--text-color)' 123 | paper-listbox-color: 'var(--text-color)' 124 | light-primary-color: 'var(--text-light-color)' 125 | secondary-text-color: 'var(--text-medium-color)' 126 | disabled-text-color: 'var(--text-light-color)' 127 | paper-dialog-button-color: 'var(--text-color)' 128 | secondary-background-color: 'var(--background-color-2)' # Background more info title 129 | # Icons 130 | paper-item-icon-color: 'var(--text-light-color)' # Off 131 | paper-item-icon-active-color: 'var(--accent-color)' # On 132 | 133 | # Switches 134 | paper-toggle-button-checked-button-color: '#FFF' # Knob On 135 | paper-toggle-button-checked-bar-color: '#0077FF' # Background On 136 | paper-toggle-button-unchecked-button-color: '#FFF' # Knob Off 137 | paper-toggle-button-unchecked-bar-color: 'var(--disabled-text-color)' # Background Off 138 | # Shadows 139 | shadow-elevation-2dp_-_box-shadow: 'inset 0px 0px 0px 1px var(--border-color)' 140 | shadow-elevation-4dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 141 | shadow-elevation-6dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 142 | shadow-elevation-8dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 143 | shadow-elevation-10dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 144 | shadow-elevation-12dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 145 | shadow-elevation-14dp_-_box-shadow: 'var(--shadow-elevation-2dp_-_box-shadow)' 146 | shadow-elevation-16dp_-_box-shadow: '0px 0px 0px 3px var(--light-color)' 147 | -------------------------------------------------------------------------------- /themes/animated-weather-card/icons/snowy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | 193 | 194 | 195 | 196 | 197 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /automations/automations.yaml: -------------------------------------------------------------------------------- 1 | - alias: Falcon Animation Speed 2 | initial_state: true 3 | hide_entity: false 4 | trigger: 5 | - platform: state 6 | entity_id: input_slider.falcon_animation_speed 7 | action: 8 | - service: mqtt.publish 9 | data_template: 10 | topic: light/falcon/set 11 | payload: '{"transition":{{ trigger.to_state.state | int }}}' 12 | id: ea5948cf7c4e44c0a5399d18f84421cf 13 | - id: '1519381563349' 14 | alias: Doorbell(Nighttime) 15 | trigger: 16 | - entity_id: binary_sensor.door_window_sensor_158d0002254184 17 | from: 'on' 18 | platform: state 19 | to: 'off' 20 | condition: 21 | - condition: state 22 | entity_id: sun.sun 23 | state: below_horizon 24 | action: 25 | - data: 26 | gw_mac: 78:11:DC:B2:77:10 27 | ringtone_id: '10' 28 | service: xiaomi_aqara.play_ringtone 29 | - data: 30 | message: Er staat iemand voor de deur 31 | title: Deurbel 32 | service: notify.ios_iphone_pim 33 | - data: 34 | message: Er staat iemand voor de deur 35 | title: Deurbel 36 | service: notify.pushbullet_2 37 | - data: 38 | entity_id: media_player.googlehome0631 39 | media_content_id: http://www.orangefreesounds.com/wp-content/uploads/2017/07/Ding-dong-chime.mp3 40 | media_content_type: music 41 | service: media_player.play_media 42 | - id: '1519385245869' 43 | alias: Doorbell(Daytime) 44 | trigger: 45 | - entity_id: binary_sensor.door_window_sensor_158d0002254184 46 | from: 'on' 47 | platform: state 48 | to: 'off' 49 | condition: 50 | - condition: state 51 | entity_id: sun.sun 52 | state: above_horizon 53 | action: 54 | - data: 55 | message: Er staat iemand voor de deur 56 | title: Deurbel 57 | service: notify.ios_iphone_pim 58 | - id: '1519398438205' 59 | alias: Old speaker lower volume 60 | trigger: 61 | - event_data: 62 | click_type: single 63 | event_id: binary_sensor.switch_158d000210ec53 64 | event_type: click 65 | platform: event 66 | condition: [] 67 | action: 68 | - data: 69 | entity_id: media_player.old_speaker 70 | service: media_player.volume_down 71 | - action: 72 | - data: 73 | entity_id: media_player.old_speaker 74 | service: media_player.volume_up 75 | alias: Old speaker Higher volume 76 | condition: [] 77 | id: '1519747883360' 78 | trigger: 79 | - event_data: 80 | click_type: double 81 | event_id: binary_sensor.switch_158d000210ec53 82 | event_type: click 83 | platform: event 84 | - id: '1519760782392' 85 | alias: Hallway motion 86 | trigger: 87 | - entity_id: binary_sensor.motion_sensor_158d0001a92381 88 | from: 'off' 89 | platform: state 90 | to: 'on' 91 | condition: 92 | - condition: state 93 | entity_id: sun.sun 94 | state: below_horizon 95 | action: 96 | - data: 97 | entity_id: group.hallway 98 | service: light.turn_on 99 | - action: 100 | - data: 101 | entity_id: group.hallway 102 | service: light.turn_off 103 | alias: Hallway no motion 104 | condition: 105 | - condition: state 106 | entity_id: sun.sun 107 | state: below_horizon 108 | id: '1519760817306' 109 | trigger: 110 | - entity_id: binary_sensor.motion_sensor_158d0001a92381 111 | from: 'on' 112 | platform: state 113 | to: 'off' 114 | - action: 115 | - data: 116 | entity_id: group.livingroom 117 | service: light.turn_on 118 | alias: Hallway Morning 119 | condition: 120 | - condition: state 121 | entity_id: sun.sun 122 | state: below_horizon 123 | - after: '6:00' 124 | before: '8:00' 125 | condition: time 126 | id: '1520200724100' 127 | trigger: 128 | - entity_id: binary_sensor.motion_sensor_158d0001a92381 129 | from: 'off' 130 | platform: state 131 | to: 'on' 132 | - action: 133 | - data: 134 | entity_id: light.frondoor 135 | service: light.turn_on 136 | alias: Frontdoor 137 | condition: [] 138 | trigger: 139 | - entity_id: sun.sun 140 | from: above_horizon 141 | platform: state 142 | to: below_horizon 143 | id: '15202007345100' 144 | - action: 145 | - data: 146 | entity_id: light.sonoff_basement 147 | service: light.turn_on 148 | alias: Basement light on 149 | condition: [] 150 | id: '1520251495193' 151 | trigger: 152 | - entity_id: binary_sensor.door_window_sensor_158d0002254443 153 | from: 'off' 154 | platform: state 155 | to: 'on' 156 | - action: 157 | - data: 158 | entity_id: light.sonoff_basement 159 | service: light.turn_off 160 | alias: Basement light off 161 | condition: [] 162 | id: '1520251539017' 163 | trigger: 164 | - entity_id: binary_sensor.door_window_sensor_158d0002254443 165 | from: 'on' 166 | platform: state 167 | to: 'off' 168 | - action: 169 | - data: 170 | entity_id: group.kitchenspots 171 | service: light.turn_on 172 | alias: Kitchen motion 173 | condition: 174 | - condition: state 175 | entity_id: sun.sun 176 | state: below_horizon 177 | id: '1528109786675' 178 | trigger: 179 | - entity_id: binary_sensor.motion_sensor_158d0001e55662 180 | from: 'off' 181 | platform: state 182 | to: 'on' 183 | - action: 184 | - data: 185 | entity_id: group.kitchenspots 186 | service: light.turn_off 187 | alias: Kitchen no_motion 188 | condition: 189 | - condition: state 190 | entity_id: sun.sun 191 | state: below_horizon 192 | id: '1528109853713' 193 | trigger: 194 | - entity_id: binary_sensor.motion_sensor_158d0001e55662 195 | from: 'on' 196 | platform: state 197 | to: 'off' 198 | - id: '1528823416468' 199 | alias: Upstairs Motion 200 | trigger: 201 | - entity_id: binary_sensor.motion_sensor_158d0001e56350 202 | from: 'off' 203 | platform: state 204 | to: 'on' 205 | condition: 206 | - condition: state 207 | entity_id: sun.sun 208 | state: below_horizon 209 | - before: '23:00' 210 | condition: time 211 | action: 212 | - data: 213 | entity_id: group.upstairs_spots 214 | service: light.turn_on 215 | - action: 216 | - data: 217 | entity_id: group.upstairs_spots 218 | service: light.turn_off 219 | alias: Upstairs no motion 220 | condition: 221 | - condition: state 222 | entity_id: sun.sun 223 | state: below_horizon 224 | id: '1528823457733' 225 | trigger: 226 | - entity_id: binary_sensor.motion_sensor_158d0001e56350 227 | from: 'on' 228 | platform: state 229 | to: 'off' 230 | - action: 231 | - data: 232 | entity_id: group.bathroom_group 233 | service: light.toggle 234 | alias: Badkamer linkerknop 235 | condition: [] 236 | id: '1529253871562' 237 | trigger: 238 | - event_data: 239 | entity_id: binary_sensor.wall_switch_left_158d0001e06eb2 240 | event_type: single 241 | event_type: xiaomi_aqara.click 242 | platform: event 243 | - id: '1542658779581' 244 | alias: Upstairs Xiaomi 245 | trigger: 246 | - entity_id: binary_sensor.motion_sensor_158d0001e56350 247 | from: 'off' 248 | platform: state 249 | to: 'on' 250 | condition: 251 | - after: '23:00' 252 | before: 04:00 253 | condition: time 254 | action: 255 | - data: 256 | brightness: '120' 257 | color_name: red 258 | entity_id: light.gateway_light_7811dcb27710 259 | service: light.turn_on 260 | - id: '1542658864921' 261 | alias: Upstairs Xiaomi off 262 | trigger: 263 | - entity_id: binary_sensor.motion_sensor_158d0001e56350 264 | from: 'on' 265 | platform: state 266 | to: 'off' 267 | condition: 268 | - after: sunset 269 | condition: sun 270 | action: 271 | - data: 272 | entity_id: light.gateway_light_7811dcb27710 273 | service: light.turn_off 274 | - id: '1544304881668' 275 | alias: Cover button left(downstairs) 276 | trigger: 277 | - event_data: 278 | entity_id: binary_sensor.wall_switch_left_158d0001e0a3f6 279 | event_type: single 280 | event_type: xiaomi_aqara.click 281 | platform: event 282 | condition: [] 283 | action: 284 | - alias: '' 285 | data: 286 | entity_id: cover.livingroom_roller 287 | service: cover.close_cover 288 | - id: '1544305094328' 289 | alias: Rolluiken omhoog 290 | trigger: 291 | - at: 07:00 292 | platform: time 293 | condition: [] 294 | action: 295 | - data: 296 | entity_id: group.all_covers 297 | service: cover.open_cover 298 | - id: '1546196514195' 299 | alias: Octoprint-led 300 | trigger: 301 | - entity_id: binary_sensor.octoprint_printing 302 | from: 'off' 303 | platform: state 304 | to: 'on' 305 | condition: [] 306 | action: 307 | - data: 308 | entity_id: light.kossel_light_2 309 | service: light.turn_on 310 | - id: '1546196538451' 311 | alias: octo-print-off 312 | trigger: 313 | - entity_id: binary_sensor.octoprint_printing 314 | from: 'on' 315 | platform: state 316 | to: 'off' 317 | condition: [] 318 | action: 319 | - data: 320 | entity_id: light.kossel_light_2 321 | service: light.turn_off 322 | - id: '1546896384028' 323 | alias: Cover button right(downstairs) 324 | trigger: 325 | - event_data: 326 | entity_id: binary_sensor.wall_switch_right_158d0001e0a3f6 327 | event_type: single 328 | event_type: xiaomi_aqara.click 329 | platform: event 330 | condition: [] 331 | action: 332 | - data: 333 | entity_id: cover.livingroom_roller 334 | service: cover.open_cover 335 | - id: '1546896429811' 336 | alias: Cover button both(downstairs) 337 | trigger: 338 | - event_data: 339 | entity_id: binary_sensor.wall_switch_both_158d0001e0a3f6 340 | event_type: single 341 | event_type: xiaomi_aqara.click 342 | platform: event 343 | condition: [] 344 | action: 345 | - data: 346 | entity_id: cover.livingroom_roller 347 | service: cover.stop_cover 348 | - id: '1547412893560' 349 | alias: Bathroom right-button 350 | trigger: 351 | - event_data: 352 | entity_id: binary_sensor.wall_switch_right_158d0001e06eb2 353 | event_type: single 354 | event_type: xiaomi_aqara.click 355 | platform: event 356 | condition: [] 357 | action: 358 | - data: 359 | brightness: '30' 360 | entity_id: light.bathroom2 361 | service: light.turn_on 362 | - data: 363 | brightness: '30' 364 | entity_id: light.bathroom3 365 | service: light.turn_on 366 | - id: '1547413011732' 367 | alias: Bathroom button both 368 | trigger: 369 | - event_data: 370 | entity_id: binary_sensor.wall_switch_both_158d0001e06eb2 371 | event_type: single 372 | event_type: xiaomi_aqara.click 373 | platform: event 374 | condition: [] 375 | action: 376 | - data: 377 | entity_id: group.bathroom_group 378 | service: light.turn_off 379 | - id: '1548364073868' 380 | alias: Cover office left 381 | trigger: 382 | - event_data: 383 | entity_id: binary_sensor.wall_switch_left_158d000312d1f1 384 | event_type: single 385 | event_type: xiaomi_aqara.click 386 | platform: event 387 | condition: [] 388 | action: 389 | - data: 390 | entity_id: cover.office_roller 391 | service: cover.close_cover 392 | - id: '1548364189711' 393 | alias: Cover office right 394 | trigger: 395 | - event_data: 396 | entity_id: binary_sensor.wall_switch_right_158d000312d1f1 397 | event_type: single 398 | event_type: xiaomi_aqara.click 399 | platform: event 400 | condition: [] 401 | action: 402 | - data: 403 | entity_id: cover.office_roller 404 | service: cover.open_cover 405 | - id: '1548364252800' 406 | alias: Cover office both 407 | trigger: 408 | - event_data: 409 | entity_id: binary_sensor.wall_switch_both_158d000312d1f1 410 | event_type: single 411 | event_type: xiaomi_aqara.click 412 | platform: event 413 | condition: [] 414 | action: 415 | - data: 416 | entity_id: cover.office_roller 417 | service: cover.stop_cover 418 | - id: '1550564308364' 419 | alias: Telegram bot that reply pong to ping 420 | trigger: 421 | - event_data: 422 | text: ping 423 | event_type: telegram_text 424 | platform: event 425 | - event_data: 426 | text: Ping 427 | event_type: telegram_text 428 | platform: event 429 | condition: [] 430 | action: 431 | - data: 432 | message: pong 433 | service: telegram_bot.send_message 434 | - id: '1550565595309' 435 | alias: Telegram bot light status 436 | trigger: 437 | - event_data: 438 | text: status 439 | event_type: telegram_text 440 | platform: event 441 | - event_data: 442 | text: Status 443 | event_type: telegram_text 444 | platform: event 445 | condition: [] 446 | action: [] 447 | ~ 448 | -------------------------------------------------------------------------------- /automations.yaml: -------------------------------------------------------------------------------- 1 | - alias: Write Stepper Value to ESP 2 | trigger: 3 | platform: state 4 | entity_id: input_number.stepper_control 5 | action: 6 | - service: esphome.curtain_bedroom 7 | data_template: 8 | target: '{{ trigger.to_state.state | int }}' 9 | id: 20429983fd4f462f90561dd4cddf43c3 10 | - alias: Falcon Animation Speed 11 | initial_state: true 12 | trigger: 13 | - platform: state 14 | entity_id: input_slider.falcon_animation_speed 15 | action: 16 | - service: mqtt.publish 17 | data_template: 18 | topic: light/falcon/set 19 | payload: '{"transition":{{ trigger.to_state.state | int }}}' 20 | id: ea5948cf7c4e44c0a5399d18f84421cf 21 | - id: '1519760782392' 22 | alias: Motion hallway-downstairs (on) 23 | trigger: 24 | - entity_id: binary_sensor.hallway_downstairs_door_motion_occupancy 25 | from: 'off' 26 | platform: state 27 | to: 'on' 28 | condition: 29 | - condition: numeric_state 30 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 31 | attribute: illuminance_lux 32 | below: '4' 33 | - condition: state 34 | entity_id: input_boolean.bedtime 35 | state: 'off' 36 | action: 37 | - data: 38 | entity_id: group.hallway 39 | service: light.turn_on 40 | - type: turn_on 41 | device_id: e729bea001b411eb933ded68b48ae16d 42 | entity_id: switch.staircase_window_light_relay 43 | domain: switch 44 | mode: single 45 | - id: '1519760817306' 46 | alias: Motion hallway-downstairs (off) 47 | trigger: 48 | - entity_id: binary_sensor.hallway_downstairs_door_motion_occupancy 49 | from: 'on' 50 | platform: state 51 | to: 'off' 52 | condition: [] 53 | action: 54 | - data: 55 | entity_id: group.hallway 56 | service: light.turn_off 57 | - type: turn_off 58 | device_id: e729bea001b411eb933ded68b48ae16d 59 | entity_id: switch.staircase_window_light_relay 60 | domain: switch 61 | mode: single 62 | - id: '1520200724100' 63 | alias: Motion hallway-downstairs morning (on) 64 | trigger: 65 | - entity_id: binary_sensor.hallway_downstairs_door_motion_occupancy 66 | from: 'off' 67 | platform: state 68 | to: 'on' 69 | condition: 70 | - after: '6:00' 71 | before: '8:30' 72 | condition: time 73 | - type: is_illuminance 74 | condition: device 75 | device_id: a4d91cd90d4711eba5a6b50a9ba37a26 76 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 77 | domain: sensor 78 | below: 4 79 | action: 80 | - data: 81 | entity_id: group.livingroom_group 82 | service: homeassistant.turn_on 83 | mode: single 84 | - id: '1520251495193' 85 | alias: Basement light on 86 | trigger: 87 | - entity_id: binary_sensor.basement_door_sensor_contact 88 | from: 'off' 89 | platform: state 90 | to: 'on' 91 | condition: [] 92 | action: 93 | - data: 94 | entity_id: light.sonoff_basement 95 | service: light.turn_on 96 | mode: single 97 | - id: '1520251539017' 98 | alias: Basement light off 99 | trigger: 100 | - entity_id: binary_sensor.basement_door_sensor_contact 101 | from: 'on' 102 | platform: state 103 | to: 'off' 104 | condition: [] 105 | action: 106 | - data: 107 | entity_id: light.sonoff_basement 108 | service: light.turn_off 109 | mode: single 110 | - id: '1528109786675' 111 | alias: Motion kitchen (on) 112 | trigger: 113 | - entity_id: binary_sensor.0x00158d0001e55662_occupancy 114 | from: 'off' 115 | platform: state 116 | to: 'on' 117 | condition: 118 | - condition: numeric_state 119 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 120 | below: '4' 121 | attribute: illuminance_lux 122 | - condition: state 123 | entity_id: input_boolean.bedtime 124 | state: 'off' 125 | action: 126 | - data: 127 | entity_id: group.kitchenspots 128 | service: light.turn_on 129 | mode: single 130 | - id: '1528109853713' 131 | alias: Motion kitchen (off) 132 | trigger: 133 | - entity_id: binary_sensor.0x00158d0001e55662_occupancy 134 | from: 'on' 135 | platform: state 136 | to: 'off' 137 | condition: [] 138 | action: 139 | - data: 140 | entity_id: group.kitchenspots 141 | service: light.turn_off 142 | mode: single 143 | - id: '1528823416468' 144 | alias: Motion upstairs (on) 145 | trigger: 146 | - entity_id: binary_sensor.hallway_upstairs_bedroom_motion_occupancy 147 | from: 'off' 148 | platform: state 149 | to: 'on' 150 | condition: 151 | - condition: numeric_state 152 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 153 | below: '4' 154 | attribute: illuminance_lux 155 | - condition: state 156 | entity_id: input_boolean.bedtime 157 | state: 'off' 158 | action: 159 | - data: 160 | entity_id: group.upstairs_spots 161 | service: light.turn_on 162 | mode: single 163 | - id: '1528823457733' 164 | alias: Motion upstairs (off) 165 | trigger: 166 | - entity_id: binary_sensor.hallway_upstairs_bedroom_motion_occupancy 167 | from: 'on' 168 | platform: state 169 | to: 'off' 170 | condition: [] 171 | action: 172 | - data: 173 | entity_id: group.upstairs_spots 174 | service: light.turn_off 175 | mode: single 176 | - id: '1544305094328' 177 | alias: Shutters_time_open 178 | trigger: 179 | - at: 07:00 180 | platform: time 181 | condition: [] 182 | action: 183 | - entity_id: cover.livingroom_roller 184 | service: cover.open_cover 185 | - service: cover.open_cover 186 | data: {} 187 | entity_id: cover.office_roller 188 | mode: single 189 | - id: '1546196514195' 190 | alias: Octoprint-led 191 | trigger: 192 | - entity_id: binary_sensor.octoprint_printing 193 | from: 'off' 194 | platform: state 195 | to: 'on' 196 | condition: [] 197 | action: 198 | - data: 199 | entity_id: light.kossel_light 200 | service: light.turn_on 201 | - id: '1546196538451' 202 | alias: octo-print-off 203 | trigger: 204 | - entity_id: binary_sensor.octoprint_printing 205 | from: 'on' 206 | platform: state 207 | to: 'off' 208 | condition: [] 209 | action: 210 | - data: 211 | entity_id: light.kossel_light 212 | service: light.turn_off 213 | - id: '1548364073868' 214 | alias: office_shutter_left-button 215 | trigger: 216 | - platform: device 217 | domain: mqtt 218 | device_id: c68ac6c3ffe511ea90e64de2f15089ab 219 | type: click 220 | subtype: left 221 | discovery_id: 0x00158d000312d335 click_left 222 | condition: 223 | - condition: state 224 | entity_id: binary_sensor.office_window_sensor_contact 225 | state: 'off' 226 | action: 227 | - data: 228 | entity_id: cover.office_roller 229 | service: cover.close_cover 230 | mode: single 231 | - id: '1548364189711' 232 | alias: office_shutter_right-button 233 | trigger: 234 | - platform: device 235 | domain: mqtt 236 | device_id: c68ac6c3ffe511ea90e64de2f15089ab 237 | type: action 238 | subtype: single_right 239 | discovery_id: 0x00158d000312d335 action_single_right 240 | condition: [] 241 | action: 242 | - data: 243 | entity_id: cover.office_roller 244 | service: cover.open_cover 245 | mode: single 246 | - id: '1548364252800' 247 | alias: office_shutter_both-buttons 248 | trigger: 249 | - platform: device 250 | domain: mqtt 251 | device_id: c68ac6c3ffe511ea90e64de2f15089ab 252 | type: click 253 | subtype: both 254 | discovery_id: 0x00158d000312d335 click_both 255 | condition: [] 256 | action: 257 | - data: 258 | entity_id: cover.office_roller 259 | service: cover.stop_cover 260 | mode: single 261 | - id: '1550564308364' 262 | alias: Telegram bot that reply pong to ping 263 | trigger: 264 | - event_data: 265 | command: /ping 266 | event_type: telegram_command 267 | platform: event 268 | - event_data: 269 | text: Ping 270 | event_type: telegram_text 271 | platform: event 272 | condition: [] 273 | action: 274 | - data_template: 275 | message: pong 276 | target: '{{ trigger.event.data.chat_id }}' 277 | service: telegram_bot.send_message 278 | - id: '1550565595309' 279 | alias: Telegram bot status 280 | trigger: 281 | - event_data: 282 | text: status 283 | event_type: telegram_text 284 | platform: event 285 | - event_data: 286 | text: Status 287 | event_type: telegram_text 288 | platform: event 289 | - event_data: 290 | telegram_command: /status 291 | event_type: telegram_command 292 | platform: event 293 | condition: [] 294 | action: 295 | - data: 296 | message: ' {% if now().strftime("%H")|int < 12 %} Good morning, {% elif now().strftime("%H")|int 297 | < 18 %} Good afternoon, {% else %} Good evening, {% endif %} 298 | 299 | The current weather is {{ states ("weather.dark_sky") }}, with a temperature 300 | of {{ state_attr ("weather.dark_sky", "temperature" )| int }} degrees. 301 | 302 | The current livingroom temperature is {{ state_attr ("climate.woonkamer", 303 | "current_temperature" )|int }} degrees. 304 | 305 | The solar panels produced {{ states ("sensor.energy_today").split(".").0 }} 306 | Kilowatthours today. 307 | 308 | {% if is_state ("binary_sensor.door_window_sensor_158d0002133b59", "on") %} 309 | Reminder, The bedroom window is open. {% endif %} 310 | 311 | {% if state_attr ("vacuum.miep", "clean_stop").strftime("%d") == now().strftime("%d") 312 | %} Vacuum finished today at {{ state_attr ("vacuum.miep", "clean_stop").strftime("%H:%M")}}. 313 | {% else %} Vacuum did not clean, last run was {{state_attr ("vacuum.miep", 314 | "clean_stop").strftime("%A, %d %B")}}. {% endif %} 315 | 316 | {% if state_attr ("vacuum.miep", "sensor_dirty_left") < 2 %} The vacuum sensors 317 | need to be cleaned in {{state_attr ("vacuum.miep", "sensor_dirty_left")}} 318 | hours. {% endif %} {% if state_attr ("vacuum.miep", "filter_left") < 2 %} 319 | The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "filter_left")}} 320 | hours. {% endif %} {% if state_attr ("vacuum.miep", "side_brush_left") < 2 321 | %} The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "side_brush_left")}} 322 | hours. {% endif %} {% if state_attr ("vacuum.miep", "main_brush_left") < 2 323 | %} The vacuum sensors need to be cleaned in {{state_attr ("vacuum.miep", "main_brush_left")}} 324 | hours. {% endif %} ' 325 | target: '{{ trigger.event.data.chat_id }}' 326 | service: telegram_bot.send_message 327 | - id: '1550695640677' 328 | alias: Telegram cleaning 329 | trigger: 330 | - entity_id: vacuum.miep 331 | from: docked 332 | platform: state 333 | to: cleaning 334 | condition: [] 335 | action: 336 | - data: 337 | message: Cleaning, beep boop 338 | service: telegram_bot.send_message 339 | - id: '1550697141393' 340 | alias: Motion stairs(on) 341 | trigger: 342 | - entity_id: binary_sensor.stairs_window_motion_occupancy 343 | from: 'off' 344 | platform: state 345 | to: 'on' 346 | condition: 347 | - condition: numeric_state 348 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 349 | attribute: illuminance_lux 350 | below: '4' 351 | - condition: state 352 | entity_id: input_boolean.bedtime 353 | state: 'off' 354 | action: 355 | - service: switch.turn_on 356 | data: {} 357 | entity_id: switch.staircase_window_light_relay 358 | mode: single 359 | - id: '1550697179004' 360 | alias: Motion stairs (off) 361 | trigger: 362 | - entity_id: binary_sensor.stairs_window_motion_occupancy 363 | from: 'on' 364 | platform: state 365 | to: 'off' 366 | condition: [] 367 | action: 368 | - service: switch.turn_off 369 | data: {} 370 | entity_id: switch.staircase_window_light_relay 371 | mode: single 372 | - id: '1550872980640' 373 | alias: Reset bedtime 374 | trigger: 375 | - at: 06:00 376 | platform: time 377 | condition: [] 378 | action: 379 | - data: 380 | entity_id: input_boolean.bedtime 381 | service: input_boolean.turn_off 382 | - data: 383 | code: !secret alarm_pin 384 | entity_id: alarm_control_panel.home_alarm 385 | service: alarm_control_panel.alarm_disarm 386 | - id: '1553538719582' 387 | alias: Switch to dark theme 388 | trigger: 389 | - entity_id: sun.sun 390 | from: above_horizon 391 | platform: state 392 | to: below_horizon 393 | condition: [] 394 | action: 395 | - data: 396 | name: dark 397 | service: frontend.set_theme 398 | - id: '1553538754094' 399 | alias: Set dark theme 400 | trigger: 401 | - entity_id: sun.sun 402 | from: below_horizon 403 | platform: state 404 | to: above_horizon 405 | condition: [] 406 | action: 407 | - data: 408 | name: clear2 409 | service: frontend.set_theme 410 | - id: '1553543612290' 411 | alias: Tesla home lights 412 | trigger: 413 | - entity_id: device_tracker.eve_location_tracker 414 | from: not_home 415 | platform: state 416 | to: home 417 | condition: 418 | - condition: state 419 | entity_id: sun.sun 420 | state: below_horizon 421 | - condition: state 422 | entity_id: person.joyce 423 | state: Away 424 | action: 425 | - data: 426 | entity_id: group.livingroom_group 427 | service: light.turn_on 428 | - data: 429 | entity_id: group.livingroom_group 430 | service: switch.turn_on 431 | mode: single 432 | - id: '1554283978472' 433 | alias: Printing done 434 | trigger: 435 | - entity_id: binary_sensor.octoprint_printing 436 | from: 'on' 437 | platform: state 438 | to: 'off' 439 | condition: [] 440 | action: 441 | - data: 442 | entity_id: camera.octoprint 443 | filename: /config/www/tmpimage/printer.jpg 444 | service: camera.snapshot 445 | - data: 446 | message: Printing done 447 | service: telegram_bot.send_message 448 | - data: 449 | file: /config/www/tmpimage/printer.jpg 450 | service: telegram_bot.send_photo 451 | - id: '1554284164549' 452 | alias: Telegram print status 453 | trigger: 454 | - event_data: 455 | text: Print status 456 | event_type: telegram_text 457 | platform: event 458 | - event_data: 459 | text: Printer status 460 | event_type: telegram_text 461 | platform: event 462 | - event_data: 463 | command: /print_status 464 | event_type: telegram_command 465 | platform: event 466 | condition: [] 467 | action: 468 | - data: 469 | entity_id: camera.octoprint 470 | filename: /config/www/tmpimage/printer_status.jpg 471 | service: camera.snapshot 472 | - data_template: 473 | message: Job is at {{ states('sensor.octoprint_job_percentage') }}% 474 | target: '{{ trigger.event.data.chat_id }}' 475 | service: telegram_bot.send_message 476 | - data_template: 477 | message: 'expected time remaining is: {{states(''sensor.octoprint_time_remaining_format'') 478 | }}' 479 | target: '{{ trigger.event.data.chat_id }}' 480 | service: telegram_bot.send_message 481 | - data_template: 482 | message: 'And here''s a picture of the printbed:' 483 | target: '{{ trigger.event.data.chat_id }}' 484 | service: telegram_bot.send_message 485 | - data_template: 486 | file: /config/www/tmpimage/printer_status.jpg 487 | target: '{{ trigger.event.data.chat_id }}' 488 | service: telegram_bot.send_photo 489 | - id: '1554312554261' 490 | alias: Telegram Alarm 491 | trigger: 492 | - event_data: 493 | text: alarm on 494 | event_type: telegram_text 495 | platform: event 496 | - event_data: 497 | text: Alarm on 498 | event_type: telegram_text 499 | platform: event 500 | condition: [] 501 | action: 502 | - data: 503 | entity_id: input_boolean.alarm 504 | service: input_boolean.turn_on 505 | - data: 506 | message: Alarm is set 507 | service: telegram_bot.send_message 508 | - id: '1554544852706' 509 | alias: Tensorflow voordeur 510 | trigger: 511 | - event_data: {} 512 | event_type: voordeur_motion 513 | platform: event 514 | condition: [] 515 | action: 516 | - data: 517 | entity_id: image_processing.tensorflow_voordeur 518 | service: image_processing.scan 519 | - id: '1554564859672' 520 | alias: TensorFlow zijdeur 521 | trigger: 522 | - event_data: {} 523 | event_type: zijdeur_motion 524 | platform: event 525 | condition: [] 526 | action: 527 | - entity_id: image_processing.tensorflow_zijdeur 528 | service: image_processing.scan 529 | - id: '1554790197597' 530 | alias: Tensorflow notification voordeur 531 | trigger: 532 | - entity_id: image_processing.tensorflow_voordeur 533 | platform: state 534 | condition: 535 | - condition: template 536 | value_template: '{{ trigger.to_state.state |int > 0 }}' 537 | - condition: template 538 | value_template: "{% set scan = state_attr(\"image_processing.tensorflow_voordeur\"\ 539 | ,\"summary\").keys() %}\n{% for item in scan %}\n {% if item == 'person' %}\n\ 540 | \ {{ True }}\n {% endif %}\n{% endfor %}" 541 | action: 542 | - data: 543 | message: '{{ state_attr(''image_processing.tensorflow_voordeur'',''matches'').keys()|list|unique|list|join('', 544 | '')|title }} detected on voordeur camera' 545 | service: telegram_bot.send_message 546 | - data: 547 | file: /config/video/voordeur_latest.jpg 548 | service: telegram_bot.send_photo 549 | - id: '1554790271700' 550 | alias: Tensorflow notification zijdeur 551 | trigger: 552 | - entity_id: image_processing.tensorflow_zijdeur 553 | platform: state 554 | condition: 555 | - condition: template 556 | value_template: '{{ trigger.to_state.state |int > 0 }}' 557 | - condition: template 558 | value_template: "{% set scan = state_attr(\"image_processing.tensorflow_zijdeur\"\ 559 | ,\"summary\").keys() %}\n{% for item in scan %}\n {% if item == 'person' %}\n\ 560 | \ {{ True }}\n {% endif %}\n{% endfor %}" 561 | action: 562 | - data: 563 | message: '{{ state_attr(''image_processing.tensorflow_zijdeur'',''matches'').keys()|list|unique|list|join('', 564 | '')|title }} detected on zijdeur camera' 565 | service: telegram_bot.send_message 566 | - data: 567 | file: /config/video/zijdeur_latest.jpg 568 | service: telegram_bot.send_photo 569 | - id: '1557406766787' 570 | alias: Alarm on_away 571 | trigger: 572 | - entity_id: device_tracker.mi9_miphone_2 573 | from: Home 574 | platform: state 575 | to: Away 576 | condition: [] 577 | action: 578 | - data: 579 | message: Alarm is set - Phone away 580 | service: telegram_bot.send_message 581 | - id: '1558271669699' 582 | alias: Livingroom_anouncement_morning 583 | trigger: 584 | - type: motion 585 | platform: device 586 | device_id: 42e0ba26ffe711ea9d13cd2f01ae623c 587 | entity_id: binary_sensor.hallway_downstairs_door_motion_occupancy 588 | domain: binary_sensor 589 | for: 590 | hours: 0 591 | minutes: 0 592 | seconds: 0 593 | condition: 594 | - type: is_motion 595 | condition: device 596 | device_id: 1421a140ffe711eaa1f1219d64a00720 597 | entity_id: binary_sensor.stairs_window_motion_occupancy 598 | domain: binary_sensor 599 | for: 600 | hours: 0 601 | minutes: 0 602 | seconds: 0 603 | - condition: time 604 | after: '6:00' 605 | before: '10:00' 606 | action: 607 | - delay: '10' 608 | - data: 609 | volume_level: 0.4 610 | entity_id: media_player.nestaudio2567 611 | service: media_player.volume_set 612 | - data_template: 613 | entity_id: media_player.nestaudio2567 614 | message: '{% if now().strftime("%H")|int < 12 %} Goedemorgen, {% elif now().strftime("%H")|int 615 | < 18 %} Goedemiddag, {% else %} Goedeavond, {% endif %} Het is nu buiten {{ 616 | states ("sensor.weerhuisje_temperature") | int }} graden. 617 | 618 | De woonkamer temperatuur is {{ state_attr ("climate.woonkamer", "current_temperature" 619 | )|int }} graden. 620 | 621 | {% if is_state ("sensor.circulus_berkel_vandaag", "None") %} {% else %} Vandaag 622 | moet {{ states ("sensor.circulus_berkel_vandaag")}} aan de weg. {% endif %} 623 | {% if is_state ("sensor.circulus_berkel_morgen", "None") %} {% else %} Morgen 624 | wordt {{ states ("sensor.circulus_berkel_morgen")}} opgehaald. {% endif %} 625 | 626 | De zonnepanelen hebben {{ states ("sensor.saj_today_yield_2") }} Kilowat opgebracht 627 | vandaag. 628 | 629 | {% if is_state ("binary_sensor.bedroom_window_door_sensor_contact", "on") 630 | and state_attr ("weather.openweathermap", "temperature") < 10 %} Het raam 631 | op de slaapkamer staat open, en buiten is het koud {% endif %} 632 | 633 | {% if is_state ("group.outside_doors", "on") %} Waarschuwing! Er staat een 634 | buitendeur open {% endif %} 635 | 636 | {% if state_attr ("vacuum.miep", "clean_stop").strftime("%d") == now().strftime("%d") 637 | %} Miep heeft vandaag gereden om {{ state_attr ("vacuum.miep", "clean_stop").strftime("%H:%M")}}. 638 | {% else %} Miep heeft nog niet gereden, de laatste keer was {{state_attr ("vacuum.miep", 639 | "clean_stop").strftime("%A, %d %B")}}. {% endif %} 640 | 641 | {% if state_attr ("vacuum.miep", "sensor_dirty_left") < 2 %} De sensors van 642 | Miep moeten schoongemaakt worden in {{state_attr ("vacuum.miep", "sensor_dirty_left")}} 643 | uur. {% endif %} {% if state_attr ("vacuum.miep", "filter_left") < 2 %} Het 644 | filter van Miep moet schoongemaakt worden binnen {{state_attr ("vacuum.miep", 645 | "filter_left")}} uur. {% endif %} {% if state_attr ("vacuum.miep", "side_brush_left") 646 | < 2 %} De zijborstel van Miep moet vervangen worden in {{state_attr ("vacuum.miep", 647 | "side_brush_left")}} uur. {% endif %} {% if state_attr ("vacuum.miep", "main_brush_left") 648 | < 2 %} De hoofdborstel van Miep moet vervangen worden in {{state_attr ("vacuum.miep", 649 | "main_brush_left")}} uur. {% endif %} Dat waren alle meldingen, fijne dag 650 | verder! ' 651 | service: tts.microsoft_say 652 | mode: single 653 | - id: '1558274783849' 654 | alias: IFTT 655 | trigger: 656 | - event_data: 657 | action: call_service 658 | event_type: ifttt_webhook_received 659 | platform: event 660 | condition: [] 661 | action: 662 | - data_template: 663 | entity_id: '{{ trigger.event.data.entity_id }}' 664 | service_template: '{{ trigger.event.data.service }}' 665 | - id: '1560369534592' 666 | alias: Tensorflow schuur 667 | trigger: 668 | - event_data: {} 669 | event_type: schuur_motion 670 | platform: event 671 | condition: [] 672 | action: 673 | - data: 674 | entity_id: image_processing.tensorflow_schuur 675 | service: image_processing.scan 676 | - id: '1560369782192' 677 | alias: Tensorflow notification schuur 678 | trigger: 679 | - entity_id: image_processing.tensorflow_schuur 680 | platform: state 681 | condition: 682 | - condition: template 683 | value_template: '{{ trigger.to_state.state |int > 0 }}' 684 | - condition: template 685 | value_template: "{% set scan = state_attr(\"image_processing.tensorflow_schuur\"\ 686 | ,\"summary\").keys() %}\n{% for item in scan %}\n {% if item == 'person' %}\n\ 687 | \ {{ True }}\n {% endif %}\n{% endfor %}" 688 | action: 689 | - data: 690 | message: '{{ state_attr(''image_processing.tensorflow_schuur'',''matches'').keys()|list|unique|list|join('', 691 | '')|title }} detected on schuur camera' 692 | service: telegram_bot.send_message 693 | - data: 694 | file: /config/video/schuur_latest.jpg 695 | service: telegram_bot.send_photo 696 | - id: '1560587782912' 697 | alias: Telegram Wolfje 698 | trigger: 699 | - event_data: 700 | text: Wolfje status 701 | event_type: telegram_text 702 | platform: event 703 | - event_data: 704 | text: wolfje status 705 | event_type: telegram_text 706 | platform: event 707 | - event_data: 708 | text: Waar is wolfje 709 | event_type: telegram_text 710 | platform: event 711 | - event_data: 712 | text: Wolfje 713 | event_type: telegram_text 714 | platform: event 715 | - event_data: 716 | text: wolfje 717 | event_type: telegram_text 718 | platform: event 719 | condition: [] 720 | action: 721 | - data: 722 | message: '{% if is_state ("binary_sensor.pet_wolfje", "on") %} Wolfje is binnen 723 | chillen. {% elif is_state ("binary_sensor.pet_wolfje", "off") %} Wolfje is 724 | buiten chillen. {% endif %}' 725 | service: telegram_bot.send_message 726 | - id: '1563110835430' 727 | alias: Pim location Office 728 | trigger: 729 | - above: '-60' 730 | entity_id: device_tracker.192_168_1_17_a4_50_46_72_c6_82 731 | platform: numeric_state 732 | condition: [] 733 | action: 734 | - service: input_select.set_options 735 | - id: '1563738157502' 736 | alias: Bedtime toggle 737 | trigger: 738 | - entity_id: input_boolean.bedtime 739 | from: 'off' 740 | platform: state 741 | to: 'on' 742 | condition: 743 | - after: '21:00' 744 | condition: time 745 | action: 746 | - data: 747 | entity_id: all 748 | service: light.turn_off 749 | - service: switch.turn_off 750 | data: 751 | entity_id: 752 | - switch.fireplace_basic_relay 753 | - switch.frontdoor_switch_relay 754 | - switch.livingroom_window_switch_switch 755 | - switch.porch_basic_relay 756 | - switch.sonoff_basic_relay 757 | - switch.staircase_window_light_relay 758 | mode: single 759 | - id: '1568203353202' 760 | alias: Vacuum start 761 | trigger: 762 | - at: 05:00 763 | platform: time 764 | condition: [] 765 | action: 766 | - data: 767 | entity_id: vacuum.miep 768 | service: vacuum.start 769 | mode: single 770 | - id: '1570045586111' 771 | alias: Alarm_off_xiaomi_single_button 772 | trigger: 773 | - platform: device 774 | domain: mqtt 775 | device_id: e65fd062009211ebbb18594153c78b9e 776 | type: action 777 | subtype: single 778 | discovery_id: 0x00158d000210ec53 action_single 779 | - platform: device 780 | domain: mqtt 781 | device_id: e65fd062009211ebbb18594153c78b9e 782 | type: action 783 | subtype: double 784 | discovery_id: 0x00158d000210ec53 action_double 785 | condition: [] 786 | action: 787 | - data: 788 | message: Alarm off - Via Xiaomi button 789 | service: notify.mobile_app_pixel_5 790 | - data: 791 | code: !secret alarm_pin 792 | entity_id: alarm_control_panel.home_alarm 793 | service: alarm_control_panel.alarm_disarm 794 | mode: single 795 | - id: '1570048484459' 796 | alias: Livingroom_shutter_close-time 797 | trigger: 798 | - at: '22:00' 799 | platform: time 800 | condition: [] 801 | action: 802 | - data: 803 | entity_id: cover.livingroom_roller 804 | service: cover.close_cover 805 | mode: single 806 | - id: '1570048669274' 807 | alias: Office_shutter_close-time 808 | trigger: 809 | - at: '22:00' 810 | platform: time 811 | condition: 812 | - condition: state 813 | entity_id: binary_sensor.office_window_sensor_contact 814 | state: 'Off' 815 | action: 816 | - data: 817 | entity_id: cover.office_roller 818 | service: cover.close_cover 819 | mode: single 820 | - id: '1570544659081' 821 | alias: Motion-stairs 822 | trigger: 823 | - entity_id: binary_sensor.stairs_window_motion_occupancy 824 | from: 'off' 825 | platform: state 826 | to: 'on' 827 | condition: 828 | - condition: numeric_state 829 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 830 | attribute: illuminance_lux 831 | below: '4' 832 | - condition: state 833 | entity_id: input_boolean.bedtime 834 | state: 'off' 835 | action: 836 | - data: 837 | entity_id: group.livingroom_group 838 | service: light.turn_on 839 | mode: single 840 | - id: '1570546499913' 841 | alias: Alarm_away_trigger-wolfje-away 842 | trigger: 843 | - entity_id: group.outside_doors 844 | from: 'off' 845 | platform: state 846 | to: 'on' 847 | - entity_id: binary_sensor.motion_sensor_158d0001a92381 848 | from: 'off' 849 | platform: state 850 | to: 'on' 851 | - entity_id: binary_sensor.motion_sensor_158d0001e55662 852 | from: 'off' 853 | platform: state 854 | to: 'on' 855 | condition: 856 | - condition: state 857 | entity_id: alarm_control_panel.home_alarm 858 | state: armed_away 859 | - condition: state 860 | entity_id: binary_sensor.pet_wolfje 861 | state: 'off' 862 | action: 863 | - data: 864 | entity_id: alarm_control_panel.home_alarm 865 | entity_id: alarm_control_panel.home_alarm 866 | service: alarm_control_panel.alarm_trigger 867 | - id: '1570600594310' 868 | alias: Alarm_away_trigger-wolfje-home 869 | trigger: 870 | - entity_id: group.outside_doors 871 | from: 'off' 872 | platform: state 873 | to: 'on' 874 | condition: 875 | - condition: state 876 | entity_id: alarm_control_panel.home_alarm 877 | state: armed_away 878 | - condition: state 879 | entity_id: binary_sensor.pet_wolfje 880 | state: 'on' 881 | action: 882 | - data: 883 | entity_id: alarm_control_panel.home_alarm 884 | entity_id: alarm_control_panel.home_alarm 885 | service: alarm_control_panel.alarm_trigger 886 | - id: '1572170315856' 887 | alias: Alarm_armed_notification 888 | description: '' 889 | trigger: 890 | - entity_id: alarm_control_panel.home_alarm 891 | platform: state 892 | to: armed_away 893 | condition: [] 894 | action: 895 | - data: 896 | data: 897 | actions: 898 | - action: URI 899 | title: Disable alarm 900 | uri: /lovelace/14 901 | - action: URI 902 | title: Show camera 903 | uri: /lovelace/7 904 | clickAction: /lovelace/14 905 | importance: high 906 | message: ALARM SET 907 | service: notify.notify 908 | mode: single 909 | - id: '1572304385431' 910 | alias: Lights off sunrise 911 | description: '' 912 | trigger: 913 | - entity_id: sun.sun 914 | for: 00:50:00 915 | from: below_horizon 916 | platform: state 917 | to: above_horizon 918 | condition: [] 919 | action: 920 | - data: 921 | entity_id: all 922 | service: light.turn_off 923 | - data: 924 | entity_id: switch.sonoff_basic_relay, switch.tradfri_outlet 925 | service: switch.turn_off 926 | - id: '1573077284376' 927 | alias: Telegram - Warmtedeken status 928 | description: '' 929 | trigger: 930 | - event_data: 931 | text: warmtedeken status 932 | event_type: telegram_text 933 | platform: event 934 | - event_data: 935 | text: Warmte deken status 936 | event_type: telegram_text 937 | platform: event 938 | - event_data: 939 | text: Warmtedeken status 940 | event_type: telegram_text 941 | platform: event 942 | condition: [] 943 | action: 944 | - data: 945 | message: Warmtedeken is {{ states('switch.plug_158d00039c1489') }} 946 | service: telegram_bot.send_message 947 | - id: '1573077586824' 948 | alias: Warmtedeken - autoshutoff 949 | description: '' 950 | trigger: 951 | - entity_id: switch.plug_158d00039c1489 952 | for: '1:30:00' 953 | from: 'off' 954 | platform: state 955 | to: 'on' 956 | condition: [] 957 | action: 958 | - data: 959 | entity_id: switch.plug_158d00039c1489 960 | service: switch.turn_off 961 | - id: '1573465670179' 962 | alias: Telegram - Tesla charging stopped 963 | description: '' 964 | trigger: 965 | - entity_id: switch.eve_charger_switch 966 | from: 'on' 967 | platform: state 968 | to: 'off' 969 | condition: [] 970 | action: 971 | - data: 972 | message: Tesla stopped charging 973 | service: telegram_bot.send_message 974 | - id: '1575391309146' 975 | alias: alarm - door or window unlocked 976 | description: '' 977 | trigger: 978 | - entity_id: group.outside_doors 979 | from: 'off' 980 | platform: state 981 | to: 'on' 982 | - entity_id: group.outside_windows 983 | from: 'off' 984 | platform: state 985 | to: 'on' 986 | - entity_id: binary_sensor.door_window_sensor_158d0003d4bad5 987 | from: 'off' 988 | platform: state 989 | to: 'on' 990 | condition: 991 | - condition: or 992 | conditions: 993 | - condition: state 994 | entity_id: alarm_control_panel.home_alarm 995 | state: armed_night 996 | - condition: state 997 | entity_id: alarm_control_panel.home_alarm 998 | state: armed_away 999 | action: 1000 | - data: 1001 | code: !secret alarm_pin 1002 | entity_id: alarm_control_panel.home_alarm 1003 | service: alarm_control_panel.alarm_trigger 1004 | - id: '1575391403592' 1005 | alias: Alarm - Disabled notifcation 1006 | description: '' 1007 | trigger: 1008 | - entity_id: alarm_control_panel.home_alarm 1009 | platform: state 1010 | to: disarmed 1011 | condition: [] 1012 | action: 1013 | - data: 1014 | data: 1015 | actions: 1016 | - action: URI 1017 | title: Disable alarm 1018 | uri: /lovelace/14 1019 | - action: URI 1020 | title: Show camera 1021 | uri: /lovelace/7 1022 | clickAction: /lovelace/14 1023 | color: green 1024 | importance: urgent 1025 | message: ALARM DISABLED 1026 | service: notify.notify 1027 | mode: single 1028 | - id: '1575446439629' 1029 | alias: Alarm - Triggered 1030 | description: '' 1031 | trigger: 1032 | - entity_id: alarm_control_panel.home_alarm 1033 | platform: state 1034 | to: triggered 1035 | condition: [] 1036 | action: 1037 | - data: 1038 | data: 1039 | actions: 1040 | - action: URI 1041 | title: Disable alarm 1042 | uri: /lovelace/14 1043 | - action: URI 1044 | title: Show camera 1045 | uri: /lovelace/7 1046 | clickAction: /lovelace/14 1047 | color: red 1048 | importance: urgent 1049 | persistent: true 1050 | sticky: 'true' 1051 | tag: alarm_triggered 1052 | message: ALARM TRIGGERED 1053 | service: notify.notify 1054 | - data: {} 1055 | entity_id: script.alarm_triggered_loop 1056 | service: script.turn_on 1057 | mode: single 1058 | - id: '1577900607880' 1059 | alias: notify PMD 1060 | description: '' 1061 | trigger: 1062 | - entity_id: sensor.circulus_berkel_pmd 1063 | platform: state 1064 | to: today 1065 | condition: [] 1066 | action: 1067 | - data: 1068 | message: PMD opgehaald vandaag 1069 | service: telegram_bot.send_message 1070 | - id: '1577913648866' 1071 | alias: telegram_joyce 1072 | description: '' 1073 | trigger: 1074 | - event_data: 1075 | telegram_command: /joyce 1076 | event_type: telegram_command 1077 | platform: event 1078 | condition: [] 1079 | action: 1080 | - data: 1081 | message: Volgens Pim is Joyce de allerliefste van de hele wereld! <3 1082 | target: '{{ trigger.event.data.chat_id }}' 1083 | service: telegram_bot.send_message 1084 | - id: '1578220478076' 1085 | alias: Telegram - away notification 1086 | description: '' 1087 | trigger: 1088 | - entity_id: device_tracker.mi9_miphone_2 1089 | platform: state 1090 | to: not_home 1091 | - entity_id: device_tracker.unifi_48_2c_a0_6e_96_9a_default 1092 | platform: state 1093 | to: not_home 1094 | condition: 1095 | - condition: or 1096 | conditions: 1097 | - condition: state 1098 | entity_id: device_tracker.mi9_miphone_2 1099 | state: not_home 1100 | - condition: state 1101 | entity_id: device_tracker.unifi_48_2c_a0_6e_96_9a_default 1102 | state: not_home 1103 | action: 1104 | - data: 1105 | message: Iedereen is van huis 1106 | target: '-366369357' 1107 | service: telegram_bot.send_message 1108 | - data: 1109 | message: Ik zet het alarm aan 1110 | target: '-366369357' 1111 | service: telegram_bot.send_message 1112 | - id: '1578303536719' 1113 | alias: Telegram - Afval notificatie 1114 | description: '' 1115 | trigger: 1116 | - entity_id: sensor.circulus_berkel_vandaag 1117 | platform: state 1118 | condition: [] 1119 | action: 1120 | - data_template: 1121 | message: 'De volgende container moet aan de weg: {{states(''sensor.circulus_berkel_vandaag'') 1122 | }}' 1123 | target: '-366369357' 1124 | service: telegram_bot.send_message 1125 | - id: '1578303726240' 1126 | alias: Telegram - Afval notificatie morgen 1127 | description: '' 1128 | trigger: 1129 | - entity_id: sensor.circulus_berkel_morgen 1130 | platform: state 1131 | condition: [] 1132 | action: 1133 | - data_template: 1134 | message: Morgen moet de *{{states('sensor.circulus_berkel_morgen') }}* container 1135 | aan de weg 1136 | parse_mode: markdown 1137 | target: '-366369357' 1138 | service: telegram_bot.send_message 1139 | - id: '1579032386207' 1140 | alias: Alarm - disarmed stop chaos 1141 | description: '' 1142 | trigger: 1143 | - entity_id: alarm_control_panel.home_alarm 1144 | platform: state 1145 | to: disarmed 1146 | condition: [] 1147 | action: 1148 | - entity_id: script.alarm_triggered_sound 1149 | service: script.turn_off 1150 | - data: 1151 | data: 1152 | tag: alarm_triggered 1153 | message: clear_notification 1154 | service: notify.notify 1155 | mode: single 1156 | - id: '1580711235303' 1157 | alias: Telegram - Stookalert notificatie 1158 | description: '' 1159 | trigger: 1160 | - entity_id: binary_sensor.stookalert 1161 | from: 'off' 1162 | platform: state 1163 | to: 'on' 1164 | condition: [] 1165 | action: 1166 | - data: 1167 | message: Stookalert! Geen openhaard aan 1168 | target: '-366369357' 1169 | service: telegram_bot.send_message 1170 | - data: 1171 | message: https://www.rivm.nl/stookalert 1172 | target: '-366369357' 1173 | service: telegram_bot.send_message 1174 | - id: '1595162633275' 1175 | alias: Alarm - Pim away (person) 1176 | description: '' 1177 | trigger: 1178 | - entity_id: person.pim 1179 | from: home 1180 | platform: state 1181 | to: not_home 1182 | condition: 1183 | - condition: state 1184 | entity_id: person.joyce 1185 | state: not_home 1186 | action: 1187 | - data: 1188 | code: !secret alarm_pin 1189 | entity_id: alarm_control_panel.home_alarm 1190 | service: alarm_control_panel.alarm_arm_away 1191 | - data: 1192 | message: Alarm is set - Pim Phone away 1193 | service: telegram_bot.send_message 1194 | - service: light.turn_off 1195 | data: 1196 | entity_id: all 1197 | - service: switch.turn_off 1198 | data: 1199 | entity_id: 1200 | - switch.fireplace_basic_relay 1201 | - switch.frontdoor_switch_relay 1202 | - switch.livingroom_window_switch_switch 1203 | - switch.porch_basic_relay 1204 | - switch.sonoff_basic_relay 1205 | - switch.staircase_window_light_relay 1206 | mode: single 1207 | - id: '1595162713841' 1208 | alias: Alarm - Joyce away (person) 1209 | description: '' 1210 | trigger: 1211 | - entity_id: person.joyce 1212 | from: home 1213 | platform: state 1214 | to: not_home 1215 | condition: 1216 | - condition: state 1217 | entity_id: person.pim 1218 | state: not_home 1219 | action: 1220 | - data: 1221 | code: !secret alarm_pin 1222 | entity_id: alarm_control_panel.home_alarm 1223 | service: alarm_control_panel.alarm_arm_away 1224 | - data: 1225 | message: Alarm is set - Phone away Joyce 1226 | service: telegram_bot.send_message 1227 | - service: light.turn_off 1228 | data: 1229 | entity_id: all 1230 | - service: switch.turn_off 1231 | data: 1232 | entity_id: 1233 | - switch.fireplace_basic_relay 1234 | - switch.frontdoor_switch_relay 1235 | - switch.livingroom_window_switch_switch 1236 | - switch.porch_basic_relay 1237 | - switch.sonoff_basic_relay 1238 | - switch.staircase_window_light_relay 1239 | mode: single 1240 | - id: '1595164637608' 1241 | alias: Alarm - Pim home (person) 1242 | description: Disable alarm 1243 | trigger: 1244 | - entity_id: person.pim 1245 | event: enter 1246 | platform: zone 1247 | zone: zone.home 1248 | condition: [] 1249 | action: 1250 | - data: 1251 | code: !secret alarm_pin 1252 | entity_id: alarm_control_panel.home_alarm 1253 | service: alarm_control_panel.alarm_disarm 1254 | - data: 1255 | message: Alarm uit - Pim Thuis 1256 | service: telegram_bot.send_message 1257 | mode: single 1258 | - id: '1595164763010' 1259 | alias: Alarm - Joyce home (person) 1260 | description: '' 1261 | trigger: 1262 | - entity_id: person.joyce 1263 | event: enter 1264 | platform: zone 1265 | zone: zone.home 1266 | condition: [] 1267 | action: 1268 | - data: 1269 | code: !secret alarm_pin 1270 | entity_id: alarm_control_panel.home_alarm 1271 | service: alarm_control_panel.alarm_disarm 1272 | - data: 1273 | message: Alarm disabled Joyce thuis 1274 | service: telegram_bot.send_message 1275 | - id: '1596118187471' 1276 | alias: Joyce_kamer_motion 1277 | description: '' 1278 | trigger: 1279 | - device_id: ce5b788e27f24084a7f402225bef2639 1280 | domain: binary_sensor 1281 | entity_id: binary_sensor.joyce_kamermotion_ias_zone 1282 | platform: device 1283 | type: motion 1284 | condition: 1285 | - condition: state 1286 | entity_id: sun.sun 1287 | state: above_horizon 1288 | - condition: state 1289 | entity_id: input_boolean.bedtime 1290 | state: 'off' 1291 | action: 1292 | - data: {} 1293 | entity_id: light.joyce_lights_zha_group_0x0004 1294 | service: light.turn_on 1295 | - id: '1596118397645' 1296 | alias: Joyce_kamer_no-motion 1297 | description: '' 1298 | trigger: 1299 | - device_id: ce5b788e27f24084a7f402225bef2639 1300 | domain: binary_sensor 1301 | entity_id: binary_sensor.joyce_kamermotion_ias_zone 1302 | platform: device 1303 | type: no_motion 1304 | condition: [] 1305 | action: 1306 | - data: {} 1307 | entity_id: light.joyce_lights_zha_group_0x0004 1308 | service: light.turn_off 1309 | - id: '1596404278732' 1310 | alias: bathroom lights on remote 1311 | description: '' 1312 | trigger: 1313 | - platform: device 1314 | domain: mqtt 1315 | device_id: 63d99fbdffe411ea85ccdde3325f23da 1316 | type: click 1317 | subtype: left 1318 | discovery_id: 0x00158d000312d1f1 click_left 1319 | condition: [] 1320 | action: 1321 | - service: light.toggle 1322 | data: {} 1323 | entity_id: group.bathroom_group 1324 | mode: single 1325 | - id: '1596404317177' 1326 | alias: bathroom lights right remote 1327 | description: '' 1328 | trigger: 1329 | - platform: device 1330 | domain: mqtt 1331 | device_id: 63d99fbdffe411ea85ccdde3325f23da 1332 | type: action 1333 | subtype: single_right 1334 | discovery_id: 0x00158d000312d1f1 action_single_right 1335 | condition: [] 1336 | action: 1337 | - choose: 1338 | - conditions: 1339 | - condition: state 1340 | entity_id: group.bathroom 1341 | state: 'off' 1342 | sequence: 1343 | - type: turn_on 1344 | device_id: 1c1051ecffe411ea868f19cf1dae2ae2 1345 | entity_id: light.0x000b57fffec2a885_light 1346 | domain: light 1347 | brightness_pct: 10 1348 | - type: turn_on 1349 | device_id: e5641237ffe311eabd90b7bffba9f1a8 1350 | entity_id: light.0x90fd9ffffe08e345_light 1351 | domain: light 1352 | brightness_pct: 10 1353 | - conditions: 1354 | - condition: state 1355 | state: 'on' 1356 | entity_id: group.bathroom 1357 | sequence: 1358 | - service: script.increase_brightness 1359 | data: 1360 | group: light.bathroom_lights_group 1361 | default: [] 1362 | mode: single 1363 | - id: '1597693630222' 1364 | alias: Presence - Joyce home lights on 1365 | description: '' 1366 | trigger: 1367 | - entity_id: person.joyce 1368 | event: enter 1369 | platform: zone 1370 | zone: zone.home 1371 | condition: 1372 | - condition: state 1373 | entity_id: sun.sun 1374 | state: below_horizon 1375 | action: 1376 | - data: {} 1377 | entity_id: group.livingroom_group 1378 | service: light.turn_on 1379 | - id: '1599301836567' 1380 | alias: bedroom remote light on 1381 | description: '' 1382 | trigger: 1383 | - platform: device 1384 | domain: mqtt 1385 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1386 | type: action 1387 | subtype: button_1_single 1388 | discovery_id: 0x04cf8cdf3c797ed6 action_button_1_single 1389 | condition: [] 1390 | action: 1391 | - type: turn_on 1392 | device_id: 28a0bd4affe311eaa1ef035d5294c8e4 1393 | entity_id: light.0xccccccfffe2c31f7_light 1394 | domain: light 1395 | brightness_pct: 30 1396 | - type: turn_on 1397 | device_id: 2929ccb5ffe311ea9ea58d6828011474 1398 | entity_id: light.0xccccccfffec13e57_light 1399 | domain: light 1400 | brightness_pct: 30 1401 | mode: single 1402 | - id: '1599302671502' 1403 | alias: bedroom remote light off 1404 | description: '' 1405 | trigger: 1406 | - platform: device 1407 | domain: mqtt 1408 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1409 | type: action 1410 | subtype: button_2_single 1411 | discovery_id: 0x04cf8cdf3c797ed6 action_button_2_single 1412 | condition: [] 1413 | action: 1414 | - type: turn_off 1415 | device_id: 28a0bd4affe311eaa1ef035d5294c8e4 1416 | entity_id: light.0xccccccfffe2c31f7_light 1417 | domain: light 1418 | - type: turn_off 1419 | device_id: 2929ccb5ffe311ea9ea58d6828011474 1420 | entity_id: light.0xccccccfffec13e57_light 1421 | domain: light 1422 | mode: single 1423 | - id: '1599302893374' 1424 | alias: bedroom remote curtain open 1425 | description: '' 1426 | trigger: 1427 | - platform: device 1428 | domain: mqtt 1429 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1430 | type: action 1431 | subtype: button_3_single 1432 | discovery_id: 0x04cf8cdf3c797ed6 action_button_3_single 1433 | condition: [] 1434 | action: 1435 | - data: {} 1436 | entity_id: cover.blinds_bedroom 1437 | service: cover.open_cover 1438 | mode: single 1439 | - id: '1599302932492' 1440 | alias: bedroom remote curtain close 1441 | description: '' 1442 | trigger: 1443 | - platform: device 1444 | domain: mqtt 1445 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1446 | type: action 1447 | subtype: button_4_single 1448 | discovery_id: 0x04cf8cdf3c797ed6 action_button_4_single 1449 | condition: [] 1450 | action: 1451 | - data: {} 1452 | entity_id: cover.blinds_bedroom 1453 | service: cover.close_cover 1454 | mode: single 1455 | - id: '1599303016275' 1456 | alias: bedroom remote bedtime on 1457 | description: '' 1458 | trigger: 1459 | - platform: device 1460 | domain: mqtt 1461 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1462 | type: action 1463 | subtype: button_5_single 1464 | discovery_id: 0x04cf8cdf3c797ed6 action_button_5_single 1465 | condition: [] 1466 | action: 1467 | - data: {} 1468 | entity_id: input_boolean.bedtime 1469 | service: input_boolean.turn_on 1470 | - data: {} 1471 | entity_id: cover.blinds_bedroom 1472 | service: cover.close_cover 1473 | - data: 1474 | code: !secret alarm_pin 1475 | entity_id: alarm_control_panel.home_alarm 1476 | service: alarm_control_panel.alarm_arm_night 1477 | mode: single 1478 | - id: '1599303055558' 1479 | alias: bedroom remote alarm off 1480 | description: '' 1481 | trigger: 1482 | - platform: device 1483 | domain: mqtt 1484 | device_id: 0a027d84ffe511ea83fff5ae080283f1 1485 | type: action 1486 | subtype: button_6_single 1487 | discovery_id: 0x04cf8cdf3c797ed6 action_button_6_single 1488 | condition: [] 1489 | action: 1490 | - data: 1491 | code: !secret alarm_pin 1492 | entity_id: alarm_control_panel.home_alarm 1493 | service: alarm_control_panel.alarm_disarm 1494 | mode: single 1495 | - id: '1600083490750' 1496 | alias: Alarm - Pending 1497 | description: '' 1498 | trigger: 1499 | - entity_id: alarm_control_panel.home_alarm 1500 | platform: state 1501 | to: pending 1502 | condition: [] 1503 | action: 1504 | - data: 1505 | data: 1506 | actions: 1507 | - action: URI 1508 | title: Disable alarm 1509 | uri: /lovelace/14 1510 | - action: URI 1511 | title: Show camera 1512 | uri: /lovelace/7 1513 | clickAction: /lovelace/14 1514 | color: yellow 1515 | importance: urgent 1516 | sticky: 'true' 1517 | message: ALARM PENDING 1518 | service: notify.notify 1519 | - data: {} 1520 | entity_id: script.livingroom_tv_power 1521 | service: script.turn_on 1522 | mode: single 1523 | - id: '1600622771142' 1524 | alias: bathroom lights off remote 1525 | description: '' 1526 | trigger: 1527 | - platform: device 1528 | domain: mqtt 1529 | device_id: 63d99fbdffe411ea85ccdde3325f23da 1530 | type: click 1531 | subtype: both 1532 | discovery_id: 0x00158d000312d1f1 click_both 1533 | condition: [] 1534 | action: 1535 | - type: turn_off 1536 | device_id: e5641237ffe311eabd90b7bffba9f1a8 1537 | entity_id: light.0x90fd9ffffe08e345_light 1538 | domain: light 1539 | - type: turn_off 1540 | device_id: e5565579ffe311ea90b8a7117101b7ff 1541 | entity_id: light.0x90fd9ffffe6d296e_light 1542 | domain: light 1543 | - type: turn_off 1544 | device_id: 1c1051ecffe411ea868f19cf1dae2ae2 1545 | entity_id: light.0x000b57fffec2a885_light 1546 | domain: light 1547 | mode: single 1548 | - id: '1600872209625' 1549 | alias: office_light_first-button 1550 | description: '' 1551 | trigger: 1552 | - device_id: 34274952fca411ea9dd94d3af6f6b71f 1553 | domain: zha 1554 | platform: device 1555 | type: remote_button_short_press 1556 | subtype: button_1 1557 | condition: [] 1558 | action: 1559 | - type: toggle 1560 | device_id: a0f4207c5f4742b5b11d5d796757219d 1561 | entity_id: light.office_2 1562 | domain: light 1563 | mode: single 1564 | - id: '1601127151317' 1565 | alias: livingroom_couch_left-button 1566 | description: '' 1567 | trigger: 1568 | - platform: device 1569 | domain: mqtt 1570 | device_id: 2dc67a79ffd711ea8110e1f65861fbf9 1571 | type: click 1572 | subtype: left 1573 | discovery_id: 0x00158d0001e0a3f6 click_left 1574 | condition: [] 1575 | action: 1576 | - data: {} 1577 | service: cover.close_cover 1578 | entity_id: cover.livingroom_roller 1579 | mode: single 1580 | - id: '1601127175527' 1581 | alias: livingroom_couch_right-button 1582 | description: '' 1583 | trigger: 1584 | - platform: device 1585 | domain: mqtt 1586 | device_id: 2dc67a79ffd711ea8110e1f65861fbf9 1587 | type: click 1588 | subtype: right 1589 | discovery_id: 0x00158d0001e0a3f6 click_right 1590 | condition: [] 1591 | action: 1592 | - data: {} 1593 | service: cover.open_cover 1594 | entity_id: cover.livingroom_roller 1595 | mode: single 1596 | - id: '1601127199750' 1597 | alias: livingroom_couch_both-buttons 1598 | description: '' 1599 | trigger: 1600 | - platform: device 1601 | domain: mqtt 1602 | device_id: 2dc67a79ffd711ea8110e1f65861fbf9 1603 | type: click 1604 | subtype: both 1605 | discovery_id: 0x00158d0001e0a3f6 click_both 1606 | condition: [] 1607 | action: 1608 | - data: {} 1609 | service: cover.stop_cover 1610 | entity_id: cover.livingroom_roller 1611 | mode: single 1612 | - id: '1602451111484' 1613 | alias: bedroom_heatingblanket 1614 | description: '' 1615 | trigger: 1616 | - platform: device 1617 | type: turned_on 1618 | device_id: 01721c51feef343dbf6e6e3f45d69ee2 1619 | entity_id: switch.bedroom_bed_switch_l1 1620 | domain: switch 1621 | for: 1622 | hours: 1 1623 | minutes: 0 1624 | seconds: 0 1625 | condition: [] 1626 | action: 1627 | - type: turn_off 1628 | device_id: 01721c51feef343dbf6e6e3f45d69ee2 1629 | entity_id: switch.bedroom_bed_switch_l1 1630 | domain: switch 1631 | mode: single 1632 | - id: '1602574298377' 1633 | alias: Notify frontdoor open 1634 | description: '' 1635 | trigger: 1636 | - type: opened 1637 | platform: device 1638 | device_id: b93d1ee6ffe511eaae6795a2a5808e2d 1639 | entity_id: binary_sensor.0x00158d0003eef6c2_contact 1640 | domain: binary_sensor 1641 | for: 1642 | hours: 0 1643 | minutes: 5 1644 | seconds: 0 1645 | condition: [] 1646 | action: 1647 | - service: notify.notify 1648 | data: 1649 | message: Frontdoor is open 1650 | title: Frontdoor warning 1651 | mode: single 1652 | - id: '1603006641024' 1653 | alias: livingroom_dinner-table_left-button 1654 | description: '' 1655 | trigger: 1656 | - platform: device 1657 | domain: mqtt 1658 | device_id: 837b9b3006ec11ebb48335955a115863 1659 | type: action 1660 | subtype: single_left 1661 | discovery_id: 0x00158d0001e06eb2 action_single_left 1662 | condition: [] 1663 | action: 1664 | - type: turn_on 1665 | device_id: ff5886b8110a11eb98615bd267af77b5 1666 | entity_id: light.livingroom_diner_table_light_light 1667 | domain: light 1668 | brightness_pct: 10 1669 | - condition: device 1670 | type: is_on 1671 | device_id: ff5886b8110a11eb98615bd267af77b5 1672 | entity_id: light.livingroom_diner_table_light_light 1673 | domain: light 1674 | - type: turn_off 1675 | device_id: ff5886b8110a11eb98615bd267af77b5 1676 | entity_id: light.livingroom_diner_table_light_light 1677 | domain: light 1678 | mode: single 1679 | - id: '1603006686049' 1680 | alias: livingroom_dinner-table_right-button 1681 | description: '' 1682 | trigger: 1683 | - platform: device 1684 | domain: mqtt 1685 | device_id: 837b9b3006ec11ebb48335955a115863 1686 | type: action 1687 | subtype: single_right 1688 | discovery_id: 0x00158d0001e06eb2 action_single_right 1689 | condition: 1690 | - condition: device 1691 | type: is_on 1692 | device_id: ff5886b8110a11eb98615bd267af77b5 1693 | entity_id: light.livingroom_diner_table_light_light 1694 | domain: light 1695 | action: 1696 | - service: script.increase_brightness 1697 | data: 1698 | group: light.livingroom_diner_table_light_light 1699 | mode: single 1700 | - id: '1603008059517' 1701 | alias: livingroom_dinner-table_both-button 1702 | description: '' 1703 | trigger: 1704 | - platform: device 1705 | domain: mqtt 1706 | device_id: 837b9b3006ec11ebb48335955a115863 1707 | type: action 1708 | subtype: single_both 1709 | discovery_id: 0x00158d0001e06eb2 action_single_both 1710 | condition: [] 1711 | action: 1712 | - type: turn_off 1713 | device_id: ff5886b8110a11eb98615bd267af77b5 1714 | entity_id: light.livingroom_diner_table_light_light 1715 | domain: light 1716 | mode: single 1717 | - id: '1603115111966' 1718 | alias: washer done notification 1719 | description: '' 1720 | trigger: 1721 | - platform: state 1722 | entity_id: sensor.washing_machine_washer_machine_state 1723 | to: stop 1724 | condition: [] 1725 | action: 1726 | - service: notify.notify 1727 | data: 1728 | message: Washmachine klaar! 1729 | - service: media_player.volume_set 1730 | data: 1731 | volume_level: 0.3 1732 | entity_id: media_player.living_room_speaker 1733 | - service: tts.microsoft_say 1734 | data: 1735 | entity_id: media_player.living_room_speaker 1736 | message: Wasmachine is klaar. 1737 | mode: single 1738 | - id: '1603793652446' 1739 | alias: Motion bedroom (on) 1740 | description: '' 1741 | trigger: 1742 | - type: motion 1743 | platform: device 1744 | device_id: 08a20835182f11eb97cae99f87a017fd 1745 | entity_id: binary_sensor.bedroom_tv_motion_occupancy 1746 | domain: binary_sensor 1747 | condition: 1748 | - condition: numeric_state 1749 | entity_id: sensor.downstairs_hallway_ceiling_lux_illuminance_lux 1750 | attribute: illuminance_lux 1751 | below: '4' 1752 | - condition: state 1753 | entity_id: input_boolean.bedtime 1754 | state: 'off' 1755 | action: 1756 | - type: turn_on 1757 | device_id: 0f1dc25d2c5aaf2207c5a6fc97d74a17 1758 | entity_id: light.office_closet_light_light 1759 | domain: light 1760 | brightness_pct: 20 1761 | mode: single 1762 | - id: '1603793679989' 1763 | alias: Motion bedroom (off) 1764 | description: '' 1765 | trigger: 1766 | - type: no_motion 1767 | platform: device 1768 | device_id: 08a20835182f11eb97cae99f87a017fd 1769 | entity_id: binary_sensor.bedroom_tv_motion_occupancy 1770 | domain: binary_sensor 1771 | condition: [] 1772 | action: 1773 | - service: light.turn_off 1774 | data: {} 1775 | entity_id: light.office_closet_light_light 1776 | mode: single 1777 | - id: '1604930071670' 1778 | alias: weerhuisje_update 1779 | description: '' 1780 | trigger: 1781 | - platform: state 1782 | entity_id: sensor.weerhuisje_temperature 1783 | condition: [] 1784 | action: 1785 | - service: rest_command.send_luftdaten_pm 1786 | data: {} 1787 | - service: rest_command.send_luftdaten_tph 1788 | data: {} 1789 | mode: queued 1790 | max: 10 1791 | - id: '1605466526525' 1792 | alias: Livingroom Soundbar tv 1793 | description: Set the Soundbar to the correct channel. 1794 | trigger: 1795 | - platform: state 1796 | entity_id: media_player.livingroom_tv 1797 | from: 'off' 1798 | to: 'on' 1799 | condition: [] 1800 | action: 1801 | - service: media_player.select_source 1802 | data: 1803 | entity_id: media_player.lg_soundbar_3fb988f9_8ddf_4f72_a0fd_392653dbf76c 1804 | source: Optical 1805 | entity_id: media_player.lg_soundbar_4def0570_64b3_47ff_b3e2_6ffb36fdf06a 1806 | mode: single 1807 | - id: '1606582032363' 1808 | alias: Frontdoor_light_on 1809 | description: '' 1810 | trigger: 1811 | - platform: state 1812 | entity_id: sun.sun 1813 | to: below_horizon 1814 | condition: [] 1815 | action: 1816 | - type: turn_on 1817 | device_id: cfb95786a9b510d78ad7395f279d3f81 1818 | entity_id: light.frontdoor_light 1819 | domain: light 1820 | brightness_pct: 5 1821 | mode: single 1822 | - id: '1606582159994' 1823 | alias: Frontdoor_light_off 1824 | description: '' 1825 | trigger: 1826 | - platform: time 1827 | at: '22:30' 1828 | condition: [] 1829 | action: 1830 | - type: turn_off 1831 | device_id: cfb95786a9b510d78ad7395f279d3f81 1832 | entity_id: light.frontdoor_light 1833 | domain: light 1834 | mode: single 1835 | --------------------------------------------------------------------------------