├── .gitignore ├── README.md ├── apple_tv └── lounge.yaml ├── automation ├── Chester.yaml ├── Garage.yaml ├── doors.yaml ├── fpspc.yaml ├── kitchen.yaml ├── kitchen_motion.yaml ├── login_failure.yaml ├── lounge_motion.yaml ├── office_flood.yaml ├── office_motion.yaml ├── racingpc.yaml ├── themes.yaml └── update.yaml ├── binary_sensor ├── aurora.yaml └── iss.yaml ├── blink └── blink.yaml ├── camera ├── front.yaml ├── iss.yaml ├── kitchen.yaml ├── lounge.yaml ├── office.yaml ├── ring.yaml └── weather.yaml ├── configuration.yaml ├── customize.yaml ├── customize ├── binary_sensors.yaml ├── groups.yaml ├── lights.yaml ├── media_players.yaml ├── printers.yaml ├── sensors.yaml └── switches.yaml ├── device_tracker └── owntracks.yaml ├── discovery └── discovery.yaml ├── dyson └── dyson.yaml ├── entity_registry.yaml ├── firetv.yaml ├── floorplan └── floorplan.yaml ├── frontend └── frontend.yaml ├── group ├── all.yaml ├── back_garden.yaml ├── bedroom.yaml ├── chester.yaml ├── default.yaml ├── front_door.yaml ├── front_garden.yaml ├── garage.yaml ├── hall.yaml ├── home.yaml ├── kitchen.yaml ├── lounge.yaml ├── misc.yaml ├── office.yaml ├── server_room.yaml └── weather.yaml ├── groups.yaml ├── input ├── camera.yaml ├── fps.yaml └── racing.yaml ├── input_boolean └── camera.yaml ├── input_number └── camera.yaml ├── light ├── kitchen_bottom.yaml ├── lifx.yaml └── tv_backlight.yaml ├── logbook └── logbook.yaml ├── logger └── logger.yaml ├── mediaplayer ├── firetv.yaml ├── spotify.yaml └── tv.yaml ├── mqtt └── mqtt.yaml ├── notify ├── ios.yaml ├── pushover.yaml └── slack.yaml ├── panel_custom └── floorplan.yaml ├── panel_iframe ├── agsattrack.yaml └── dx.yaml ├── panels ├── cameras.html └── floorplan.html ├── platform ├── emulated_hue.yaml ├── ffmpeg.yaml ├── http.yaml ├── netatmo.yaml ├── ring.yaml ├── tts.yaml ├── upnp.yaml └── zwave.yaml ├── recorder └── recorder.yaml ├── router └── router.yaml ├── scenes └── racing.yaml ├── screenshots ├── ha-ag.png ├── ha-floorplan.png ├── ha-lounge.png └── ha-office.png ├── script ├── fps_pc.yaml ├── lounge_media.yaml └── racing_pc.yaml ├── scripts.yaml ├── sensor ├── commandline.yaml ├── cpuspeed.yaml ├── darksky.yaml ├── email.yaml ├── fail2ban.yaml ├── london_underground.yaml ├── moon.yaml ├── netatmo.yaml ├── printer.yaml ├── rest.yaml ├── ring.yaml ├── systemmonitor.yaml ├── template.yaml ├── uk_transport.yaml ├── uptime.yaml └── yr.yaml ├── shell ├── fpspc.yaml └── racingpc.yaml ├── speedtest └── speedtest.yaml ├── switch ├── broadlink.yaml ├── template.yaml └── wol.yaml ├── tplink └── tplink.yaml ├── ui-lovelace.yaml ├── ui └── ui.yaml ├── www ├── cat.png ├── custom_ui │ ├── floorplan │ │ ├── floorplan.css │ │ ├── floorplan.svg │ │ ├── ha-floorplan.html │ │ └── lib │ │ │ ├── jquery-3.2.1.min.js │ │ │ ├── moment.min.js │ │ │ └── svg-pan-zoom.min.js │ ├── state-card-custom-ui-es5.html │ ├── state-card-custom-ui-es5.html.gz │ ├── state-card-custom-ui.html │ └── state-card-custom-ui.html.gz ├── icon_ink_black.png ├── icon_ink_cyan.png ├── icon_ink_magenta.png └── icon_ink_yellow.png └── zones ├── zone_alex_work.yaml └── zone_rebecca_work.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | *.pid 2 | *.xml 3 | *.csr 4 | *.crt 5 | *.key 6 | OZW_Log.txt 7 | home-assistant.log 8 | home-assistant_v2.db 9 | *.db-journal 10 | deps 11 | tts 12 | secrets.yaml 13 | known_devices.yaml 14 | *.conf 15 | plex.conf 16 | phue.conf 17 | emulated_hue_ids.json 18 | harmony_media_room.conf 19 | pyozw.sqlite 20 | .* 21 | !/.gitignore 22 | !/.travis.yml 23 | html5_push_registrations.conf 24 | ip_bans.yaml 25 | /icloud/* 26 | .ring_cache.pickle 27 | zwcfg* 28 | zwscene.xml 29 | /automations.yaml 30 | /update.sh 31 | /www/custom_ui/state-card-custom-ui.html 32 | /www/custom_ui/state-card-custom-ui.html.gz 33 | /custom_components/customizer/ 34 | /appdaemon/* 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Home Automation # 2 | 3 | My configuration files for Home Assistant 4 | 5 | ## ScreenShots ## 6 | 7 | ![floorplan](screenshots/ha-floorplan.png "Floorplan Screenshot") 8 | 9 | 10 | ![lounge](screenshots/ha-lounge.png "Lounge Screenshot") 11 | 12 | 13 | ![office](screenshots/ha-office.png "Office Screenshot") 14 | 15 | 16 | ![Selfish Plug](screenshots/ha-ag.png "AgSattrack Screenshot") 17 | 18 | ## Hardware used ## 19 | 20 | + Raspberry Pi 21 | + Pi Official touch screen 22 | + [Pi Case](https://www.amazon.co.uk/SmartPi-Raspberry-Pi-Touchscreen-Enclosure/dp/B01MSH74DB) 23 | + [Home Assistant](https://home-assistant.io/) 24 | + [HomeBridge](https://github.com/nfarina/homebridge) 25 | + [Z-Wave Z-Stick Gen5](https://www.amazon.co.uk/gp/product/B00YETCNOE/) 26 | + [Neo Cool Cam Z-wave Water/Flood Sensor](https://www.amazon.co.uk/gp/product/B06XKN3X3F) 27 | + [TP Link HS110 Smart Plugs](https://www.amazon.co.uk/gp/product/B01IBUF48S/) 28 | + [Aeon Labs Multisensor 6 - Z-Wave Plus](https://www.amazon.co.uk/gp/product/B0141FQDJQ/) 29 | + [TP-Link NC450 PTZ Cameras](https://www.amazon.co.uk/gp/product/B01MDPCE6B/) 30 | + [Neo Cool Cam Z-wave Door/Window Sensor](https://www.amazon.co.uk/gp/product/B06XKQFQGN/) 31 | + [AEON ZW120 Gen5 Door and Window Sensor ](https://www.amazon.co.uk/gp/product/B0171GLI5Q/) 32 | + [Philips Hue Hub](https://www.amazon.co.uk/Philips-Personal-Wireless-Lighting-Automation/dp/B0152WXHVE/) 33 | + [Philips Hue Intelligent Motion Sensor](https://www.amazon.co.uk/Philips-Intelligent-Wireless-Lighting-Accessory/dp/B01KLWXL5C/) 34 | + [Philips Hue White and Colour Ambiance ](https://www.amazon.co.uk/Philips-Ambiance-Wireless-Lighting-Bayonet/dp/B01LVUZQNX/) 35 | + [ESP8266](https://www.adafruit.com/product/2471) 36 | + [XCSOURCE LD686 RGB LED Strip Controller](https://www.amazon.co.uk/gp/product/B01AA6221S/) 37 | + [E-JIAEN LED Strip 300LEDs SMD3528 RGB LED](https://www.amazon.co.uk/gp/product/B01HXXWP3G/) 38 | + [Ring Doorbell](https://ring.com/) 39 | + [Netatmo Weather Station](https://www.amazon.co.uk/gp/product/B01084QX9Y/) 40 | + [Netatmo Rain Gauge](https://www.amazon.co.uk/gp/product/B00J5OHDGG/) 41 | + [Netatmp Wind Gauge](https://www.amazon.co.uk/gp/product/B016OHME1A/) 42 | + [Netatmo Healthy Home Coach](https://www.amazon.co.uk/Netatmo-Healthy-Indoor-Climate-Monitor/dp/B01M67SMOZ/) 43 | + [Sonos Play 5](http://www.sonos.com/en-gb/home) 44 | + [Google Chromecast](https://www.google.com/intl/en_uk/chromecast/) 45 | + [Amazon Echo Show](https://www.amazon.co.uk/Introducing-Echo-Show-Black-Now-Alexa-Can-Show-You-Things/dp/B01KGEWACK) 46 | + [Amazon Echo's](https://www.amazon.co.uk/Amazon-SK705DI-Echo-Black/dp/B01GAGVIE4) 47 | + [Amazon Dot's](https://www.amazon.co.uk/Amazon-Echo-Dot-Generation-Black/dp/B01DFKBL68/) 48 | + [Google Home](https://madeby.google.com/home/) 49 | + [Google Home Mini](https://madeby.google.com/home/) 50 | + [Broadlink RM Mini 3](https://www.amazon.co.uk/gp/product/B01HPWMWCY/) 51 | + [Broadlink RM Pro](https://www.amazon.co.uk/d/Home-Audio-Video-Accessories/Broadlink-Automation-Learning-Universal-Control-Compatible-Smartphones/B01H6Y55QQ/) 52 | + [IPS Touch Screen](https://www.amazon.co.uk/gp/product/B073XDVX7R/) 53 | + [Power Line Adapters](https://www.amazon.co.uk/gp/product/B06XKKRDVR/) 54 | + [Control 4](https://www.control4.com/) 55 | + [Lifx Bulbs](https://uk.lifx.com/) 56 | + [Smarter Coffee Machine](https://smarter.am/coffee/) 57 | + [Logitech Harmony Remote](https://www.logitech.com/en-gb/harmony-universal-remotes) 58 | + [Dyson Fan](https://www.dyson.co.uk/fans-and-heaters.html) 59 | + [Blink Cameras](https://blinkforhome.co.uk/) 60 | 61 | ## Software/Plugins Used ## 62 | 63 | + [Raspbian](https://www.raspbian.org/) 64 | + [Home Assistant FloorPlan](https://github.com/pkozul/ha-floorplan) 65 | + [Lets Encrypt](https://home-assistant.io/docs/ecosystem/certificates/lets_encrypt/) 66 | + [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) 67 | + [Mosquitto](https://mosquitto.org/) 68 | + [MagicPlan](http://www.magic-plan.com/magicplan/) 69 | + [InkScape](https://inkscape.org/en/) -------------------------------------------------------------------------------- /apple_tv/lounge.yaml: -------------------------------------------------------------------------------- 1 | - name: Lounge Apple TV 2 | host: !secret lounge_ip 3 | login_id: !secret lounge_id 4 | start_off: true -------------------------------------------------------------------------------- /automation/Chester.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Boris Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.boris_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: device_tracker.alex 12 | state: not_home 13 | - condition: state 14 | entity_id: device_tracker.rebecca 15 | state: not_home 16 | action: 17 | service: notify.alex_notify 18 | data: 19 | message: "There is motion in the Boris's Room" 20 | 21 | - alias: 'Boris Motion Ended' 22 | trigger: 23 | platform: state 24 | entity_id: sensor.boris_motion 25 | from: 'Motion' 26 | to: 'No Motion' 27 | condition: 28 | condition: and 29 | conditions: 30 | - condition: state 31 | entity_id: device_tracker.alex 32 | state: not_home 33 | - condition: state 34 | entity_id: device_tracker.rebecca 35 | state: not_home 36 | action: 37 | service: notify.alex_notify 38 | data: 39 | message: "There is no motion in the Boris's Room" -------------------------------------------------------------------------------- /automation/Garage.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Garage Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.garage_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: device_tracker.alex 12 | state: not_home 13 | - condition: state 14 | entity_id: device_tracker.rebecca 15 | state: not_home 16 | action: 17 | service: notify.alex_notify 18 | data: 19 | message: "There is motion in the Garage" 20 | 21 | - alias: 'Garage Motion Ended' 22 | trigger: 23 | platform: state 24 | entity_id: sensor.garage_motion 25 | from: 'Motion' 26 | to: 'No Motion' 27 | condition: 28 | condition: and 29 | conditions: 30 | - condition: state 31 | entity_id: device_tracker.alex 32 | state: not_home 33 | - condition: state 34 | entity_id: device_tracker.rebecca 35 | state: not_home 36 | action: 37 | service: notify.alex_notify 38 | data: 39 | message: "There is no motion in the Garage" -------------------------------------------------------------------------------- /automation/doors.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Lounge Door Open' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.back_door 5 | from: 'Closed' 6 | to: 'Open' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: device_tracker.alex 12 | state: not_home 13 | - condition: state 14 | entity_id: device_tracker.rebecca 15 | state: not_home 16 | action: 17 | service: notify.alex_notify 18 | data: 19 | message: "The Lounge door is open" 20 | 21 | - alias: 'Lounge Door Closed' 22 | trigger: 23 | platform: state 24 | entity_id: sensor.back_door 25 | from: 'Open' 26 | to: 'Closed' 27 | condition: 28 | condition: and 29 | conditions: 30 | - condition: state 31 | entity_id: device_tracker.alex 32 | state: not_home 33 | - condition: state 34 | entity_id: device_tracker.rebecca 35 | state: not_home 36 | action: 37 | service: notify.alex_notify 38 | data: 39 | message: "The Lounge door is closed" 40 | 41 | - alias: 'Front Door Open' 42 | trigger: 43 | platform: state 44 | entity_id: sensor.front_door 45 | from: 'Closed' 46 | to: 'Open' 47 | condition: 48 | condition: and 49 | conditions: 50 | - condition: state 51 | entity_id: device_tracker.alex 52 | state: not_home 53 | - condition: state 54 | entity_id: device_tracker.rebecca 55 | state: not_home 56 | action: 57 | service: notify.alex_notify 58 | data: 59 | message: "The Front door is open" 60 | 61 | - alias: 'Front Door Closed' 62 | trigger: 63 | platform: state 64 | entity_id: sensor.front_door 65 | from: 'Open' 66 | to: 'Closed' 67 | condition: 68 | condition: and 69 | conditions: 70 | - condition: state 71 | entity_id: device_tracker.alex 72 | state: not_home 73 | - condition: state 74 | entity_id: device_tracker.rebecca 75 | state: not_home 76 | action: 77 | service: notify.alex_notify 78 | data: 79 | message: "The Front door is closed" 80 | 81 | - alias: 'Garage Door Open' 82 | trigger: 83 | platform: state 84 | entity_id: sensor.garage_door 85 | from: 'Closed' 86 | to: 'Open' 87 | condition: 88 | condition: and 89 | conditions: 90 | - condition: state 91 | entity_id: device_tracker.alex 92 | state: not_home 93 | - condition: state 94 | entity_id: device_tracker.rebecca 95 | state: not_home 96 | action: 97 | service: notify.alex_notify 98 | data: 99 | message: "The Garage door is open" 100 | 101 | - alias: 'Garage Door Closed' 102 | trigger: 103 | platform: state 104 | entity_id: sensor.garage_door 105 | from: 'Open' 106 | to: 'Closed' 107 | condition: 108 | condition: and 109 | conditions: 110 | - condition: state 111 | entity_id: device_tracker.alex 112 | state: not_home 113 | - condition: state 114 | entity_id: device_tracker.rebecca 115 | state: not_home 116 | action: 117 | service: notify.alex_notify 118 | data: 119 | message: "The Garage door is closed" -------------------------------------------------------------------------------- /automation/fpspc.yaml: -------------------------------------------------------------------------------- 1 | - alias: fpspc_restart 2 | trigger: 3 | platform: state 4 | entity_id: input_select.fpspc 5 | to: "Restart" 6 | action: 7 | - service: shell_command.restart_fpspc 8 | - alias: fpspc_shutdown 9 | trigger: 10 | platform: state 11 | entity_id: input_select.fpspc 12 | to: "Shutdown" 13 | action: 14 | - service: shell_command.shutdown_fpspc 15 | - alias: fpspc_sleep 16 | trigger: 17 | platform: state 18 | entity_id: input_select.fpspc 19 | to: "Sleep" 20 | action: 21 | - service: shell_command.sleep_fpspc 22 | - alias: fpspc_hibernate 23 | trigger: 24 | platform: state 25 | entity_id: input_select.fpspc 26 | to: "Hibernate" 27 | action: 28 | - service: shell_command.hibernate_fpspc 29 | -------------------------------------------------------------------------------- /automation/kitchen.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Kitchen Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.kitchen_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | condition: 8 | condition: and 9 | conditions: 10 | - condition: state 11 | entity_id: device_tracker.alex 12 | state: not_home 13 | - condition: state 14 | entity_id: device_tracker.rebecca 15 | state: not_home 16 | action: 17 | service: notify.alex_notify 18 | data: 19 | message: "There is motion in the Kitchen" 20 | 21 | - alias: 'Kitchen Motion Ended' 22 | trigger: 23 | platform: state 24 | entity_id: sensor.kitchen_motion 25 | from: 'Motion' 26 | to: 'No Motion' 27 | condition: 28 | condition: and 29 | conditions: 30 | - condition: state 31 | entity_id: device_tracker.alex 32 | state: not_home 33 | - condition: state 34 | entity_id: device_tracker.rebecca 35 | state: not_home 36 | action: 37 | service: notify.alex_notify 38 | data: 39 | message: "There is no motion in the Kitchen" -------------------------------------------------------------------------------- /automation/kitchen_motion.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Kitchen Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.kitchen_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | action: 8 | service: notify.alex_notify 9 | data: 10 | message: "There is motion in the Kitchen" 11 | 12 | - alias: 'Kitchen Motion Ended' 13 | trigger: 14 | platform: state 15 | entity_id: sensor.kitchen_motion 16 | from: 'Motion' 17 | to: 'No Motion' 18 | action: 19 | service: notify.alex_notify 20 | data: 21 | message: "There is no motion in the Kitchen" -------------------------------------------------------------------------------- /automation/login_failure.yaml: -------------------------------------------------------------------------------- 1 | - alias: Login Failure 2 | hide_entity: True 3 | trigger: 4 | platform: template 5 | value_template: "{{ states('persistent_notification.httplogin') != 'unknown' }}" 6 | 7 | action: 8 | service: notify.alex_notify 9 | data: 10 | message: "Invalid Login Attempt" -------------------------------------------------------------------------------- /automation/lounge_motion.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Lounge Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.lounge_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | action: 8 | service: notify.alex_notify 9 | data: 10 | message: "There is motion in the Lounge" 11 | 12 | - alias: 'Lounge Motion Ended' 13 | trigger: 14 | platform: state 15 | entity_id: sensor.lounge_motion 16 | from: 'Motion' 17 | to: 'No Motion' 18 | action: 19 | service: notify.alex_notify 20 | data: 21 | message: "There is no motion in the Lounge" -------------------------------------------------------------------------------- /automation/office_flood.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Office Flood' 2 | trigger: 3 | platform: numeric_state 4 | entity_id: sensor.neo_coolcam_water_leakage_detector_flood 5 | above: 0 6 | action: 7 | - service: notify.alex_notify 8 | data: 9 | message: "The office is flooding" 10 | 11 | - alias: 'Office Flood' 12 | trigger: 13 | platform: numeric_state 14 | entity_id: sensor.neo_coolcam_water_leakage_detector_flood 15 | below: 1 16 | action: 17 | - service: notify.alex_notify 18 | data: 19 | message: "The office is NOT flooding" -------------------------------------------------------------------------------- /automation/office_motion.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Office Motion Started' 2 | trigger: 3 | platform: state 4 | entity_id: sensor.office_motion 5 | from: 'No Motion' 6 | to: 'Motion' 7 | action: 8 | service: notify.alex_notify 9 | data: 10 | message: "There is motion in the Office" 11 | 12 | - alias: 'Office Motion Ended' 13 | trigger: 14 | platform: state 15 | entity_id: sensor.office_motion 16 | from: 'Motion' 17 | to: 'No Motion' 18 | action: 19 | service: notify.alex_notify 20 | data: 21 | message: "There is no motion in the Office" 22 | -------------------------------------------------------------------------------- /automation/racingpc.yaml: -------------------------------------------------------------------------------- 1 | - alias: racingpc_restart 2 | trigger: 3 | platform: state 4 | entity_id: input_select.racingpc 5 | to: "Restart" 6 | action: 7 | - service: shell_command.restart_racingpc 8 | - alias: racingpc_shutdown 9 | trigger: 10 | platform: state 11 | entity_id: input_select.racingpc 12 | to: "Shutdown" 13 | action: 14 | - service: shell_command.shutdown_racingpc 15 | - alias: racingpc_sleep 16 | trigger: 17 | platform: state 18 | entity_id: input_select.racingpc 19 | to: "Sleep" 20 | action: 21 | - service: shell_command.sleep_racingpc 22 | - alias: racingpc_hibernate 23 | trigger: 24 | platform: state 25 | entity_id: input_select.racingpc 26 | to: "Hibernate" 27 | action: 28 | - service: shell_command.hibernate_racingpc 29 | 30 | - alias: Boot Racing PC 31 | trigger: 32 | platform: state 33 | entity_id: switch.racing 34 | to: "onfff" 35 | action: 36 | service: notify.slacklogin 37 | data: 38 | message: "On" -------------------------------------------------------------------------------- /automation/themes.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Set dark theme for the night' 2 | initial_state: True 3 | trigger: 4 | - platform: time 5 | at: '21:00' 6 | action: 7 | - service: frontend.set_theme 8 | data: 9 | name: PmxMononight 10 | 11 | - alias: 'Set default theme for the day' 12 | initial_state: True 13 | trigger: 14 | - platform: time 15 | at: '06:00' 16 | action: 17 | - service: frontend.set_theme 18 | data: 19 | name: default -------------------------------------------------------------------------------- /automation/update.yaml: -------------------------------------------------------------------------------- 1 | - alias: 'Update Available Notifications' 2 | trigger: 3 | platform: state 4 | entity_id: updater.updater 5 | action: 6 | - service: notify.alex_notify 7 | data: 8 | message: "An Update Is Available For Home Assistant" -------------------------------------------------------------------------------- /binary_sensor/aurora.yaml: -------------------------------------------------------------------------------- 1 | - platform: aurora 2 | forecast_threshold: 75 -------------------------------------------------------------------------------- /binary_sensor/iss.yaml: -------------------------------------------------------------------------------- 1 | - platform: iss 2 | show_on_map: false -------------------------------------------------------------------------------- /blink/blink.yaml: -------------------------------------------------------------------------------- 1 | username: !secret blink_username 2 | password: !secret blink_password 3 | scan_interval: 300 4 | binary_sensors: 5 | monitored_conditions: 6 | - motion_enabled 7 | - motion_detected 8 | sensors: 9 | monitored_conditions: 10 | - battery 11 | - temperature 12 | - wifi_strength -------------------------------------------------------------------------------- /camera/front.yaml: -------------------------------------------------------------------------------- 1 | - platform: mjpeg 2 | mjpeg_url: !secret front_camera_url 3 | name: 'Front Garden' -------------------------------------------------------------------------------- /camera/iss.yaml: -------------------------------------------------------------------------------- 1 | - platform: generic 2 | name: ISS 3 | still_image_url: https://maps.googleapis.com/maps/api/staticmap?center={{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }}&zoom=5&size=500x500&maptype=roadmap&markers=color:blue%7Clabel:P%7C{{ states.binary_sensor.iss.attributes.lat }},{{ states.binary_sensor.iss.attributes.long }} 4 | limit_refetch_to_url_change: true -------------------------------------------------------------------------------- /camera/kitchen.yaml: -------------------------------------------------------------------------------- 1 | - platform: mjpeg 2 | mjpeg_url: !secret camera_kitchen_url 3 | still_image_url: !secret camera_kitchen_still 4 | username: !secret camera_kitchen_user 5 | password: !secret camera_kitchen_password 6 | authentication: digest 7 | name: 'Kitchen' 8 | 9 | # - platform: ffmpeg 10 | # input: !secret camera_kitchen_url_rtsp 11 | # name: 'Kitchen' -------------------------------------------------------------------------------- /camera/lounge.yaml: -------------------------------------------------------------------------------- 1 | - platform: mjpeg 2 | mjpeg_url: !secret camera_lounge_url 3 | still_image_url: !secret camera_lounge_still 4 | username: !secret camera_lounge_user 5 | password: !secret camera_lounge_password 6 | authentication: digest 7 | name: 'Lounge' 8 | 9 | # - platform: ffmpeg 10 | # input: !secret camera_lounge_url_rtsp 11 | # name: 'Lounge' -------------------------------------------------------------------------------- /camera/office.yaml: -------------------------------------------------------------------------------- 1 | - platform: foscam 2 | ip: !secret camera_office_ip 3 | username: !secret camera_office_user 4 | password: !secret camera_office_password 5 | name: Office -------------------------------------------------------------------------------- /camera/ring.yaml: -------------------------------------------------------------------------------- 1 | - platform: ring -------------------------------------------------------------------------------- /camera/weather.yaml: -------------------------------------------------------------------------------- 1 | - platform: generic 2 | name: EU Weather 3 | still_image_url: http://api.sat24.com/animated/EU/visual/2/GMT%20Standard%20Time/9105947 4 | limit_refetch_to_url_change: true -------------------------------------------------------------------------------- /configuration.yaml: -------------------------------------------------------------------------------- 1 | homeassistant: 2 | name: !secret ha_name 3 | latitude: !secret ha_lat 4 | longitude: !secret ha_lon 5 | elevation: !secret ha_el 6 | unit_system: metric 7 | time_zone: Europe/London 8 | customize: !include_dir_merge_named customize 9 | auth_providers: 10 | - type: legacy_api_password 11 | api_password: !secret api_password 12 | # customize_glob: !include ui/ui.yaml 13 | 14 | #customizer: 15 | # custom_ui: local 16 | 17 | frontend: !include frontend/frontend.yaml 18 | config: 19 | updater: 20 | conversation: 21 | history: 22 | sun: 23 | ios: 24 | upnp: !include platform/upnp.yaml 25 | logbook: !include logbook/logbook.yaml 26 | discovery: !include discovery/discovery.yaml 27 | zeroconf: 28 | map: 29 | 30 | system_health: 31 | ffmpeg: !include platform/ffmpeg.yaml 32 | recorder: !include recorder/recorder.yaml 33 | http: !include platform/http.yaml 34 | netatmo: !include platform/netatmo.yaml 35 | ring: !include platform/ring.yaml 36 | tts: !include platform/tts.yaml 37 | binary_sensor: !include_dir_merge_list binary_sensor 38 | sensor: !include_dir_merge_list sensor 39 | media_player: !include_dir_merge_list mediaplayer 40 | device_tracker: !include_dir_merge_list device_tracker 41 | camera: !include_dir_merge_list camera 42 | light: !include_dir_merge_list light 43 | automation: !include_dir_merge_list automation 44 | notify: !include_dir_merge_list notify 45 | switch: !include_dir_merge_list switch 46 | group: !include_dir_merge_named group 47 | zwave: !include platform/zwave.yaml 48 | input_select: !include_dir_merge_named input 49 | shell_command: !include_dir_merge_named shell 50 | panel_custom: !include_dir_merge_list panel_custom 51 | panel_iframe: !include_dir_merge_named panel_iframe 52 | scene: !include_dir_merge_list scenes 53 | logger: !include logger/logger.yaml 54 | apple_tv: !include apple_tv/lounge.yaml 55 | mqtt: !include mqtt/mqtt.yaml 56 | zone: !include zones/zone_alex_work.yaml 57 | zone 2: !include zones/zone_rebecca_work.yaml 58 | script: !include_dir_merge_named script 59 | emulated_hue: !include platform/emulated_hue.yaml 60 | asuswrt: !include router/router.yaml 61 | input_number: !include_dir_merge_named input_number 62 | input_boolean: !include_dir_merge_named input_boolean 63 | tplink: !include tplink/tplink.yaml 64 | speedtestdotnet: !include speedtest/speedtest.yaml 65 | dyson: !include dyson/dyson.yaml 66 | person: 67 | blink: !include blink/blink.yaml 68 | -------------------------------------------------------------------------------- /customize.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/customize.yaml -------------------------------------------------------------------------------- /customize/binary_sensors.yaml: -------------------------------------------------------------------------------- 1 | binary_sensor.neo_coolcam_doorwindow_detector_sensor: 2 | friendly_name: 'Back Door' 3 | hidden: True 4 | icon: mdi:glassdoor 5 | 6 | binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor: 7 | friendly_name: 'Garage Door' 8 | hidden: True 9 | icon: mdi:home-variant 10 | 11 | binary_sensor.neo_coolcam_doorwindow_detector_sensor_2: 12 | friendly_name: 'Front Door' 13 | hidden: True 14 | icon: mdi:home-variant -------------------------------------------------------------------------------- /customize/groups.yaml: -------------------------------------------------------------------------------- 1 | group.officeswitches: 2 | order: 1 3 | group.officelights: 4 | order: 2 5 | group.racingpc: 6 | order: 3 -------------------------------------------------------------------------------- /customize/lights.yaml: -------------------------------------------------------------------------------- 1 | group.all_lights: 2 | friendly_name: All Lights 3 | hidden: false -------------------------------------------------------------------------------- /customize/media_players.yaml: -------------------------------------------------------------------------------- 1 | media_player.kitchen_home: 2 | friendly_name: 'Google Home' 3 | 4 | media_player.lounge: 5 | friendly_name: 'Chromecast+' 6 | 7 | media_player.spotify: 8 | friendly_name: 'Spotify' 9 | 10 | media_player.office: 11 | friendly_name: 'Sonos' -------------------------------------------------------------------------------- /customize/printers.yaml: -------------------------------------------------------------------------------- 1 | # ink icons by rpitera: https://community.home-assistant.io/t/epson-wf-3540-ink-level-monitoring/21813/2 2 | sensor.epson_ink_level_black: 3 | entity_picture: /local/icon_ink_black.png 4 | sensor.epson_ink_level_magenta: 5 | entity_picture: /local/icon_ink_magenta.png 6 | sensor.epson_ink_level_yellow: 7 | entity_picture: /local/icon_ink_yellow.png 8 | sensor.epson_ink_level_cyan: 9 | entity_picture: /local/icon_ink_cyan.png -------------------------------------------------------------------------------- /customize/sensors.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Lounge 3 | # 4 | sensor.netatmo_indoor_temperature: 5 | friendly_name: 'Lounge Temperature' 6 | icon: mdi:thermometer-lines 7 | 8 | sensor.netatmo_indoor_humidity: 9 | friendly_name: 'Humidity' 10 | icon: mdi:water-percent 11 | 12 | sensor.netatmo_indoor_co2: 13 | friendly_name: 'CO2 Level' 14 | 15 | sensor.netatmo_indoor_noise: 16 | friendly_name: 'Noise Level' 17 | 18 | sensor.aeotec_zw100_multisensor_6_luminance: 19 | friendly_name: 'Light Level' 20 | icon: mdi:theme-light-dark 21 | 22 | sensor.aeotec_zw100_multisensor_6_ultraviolet: 23 | friendly_name: 'UV Level' 24 | icon: mdi:sunglasses 25 | 26 | sensor.lounge_motion: 27 | friendly_name: 'Lounge Motion' 28 | icon: mdi:walk 29 | 30 | switch.becs: 31 | friendly_name: 'Rebecca' 32 | emulated_hue_hidden: false 33 | emulated_hue_name: Becs 34 | icon: mdi:power-plug 35 | 36 | switch.alex: 37 | friendly_name: 'Alex' 38 | emulated_hue_hidden: false 39 | emulated_hue_name: Alex 40 | icon: mdi:power-plug 41 | 42 | media_player.ue55js8000_ue55js8000: 43 | friendly_name: 'TV' 44 | 45 | # 46 | # Kitchen 47 | # 48 | sensor.aeotec_zw100_multisensor_6_luminance_2: 49 | friendly_name: 'Light Level' 50 | icon: mdi:theme-light-dark 51 | 52 | sensor.aeotec_zw100_multisensor_6_ultraviolet_2: 53 | friendly_name: 'UV Level' 54 | icon: mdi:sunglasses 55 | 56 | sensor.kitchen_motion: 57 | friendly_name: 'Kitchen Motion' 58 | icon: mdi:walk 59 | 60 | sensor.aeotec_zw100_multisensor_6_relative_humidity_2: 61 | friendly_name: 'Humidity' 62 | icon: mdi:water-percent 63 | 64 | sensor.kitchen_temperature: 65 | friendly_name: 'Kitchen Temperature' 66 | icon: mdi:thermometer-lines 67 | 68 | # 69 | # Garage 70 | # 71 | switch.chargers: 72 | friendly_name: 'Chargers' 73 | icon: mdi:power-plug 74 | 75 | sensor.garage_motion: 76 | icon: mdi:walk 77 | 78 | sensor.garage_lux: 79 | friendly_name: 'Light Level' 80 | icon: mdi:theme-light-dark 81 | 82 | sensor.garage_temperature: 83 | friendly_name: 'Garage Temperature' 84 | icon: mdi:thermometer-lines 85 | 86 | # 87 | # Chesters Room 88 | # 89 | sensor.boris_motion: 90 | icon: mdi:walk 91 | 92 | sensor.boris_lux: 93 | friendly_name: 'Light Level' 94 | icon: mdi:theme-light-dark 95 | 96 | sensor.boris_temperature: 97 | friendly_name: 'Boris Temperature' 98 | icon: mdi:thermometer-lines 99 | 100 | # 101 | # Office 102 | # 103 | 104 | sensor.racingpc: 105 | icon: mdi:lan 106 | 107 | sensor.fpspc: 108 | icon: mdi:lan 109 | 110 | switch.racing: 111 | friendly_name: 'Racing PC' 112 | icon: mdi:power-plug 113 | 114 | switch.office_desk: 115 | friendly_name: 'Desk' 116 | icon: mdi:power-plug 117 | 118 | switch.racing_pc_wol: 119 | friendly_name: 'Racing WoL' 120 | icon: mdi:power-plug 121 | 122 | sensor.office_motion: 123 | friendly_name: 'Office Motion' 124 | icon: mdi:walk 125 | 126 | sensor.aeotec_zw100_multisensor_6_luminance_4: 127 | friendly_name: 'Light Level' 128 | icon: mdi:theme-light-dark 129 | 130 | sensor.aeotec_zw100_multisensor_6_ultraviolet_4: 131 | friendly_name: 'UV Level' 132 | icon: mdi:sunglasses 133 | 134 | sensor.aeotec_zw100_multisensor_6_relative_humidity_4: 135 | friendly_name: 'Humidity' 136 | icon: mdi:water-percent 137 | 138 | sensor.office_temperature: 139 | friendly_name: 'Office Temperature' 140 | icon: mdi:thermometer-lines 141 | 142 | sensor.neo_coolcam_water_leakage_detector_flood: 143 | friendly_name: 'Flood Sensor' 144 | icon: mdi:water 145 | 146 | # 147 | # Front Door 148 | # 149 | sensor.ring_last_ding: 150 | friendly_name: 'Last Ring' 151 | 152 | sensor.ring_last_motion: 153 | friendly_name: 'Last Motion' 154 | 155 | sensor.ring_front_door_last_activity: 156 | friendly_name: 'Last Activity' 157 | 158 | # 159 | # Hall 160 | # 161 | light.hall_1: 162 | friendly_name: 'Front Door' 163 | 164 | light.hall_2: 165 | friendly_name: 'Hall' 166 | 167 | sensor.hall_temperature: 168 | friendly_name: 'Temperature' 169 | icon: mdi:thermometer-lines 170 | 171 | sensor.aeotec_zw100_multisensor_6_luminance_3: 172 | friendly_name: 'Light Level' 173 | icon: mdi:theme-light-dark 174 | 175 | sensor.aeotec_zw100_multisensor_6_ultraviolet_3: 176 | friendly_name: 'UV Level' 177 | icon: mdi:sunglasses 178 | 179 | sensor.aeotec_zw100_multisensor_6_relative_humidity_3: 180 | friendly_name: 'Humidity' 181 | icon: mdi:water-percent 182 | 183 | # 184 | # Misc 185 | # 186 | sensor.ssl_cert_expiry: 187 | icon: mdi:lock 188 | 189 | # 190 | # Bedroom 191 | # 192 | sensor.aeotec_zw100_multisensor_6_luminance_5: 193 | friendly_name: 'Light Level' 194 | icon: mdi:theme-light-dark 195 | 196 | sensor.aeotec_zw100_multisensor_6_ultraviolet_5: 197 | friendly_name: 'UV Level' 198 | icon: mdi:sunglasses 199 | 200 | sensor.aeotec_zw100_multisensor_6_relative_humidity_5: 201 | friendly_name: 'Humidity' 202 | icon: mdi:water-percent 203 | 204 | sensor.bedroon_motion: 205 | friendly_name: 'Bedroom Motion' 206 | icon: mdi:walk 207 | 208 | sensor.bedroom_temperature: 209 | friendly_name: 'Bedroom Temperature' 210 | icon: mdi:thermometer-lines -------------------------------------------------------------------------------- /customize/switches.yaml: -------------------------------------------------------------------------------- 1 | group.all_switches: 2 | friendly_name: All Switches 3 | hidden: false 4 | 5 | switch.racing: 6 | friendly_name: Racing PC Power 7 | 8 | switch.office_air_con: 9 | friendly_name: Office Air Con 10 | icon: mdi:air-conditioner 11 | 12 | switch.racingpctemplate: 13 | emulated_hue_hidden: false 14 | emulated_hue_name: iRacing 15 | 16 | switch.templateloungeitv: 17 | emulated_hue_hidden: false 18 | emulated_hue_name: telly -------------------------------------------------------------------------------- /device_tracker/owntracks.yaml: -------------------------------------------------------------------------------- 1 | #- platform: owntracks 2 | 3 | - platform: asuswrt 4 | interval_seconds: 10 5 | consider_home: 180 6 | track_new_devices: yes -------------------------------------------------------------------------------- /discovery/discovery.yaml: -------------------------------------------------------------------------------- 1 | ignore: 2 | - apple_tv -------------------------------------------------------------------------------- /dyson/dyson.yaml: -------------------------------------------------------------------------------- 1 | username: !secret dyson_login 2 | password: !secret dyson_password 3 | language: GB 4 | timeout: 10 5 | retry: 5 6 | devices: 7 | - device_id: !secret dyson_fan_id 8 | device_ip: !secret dyson_fan_ip -------------------------------------------------------------------------------- /entity_registry.yaml: -------------------------------------------------------------------------------- 1 | remote.lounge_apple_tv: 2 | config_entry_id: 3 | name: 4 | platform: apple_tv 5 | unique_id: 67c3192e470b5c241bb8ac1b095828f1dbceff9f86e702685bde8f3de4c2be4c 6 | media_player.lounge_apple_tv: 7 | config_entry_id: 8 | name: 9 | platform: apple_tv 10 | unique_id: 67c3192e470b5c241bb8ac1b095828f1dbceff9f86e702685bde8f3de4c2be4c 11 | sensor.alex_iphone_battery_level: 12 | config_entry_id: 13 | name: 14 | platform: ios 15 | unique_id: level_alex_iphone 16 | sensor.alex_iphone_battery_state: 17 | config_entry_id: 18 | name: 19 | platform: ios 20 | unique_id: state_alex_iphone 21 | binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor: 22 | config_entry_id: 23 | name: 24 | platform: zwave 25 | unique_id: 2-72057594076463104 26 | sensor.aeotec_zw120_door_window_sensor_gen5_alarm_type: 27 | config_entry_id: 28 | name: 29 | platform: zwave 30 | unique_id: 2-72057594077528065 31 | sensor.aeotec_zw120_door_window_sensor_gen5_alarm_level: 32 | config_entry_id: 33 | name: 34 | platform: zwave 35 | unique_id: 2-72057594077528081 36 | sensor.aeotec_zw120_door_window_sensor_gen5_sourcenodeid: 37 | config_entry_id: 38 | name: 39 | platform: zwave 40 | unique_id: 2-72057594077528097 41 | sensor.aeotec_zw120_door_window_sensor_gen5_access_control: 42 | config_entry_id: 43 | name: 44 | platform: zwave 45 | unique_id: 2-72057594077528209 46 | sensor.aeotec_zw120_door_window_sensor_gen5_burglar: 47 | config_entry_id: 48 | name: 49 | platform: zwave 50 | unique_id: 2-72057594077528225 51 | binary_sensor.neo_coolcam_doorwindow_detector_sensor: 52 | config_entry_id: 53 | name: 54 | platform: zwave 55 | unique_id: 3-72057594093240320 56 | sensor.neo_coolcam_doorwindow_detector_alarm_type: 57 | config_entry_id: 58 | name: 59 | platform: zwave 60 | unique_id: 3-72057594094305281 61 | sensor.neo_coolcam_doorwindow_detector_alarm_level: 62 | config_entry_id: 63 | name: 64 | platform: zwave 65 | unique_id: 3-72057594094305297 66 | sensor.neo_coolcam_doorwindow_detector_sourcenodeid: 67 | config_entry_id: 68 | name: 69 | platform: zwave 70 | unique_id: 3-72057594094305313 71 | sensor.neo_coolcam_doorwindow_detector_access_control: 72 | config_entry_id: 73 | name: 74 | platform: zwave 75 | unique_id: 3-72057594094305425 76 | binary_sensor.neo_coolcam_doorwindow_detector_sensor_2: 77 | config_entry_id: 78 | name: 79 | platform: zwave 80 | unique_id: 4-72057594110017536 81 | sensor.neo_coolcam_doorwindow_detector_alarm_type_2: 82 | config_entry_id: 83 | name: 84 | platform: zwave 85 | unique_id: 4-72057594111082497 86 | sensor.neo_coolcam_doorwindow_detector_alarm_level_2: 87 | config_entry_id: 88 | name: 89 | platform: zwave 90 | unique_id: 4-72057594111082513 91 | sensor.neo_coolcam_doorwindow_detector_sourcenodeid_2: 92 | config_entry_id: 93 | name: 94 | platform: zwave 95 | unique_id: 4-72057594111082529 96 | sensor.neo_coolcam_doorwindow_detector_access_control_2: 97 | config_entry_id: 98 | name: 99 | platform: zwave 100 | unique_id: 4-72057594111082641 101 | binary_sensor.aeotec_zw100_multisensor_6_sensor: 102 | config_entry_id: 103 | name: 104 | platform: zwave 105 | unique_id: 5-72057594126794752 106 | sensor.aeotec_zw100_multisensor_6_temperature: 107 | config_entry_id: 108 | name: 109 | platform: zwave 110 | unique_id: 5-72057594126811154 111 | sensor.aeotec_zw100_multisensor_6_luminance: 112 | config_entry_id: 113 | name: 114 | platform: zwave 115 | unique_id: 5-72057594126811186 116 | sensor.aeotec_zw100_multisensor_6_relative_humidity: 117 | config_entry_id: 118 | name: 119 | platform: zwave 120 | unique_id: 5-72057594126811218 121 | sensor.aeotec_zw100_multisensor_6_ultraviolet: 122 | config_entry_id: 123 | name: 124 | platform: zwave 125 | unique_id: 5-72057594126811570 126 | sensor.aeotec_zw100_multisensor_6_alarm_type: 127 | config_entry_id: 128 | name: 129 | platform: zwave 130 | unique_id: 5-72057594127859713 131 | sensor.aeotec_zw100_multisensor_6_alarm_level: 132 | config_entry_id: 133 | name: 134 | platform: zwave 135 | unique_id: 5-72057594127859729 136 | sensor.aeotec_zw100_multisensor_6_sourcenodeid: 137 | config_entry_id: 138 | name: 139 | platform: zwave 140 | unique_id: 5-72057594127859745 141 | sensor.aeotec_zw100_multisensor_6_burglar: 142 | config_entry_id: 143 | name: 144 | platform: zwave 145 | unique_id: 5-72057594127859873 146 | binary_sensor.aeotec_zw100_multisensor_6_sensor_2: 147 | config_entry_id: 148 | name: 149 | platform: zwave 150 | unique_id: 6-72057594143571968 151 | sensor.aeotec_zw100_multisensor_6_temperature_2: 152 | config_entry_id: 153 | name: 154 | platform: zwave 155 | unique_id: 6-72057594143588370 156 | sensor.aeotec_zw100_multisensor_6_luminance_2: 157 | config_entry_id: 158 | name: 159 | platform: zwave 160 | unique_id: 6-72057594143588402 161 | sensor.aeotec_zw100_multisensor_6_relative_humidity_2: 162 | config_entry_id: 163 | name: 164 | platform: zwave 165 | unique_id: 6-72057594143588434 166 | sensor.aeotec_zw100_multisensor_6_ultraviolet_2: 167 | config_entry_id: 168 | name: 169 | platform: zwave 170 | unique_id: 6-72057594143588786 171 | sensor.aeotec_zw100_multisensor_6_alarm_type_2: 172 | config_entry_id: 173 | name: 174 | platform: zwave 175 | unique_id: 6-72057594144636929 176 | sensor.aeotec_zw100_multisensor_6_alarm_level_2: 177 | config_entry_id: 178 | name: 179 | platform: zwave 180 | unique_id: 6-72057594144636945 181 | sensor.aeotec_zw100_multisensor_6_sourcenodeid_2: 182 | config_entry_id: 183 | name: 184 | platform: zwave 185 | unique_id: 6-72057594144636961 186 | sensor.aeotec_zw100_multisensor_6_burglar_2: 187 | config_entry_id: 188 | name: 189 | platform: zwave 190 | unique_id: 6-72057594144637089 191 | binary_sensor.neo_coolcam_water_leakage_detector_sensor: 192 | config_entry_id: 193 | name: 194 | platform: zwave 195 | unique_id: 7-72057594160349184 196 | sensor.neo_coolcam_water_leakage_detector_alarm_type: 197 | config_entry_id: 198 | name: 199 | platform: zwave 200 | unique_id: 7-72057594161414145 201 | sensor.neo_coolcam_water_leakage_detector_alarm_level: 202 | config_entry_id: 203 | name: 204 | platform: zwave 205 | unique_id: 7-72057594161414161 206 | sensor.neo_coolcam_water_leakage_detector_sourcenodeid: 207 | config_entry_id: 208 | name: 209 | platform: zwave 210 | unique_id: 7-72057594161414177 211 | sensor.neo_coolcam_water_leakage_detector_flood: 212 | config_entry_id: 213 | name: 214 | platform: zwave 215 | unique_id: 7-72057594161414273 216 | light.lounge_spot: 217 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 218 | name: 219 | platform: hue 220 | unique_id: 00:17:88:01:02:30:23:1d-0b 221 | light.kitchen_1: 222 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 223 | name: 224 | platform: hue 225 | unique_id: 00:17:88:01:02:20:5c:c3-0b 226 | light.hall_1: 227 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 228 | name: 229 | platform: hue 230 | unique_id: 00:17:88:01:02:79:5b:61-0b 231 | light.office: 232 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 233 | name: 234 | platform: hue 235 | unique_id: 00:17:88:01:02:73:99:57-0b 236 | light.hall_2: 237 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 238 | name: 239 | platform: hue 240 | unique_id: 00:17:88:01:02:79:60:34-0b 241 | light.kitchen_3: 242 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 243 | name: 244 | platform: hue 245 | unique_id: 00:17:88:01:02:38:bf:01-0b 246 | light.kitchen_lightstrip: 247 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 248 | name: 249 | platform: hue 250 | unique_id: 00:17:88:01:02:15:a0:0b-0b 251 | light.bedroom: 252 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 253 | name: 254 | platform: hue 255 | unique_id: 00:17:88:01:02:7b:5a:15-0b 256 | light.lounge_lamp_2: 257 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 258 | name: 259 | platform: hue 260 | unique_id: 00:17:88:01:02:88:6f:32-0b 261 | light.kitchen_2: 262 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 263 | name: 264 | platform: hue 265 | unique_id: 00:17:88:01:02:38:be:f2-0b 266 | light.lounge_2: 267 | config_entry_id: 0f79a6fc51b2400392922868da1d4dec 268 | name: 269 | platform: hue 270 | unique_id: 00:17:88:01:02:7b:02:26-0b 271 | binary_sensor.aeotec_zw100_multisensor_6_sensor_3: 272 | config_entry_id: 273 | name: 274 | platform: zwave 275 | unique_id: 8-72057594177126400 276 | sensor.aeotec_zw100_multisensor_6_temperature_3: 277 | config_entry_id: 278 | name: 279 | platform: zwave 280 | unique_id: 8-72057594177142802 281 | sensor.aeotec_zw100_multisensor_6_luminance_3: 282 | config_entry_id: 283 | name: 284 | platform: zwave 285 | unique_id: 8-72057594177142834 286 | sensor.aeotec_zw100_multisensor_6_relative_humidity_3: 287 | config_entry_id: 288 | name: 289 | platform: zwave 290 | unique_id: 8-72057594177142866 291 | sensor.aeotec_zw100_multisensor_6_ultraviolet_3: 292 | config_entry_id: 293 | name: 294 | platform: zwave 295 | unique_id: 8-72057594177143218 296 | sensor.aeotec_zw100_multisensor_6_alarm_type_3: 297 | config_entry_id: 298 | name: 299 | platform: zwave 300 | unique_id: 8-72057594178191361 301 | sensor.aeotec_zw100_multisensor_6_alarm_level_3: 302 | config_entry_id: 303 | name: 304 | platform: zwave 305 | unique_id: 8-72057594178191377 306 | sensor.aeotec_zw100_multisensor_6_sourcenodeid_3: 307 | config_entry_id: 308 | name: 309 | platform: zwave 310 | unique_id: 8-72057594178191393 311 | sensor.aeotec_zw100_multisensor_6_burglar_3: 312 | config_entry_id: 313 | name: 314 | platform: zwave 315 | unique_id: 8-72057594178191521 316 | binary_sensor.aeotec_zw100_multisensor_6_sensor_4: 317 | config_entry_id: 318 | name: 319 | platform: zwave 320 | unique_id: 9-72057594193903616 321 | sensor.aeotec_zw100_multisensor_6_temperature_4: 322 | config_entry_id: 323 | name: 324 | platform: zwave 325 | unique_id: 9-72057594193920018 326 | sensor.aeotec_zw100_multisensor_6_luminance_4: 327 | config_entry_id: 328 | name: 329 | platform: zwave 330 | unique_id: 9-72057594193920050 331 | sensor.aeotec_zw100_multisensor_6_relative_humidity_4: 332 | config_entry_id: 333 | name: 334 | platform: zwave 335 | unique_id: 9-72057594193920082 336 | sensor.aeotec_zw100_multisensor_6_tank_capacity: 337 | config_entry_id: 338 | name: 339 | platform: zwave 340 | unique_id: 9-72057594193920306 341 | sensor.aeotec_zw100_multisensor_6_ultraviolet_4: 342 | config_entry_id: 343 | name: 344 | platform: zwave 345 | unique_id: 9-72057594193920434 346 | sensor.aeotec_zw100_multisensor_6_alarm_type_4: 347 | config_entry_id: 348 | name: 349 | platform: zwave 350 | unique_id: 9-72057594194968577 351 | sensor.aeotec_zw100_multisensor_6_alarm_level_4: 352 | config_entry_id: 353 | name: 354 | platform: zwave 355 | unique_id: 9-72057594194968593 356 | sensor.aeotec_zw100_multisensor_6_sourcenodeid_4: 357 | config_entry_id: 358 | name: 359 | platform: zwave 360 | unique_id: 9-72057594194968609 361 | sensor.aeotec_zw100_multisensor_6_burglar_4: 362 | config_entry_id: 363 | name: 364 | platform: zwave 365 | unique_id: 9-72057594194968737 366 | binary_sensor.aeotec_zw100_multisensor_6_sensor_5: 367 | config_entry_id: 368 | name: 369 | platform: zwave 370 | unique_id: 10-72057594210680832 371 | sensor.aeotec_zw100_multisensor_6_temperature_5: 372 | config_entry_id: 373 | name: 374 | platform: zwave 375 | unique_id: 10-72057594210697234 376 | sensor.aeotec_zw100_multisensor_6_luminance_5: 377 | config_entry_id: 378 | name: 379 | platform: zwave 380 | unique_id: 10-72057594210697266 381 | sensor.aeotec_zw100_multisensor_6_relative_humidity_5: 382 | config_entry_id: 383 | name: 384 | platform: zwave 385 | unique_id: 10-72057594210697298 386 | sensor.aeotec_zw100_multisensor_6_ultraviolet_5: 387 | config_entry_id: 388 | name: 389 | platform: zwave 390 | unique_id: 10-72057594210697650 391 | sensor.aeotec_zw100_multisensor_6_alarm_type_5: 392 | config_entry_id: 393 | name: 394 | platform: zwave 395 | unique_id: 10-72057594211745793 396 | sensor.aeotec_zw100_multisensor_6_alarm_level_5: 397 | config_entry_id: 398 | name: 399 | platform: zwave 400 | unique_id: 10-72057594211745809 401 | sensor.aeotec_zw100_multisensor_6_sourcenodeid_5: 402 | config_entry_id: 403 | name: 404 | platform: zwave 405 | unique_id: 10-72057594211745825 406 | sensor.aeotec_zw100_multisensor_6_burglar_5: 407 | config_entry_id: 408 | name: 409 | platform: zwave 410 | unique_id: 10-72057594211745953 411 | media_player.office: 412 | config_entry_id: 413 | name: 414 | platform: sonos 415 | unique_id: RINCON_5CAAFD02113C01400 416 | light.chester_light: 417 | config_entry_id: 418 | name: 419 | platform: lifx 420 | unique_id: d0:73:d5:24:5b:c0 421 | sensor.aeotec_zw100_multisensor_6_direction: 422 | config_entry_id: 423 | name: 424 | platform: zwave 425 | unique_id: 9-72057594193920114 426 | sensor.aeotec_zw100_multisensor_6_general: 427 | config_entry_id: 428 | name: 429 | platform: zwave 430 | unique_id: 8-72057594177142818 431 | zwave.aeotec_zw090_zstick_gen5_eu: 432 | config_entry_id: 433 | name: 434 | platform: zwave 435 | unique_id: node-1 436 | zwave.aeotec_zw120_door_window_sensor_gen5: 437 | config_entry_id: 438 | name: 439 | platform: zwave 440 | unique_id: node-2 441 | zwave.neo_coolcam_doorwindow_detector: 442 | config_entry_id: 443 | name: 444 | platform: zwave 445 | unique_id: node-3 446 | zwave.neo_coolcam_doorwindow_detector_2: 447 | config_entry_id: 448 | name: 449 | platform: zwave 450 | unique_id: node-4 451 | zwave.aeotec_zw100_multisensor_6: 452 | config_entry_id: 453 | name: 454 | platform: zwave 455 | unique_id: node-5 456 | zwave.aeotec_zw100_multisensor_6_2: 457 | config_entry_id: 458 | name: 459 | platform: zwave 460 | unique_id: node-6 461 | zwave.neo_coolcam_water_leakage_detector: 462 | config_entry_id: 463 | name: 464 | platform: zwave 465 | unique_id: node-7 466 | zwave.aeotec_zw100_multisensor_6_3: 467 | config_entry_id: 468 | name: 469 | platform: zwave 470 | unique_id: node-8 471 | zwave.aeotec_zw100_multisensor_6_4: 472 | config_entry_id: 473 | name: 474 | platform: zwave 475 | unique_id: node-9 476 | zwave.aeotec_zw100_multisensor_6_5: 477 | config_entry_id: 478 | name: 479 | platform: zwave 480 | unique_id: node-10 481 | media_player.kitchen_home: 482 | config_entry_id: 919a4665b4e04b5fa619545afca0431f 483 | name: 484 | platform: cast 485 | unique_id: 66ff8a50-dd2a-732e-7ccf-d85d7be5c785 486 | media_player.lounge: 487 | config_entry_id: 919a4665b4e04b5fa619545afca0431f 488 | name: 489 | platform: cast 490 | unique_id: 093846bc-58e2-99fa-abfa-78470e09de6f 491 | media_player.den_speaker: 492 | config_entry_id: 919a4665b4e04b5fa619545afca0431f 493 | name: 494 | platform: cast 495 | unique_id: 4e0dd920-f039-0c81-3d04-3272d708042c 496 | -------------------------------------------------------------------------------- /firetv.yaml: -------------------------------------------------------------------------------- 1 | devices: 2 | lounge: 3 | host: 192.168.1.59:5555 4 | bedroom: 5 | host: 192.168.1.69:5555 -------------------------------------------------------------------------------- /floorplan/floorplan.yaml: -------------------------------------------------------------------------------- 1 | name: Home Floorplan 2 | image: /local/custom_ui/floorplan/floorplan.svg 3 | stylesheet: /local/custom_ui/floorplan/floorplan.css 4 | pan_zoom: 5 | groups: 6 | - name: Lights 7 | entities: 8 | - light.kitchen_1 9 | - light.kitchen_2 10 | - light.kitchen_3 11 | - light.office 12 | - light.lounge 13 | - light.bedroom 14 | - light.hall_1 15 | - light.hall_2 16 | states: 17 | - state: 'on' 18 | class: 'light-on' 19 | - state: 'off' 20 | class: 'light-off' 21 | 22 | - name: Strip Lights 23 | entities: 24 | - light.kitchen_bottom 25 | - light.kitchen_lightstrip 26 | states: 27 | - state: 'on' 28 | class: 'strip-light-on' 29 | - state: 'off' 30 | class: 'strip-light-off' 31 | 32 | - name: Cameras 33 | entities: 34 | - camera.lounge 35 | - camera.kitchen 36 | - camera.office 37 | - camera.front_garden 38 | states: 39 | - state: 'idle' 40 | class: 'camera-idle' 41 | 42 | - name: Switches 43 | entities: 44 | - switch.becs 45 | - switch.alex 46 | - switch.pi_server 47 | - switch.racing 48 | - switch.office_desk 49 | - switch.chargers 50 | - switch.front_camera 51 | states: 52 | - state: 'on' 53 | class: 'switch-on' 54 | - state: 'off' 55 | class: 'switch-off' 56 | action: 57 | service: toggle 58 | 59 | - name: PC 60 | entities: 61 | - sensor.racingpc 62 | - sensor.fpspc 63 | states: 64 | - state: 'Offline' 65 | class: 'pc-on' 66 | - state: 'Online' 67 | class: 'pc-off' 68 | 69 | - name: Motion 70 | entities: 71 | - sensor.lounge_motion 72 | - sensor.kitchen_motion 73 | - sensor.boris_motion 74 | - sensor.office_motion 75 | - sensor.garage_motion 76 | states: 77 | - state: 'No Motion' 78 | class: 'motion-none' 79 | - state: 'Motion' 80 | class: 'motion-motion' 81 | 82 | - name: Media Players 83 | entities: 84 | - media_player.office 85 | 86 | - name: Netatmo Env 87 | entities: 88 | - sensor.netatmo_indoor_temperature 89 | - sensor.netatmo_indoor_humidity 90 | 91 | - name: Outdoor Temp 92 | entities: 93 | - sensor.netatmo_outdoor_temperature 94 | text_template: '${entity.state ? entity.state : "unknown"}' 95 | 96 | - name: Outdoor Humidity 97 | entities: 98 | - sensor.netatmo_outdoor_humidity 99 | text_template: '${entity.state ? entity.state : "unknown"}' 100 | 101 | - name: Outdoor Rainfall 102 | entities: 103 | - sensor.netatmo_rain_rain 104 | text_template: '${entity.state ? entity.state : "unknown"}' -------------------------------------------------------------------------------- /frontend/frontend.yaml: -------------------------------------------------------------------------------- 1 | themes: 2 | PmxMononight: 3 | # MyVariables 4 | 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 5 | base-sat: '16%' #Controls the saturation of the theme (0%-100%) | 0%=Grey 100%=Full Saturation 6 | # MyVar 7 | huesat: 'var(--base-hue), var(--base-sat),' 8 | # Primary Color 9 | primary-color: 'hsl(var(--huesat) 20%)' 10 | # Backgrounds 11 | primary-background-color: 'var(--primary-color)' 12 | secondary-background-color: 'hsl(var(--huesat) 16%)' 13 | paper-listbox-background-color: 'var(--primary-color)' 14 | paper-card-background-color: 'hsl(var(--huesat) 12%)' 15 | paper-dialog-background-color: 'var(--paper-card-background-color)' 16 | table-row-background-color: 'hsl(var(--huesat) 12%)' 17 | table-row-alternative-background-color: 'hsl(var(--huesat) 10%)' 18 | # Devider 19 | divider-color: 'hsla(0, 0%, 0%, 0)' 20 | dark-divider-opacity: '0' 21 | light-divider-opacity: '0' 22 | # Text colors 23 | primary-text-color: 'hsl(var(--huesat) 60%)' 24 | text-primary-color: 'hsl(var(--huesat) 60%)' 25 | secondary-text-color: 'hsl(var(--huesat) 60%)' 26 | disabled-text-color: 'hsl(var(--huesat) 70%)' 27 | sidebar-text_-_color: 'hsl(var(--huesat) 90%)' 28 | sidebar-text-color: 'hsl(var(--huesat) 90%)' 29 | paper-card-header-color: 'hsl(var(--base-hue), 90%, 50%)' 30 | # Text Adjustments 31 | paper-font-headline_-_letter-spacing: '-0.5px' 32 | paper-font-headline_-_font-weight: '500' 33 | paper-font-body1_-_font-weight: '500' 34 | # Nav Menu 35 | paper-listbox-color: 'hsl(var(--huesat) 50%)' 36 | paper-grey-50: 'hsl(var(--huesat) 50%)' 37 | paper-grey-200: 'hsla(var(--huesat) 26%)' 38 | # Paper card 39 | paper-item-icon-color: 'hsl(var(--huesat) 30%)' 40 | paper-item-icon-active-color: 'var(--paper-item-icon-color)' 41 | paper-item-icon_-_color: 'var(--paper-item-icon-color)' 42 | paper-item-selected_-_background-color: 'hsla(0, 0%, 0%, 0.2)' 43 | paper-tabs-selection-bar-color: 'hsla(0, 0%, 0%, 0.2)' 44 | # Labels 45 | label-badge-red: 'hsla(0, 0%, 0%, 0)' 46 | label-badge-border-color: 'var(--label-badge-red)' 47 | label-badge-background-color: 'var(--paper-card-background-color)' 48 | label-badge-text-color: 'var(--primary-text-color)' 49 | # Shadows 50 | shadow-elevation-2dp_-_box-shadow: 'inset 0px 0px 0px 4px hsl(var(--huesat) 18%)' 51 | shadow-elevation-16dp_-_box-shadow: 'inset 0px 0px 0px 4px hsl(var(--huesat) 28%)' 52 | # Switches 53 | paper-toggle-button-checked-button-color: 'hsl(var(--base-hue), 90%, 50%)' 54 | paper-toggle-button-checked-bar-color: 'hsl(var(--huesat) 25%)' 55 | paper-toggle-button-unchecked-button-color: 'hsl(var(--huesat) 25%)' 56 | paper-toggle-button-unchecked-bar-color: 'hsl(var(--huesat) 5%)' 57 | # Sliders 58 | paper-slider-knob-color: 'hsl(var(--base-hue), 90%, 50%)' 59 | paper-slider-knob-start-color: 'hsl(var(--base-hue), 80%, 25%)' 60 | paper-slider-pin-color: 'hsl(var(--base-hue), 90%, 50%)' 61 | paper-slider-active-color: 'hsl(var(--base-hue), 90%, 50%)' 62 | paper-slider-container-color: 'hsl(var(--huesat) 28%)' 63 | paper-slider-secondary-color: 'hsl(var(--huesat) 90%)' 64 | paper-slider-disabled-active-color: 'hsl(var(--base-hue), 80%, 25%)' 65 | paper-slider-disabled-secondary-color: 'hsl(var(--base-hue), 80%, 25%)' 66 | paper-dialog-color: 'hsl(var(--base-hue), 20%, 80%)' 67 | 68 | PmxMonolight: 69 | # MyVar 70 | huesat: '0, 0%,' 71 | # Primary Color 72 | primary-color: 'hsl(var(--huesat) 80%)' 73 | dark-primary-color: 'hsl(var(--huesat) 20%)' 74 | light-primary-color: 'hsl(var(--huesat) 90%)' 75 | accent-color: 'hsl(var(--huesat) 30%)' 76 | # Backgrounds 77 | primary-background-color: 'var(--primary-color)' 78 | secondary-background-color: 'hsl(var(--huesat) 86%)' 79 | paper-listbox-background-color: 'var(--primary-color)' 80 | paper-card-background-color: 'hsl(var(--huesat) 90%)' 81 | paper-dialog-background-color: 'var(--paper-card-background-color)' 82 | table-row-background-color: 'hsl(var(--huesat) 88%)' 83 | table-row-alternative-background-color: 'hsl(var(--huesat) 90%)' 84 | # Devider 85 | divider-color: 'hsla(0, 0%, 0%, 0)' 86 | dark-divider-opacity: '0' 87 | light-divider-opacity: '0' 88 | dark-secondary-opacity: '0.4' 89 | # Text colors 90 | primary-text-color: 'hsl(var(--huesat) 46%)' 91 | text-primary-color: 'hsl(var(--huesat) 46%)' 92 | secondary-text-color: 'hsl(var(--huesat) 56%)' 93 | disabled-text-color: 'hsl(var(--huesat) 30%)' 94 | sidebar-text_-_color: 'hsl(var(--huesat) 5%)' 95 | sidebar-text-color: 'hsl(var(--huesat) 5%)' 96 | paper-card-header-color: 'hsl(hsl(var(--huesat) 50%)' 97 | paper-button-ink-color: 'hsl(hsl(var(--huesat) 50%)' 98 | # Text Adjustments 99 | paper-font-headline_-_letter-spacing: '-0.5px' 100 | paper-font-headline_-_font-weight: '500' 101 | paper-font-body1_-_font-weight: '500' 102 | # Nav Menu 103 | paper-listbox-color: 'hsl(var(--huesat) 50%)' 104 | paper-grey-50: 'hsl(var(--huesat) 40%)' 105 | paper-grey-200: 'hsl(var(--huesat) 72%)' 106 | # Paper card 107 | paper-item-icon-color: 'hsl(var(--huesat) 70%)' 108 | paper-item-icon-active-color: 'var(--paper-item-icon-color)' 109 | paper-item-icon_-_color: 'hsl(var(--huesat) 70%)' 110 | paper-item-selected_-_background-color: 'hsla(0, 0%, 100%, 0.2)' 111 | paper-item-selected_-_color: 'hsl(var(--huesat) 20%)' 112 | paper-tabs-selection-bar-color: 'hsl(var(--huesat) 70%)' 113 | paper-tab-ink: 'hsl(var(--huesat) 70%)' 114 | paper-input-container-color: 'hsl(var(--huesat) 66%)' 115 | # Labels 116 | label-badge-red: 'hsl(var(--huesat) 80%)' 117 | label-badge-border-color: 'var(--label-badge-red)' 118 | label-badge-background-color: 'hsl(var(--huesat) 82%)' 119 | label-badge-text-color: 'var(--primary-text-color)' 120 | # Shadows 121 | shadow-elevation-2dp_-_box-shadow: 'inset 0px 0px 0px 3px hsla(var(--huesat) 91%, 0.2)' 122 | shadow-elevation-16dp_-_box-shadow: 'inset 0px 0px 0px 3px hsla(var(--huesat) 91%, 0.2)' 123 | paper-input-container-shared-input-style_-_background: '#000' 124 | # Switches 125 | paper-toggle-button-checked-button-color: 'hsl(var(--huesat) 50%)' 126 | paper-toggle-button-checked-bar-color: 'hsl(var(--huesat) 66%)' 127 | paper-toggle-button-unchecked-button-color: 'hsl(var(--huesat) 85%)' 128 | paper-toggle-button-unchecked-bar-color: 'hsl(var(--huesat) 80%)' 129 | # Sliders 130 | paper-slider-knob-color: 'hsl(var(--huesat) 45%)' 131 | paper-slider-knob-start-color: 'hsl(var(--huesat) 60%)' 132 | paper-slider-pin-color: 'hsl(var(--huesat) 60%)' 133 | paper-slider-active-color: 'hsl(var(--huesat) 60%)' 134 | paper-slider-container-color: 'hsl(var(--huesat) 76%)' 135 | paper-slider-secondary-color: 'hsl(var(--huesat) 10%)' 136 | paper-slider-disabled-active-color: 'hsl(var(--huesat) 75%)' 137 | paper-slider-disabled-secondary-color: 'hsl(var(--huesat) 75%)' 138 | #Toast 139 | paper-toast-color: 'hsl(var(--huesat) 45%)' 140 | paper-toast-background-color: 'hsl(var(--huesat) 90%)' -------------------------------------------------------------------------------- /group/all.yaml: -------------------------------------------------------------------------------- 1 | all: 2 | name: All 3 | view: yes 4 | entities: 5 | - group.all_lights 6 | - group.all_switches 7 | - group.allmotion 8 | - group.alltemp 9 | allmotion: 10 | name: "Motion" 11 | entities: 12 | - sensor.lounge_motion 13 | - sensor.kitchen_motion 14 | - sensor.boris_motion 15 | - sensor.office_motion 16 | - sensor.garage_motion 17 | alltemp: 18 | name: "Temperature" 19 | entities: 20 | - sensor.netatmo_indoor_temperature 21 | - sensor.kitchen_temperature 22 | - sensor.boris_temperature 23 | - sensor.garage_temperature 24 | - sensor.office_temperature -------------------------------------------------------------------------------- /group/back_garden.yaml: -------------------------------------------------------------------------------- 1 | backg: 2 | name: "Back Garden" 3 | view: yes 4 | entities: 5 | - camera.blink_garden 6 | - binary_sensor.blink_garden_camera_armed 7 | - binary_sensor.blink_garden_motion_detected 8 | - sensor.blink_garden_battery 9 | - sensor.blink_garden_temperature 10 | - sensor.blink_garden_wifi_signal -------------------------------------------------------------------------------- /group/bedroom.yaml: -------------------------------------------------------------------------------- 1 | bedroom: 2 | name: Bedroom 3 | view: yes 4 | entities: 5 | - light.bedroom 6 | - group.bedroomenv 7 | - group.bedroommotion 8 | - group.bedroommedia 9 | bedroommotion: 10 | name: "Bedroom Motion" 11 | entities: 12 | - sensor.bedroom_motion 13 | bedroomenv: 14 | name: "Environment" 15 | entities: 16 | - sensor.aeotec_zw100_multisensor_6_luminance_5 17 | - sensor.aeotec_zw100_multisensor_6_ultraviolet_5 18 | - sensor.aeotec_zw100_multisensor_6_relative_humidity_5 19 | - sensor.bedroom_temperature 20 | bedroommedia: 21 | name: "Media" 22 | entities: 23 | # - media_player.bedroom_firetv -------------------------------------------------------------------------------- /group/chester.yaml: -------------------------------------------------------------------------------- 1 | chester: 2 | name: "Boris's Room" 3 | view: yes 4 | entities: 5 | - group.chesterenv 6 | - group.chestermotion 7 | chesterenv: 8 | name: "Environment" 9 | entities: 10 | - sensor.boris_motion 11 | - sensor.boris_lux 12 | - sensor.boris_temperature 13 | chestermotion: 14 | name: "Motion" 15 | entities: 16 | - sensor.boris_motion -------------------------------------------------------------------------------- /group/default.yaml: -------------------------------------------------------------------------------- 1 | default_view: 2 | view: yes 3 | icon: mdi:home 4 | entities: 5 | - group.home 6 | - group.kitchen 7 | - group.office 8 | - group.lounge 9 | - group.bedroom 10 | - group.hall 11 | - group.outside 12 | - group.garage 13 | - group.weather 14 | - group.chester 15 | - group.backg 16 | -------------------------------------------------------------------------------- /group/front_door.yaml: -------------------------------------------------------------------------------- 1 | outside: 2 | name: "Front Door" 3 | view: yes 4 | entities: 5 | - group.frontdoorbell 6 | - group.frontdoorbellchime 7 | - camera.front_door 8 | frontdoorbell: 9 | name: "Door Bell" 10 | entities: 11 | - sensor.ring_last_ding 12 | - sensor.ring_last_motion 13 | - sensor.ring_last_activity 14 | - sensor.ring_front_door_volume 15 | frontdoorbellchime: 16 | name: "Door Chime" 17 | entities: 18 | - sensor.ring_hallway_volume -------------------------------------------------------------------------------- /group/front_garden.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/group/front_garden.yaml -------------------------------------------------------------------------------- /group/garage.yaml: -------------------------------------------------------------------------------- 1 | garage: 2 | view: yes 3 | name: Garage 4 | entities: 5 | - group.garageswitches 6 | - group.garageenv 7 | - group.garagemotion 8 | garageswitches: 9 | name: "Garage" 10 | entities: 11 | - switch.chargers 12 | - switch.front_camera 13 | garageenv: 14 | name: "Environment" 15 | entities: 16 | - sensor.garage_lux 17 | - sensor.garage_temperature 18 | garagemotion: 19 | name: "Garage Motion" 20 | entities: 21 | - sensor.garage_motion -------------------------------------------------------------------------------- /group/hall.yaml: -------------------------------------------------------------------------------- 1 | hall: 2 | name: Hall 3 | view: yes 4 | entities: 5 | - group.halllights 6 | - group.hall_doors 7 | - group.hallmotion 8 | - group.hallenv 9 | halllights: 10 | name: "Lights" 11 | entities: 12 | - light.hall_1 13 | - light.hall_2 14 | hall_doors: 15 | name: "Doors" 16 | entities: 17 | - sensor.garage_door 18 | - sensor.front_door 19 | hallmotion: 20 | name: "Motion" 21 | entities: 22 | - sensor.hall_motion 23 | hallenv: 24 | name: "Environment" 25 | entities: 26 | - sensor.aeotec_zw100_multisensor_6_luminance_3 27 | - sensor.aeotec_zw100_multisensor_6_ultraviolet_3 28 | - sensor.hall_temperature 29 | - sensor.aeotec_zw100_multisensor_6_relative_humidity_3 -------------------------------------------------------------------------------- /group/home.yaml: -------------------------------------------------------------------------------- 1 | home: 2 | name: Home 3 | control: hidden 4 | entities: 5 | - switch.racingpctemplate 6 | - switch.fpspctemplate 7 | - sensor.ssl_cert_expiry 8 | - sensor.ring_last_ding 9 | - sensor.ring_front_door_battery 10 | - sensor.ring_last_motion 11 | - camera.front_door 12 | - camera.office 13 | - camera.kitchen 14 | - camera.lounge 15 | - camera.blink_garden 16 | - device_tracker.alexiphone 17 | - device_tracker.pi_alex_iphone 18 | - device_tracker.becsiphone -------------------------------------------------------------------------------- /group/kitchen.yaml: -------------------------------------------------------------------------------- 1 | kitchen: 2 | name: Kitchen 3 | view: yes 4 | entities: 5 | - group.kitchenlights 6 | - group.kitchenenv 7 | - group.kitchenmotion 8 | - media_player.kitchen_home 9 | - camera.kitchen 10 | kitchenlights: 11 | name: "Lights" 12 | entities: 13 | - light.kitchen_1 14 | - light.kitchen_2 15 | - light.kitchen_3 16 | - light.kitchen_bottom 17 | - light.kitchen_lightstrip 18 | kitchenmotion: 19 | name: "Motion" 20 | entities: 21 | - sensor.kitchen_motion 22 | kitchenenv: 23 | name: "Environment" 24 | entities: 25 | - sensor.kitchen_temperature 26 | - sensor.aeotec_zw100_multisensor_6_luminance_2 27 | - sensor.aeotec_zw100_multisensor_6_ultraviolet_2 28 | - sensor.aeotec_zw100_multisensor_6_relative_humidity_2 -------------------------------------------------------------------------------- /group/lounge.yaml: -------------------------------------------------------------------------------- 1 | lounge: 2 | name: Lounge 3 | view: yes 4 | entities: 5 | - group.loungeswitches 6 | - group.loungedoors 7 | - group.loungelights 8 | - group.loungeenv 9 | - group.loungemotion 10 | - camera.lounge 11 | - group.loungemedia 12 | loungeswitches: 13 | name: "Switches" 14 | control: hidden 15 | entities: 16 | - switch.becs 17 | - switch.alex 18 | - switch.lounge_tv 19 | - switch.templateloungeitv 20 | loungelights: 21 | name: "Lights" 22 | entities: 23 | - light.lounge 24 | - light.tv_backlight 25 | - light.lounge_lamp 26 | - light.lounge_spot 27 | - group.loungemedia 28 | loungedoors: 29 | name: "Doors" 30 | entities: 31 | - sensor.back_door 32 | loungeenv: 33 | name: "Environment" 34 | entities: 35 | - sensor.aeotec_zw100_multisensor_6_luminance 36 | - sensor.aeotec_zw100_multisensor_6_ultraviolet 37 | - sensor.netatmo_indoor_temperature 38 | - sensor.netatmo_indoor_humidity 39 | - sensor.netatmo_indoor_co2 40 | - sensor.netatmo_indoor_noise 41 | loungemotion: 42 | name: "Motion" 43 | entities: 44 | - sensor.lounge_motion 45 | loungemedia: 46 | name: "Media" 47 | entities: 48 | # - media_player.lounge_firetv 49 | - media_player.lounge 50 | - media_player.apple_tv 51 | - media_player.lounge_tv -------------------------------------------------------------------------------- /group/misc.yaml: -------------------------------------------------------------------------------- 1 | misc: 2 | view: yes 3 | name: Misc 4 | entities: 5 | - group.breaches 6 | - group.travel 7 | - group.london_train 8 | breaches: 9 | name: "Email Breaches" 10 | entities: 11 | - sensor.breaches_alexgreenlandbtinternetcom 12 | - sensor.breaches_alexgreenlandgmailcom 13 | - sensor.breaches_g7jgqhotmailcom 14 | - sensor.breaches_agreenlandcromwellscouk 15 | travel: 16 | name: "Travel" 17 | entities: 18 | - sensor.london_overground 19 | - sensor.bakerloo 20 | - sensor.central 21 | - sensor.circle 22 | - sensor.district 23 | - sensor.dlr 24 | - sensor.hammersmith_city 25 | - sensor.jubilee 26 | - sensor.metropolitan 27 | - sensor.northern 28 | - sensor.piccadilly 29 | - sensor.tfl_rail 30 | - sensor.victoria 31 | - sensor.waterloo_city 32 | london_train: 33 | name: "Next London Train" 34 | entities: 35 | - sensor.next_train_status 36 | - sensor.next_trains_scheduled 37 | - sensor.next_trains_estimated 38 | - sensor.next_trains_platform -------------------------------------------------------------------------------- /group/office.yaml: -------------------------------------------------------------------------------- 1 | office: 2 | name: Office 3 | view: yes 4 | entities: 5 | - group.officeswitches 6 | - group.officelights 7 | - group.racingpc 8 | - group.fpspc 9 | - group.officemotion 10 | - group.officeenv 11 | - group.officecooling 12 | - camera.office 13 | - group.foscamsettings 14 | - group.foscampicturesettings 15 | - media_player.office 16 | - media_player.spotify 17 | - scene.racing_on 18 | - scene.racing_off 19 | officelights: 20 | name: Lights 21 | entities: 22 | - light.office1 23 | officeswitches: 24 | name: Switches 25 | entities: 26 | - switch.racing 27 | - switch.office_desk 28 | - switch.racing_pc_wol 29 | - switch.fps_pc_wol 30 | racingpc: 31 | name: Racing PC 32 | control: hidden 33 | entities: 34 | - sensor.racingpc 35 | - switch.racingpctemplate 36 | - switch.racing 37 | - switch.racing_pc_wol 38 | - input_select.racingpc 39 | fpspc: 40 | name: FPS PC 41 | control: hidden 42 | entities: 43 | - sensor.fpspc 44 | - switch.fpspctemplate 45 | - switch.office_desk 46 | - switch.fps_pc_wol 47 | - input_select.fpspc 48 | officecooling: 49 | name: Cooling 50 | entities: 51 | - switch.office_air_con 52 | officemotion: 53 | name: "Office Motion" 54 | entities: 55 | - sensor.office_motion 56 | officeenv: 57 | name: "Environment" 58 | entities: 59 | - sensor.aeotec_zw100_multisensor_6_luminance_4 60 | - sensor.aeotec_zw100_multisensor_6_ultraviolet_4 61 | - sensor.aeotec_zw100_multisensor_6_relative_humidity_4 62 | - sensor.office_temperature 63 | - sensor.neo_coolcam_water_leakage_detector_flood 64 | foscamsettings: 65 | name: Camera Settings 66 | control: hidden 67 | entities: 68 | - input_boolean.foscam_snap_picture_now 69 | - input_select.foscam_preset_points 70 | - input_select.foscam_preset_cruise 71 | - input_boolean.foscam_stop_cruise 72 | - input_number.foscam_up_down 73 | - input_number.foscam_left_right 74 | - input_number.foscam_zoom 75 | - input_boolean.foscam_motion_detect 76 | - sensor.foscam_motion 77 | - sensor.foscam_sound_alarm 78 | - sensor.foscam_recording 79 | foscampicturesettings: 80 | control: hidden 81 | name: Camera Picture Settings 82 | entities: 83 | - input_boolean.foscam_mirror 84 | - input_boolean.foscam_flip 85 | - input_number.foscam_hue 86 | - input_number.foscam_brightness 87 | - input_number.foscam_contrast 88 | - input_number.foscam_saturation 89 | - input_number.foscam_sharpness 90 | - input_boolean.foscam_default_picture_settings 91 | - input_boolean.foscam_auto_infrared 92 | - input_boolean.foscam_infrared 93 | -------------------------------------------------------------------------------- /group/server_room.yaml: -------------------------------------------------------------------------------- 1 | server_room: 2 | view: yes 3 | name: "Server Room" 4 | entities: 5 | - group.server_room_switches 6 | - group.server_room_pi 7 | - group.server_room_ha 8 | - group.server_room_speedtest 9 | - group.server_room_batteries 10 | - group.server_room_wifi_status 11 | - group.server_room_igd 12 | - group.fail2ban 13 | server_room_pi: 14 | name: "Server" 15 | entities: 16 | - sensor.cpu_speed 17 | - sensor.disk_use 18 | - sensor.memory_free 19 | - sensor.load_1m 20 | - sensor.load_5m 21 | - sensor.load_15m 22 | - sensor.cpu_temp_core_0 23 | - sensor.cpu_temp_core_1 24 | - sensor.cpu_temp_core_2 25 | - sensor.cpu_temp_core_3 26 | - sensor.last_boot 27 | server_room_speedtest: 28 | name: "Speed Test" 29 | entities: 30 | - sensor.speedtest_download 31 | - sensor.speedtest_upload 32 | - sensor.speedtest_ping 33 | server_room_batteries: 34 | name: "Batteries" 35 | entities: 36 | - sensor.back_door_battery 37 | - sensor.front_door_battery 38 | - sensor.garage_door_battery 39 | - sensor.ring_front_door_battery 40 | - sensor.netatmo_rain_battery 41 | - sensor.netatmo_wind_battery 42 | - sensor.office_flood_battery 43 | - sensor.lounge_motion_battery 44 | - sensor.kitchen_motion_battery 45 | - sensor.hall_motion_battery 46 | server_room_wifi_status: 47 | name: "WiFi Status" 48 | entities: 49 | - sensor.netatmo_indoor_wifi 50 | - sensor.netatmo_rain_radio 51 | - sensor.netatmo_wind_radio 52 | server_room_igd: 53 | name: "Router" 54 | entities: 55 | - sensor.igd_packets_received 56 | - sensor.igd_packets_sent 57 | - sensor.igd_received_bytes 58 | - sensor.igd_sent_bytes 59 | server_room_switches: 60 | name: "Switches" 61 | entities: 62 | - switch.pi 63 | server_room_ha: 64 | name: "Home Assistant" 65 | entities: 66 | - sensor.uptime 67 | fail2ban: 68 | name: "Fail 2 Ban" 69 | entities: 70 | - sensor.fail2ban_hassiptables 71 | - sensor.fail2ban_ssh -------------------------------------------------------------------------------- /group/weather.yaml: -------------------------------------------------------------------------------- 1 | weather: 2 | view: yes 3 | name: Weather 4 | entities: 5 | - group.forecast 6 | - group.homenetatmo 7 | - group.homenetatmostatus 8 | - group.space 9 | - camera.eu_weather 10 | space: 11 | name: Space 12 | entities: 13 | - sensor.aurora 14 | - sensor.aurora_level 15 | - sensor.iss_people_onboard 16 | - sensor.iss_rise 17 | - sensor.iss_lat 18 | - sensor.iss_lon 19 | - camera.iss 20 | forecast: 21 | name: Forecast 22 | entities: 23 | - sensor.dark_sky_hourly_summary 24 | - sensor.dark_sky_daily_summary 25 | - sensor.dark_sky_summary 26 | - sensor.dark_sky_nearest_storm_distance 27 | - sensor.dark_sky_nearest_storm_bearing 28 | - sensor.dark_sky_precip_probability 29 | - sensor.dark_sky_temperature 30 | - sensor.dark_sky_wind_speed 31 | - sensor.dark_sky_wind_bearing 32 | - sensor.dark_sky_apparent_temperature 33 | - sensor.dark_sky_humidity 34 | - sensor.dark_sky_pressure 35 | - sensor.dark_sky_dew_point 36 | homenetatmo: 37 | name: "Weather" 38 | entities: 39 | - sensor.moon 40 | - sensor.netatmo_indoor_temperature 41 | - sensor.netatmo_indoor_humidity 42 | - sensor.netatmo_indoor_co2 43 | - sensor.netatmo_indoor_noise 44 | - sensor.netatmo_outdoor_temperature 45 | - sensor.netatmo_outdoor_humidity 46 | - sensor.netatmo_rain_rain 47 | - sensor.netatmo_wind_strength 48 | - sensor.netatmo_wind_angle 49 | homenetatmostatus: 50 | name: "Status" 51 | entities: 52 | - sensor.netatmo_indoor_wifi 53 | - sensor.netatmo_rain_radio 54 | - sensor.netatmo_rain_battery 55 | - sensor.netatmo_wind_radio 56 | - sensor.netatmo_wind_battery -------------------------------------------------------------------------------- /groups.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/groups.yaml -------------------------------------------------------------------------------- /input/camera.yaml: -------------------------------------------------------------------------------- 1 | foscam_preset_points: 2 | name: Preset points 3 | options: 4 | - room 5 | - racing 6 | initial: room 7 | # the preset cruises also need to be created in the cam 8 | foscam_preset_cruise: 9 | name: Preset cruises 10 | options: 11 | - horizontal 12 | - vertical -------------------------------------------------------------------------------- /input/fps.yaml: -------------------------------------------------------------------------------- 1 | fpspc: 2 | name: FPS PC Commands 3 | options: 4 | - Restart 5 | - Shutdown 6 | - None 7 | - Sleep 8 | - Hibernate 9 | initial: None 10 | icon: mdi:desktop-tower -------------------------------------------------------------------------------- /input/racing.yaml: -------------------------------------------------------------------------------- 1 | racingpc: 2 | name: Racing PC ommands 3 | options: 4 | - Restart 5 | - Shutdown 6 | - None 7 | - Sleep 8 | - Hibernate 9 | initial: None 10 | icon: mdi:desktop-tower -------------------------------------------------------------------------------- /input_boolean/camera.yaml: -------------------------------------------------------------------------------- 1 | foscam_mirror: 2 | name: Mirror picture 3 | initial: off 4 | icon: mdi:swap-horizontal 5 | foscam_flip: 6 | name: Flip picture 7 | initial: off 8 | icon: mdi:swap-vertical 9 | foscam_motion_detect: 10 | name: Motion detect on 11 | initial: off 12 | icon: mdi:radar 13 | foscam_stop_cruise: 14 | name: Stop cruise 15 | initial: off 16 | icon: mdi:square 17 | foscam_default_picture_settings: 18 | name: Set default picture settings 19 | initial: off 20 | icon: mdi:settings 21 | foscam_infrared: 22 | name: Infrared 23 | initial: off 24 | icon: mdi:weather-night 25 | foscam_auto_infrared: 26 | name: Infrared automated 27 | initial: off 28 | icon: mdi:weather-night 29 | foscam_snap_picture_now: 30 | name: Take picture 31 | initial: off 32 | icon: mdi:record-rec -------------------------------------------------------------------------------- /input_number/camera.yaml: -------------------------------------------------------------------------------- 1 | foscam_zoom: 2 | name: Zoom 3 | initial: 0 4 | min: -5 5 | max: 5 6 | step: 1 7 | icon: mdi:binoculars 8 | foscam_up_down: 9 | name: Move vertical 10 | initial: 0 11 | min: -5 12 | max: 5 13 | step: 1 14 | icon: mdi:swap-vertical 15 | foscam_left_right: 16 | name: Move horizontal 17 | initial: 0 18 | min: -5 19 | max: 5 20 | step: 1 21 | icon: mdi:swap-horizontal 22 | foscam_hue: 23 | name: Hue 24 | initial: 50 25 | min: 0 26 | max: 100 27 | step: 1 28 | icon: mdi:atom 29 | foscam_brightness: 30 | name: Brightness 31 | initial: 50 32 | min: 0 33 | max: 100 34 | step: 1 35 | icon: mdi:brightness-6 36 | foscam_contrast: 37 | name: Contrast 38 | initial: 50 39 | min: 0 40 | max: 100 41 | step: 1 42 | icon: mdi:contrast-circle 43 | foscam_saturation: 44 | name: Saturation 45 | initial: 50 46 | min: 0 47 | max: 100 48 | step: 1 49 | icon: mdi:brightness-7 50 | foscam_sharpness: 51 | name: Sharpness 52 | initial: 50 53 | min: 0 54 | max: 100 55 | step: 1 56 | icon: mdi:image-filter -------------------------------------------------------------------------------- /light/kitchen_bottom.yaml: -------------------------------------------------------------------------------- 1 | - platform: flux_led 2 | devices: 3 | 192.168.1.199: 4 | name: 'Kitchen Bottom' 5 | mode: "rgbw" -------------------------------------------------------------------------------- /light/lifx.yaml: -------------------------------------------------------------------------------- 1 | - platform: lifx -------------------------------------------------------------------------------- /light/tv_backlight.yaml: -------------------------------------------------------------------------------- 1 | - platform: flux_led 2 | devices: 3 | 192.168.1.234: 4 | name: 'TV Backlight' 5 | mode: "rgbw" -------------------------------------------------------------------------------- /logbook/logbook.yaml: -------------------------------------------------------------------------------- 1 | include: 2 | domains: 3 | - sensor 4 | - switch 5 | - media_player -------------------------------------------------------------------------------- /logger/logger.yaml: -------------------------------------------------------------------------------- 1 | default: warn 2 | logs: 3 | homeassistant.components.mqtt: debug 4 | homeassistant.components.http.ban: warning 5 | homeassistant.components.sensor.dyson: debug 6 | homeassistant.components.fan.dyson: debug 7 | homeassistant.components.dyson: debug -------------------------------------------------------------------------------- /mediaplayer/firetv.yaml: -------------------------------------------------------------------------------- 1 | # - platform: firetv 2 | # device: lounge 3 | # name: "Lounge FireTv" 4 | # - platform: firetv 5 | # device: bedroom 6 | # name: "Bedroom FireTv" -------------------------------------------------------------------------------- /mediaplayer/spotify.yaml: -------------------------------------------------------------------------------- 1 | - platform: spotify 2 | client_id: !secret spotify_client_id 3 | client_secret: !secret spotify_secret -------------------------------------------------------------------------------- /mediaplayer/tv.yaml: -------------------------------------------------------------------------------- 1 | - platform: samsungtv 2 | host: !secret lounge_tv_ip 3 | mac: !secret lounge_tv_mac 4 | name: Lounge TV -------------------------------------------------------------------------------- /mqtt/mqtt.yaml: -------------------------------------------------------------------------------- 1 | broker: !secret mqtt_broker 2 | username: !secret mqtt_broker_username 3 | password: !secret mqtt_broker_password -------------------------------------------------------------------------------- /notify/ios.yaml: -------------------------------------------------------------------------------- 1 | - name: alex_notify 2 | platform: ios 3 | target: !secret alex_iphone_target 4 | -------------------------------------------------------------------------------- /notify/pushover.yaml: -------------------------------------------------------------------------------- 1 | - name: pushover 2 | platform: pushover 3 | api_key: !secret pushover_api_key 4 | user_key: !secret pushover_user_key -------------------------------------------------------------------------------- /notify/slack.yaml: -------------------------------------------------------------------------------- 1 | - name: slack 2 | platform: slack 3 | api_key: !secret slack_api_key_home 4 | default_channel: '#motion' 5 | - name: slacklogin 6 | platform: slack 7 | api_key: !secret slack_api_key_home 8 | default_channel: '#logins' 9 | - name: slackdoors 10 | platform: slack 11 | api_key: !secret slack_api_key_home 12 | default_channel: '#doors' 13 | - name: slackflood 14 | platform: slack 15 | api_key: !secret slack_api_key_home 16 | default_channel: '#floods' 17 | - name: slackupdates 18 | platform: slack 19 | api_key: !secret slack_api_key_home 20 | default_channel: '#updates' -------------------------------------------------------------------------------- /panel_custom/floorplan.yaml: -------------------------------------------------------------------------------- 1 | - name: floorplan 2 | sidebar_title: Floorplan 3 | sidebar_icon: mdi:home 4 | url_path: floorplan 5 | config: !include ../floorplan/floorplan.yaml -------------------------------------------------------------------------------- /panel_iframe/agsattrack.yaml: -------------------------------------------------------------------------------- 1 | agsattrack: 2 | title: 'AG SatTrack' 3 | url: 'https://agsattrack.com/' 4 | icon: mdi:satellite-variant -------------------------------------------------------------------------------- /panel_iframe/dx.yaml: -------------------------------------------------------------------------------- 1 | dx: 2 | title: 'DX Cluster' 3 | url: 'https://www.dxcluster.co.uk/' 4 | icon: mdi:google-maps -------------------------------------------------------------------------------- /panels/cameras.html: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 47 | -------------------------------------------------------------------------------- /panels/floorplan.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /platform/emulated_hue.yaml: -------------------------------------------------------------------------------- 1 | expose_by_default: true 2 | exposed_domains: 3 | - light -------------------------------------------------------------------------------- /platform/ffmpeg.yaml: -------------------------------------------------------------------------------- 1 | ffmpeg_bin: /usr/bin/ffmpeg -------------------------------------------------------------------------------- /platform/http.yaml: -------------------------------------------------------------------------------- 1 | base_url: !secret http_url 2 | ip_ban_enabled: True 3 | login_attempts_threshold: 5 4 | -------------------------------------------------------------------------------- /platform/netatmo.yaml: -------------------------------------------------------------------------------- 1 | api_key: !secret natatmo_api_key 2 | secret_key: !secret netatmo_secret_key 3 | username: !secret netatmo_username 4 | password: !secret netatmo_password -------------------------------------------------------------------------------- /platform/ring.yaml: -------------------------------------------------------------------------------- 1 | username: !secret ring_username 2 | password: !secret ring_password -------------------------------------------------------------------------------- /platform/tts.yaml: -------------------------------------------------------------------------------- 1 | platform: google_translate -------------------------------------------------------------------------------- /platform/upnp.yaml: -------------------------------------------------------------------------------- 1 | port_mapping: false -------------------------------------------------------------------------------- /platform/zwave.yaml: -------------------------------------------------------------------------------- 1 | usb_path: /dev/ttyACM0 2 | # config_path: /root -------------------------------------------------------------------------------- /recorder/recorder.yaml: -------------------------------------------------------------------------------- 1 | db_url: !secret recorder_db_url 2 | purge_interval: 5 3 | purge_keep_days: 5 4 | exclude: 5 | domains: 6 | - automation 7 | - weblink 8 | - updater 9 | - camera 10 | - media_player 11 | entities: 12 | - sun.sun -------------------------------------------------------------------------------- /router/router.yaml: -------------------------------------------------------------------------------- 1 | host: !secret asus_ip 2 | username: !secret asus_login 3 | password: !secret asus_password 4 | protocol: ssh 5 | sensors: 6 | - upload 7 | - download 8 | - upload_speed 9 | - download_speed -------------------------------------------------------------------------------- /scenes/racing.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/scenes/racing.yaml -------------------------------------------------------------------------------- /screenshots/ha-ag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/screenshots/ha-ag.png -------------------------------------------------------------------------------- /screenshots/ha-floorplan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/screenshots/ha-floorplan.png -------------------------------------------------------------------------------- /screenshots/ha-lounge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/screenshots/ha-lounge.png -------------------------------------------------------------------------------- /screenshots/ha-office.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/screenshots/ha-office.png -------------------------------------------------------------------------------- /script/fps_pc.yaml: -------------------------------------------------------------------------------- 1 | start_fps: 2 | sequence: 3 | - service: switch.turn_on 4 | entity_id: switch.office_desk 5 | - service: light.turn_on 6 | entity_id: light.office 7 | - delay: 00:00:10 8 | - service: switch.turn_on 9 | entity_id: switch.fps_pc_wol 10 | - delay: 00:00:10 11 | - service: switch.turn_on 12 | entity_id: switch.fps_pc_wol 13 | 14 | stop_fps: 15 | sequence: 16 | - service: shell_command.shutdown_fpspc 17 | - delay: 00:00:30 18 | - service: switch.turn_off 19 | entity_id: switch.office_desk 20 | - service: light.turn_off 21 | entity_id: light.office -------------------------------------------------------------------------------- /script/lounge_media.yaml: -------------------------------------------------------------------------------- 1 | stop_itv: 2 | sequence: 3 | - service: switch.turn_off 4 | entity_id: switch.lounge_tv 5 | - service: switch.turn_off 6 | entity_id: switch.sky_power 7 | 8 | start_itv: 9 | sequence: 10 | - service: switch.turn_on 11 | entity_id: switch.lounge_tv 12 | - delay: 00:00:10 13 | - service: switch.turn_on 14 | entity_id: switch.sky_power 15 | - delay: 00:00:10 16 | - alias: Turn Soundbar On 17 | service: broadlink.send_packet_192_168_1_50 18 | data: 19 | packet: 20 | - "JgCgAJGUEBAQERAREBEPMg8yEBEQEA8zDzIPMhAyDxEPEhARDxEPlBARDxEPEg8SEBAQERARDxEQMg8yDzIPEhAxDzIQMhAxDxIQEA8SEDEQAAcNkZQPEg8SEBAQERAvEjEQEQ8SDzIPMhAyDzIPEg8REBEPEg" 21 | - alias: Send 1 22 | service: broadlink.send_packet_192_168_1_50 23 | data: 24 | packet: 25 | - "JgAwAFUeDRAODw0eDR4cEA0PDRANEA0QGx4cDw4PDR4ODw0QDg8NEA0QDQ8NEA4PHAANBQAAAAAAAAAA" 26 | - delay: 00:00:01 27 | - alias: Send 7 28 | service: broadlink.send_packet_192_168_1_50 29 | data: 30 | packet: 31 | - "JgAwAFUfDg4ODw0eDR4cEA0QDQ8NEA4PHB0cEA0PDh4NDw4PDRANEA4PDRAbEA4PDQANBQAAAAAAAAAA" 32 | - delay: 00:00:01 33 | - alias: Send 8 34 | service: broadlink.send_packet_192_168_1_50 35 | data: 36 | packet: 37 | - "JgAwAFYeDRANDw4eDR4bEA0QDg8NDw0QHB4bEA0QDR4NEA4PDQ8NEA0QGx4ODw4PDgANBQAAAAAAAAAA" 38 | - alias: Switch to HMDI1 39 | service: broadlink.send_packet_192_168_1_50 40 | data: 41 | packet: 42 | - "JgBGAJKVETkRORE5ERQQFRAVERQQFRE5ETkROREUERQRFBEUERQRORAVERUPOxAVDzsQOhA6EBUQOhA6EBUQOhAVEBUPFhAADQUAAA" 43 | -------------------------------------------------------------------------------- /script/racing_pc.yaml: -------------------------------------------------------------------------------- 1 | start_racing: 2 | sequence: 3 | - alias: Office lights On 4 | service: light.turn_on 5 | data: 6 | entity_id: light.office 7 | - alias: Turn Desk Power On 8 | service: switch.turn_on 9 | data: 10 | entity_id: switch.office_desk 11 | - alias: Turn PC Power On 12 | service: switch.turn_on 13 | data: 14 | entity_id: switch.racing 15 | - alias: Turn Air Con On 16 | service: switch.turn_on 17 | data: 18 | entity_id: switch.office_air_con 19 | - delay: 00:00:10 20 | - alias: Boot Racing pc 21 | service: switch.turn_on 22 | data: 23 | entity_id: switch.racing_pc_wol 24 | 25 | stop_racing: 26 | sequence: 27 | - alias: Turn Air Con Off 28 | service: switch.turn_off 29 | data: 30 | entity_id: switch.office_air_con 31 | - service: shell_command.shutdown_racingpc 32 | - delay: 00:00:30 33 | - alias: Turn PC Power Off 34 | service: switch.turn_off 35 | data: 36 | entity_id: switch.racing 37 | - alias: Turn Desk Power Off 38 | service: switch.turn_off 39 | data: 40 | entity_id: switch.office_desk 41 | - service: light.turn_off 42 | data: 43 | entity_id: light.office -------------------------------------------------------------------------------- /scripts.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/scripts.yaml -------------------------------------------------------------------------------- /sensor/commandline.yaml: -------------------------------------------------------------------------------- 1 | - platform: command_line 2 | name: CPU Temp Core 0 3 | command: "cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp2_input" 4 | unit_of_measurement: "°C" 5 | value_template: "{{ (value | int) / 1000 }}" 6 | 7 | - platform: command_line 8 | name: CPU Temp Core 1 9 | command: "cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp3_input" 10 | unit_of_measurement: "°C" 11 | value_template: "{{ (value | int) / 1000 }}" 12 | 13 | - platform: command_line 14 | name: CPU Temp Core 2 15 | command: "cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp4_input" 16 | unit_of_measurement: "°C" 17 | value_template: "{{ (value | int) / 1000 }}" 18 | 19 | - platform: command_line 20 | name: CPU Temp Core 3 21 | command: "cat /sys/bus/platform/devices/coretemp.0/hwmon/hwmon1/temp5_input" 22 | unit_of_measurement: "°C" 23 | value_template: "{{ (value | int) / 1000 }}" -------------------------------------------------------------------------------- /sensor/cpuspeed.yaml: -------------------------------------------------------------------------------- 1 | - platform: cpuspeed -------------------------------------------------------------------------------- /sensor/darksky.yaml: -------------------------------------------------------------------------------- 1 | - platform: darksky 2 | api_key: !secret ds_api_key 3 | units: uk2 4 | monitored_conditions: 5 | - summary 6 | - icon 7 | - nearest_storm_distance 8 | - nearest_storm_bearing 9 | - precip_intensity 10 | - precip_probability 11 | - temperature 12 | - apparent_temperature 13 | - dew_point 14 | - wind_speed 15 | - wind_bearing 16 | - cloud_cover 17 | - humidity 18 | - pressure 19 | - visibility 20 | - ozone 21 | - minutely_summary 22 | - hourly_summary 23 | - daily_summary 24 | - temperature_max 25 | - temperature_min 26 | - apparent_temperature_max 27 | - apparent_temperature_min 28 | - precip_intensity_max -------------------------------------------------------------------------------- /sensor/email.yaml: -------------------------------------------------------------------------------- 1 | - platform: haveibeenpwned 2 | email: 3 | - !secret email1 4 | - !secret email2 5 | - !secret email3 6 | - !secret email4 -------------------------------------------------------------------------------- /sensor/fail2ban.yaml: -------------------------------------------------------------------------------- 1 | - platform: fail2ban 2 | scan_interval: 60 3 | jails: 4 | - ssh 5 | - hass-iptables -------------------------------------------------------------------------------- /sensor/london_underground.yaml: -------------------------------------------------------------------------------- 1 | - platform: london_underground 2 | line: 3 | - Bakerloo 4 | - Central 5 | - Circle 6 | - District 7 | - DLR 8 | - Hammersmith & City 9 | - Jubilee 10 | - London Overground 11 | - Metropolitan 12 | - Northern 13 | - Piccadilly 14 | - TfL Rail 15 | - Victoria 16 | - Waterloo & City -------------------------------------------------------------------------------- /sensor/moon.yaml: -------------------------------------------------------------------------------- 1 | - platform: moon -------------------------------------------------------------------------------- /sensor/netatmo.yaml: -------------------------------------------------------------------------------- 1 | - platform: netatmo 2 | station: Home 3 | scan_interval: 600 4 | modules: 5 | Indoor: 6 | - temperature 7 | - co2 8 | - noise 9 | - humidity 10 | - wifi_status 11 | Outdoor: 12 | - temperature 13 | - humidity 14 | Rain: 15 | - rain 16 | - sum_rain_1 17 | - sum_rain_24 18 | - rf_status 19 | - battery_vp 20 | Wind: 21 | - windangle 22 | - windstrength 23 | - gustangle 24 | - guststrength 25 | - rf_status 26 | - battery_vp -------------------------------------------------------------------------------- /sensor/printer.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/sensor/printer.yaml -------------------------------------------------------------------------------- /sensor/rest.yaml: -------------------------------------------------------------------------------- 1 | - platform: rest 2 | resource: !secret hue_chester_motion_url 3 | value_template: "{{ 'Motion' if value_json.state.status == 1 else 'No Motion' }}" 4 | name: 'Boris Motion' 5 | scan_interval: 5 6 | - platform: rest 7 | resource: !secret hue_chester_lux_url 8 | value_template: '{{ (10 ** (float(value_json.state.lightlevel) / 10000) -1) | round (1)}}' 9 | unit_of_measurement: Lux 10 | name: 'Boris Lux' 11 | - platform: rest 12 | resource: !secret hue_chester_temp_url 13 | value_template: '{{ value_json.state.temperature | float / 100 }}' 14 | unit_of_measurement: °C 15 | name: 'Boris Temperature' 16 | 17 | - platform: rest 18 | resource: !secret hue_garage_motion_url 19 | value_template: "{{ 'Motion' if value_json.state.status == 1 else 'No Motion' }}" 20 | name: 'Garage Motion' 21 | scan_interval: 5 22 | - platform: rest 23 | resource: !secret hue_garage_lux_url 24 | value_template: '{{ (10 ** (float(value_json.state.lightlevel) / 10000) -1) | round (1)}}' 25 | unit_of_measurement: Lux 26 | name: 'Garage Lux' 27 | - platform: rest 28 | resource: !secret hue_garage_temp_url 29 | value_template: '{{ value_json.state.temperature | float / 100 }}' 30 | unit_of_measurement: °C 31 | name: 'Garage Temperature' -------------------------------------------------------------------------------- /sensor/ring.yaml: -------------------------------------------------------------------------------- 1 | - platform: ring 2 | monitored_conditions: 3 | - battery 4 | - last_activity 5 | - last_ding 6 | - last_motion 7 | - volume -------------------------------------------------------------------------------- /sensor/systemmonitor.yaml: -------------------------------------------------------------------------------- 1 | - platform: systemmonitor 2 | resources: 3 | - type: disk_use_percent 4 | arg: / 5 | - type: disk_use 6 | arg: / 7 | - type: memory_free 8 | - type: load_1m 9 | - type: load_5m 10 | - type: load_15m 11 | - type: last_boot -------------------------------------------------------------------------------- /sensor/template.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | sensors: 3 | aurora: 4 | value_template: '{{ states.binary_sensor.aurora_visibility.attributes.message}}' 5 | friendly_name: 'Aurora' 6 | aurora_level: 7 | value_template: '{{ states.binary_sensor.aurora_visibility.attributes.visibility_level}}' 8 | friendly_name: 'Aurora Visibility' 9 | iss_people_onboard: 10 | value_template: '{{ states.binary_sensor.iss.attributes.number_of_people_in_space}}' 11 | friendly_name: 'People In Space' 12 | iss_lat: 13 | value_template: '{{ states.binary_sensor.iss.attributes.lat}}' 14 | friendly_name: 'ISS Lat' 15 | iss_lon: 16 | value_template: '{{ states.binary_sensor.iss.attributes.long}}' 17 | friendly_name: 'ISS Lon' 18 | iss_rise: 19 | value_template: '{{ states.binary_sensor.iss.attributes.next_rise}}' 20 | friendly_name: 'ISS Aos' 21 | chargers_volts: 22 | value_template: '{{ states.switch.chargers.attributes.Voltage }}' 23 | unit_of_measurement: 'V' 24 | chargers_current: 25 | value_template: '{{ states.switch.chargers.attributes.Current }}' 26 | unit_of_measurement: 'A' 27 | chargers_power: 28 | value_template: '{{ states.switch.chargers.attributes["current_consumption"] }}' 29 | unit_of_measurement: 'W' 30 | office_fan_volts: 31 | value_template: '{{ states.switch.office_fan.attributes.Voltage }}' 32 | unit_of_measurement: 'V' 33 | office_fan_current: 34 | value_template: '{{ states.switch.office_fan.attributes.Current }}' 35 | unit_of_measurement: 'A' 36 | office_fan_power: 37 | value_template: '{{ states.switch.office_fan.attributes["current_consumption"] | replace(" W","") | int }}' 38 | unit_of_measurement: 'W' 39 | office_motion: 40 | friendly_name: 'Office Motion' 41 | value_template: "{{ 'Motion' if is_state('sensor.aeotec_zw100_multisensor_6_burglar_4','8') else 'No Motion' }}" 42 | office_temperature: 43 | friendly_name: 'Office Temperature' 44 | value_template: "{{ states.sensor.aeotec_zw100_multisensor_6_temperature_4.state }} °C" 45 | office_motion_battery: 46 | friendly_name: 'Office Motion Battery' 47 | value_template: '{{ states.zwave.aeotec_zw100_multisensor_6_4.attributes.battery_level }}' 48 | unit_of_measurement: '%' 49 | alex_volts: 50 | value_template: '{{ states.switch.alex.attributes.Voltage }}' 51 | unit_of_measurement: 'V' 52 | alex_current: 53 | value_template: '{{ states.switch.alex.attributes.Current }}' 54 | unit_of_measurement: 'A' 55 | alex_power: 56 | value_template: '{{ states.switch.alex.attributes["current_consumption"] | replace(" W","") | int }}' 57 | unit_of_measurement: 'W' 58 | becs_volts: 59 | value_template: '{{ states.switch.becs.attributes.Voltage }}' 60 | unit_of_measurement: 'V' 61 | becs_current: 62 | value_template: '{{ states.switch.becs.attributes.Current }}' 63 | unit_of_measurement: 'A' 64 | becs_power: 65 | value_template: '{{ states.switch.becs.attributes["current_consumption"] | replace(" W","") | int }}' 66 | unit_of_measurement: 'W' 67 | desk_volts: 68 | value_template: '{{ states.switch.office_desk.attributes.Voltage }}' 69 | unit_of_measurement: 'V' 70 | desk_current: 71 | value_template: '{{ states.switch.office_desk.attributes.Current }}' 72 | unit_of_measurement: 'A' 73 | desk_power: 74 | value_template: '{{ states.switch.office_desk.attributes["current_consumption"] | replace(" W","") | int }}' 75 | unit_of_measurement: 'W' 76 | racing_volts: 77 | value_template: '{{ states.switch.racing.attributes.Voltage }}' 78 | unit_of_measurement: 'V' 79 | racing_current: 80 | value_template: '{{ states.switch.racing.attributes.Current }}' 81 | unit_of_measurement: 'A' 82 | racing_power: 83 | value_template: '{{ states.switch.racing.attributes["current_consumption"] | replace(" W","") | int }}' 84 | unit_of_measurement: 'W' 85 | pi_server_volts: 86 | value_template: '{{ states.switch.pi_server.attributes.Voltage }}' 87 | unit_of_measurement: 'V' 88 | p_server_current: 89 | value_template: '{{ states.switch.pi_server.attributes.Current }}' 90 | unit_of_measurement: 'A' 91 | pi_server_power: 92 | value_template: '{{ states.switch.pi_server.attributes["current_consumption"] }}' 93 | unit_of_measurement: 'W' 94 | ring_last_ding: 95 | friendly_name: Last Ding Time 96 | value_template: "{{ as_timestamp(states.sensor.ring_front_door_last_ding.attributes.created_at) | timestamp_custom('%d %b %-I:%M %P') }}" 97 | ring_last_activity: 98 | friendly_name: Last Activity Time 99 | value_template: "{{ as_timestamp(states.sensor.ring_front_door_last_activity.attributes.created_at) | timestamp_custom('%d %b %-I:%M %P') }}" 100 | ring_last_motion: 101 | friendly_name: Last Motion Time 102 | value_template: "{{ as_timestamp(states.sensor.ring_front_door_last_motion.attributes.created_at) | timestamp_custom('%d %b %-I:%M %P') }}" 103 | racingpc: 104 | value_template: '{% if is_state("device_tracker.desktopci356oq", "home") %}Online{% else %}Offline{% endif %}' 105 | friendly_name: 'Racing PC Status' 106 | fpspc: 107 | value_template: '{% if is_state("device_tracker.alexfps_2", "home") %}Online{% else %}Offline{% endif %}' 108 | friendly_name: 'FPS PC Status' 109 | back_door: 110 | friendly_name: 'Back Door' 111 | value_template: "{{ 'Open' if is_state('binary_sensor.neo_coolcam_doorwindow_detector_sensor', 'on') else 'Closed' }}" 112 | front_door: 113 | friendly_name: 'Front Door' 114 | value_template: "{{ 'Open' if is_state('binary_sensor.neo_coolcam_doorwindow_detector_sensor_2', 'on') else 'Closed' }}" 115 | front_door_battery: 116 | friendly_name: 'Front Door Battery' 117 | value_template: '{{ states.zwave.neo_coolcam_doorwindow_detector_2.attributes.battery_level }}' 118 | unit_of_measurement: '%' 119 | back_door_battery: 120 | friendly_name: 'Back Door Battery' 121 | value_template: '{{ states.zwave.neo_coolcam_doorwindow_detector.attributes.battery_level }}' 122 | unit_of_measurement: '%' 123 | garage_door: 124 | friendly_name: 'Garage Door' 125 | value_template: "{{ 'Open' if is_state('binary_sensor.aeotec_zw120_door_window_sensor_gen5_sensor', 'on') else 'Closed' }}" 126 | garage_door_battery: 127 | friendly_name: 'Garage Door Battery' 128 | value_template: '{{ states.zwave.aeotec_zw120_door_window_sensor_gen5.attributes.battery_level }}' 129 | unit_of_measurement: '%' 130 | office_flood_battery: 131 | friendly_name: 'Office Flood Battery' 132 | value_template: '{{ states.zwave.neo_coolcam_water_leakage_detector.attributes.battery_level }}' 133 | unit_of_measurement: '%' 134 | 135 | lounge_motion: 136 | friendly_name: 'Lounge Motion' 137 | value_template: "{{ 'Motion' if is_state('sensor.aeotec_zw100_multisensor_6_burglar','8') else 'No Motion' }}" 138 | lounge_motion_battery: 139 | friendly_name: 'Lounge Motion Battery' 140 | value_template: '{{ states.zwave.aeotec_zw100_multisensor_6.attributes.battery_level }}' 141 | unit_of_measurement: '%' 142 | 143 | kitchen_motion: 144 | friendly_name: 'Kitchen Motion' 145 | value_template: "{{ 'Motion' if is_state('sensor.aeotec_zw100_multisensor_6_burglar_2','8') else 'No Motion' }}" 146 | kitchen_temperature: 147 | friendly_name: 'Kitchen Temperature' 148 | value_template: "{{ states.sensor.aeotec_zw100_multisensor_6_temperature_2.state }} °C" 149 | kitchen_motion_battery: 150 | friendly_name: 'Kitchen Motion Battery' 151 | value_template: '{{ states.zwave.aeotec_zw100_multisensor_6_2.attributes.battery_level }}' 152 | unit_of_measurement: '%' 153 | 154 | 155 | hall_motion: 156 | friendly_name: 'Hall Motion' 157 | value_template: "{{ 'Motion' if is_state('sensor.aeotec_zw100_multisensor_6_burglar_3','8') else 'No Motion' }}" 158 | hall_temperature: 159 | friendly_name: 'Hall Temperature' 160 | value_template: "{{ states.sensor.aeotec_zw100_multisensor_6_temperature_3.state }} °C" 161 | hall_motion_battery: 162 | friendly_name: 'Hall Motion Battery' 163 | value_template: '{{ states.zwave.aeotec_zw100_multisensor_6_3.attributes.battery_level }}' 164 | unit_of_measurement: '%' 165 | 166 | 167 | bedroom_motion: 168 | friendly_name: 'Bedroom Motion' 169 | value_template: "{{ 'Motion' if is_state('sensor.aeotec_zw100_multisensor_6_burglar_5','8') else 'No Motion' }}" 170 | bedroom_temperature: 171 | friendly_name: 'Bedroom Temperature' 172 | value_template: "{{ states.sensor.aeotec_zw100_multisensor_6_temperature_5.state }} °C" 173 | bedroom_motion_battery: 174 | friendly_name: 'Bedroom Motion Battery' 175 | value_template: '{{ states.zwave.aeotec_zw100_multisensor_6_5.attributes.battery_level }}' 176 | unit_of_measurement: '%' 177 | 178 | 179 | next_train_status: 180 | friendly_name: 'Next train status' 181 | value_template: '{{states.sensor.next_train_to_kgx.attributes.next_trains[0].status}}' 182 | next_trains_origin: 183 | friendly_name: 'Next train origin' 184 | value_template: '{{states.sensor.next_train_to_kgx.attributes.next_trains[0].origin_name}}' 185 | next_trains_estimated: 186 | friendly_name: 'Next train estimated' 187 | value_template: '{{states.sensor.next_train_to_kgx.attributes.next_trains[0].estimated}}' 188 | next_trains_scheduled: 189 | friendly_name: 'Next train scheduled' 190 | value_template: '{{states.sensor.next_train_to_kgx.attributes.next_trains[0].scheduled}}' 191 | next_trains_platform: 192 | friendly_name: 'Next train platform' 193 | value_template: '{{states.sensor.next_train_to_kgx.attributes.next_trains[0].platform}}' -------------------------------------------------------------------------------- /sensor/uk_transport.yaml: -------------------------------------------------------------------------------- 1 | - platform: uk_transport 2 | app_id: !secret uk_transport_app_id 3 | app_key: !secret uk_transport_app_key 4 | queries: 5 | - mode: train 6 | origin: ELY 7 | destination: KGX -------------------------------------------------------------------------------- /sensor/uptime.yaml: -------------------------------------------------------------------------------- 1 | - platform: uptime 2 | name: Time Online 3 | unit_of_measurement: days -------------------------------------------------------------------------------- /sensor/yr.yaml: -------------------------------------------------------------------------------- 1 | - platform: yr -------------------------------------------------------------------------------- /shell/fpspc.yaml: -------------------------------------------------------------------------------- 1 | shutdown_fpspc: !secret shutdown_fpspc 2 | restart_fpspc: !secret restart_fpspc 3 | sleep_fpspc: !secret sleep_fpspc 4 | hibernate_fpspc: !secret hibernate_fpspc -------------------------------------------------------------------------------- /shell/racingpc.yaml: -------------------------------------------------------------------------------- 1 | shutdown_racingpc: !secret shutdown_racingpc 2 | restart_racingpc: !secret restart_racingpc 3 | sleep_racingpc: !secret sleep_racingpc 4 | hibernate_racingpc: !secret hibernate_racingpc -------------------------------------------------------------------------------- /speedtest/speedtest.yaml: -------------------------------------------------------------------------------- 1 | scan_interval: 2 | hours: 6 3 | monitored_conditions: 4 | - ping 5 | - download 6 | - upload -------------------------------------------------------------------------------- /switch/broadlink.yaml: -------------------------------------------------------------------------------- 1 | - platform: broadlink 2 | host: !secret mini_3_ip 3 | mac: !secret mini_3_mac 4 | timeout: 10 5 | friendly_name: 'Mini 3' 6 | switches: 7 | tv_lounge_onoff: 8 | friendly_name: 'Lounge TV' 9 | command_on: 'JgBGAJKVETkRORA6ERQRFBEUERQRFBE5ETkQOhAVEBUQFREUEBUQOhEUERQRORE5EBURFBA6EBUQOhE5EBUQFRA6EDoRFBEADQUAAA==' 10 | command_off: 'JgBGAJOVEDoQOhA6DxYPFhAVEBUQFRA6ETkROREUERQRFBEUEBUQFREUERQRORE5EBUQFRE5ETkRORE5ERUQFRA6DzsPFhAADQUAAA==' 11 | sky_power: 12 | friendly_name: 'Sky Power' 13 | command_on: 'JgAwAFUeDRANEA0eDR4cDw0QDRANEA0PHR0bEA0QDh0NEBseDg8NEA0QDRANDw0QDgANBQAAAAAAAAAA' 14 | command_off: 'JgAwAFUeDRANEA0eDR4cDw0QDRANEA0PHR0bEA0QDh0NEBseDg8NEA0QDRANDw0QDgANBQAAAAAAAAAA' -------------------------------------------------------------------------------- /switch/template.yaml: -------------------------------------------------------------------------------- 1 | - platform: template 2 | switches: 3 | fpspctemplate: 4 | friendly_name: FPS PC 5 | value_template: "{{ is_state('device_tracker.alexfps_2', 'home') }}" 6 | turn_on: 7 | service: script.turn_on 8 | entity_id: script.start_fps 9 | turn_off: 10 | service: script.turn_on 11 | entity_id: script.stop_fps 12 | 13 | racingpctemplate: 14 | friendly_name: Racing PC 15 | value_template: "{{ is_state('device_tracker.desktopci356oq', 'home') }}" 16 | turn_on: 17 | service: script.turn_on 18 | entity_id: script.start_racing 19 | turn_off: 20 | service: script.turn_on 21 | entity_id: script.stop_racing 22 | 23 | templateloungeitv: 24 | friendly_name: 'Lounge ITV' 25 | value_template: "{{ is_state('device_tracker.localhost', 'home1') }}" 26 | turn_on: 27 | service: script.turn_on 28 | entity_id: script.start_itv 29 | turn_off: 30 | service: script.turn_on 31 | entity_id: script.stop_itv 32 | -------------------------------------------------------------------------------- /switch/wol.yaml: -------------------------------------------------------------------------------- 1 | - platform: wake_on_lan 2 | mac_address: !secret racingpc_mac 3 | name: "Racing PC WoL" 4 | host: !secret racingpc_wol_ipaddress 5 | 6 | - platform: wake_on_lan 7 | mac_address: !secret fpspc_mac 8 | name: "FPS PC WoL" 9 | host: !secret fpspc_ip -------------------------------------------------------------------------------- /tplink/tplink.yaml: -------------------------------------------------------------------------------- 1 | discovery: true -------------------------------------------------------------------------------- /ui-lovelace.yaml: -------------------------------------------------------------------------------- 1 | title: Home 2 | views: 3 | - icon: mdi:view-dashboard 4 | title: Dashboard 5 | cards: 6 | - type: entities 7 | entities: 8 | - switch.becs 9 | - switch.alex 10 | - switch.templateloungeitv 11 | - type: entities 12 | entities: 13 | - light.lounge 14 | - light.tv_backlight 15 | - light.lounge_lamp 16 | - light.lounge_spot 17 | 18 | - type: picture-glance 19 | title: Lounge 20 | entities: 21 | - light.lounge 22 | - light.tv_backlight 23 | - light.lounge_lamp 24 | - light.lounge_spot 25 | - switch.becs 26 | - switch.alex 27 | camera_image: camera.lounge 28 | 29 | - icon: mdi:cctv 30 | title: All CAmeras 31 | cards: 32 | - type: picture-entity 33 | entity: camera.office 34 | - type: picture-entity 35 | entity: camera.kitchen 36 | - type: picture-entity 37 | entity: camera.lounge 38 | - type: picture-entity 39 | entity: camera.front_door 40 | - type: picture-entity 41 | entity: camera.blink_garden 42 | 43 | - icon: mdi:bed-empty 44 | title: Bedroom 45 | cards: 46 | - type: entities 47 | entities: 48 | - light.bedroom 49 | - type: entities 50 | entities: 51 | - sensor.bedroom_motion 52 | - type: entities 53 | entities: 54 | - sensor.aeotec_zw100_multisensor_6_luminance_5 55 | - sensor.aeotec_zw100_multisensor_6_ultraviolet_5 56 | - sensor.aeotec_zw100_multisensor_6_relative_humidity_5 57 | - sensor.bedroom_temperature -------------------------------------------------------------------------------- /ui/ui.yaml: -------------------------------------------------------------------------------- 1 | light.*: 2 | custom_ui_state_card: state-card-custom-ui 3 | show_last_changed: false 4 | state_card_mode: single-line 5 | switch.alex: 6 | custom_ui_state_card: state-card-custom-ui 7 | show_last_changed: false 8 | extra_badge: 9 | entity_id: sensor.alex_power 10 | switch.becs: 11 | custom_ui_state_card: state-card-custom-ui 12 | show_last_changed: false 13 | extra_badge: 14 | entity_id: sensor.becs_power 15 | switch.office_desk: 16 | custom_ui_state_card: state-card-custom-ui 17 | show_last_changed: false 18 | extra_badge: 19 | entity_id: sensor.desk_power 20 | switch.racing: 21 | custom_ui_state_card: state-card-custom-ui 22 | confirm_controls_show_lock: true 23 | show_last_changed: false 24 | extra_badge: 25 | entity_id: sensor.racing_power -------------------------------------------------------------------------------- /www/cat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/cat.png -------------------------------------------------------------------------------- /www/custom_ui/floorplan/floorplan.css: -------------------------------------------------------------------------------- 1 | /* SVG shapes */ 2 | 3 | svg, svg * { 4 | vector-effect: non-scaling-stroke !important; 5 | pointer-events: all !important; 6 | } 7 | 8 | /* Hover over */ 9 | 10 | .entity:hover { 11 | stroke: #03A9F4 !important; 12 | stroke-width: 1px !important; 13 | stroke-opacity: 1 !important; 14 | } 15 | 16 | /* Bootstrap succsss */ 17 | 18 | .success-text { 19 | fill: #3c763d !important; 20 | } 21 | 22 | .success-background, .success-text-background { 23 | fill: #dff0d8 !important; 24 | fill-opacity: 1 !important; 25 | stroke: #d6e9c6 !important; 26 | stroke-width: 1px !important; 27 | } 28 | 29 | /* Bootstrap info */ 30 | 31 | .info-text { 32 | fill: #31708f !important; 33 | } 34 | 35 | .info-background, .info-text-background { 36 | fill: #d9edf7 !important; 37 | fill-opacity: 1 !important; 38 | stroke: #bce8f1 !important; 39 | stroke-width: 1px !important; 40 | } 41 | 42 | /* Bootstrap warning */ 43 | 44 | .warning-text { 45 | fill: #8a6d3b !important; 46 | } 47 | 48 | .warning-background, .warning-text-background { 49 | fill: #fcf8e3 !important; 50 | fill-opacity: 1 !important; 51 | stroke: #faebcc !important; 52 | stroke-width: 1px !important; 53 | } 54 | 55 | /* Bootstrap danger */ 56 | 57 | .danger-text { 58 | fill: #a94442 !important; 59 | } 60 | 61 | .danger-background, .danger-text-background { 62 | fill: #f2dede !important; 63 | fill-opacity: 1 !important; 64 | stroke: #ebccd1 !important; 65 | stroke-width: 1px !important; 66 | } 67 | 68 | /* Last motion entity */ 69 | 70 | .last-motion { 71 | stroke: #808080 !important; 72 | stroke-width: 1px !important; 73 | stroke-opacity: 1 !important; 74 | } 75 | 76 | /* Alarm Panel */ 77 | 78 | .alarm-disarmed { 79 | fill: #3c763d !important; 80 | } 81 | 82 | .alarm-armed { 83 | fill: #8a6d3b !important; 84 | } 85 | 86 | /* Camera */ 87 | 88 | .camera-idle { 89 | /* fill: #B9CEF7 !important; */ 90 | fill: #6FAECE !important; 91 | } 92 | 93 | /* Light */ 94 | 95 | .light-off { 96 | fill: #C3B7F4 !important; 97 | } 98 | 99 | .light-on { 100 | fill: #F8D2B9 !important; 101 | } 102 | 103 | /* Doorbell */ 104 | 105 | .doorbell-off { 106 | fill: #C3B7F4 !important; 107 | } 108 | 109 | .doorbell-on { 110 | fill: #F8D2B9 !important; 111 | } 112 | 113 | /* Temperature sensor */ 114 | 115 | .temp-very-low-background { 116 | fill: #d9edf7 !important; 117 | fill-opacity: 1 !important; 118 | } 119 | 120 | .temp-below-average-background { 121 | fill: #dcefe8 !important; 122 | fill-opacity: 1 !important; 123 | } 124 | 125 | .temp-average-background { 126 | fill: #dff0d8 !important; 127 | fill-opacity: 1 !important; 128 | } 129 | 130 | .temp-very-high-background { 131 | fill: #f2dede !important; 132 | fill-opacity: 1 !important; 133 | } 134 | 135 | /* Media player */ 136 | 137 | .squeezebox-off { 138 | fill: #8AA8A7 !important; 139 | } 140 | 141 | .squeezebox-on { 142 | fill: #2baaa6 !important; 143 | } 144 | -------------------------------------------------------------------------------- /www/custom_ui/floorplan/lib/svg-pan-zoom.min.js: -------------------------------------------------------------------------------- 1 | // svg-pan-zoom v3.5.1 2 | // https://github.com/ariutta/svg-pan-zoom 3 | !function t(e,n,o){function i(r,a){if(!n[r]){if(!e[r]){var l="function"==typeof require&&require;if(!a&&l)return l(r,!0);if(s)return s(r,!0);var u=new Error("Cannot find module '"+r+"'");throw u.code="MODULE_NOT_FOUND",u}var h=n[r]={exports:{}};e[r][0].call(h.exports,function(t){var n=e[r][1][t];return i(n?n:t)},h,h.exports,t,e,n,o)}return n[r].exports}for(var s="function"==typeof require&&require,r=0;r=0;o--)this.eventListeners.hasOwnProperty(n[o])&&delete this.eventListeners[n[o]]}for(var i in this.eventListeners)(this.options.eventsListenerElement||this.svg).addEventListener(i,this.eventListeners[i],!1);this.options.mouseWheelZoomEnabled&&(this.options.mouseWheelZoomEnabled=!1,this.enableMouseWheelZoom())},l.prototype.enableMouseWheelZoom=function(){if(!this.options.mouseWheelZoomEnabled){var t=this;this.wheelListener=function(e){return t.handleMouseWheel(e)},o.on(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!0}},l.prototype.disableMouseWheelZoom=function(){this.options.mouseWheelZoomEnabled&&(o.off(this.options.eventsListenerElement||this.svg,this.wheelListener,!1),this.options.mouseWheelZoomEnabled=!1)},l.prototype.handleMouseWheel=function(t){if(this.options.zoomEnabled&&"none"===this.state){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1);var e=t.deltaY||1,n=Date.now()-this.lastMouseWheelEventTime,o=3+Math.max(0,30-n);this.lastMouseWheelEventTime=Date.now(),"deltaMode"in t&&0===t.deltaMode&&t.wheelDelta&&(e=0===t.deltaY?0:Math.abs(t.wheelDelta)/t.deltaY),e=e>-.3&&.3>e?e:(e>0?1:-1)*Math.log(Math.abs(e)+10)/o;var i=this.svg.getScreenCTM().inverse(),s=r.getEventPoint(t,this.svg).matrixTransform(i),a=Math.pow(1+this.options.zoomScaleSensitivity,-1*e);this.zoomAtPoint(a,s)}},l.prototype.zoomAtPoint=function(t,e,n){var o=this.viewport.getOriginalState();n?(t=Math.max(this.options.minZoom*o.zoom,Math.min(this.options.maxZoom*o.zoom,t)),t/=this.getZoom()):this.getZoom()*tthis.options.maxZoom*o.zoom&&(t=this.options.maxZoom*o.zoom/this.getZoom());var i=this.viewport.getCTM(),s=e.matrixTransform(i.inverse()),r=this.svg.createSVGMatrix().translate(s.x,s.y).scale(t).translate(-s.x,-s.y),a=i.multiply(r);a.a!==i.a&&this.viewport.setCTM(a)},l.prototype.zoom=function(t,e){this.zoomAtPoint(t,r.getSvgCenterPoint(this.svg,this.width,this.height),e)},l.prototype.publicZoom=function(t,e){e&&(t=this.computeFromRelativeZoom(t)),this.zoom(t,e)},l.prototype.publicZoomAtPoint=function(t,e,n){if(n&&(t=this.computeFromRelativeZoom(t)),"SVGPoint"!==s.getType(e)){if(!("x"in e&&"y"in e))throw new Error("Given point is invalid");e=r.createSVGPoint(this.svg,e.x,e.y)}this.zoomAtPoint(t,e,n)},l.prototype.getZoom=function(){return this.viewport.getZoom()},l.prototype.getRelativeZoom=function(){return this.viewport.getRelativeZoom()},l.prototype.computeFromRelativeZoom=function(t){return t*this.viewport.getOriginalState().zoom},l.prototype.resetZoom=function(){var t=this.viewport.getOriginalState();this.zoom(t.zoom,!0)},l.prototype.resetPan=function(){this.pan(this.viewport.getOriginalState())},l.prototype.reset=function(){this.resetZoom(),this.resetPan()},l.prototype.handleDblClick=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),this.options.controlIconsEnabled){var e=t.target.getAttribute("class")||"";if(e.indexOf("svg-pan-zoom-control")>-1)return!1}var n;n=t.shiftKey?1/(2*(1+this.options.zoomScaleSensitivity)):2*(1+this.options.zoomScaleSensitivity);var o=r.getEventPoint(t,this.svg).matrixTransform(this.svg.getScreenCTM().inverse());this.zoomAtPoint(n,o)},l.prototype.handleMouseDown=function(t,e){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),s.mouseAndTouchNormalize(t,this.svg),this.options.dblClickZoomEnabled&&s.isDblClick(t,e)?this.handleDblClick(t):(this.state="pan",this.firstEventCTM=this.viewport.getCTM(),this.stateOrigin=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()))},l.prototype.handleMouseMove=function(t){if(this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&this.options.panEnabled){var e=r.getEventPoint(t,this.svg).matrixTransform(this.firstEventCTM.inverse()),n=this.firstEventCTM.translate(e.x-this.stateOrigin.x,e.y-this.stateOrigin.y);this.viewport.setCTM(n)}},l.prototype.handleMouseUp=function(t){this.options.preventMouseEventsDefault&&(t.preventDefault?t.preventDefault():t.returnValue=!1),"pan"===this.state&&(this.state="none")},l.prototype.fit=function(){var t=this.viewport.getViewBox(),e=Math.min(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.contain=function(){var t=this.viewport.getViewBox(),e=Math.max(this.width/t.width,this.height/t.height);this.zoom(e,!0)},l.prototype.center=function(){var t=this.viewport.getViewBox(),e=.5*(this.width-(t.width+2*t.x)*this.getZoom()),n=.5*(this.height-(t.height+2*t.y)*this.getZoom());this.getPublicInstance().pan({x:e,y:n})},l.prototype.updateBBox=function(){this.viewport.simpleViewBoxCache()},l.prototype.pan=function(t){var e=this.viewport.getCTM();e.e=t.x,e.f=t.y,this.viewport.setCTM(e)},l.prototype.panBy=function(t){var e=this.viewport.getCTM();e.e+=t.x,e.f+=t.y,this.viewport.setCTM(e)},l.prototype.getPan=function(){var t=this.viewport.getState();return{x:t.x,y:t.y}},l.prototype.resize=function(){var t=r.getBoundingClientRectNormalized(this.svg);this.width=t.width,this.height=t.height;var e=this.viewport;e.options.width=this.width,e.options.height=this.height,e.processCTM(),this.options.controlIconsEnabled&&(this.getPublicInstance().disableControlIcons(),this.getPublicInstance().enableControlIcons())},l.prototype.destroy=function(){var t=this;this.beforeZoom=null,this.onZoom=null,this.beforePan=null,this.onPan=null,this.onUpdatedCTM=null,null!=this.options.customEventsHandler&&this.options.customEventsHandler.destroy({svgElement:this.svg,eventsListenerElement:this.options.eventsListenerElement,instance:this.getPublicInstance()});for(var e in this.eventListeners)(this.options.eventsListenerElement||this.svg).removeEventListener(e,this.eventListeners[e],!1);this.disableMouseWheelZoom(),this.getPublicInstance().disableControlIcons(),this.reset(),h=h.filter(function(e){return e.svg!==t.svg}),delete this.options,delete this.viewport,delete this.publicInstance,delete this.pi,this.getPublicInstance=function(){return null}},l.prototype.getPublicInstance=function(){var t=this;return this.publicInstance||(this.publicInstance=this.pi={enablePan:function(){return t.options.panEnabled=!0,t.pi},disablePan:function(){return t.options.panEnabled=!1,t.pi},isPanEnabled:function(){return!!t.options.panEnabled},pan:function(e){return t.pan(e),t.pi},panBy:function(e){return t.panBy(e),t.pi},getPan:function(){return t.getPan()},setBeforePan:function(e){return t.options.beforePan=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnPan:function(e){return t.options.onPan=null===e?null:s.proxy(e,t.publicInstance),t.pi},enableZoom:function(){return t.options.zoomEnabled=!0,t.pi},disableZoom:function(){return t.options.zoomEnabled=!1,t.pi},isZoomEnabled:function(){return!!t.options.zoomEnabled},enableControlIcons:function(){return t.options.controlIconsEnabled||(t.options.controlIconsEnabled=!0,i.enable(t)),t.pi},disableControlIcons:function(){return t.options.controlIconsEnabled&&(t.options.controlIconsEnabled=!1,i.disable(t)),t.pi},isControlIconsEnabled:function(){return!!t.options.controlIconsEnabled},enableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!0,t.pi},disableDblClickZoom:function(){return t.options.dblClickZoomEnabled=!1,t.pi},isDblClickZoomEnabled:function(){return!!t.options.dblClickZoomEnabled},enableMouseWheelZoom:function(){return t.enableMouseWheelZoom(),t.pi},disableMouseWheelZoom:function(){return t.disableMouseWheelZoom(),t.pi},isMouseWheelZoomEnabled:function(){return!!t.options.mouseWheelZoomEnabled},setZoomScaleSensitivity:function(e){return t.options.zoomScaleSensitivity=e,t.pi},setMinZoom:function(e){return t.options.minZoom=e,t.pi},setMaxZoom:function(e){return t.options.maxZoom=e,t.pi},setBeforeZoom:function(e){return t.options.beforeZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},setOnZoom:function(e){return t.options.onZoom=null===e?null:s.proxy(e,t.publicInstance),t.pi},zoom:function(e){return t.publicZoom(e,!0),t.pi},zoomBy:function(e){return t.publicZoom(e,!1),t.pi},zoomAtPoint:function(e,n){return t.publicZoomAtPoint(e,n,!0),t.pi},zoomAtPointBy:function(e,n){return t.publicZoomAtPoint(e,n,!1),t.pi},zoomIn:function(){return this.zoomBy(1+t.options.zoomScaleSensitivity),t.pi},zoomOut:function(){return this.zoomBy(1/(1+t.options.zoomScaleSensitivity)),t.pi},getZoom:function(){return t.getRelativeZoom()},setOnUpdatedCTM:function(e){return t.options.onUpdatedCTM=null===e?null:s.proxy(e,t.publicInstance),t.pi},resetZoom:function(){return t.resetZoom(),t.pi},resetPan:function(){return t.resetPan(),t.pi},reset:function(){return t.reset(),t.pi},fit:function(){return t.fit(),t.pi},contain:function(){return t.contain(),t.pi},center:function(){return t.center(),t.pi},updateBBox:function(){return t.updateBBox(),t.pi},resize:function(){return t.resize(),t.pi},getSizes:function(){return{width:t.width,height:t.height,realZoom:t.getZoom(),viewBox:t.viewport.getViewBox()}},destroy:function(){return t.destroy(),t.pi}}),this.publicInstance};var h=[],c=function(t,e){var n=s.getSvg(t);if(null===n)return null;for(var o=h.length-1;o>=0;o--)if(h[o].svg===n)return h[o].instance.getPublicInstance();return h.push({svg:n,instance:new l(n,e)}),h[h.length-1].instance.getPublicInstance()};e.exports=c},{"./control-icons":2,"./shadow-viewport":3,"./svg-utilities":5,"./uniwheel":6,"./utilities":7}],5:[function(t,e,n){var o=t("./utilities"),i="unknown";document.documentMode&&(i="ie"),e.exports={svgNS:"http://www.w3.org/2000/svg",xmlNS:"http://www.w3.org/XML/1998/namespace",xmlnsNS:"http://www.w3.org/2000/xmlns/",xlinkNS:"http://www.w3.org/1999/xlink",evNS:"http://www.w3.org/2001/xml-events",getBoundingClientRectNormalized:function(t){if(t.clientWidth&&t.clientHeight)return{width:t.clientWidth,height:t.clientHeight};if(t.getBoundingClientRect())return t.getBoundingClientRect();throw new Error("Cannot get BoundingClientRect for SVG.")},getOrCreateViewport:function(t,e){var n=null;if(n=o.isElement(e)?e:t.querySelector(e),!n){var i=Array.prototype.slice.call(t.childNodes||t.children).filter(function(t){return"defs"!==t.nodeName&&"#text"!==t.nodeName});1===i.length&&"g"===i[0].nodeName&&null===i[0].getAttribute("transform")&&(n=i[0])}if(!n){var s="viewport-"+(new Date).toISOString().replace(/\D/g,"");n=document.createElementNS(this.svgNS,"g"),n.setAttribute("id",s);var r=t.childNodes||t.children;if(r&&r.length>0)for(var a=r.length;a>0;a--)"defs"!==r[r.length-a].nodeName&&n.appendChild(r[r.length-a]);t.appendChild(n)}var l=[];return n.getAttribute("class")&&(l=n.getAttribute("class").split(" ")),~l.indexOf("svg-pan-zoom_viewport")||(l.push("svg-pan-zoom_viewport"),n.setAttribute("class",l.join(" "))),n},setupSvgAttributes:function(t){if(t.setAttribute("xmlns",this.svgNS),t.setAttributeNS(this.xmlnsNS,"xmlns:xlink",this.xlinkNS),t.setAttributeNS(this.xmlnsNS,"xmlns:ev",this.evNS),null!==t.parentNode){var e=t.getAttribute("style")||"";-1===e.toLowerCase().indexOf("overflow")&&t.setAttribute("style","overflow: hidden; "+e)}},internetExplorerRedisplayInterval:300,refreshDefsGlobal:o.throttle(function(){for(var t=document.querySelectorAll("defs"),e=t.length,n=0;e>n;n++){var o=t[n];o.parentNode.insertBefore(o,o)}},this.internetExplorerRedisplayInterval),setCTM:function(t,e,n){var o=this,s="matrix("+e.a+","+e.b+","+e.c+","+e.d+","+e.e+","+e.f+")";t.setAttributeNS(null,"transform",s),"transform"in t.style?t.style.transform=s:"-ms-transform"in t.style?t.style["-ms-transform"]=s:"-webkit-transform"in t.style&&(t.style["-webkit-transform"]=s),"ie"===i&&n&&(n.parentNode.insertBefore(n,n),window.setTimeout(function(){o.refreshDefsGlobal()},o.internetExplorerRedisplayInterval))},getEventPoint:function(t,e){var n=e.createSVGPoint();return o.mouseAndTouchNormalize(t,e),n.x=t.clientX,n.y=t.clientY,n},getSvgCenterPoint:function(t,e,n){return this.createSVGPoint(t,e/2,n/2)},createSVGPoint:function(t,e,n){var o=t.createSVGPoint();return o.x=e,o.y=n,o}}},{"./utilities":7}],6:[function(t,e,n){e.exports=function(){function t(t,e,n){var o=function(t){!t&&(t=window.event);var n={originalEvent:t,target:t.target||t.srcElement,type:"wheel",deltaMode:"MozMousePixelScroll"==t.type?0:1,deltaX:0,delatZ:0,preventDefault:function(){t.preventDefault?t.preventDefault():t.returnValue=!1}};return"mousewheel"==u?(n.deltaY=-1/40*t.wheelDelta,t.wheelDeltaX&&(n.deltaX=-1/40*t.wheelDeltaX)):n.deltaY=t.detail,e(n)};return c.push({element:t,fn:o,capture:n}),o}function e(t,e){for(var n=0;nn&&10>o}return!1},now:Date.now||function(){return(new Date).getTime()},throttle:function(t,e,n){var o,i,s,r=this,a=null,l=0;n||(n={});var u=function(){l=n.leading===!1?0:r.now(),a=null,s=t.apply(o,i),a||(o=i=null)};return function(){var h=r.now();l||n.leading!==!1||(l=h);var c=e-(h-l);return o=this,i=arguments,0>=c||c>e?(clearTimeout(a),a=null,l=h,s=t.apply(o,i),a||(o=i=null)):a||n.trailing===!1||(a=setTimeout(u,c)),s}},createRequestAnimationFrame:function(t){var e=null;return"auto"!==t&&60>t&&t>1&&(e=Math.floor(1e3/t)),null===e?window.requestAnimationFrame||o(33):o(e)}}},{}]},{},[1]); 4 | -------------------------------------------------------------------------------- /www/custom_ui/state-card-custom-ui-es5.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /www/custom_ui/state-card-custom-ui-es5.html.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/custom_ui/state-card-custom-ui-es5.html.gz -------------------------------------------------------------------------------- /www/custom_ui/state-card-custom-ui.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /www/custom_ui/state-card-custom-ui.html.gz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/custom_ui/state-card-custom-ui.html.gz -------------------------------------------------------------------------------- /www/icon_ink_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/icon_ink_black.png -------------------------------------------------------------------------------- /www/icon_ink_cyan.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/icon_ink_cyan.png -------------------------------------------------------------------------------- /www/icon_ink_magenta.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/icon_ink_magenta.png -------------------------------------------------------------------------------- /www/icon_ink_yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Alex-developer/Home-Assistant-Config/06de6135a9d007064f2fcef8e1914487f5c8a9b2/www/icon_ink_yellow.png -------------------------------------------------------------------------------- /zones/zone_alex_work.yaml: -------------------------------------------------------------------------------- 1 | name: Alex Work 2 | latitude: !secret zone_alex_work_lat 3 | longitude: !secret zone_alex_work_lon 4 | radius: 250 5 | icon: mdi:worker -------------------------------------------------------------------------------- /zones/zone_rebecca_work.yaml: -------------------------------------------------------------------------------- 1 | name: Rebecca Work 2 | latitude: !secret zone_rebecca_work_lat 3 | longitude: !secret zone_rebecca_work_lon 4 | radius: 250 5 | icon: mdi:worker --------------------------------------------------------------------------------