├── .HA_VERSION
├── .gitignore
├── .gitlab-ci.yml
├── .mdlrc
├── .stubs
└── secrets.yaml
├── .yamllint
├── README.md
├── automations
├── circulation_pump_with_lights.yaml
├── coiffeuse_with_aqara.yaml
├── fire_alarm.yaml
├── frontend_day_mode.yaml
├── ios_lock_door.yaml
├── led_shower_with_light_parents_off.yaml
├── led_shower_with_light_parents_on.yaml
├── light_center_off.yaml
├── light_center_on_.yaml
├── light_couch_off.yaml
├── light_couch_on.yaml
├── light_dressing_led_off.yaml
├── light_dressing_led_on.yaml
├── light_flur2_with_motion_off.yaml
├── light_flur2_with_motion_on.yaml
├── light_on_sam_morning.yaml
├── light_reserve_couloir_off.yaml
├── light_reserve_couloir_on.yaml
├── light_sam_off_morning.yaml
├── light_sdb_with_dressing_on.yaml
├── light_stairs_with_bedlight_off.yaml
├── machines
│ ├── clothes _dryer
│ │ ├── cd_clean.yaml
│ │ ├── cd_idle.yaml
│ │ └── cd_running.yaml
│ ├── dish_washer
│ │ ├── dw_clean.yaml
│ │ ├── dw_idle.yaml
│ │ └── dw_running.yaml
│ └── washing_machine
│ │ ├── wm_clean.yaml
│ │ ├── wm_idle.yaml
│ │ └── wm_running.yaml
├── notifiy_rina_arrives_leaves_home.yaml.old
├── nuki_batt_low.yaml
├── nuki_door_locked_notification.yaml
├── nuki_door_unlocked_notification.yaml
├── phone_status_notification.yaml
├── radio_off_when_leaving.yaml
├── radio_off_when_tv_on.yaml
├── switch_on_light_when_coming_home.yaml
├── system_shutdown_notification.yaml
├── system_startup_notification.yaml
├── system_upgrade_aler.yaml
├── weekly_snapshot.yaml
├── welcome_home_andrea.yaml
└── welcome_home_rina.yaml
├── configuration.yaml
├── custom_components
└── hacs
│ ├── .translations
│ └── en.json
│ ├── __init__.py
│ ├── api.py
│ ├── config_flow.py
│ ├── const.py
│ ├── frontend
│ ├── __init__.py
│ ├── elements
│ │ ├── all.min.css.gz
│ │ ├── hacs.css
│ │ ├── hacs.css.gz
│ │ ├── hacs.js.gz
│ │ ├── materialize.min.css.gz
│ │ ├── materialize.min.js.gz
│ │ └── webfonts
│ │ │ ├── fa-brands-400.eot.gz
│ │ │ ├── fa-brands-400.svg.gz
│ │ │ ├── fa-brands-400.ttf.gz
│ │ │ ├── fa-brands-400.woff.gz
│ │ │ ├── fa-brands-400.woff2.gz
│ │ │ ├── fa-regular-400.eot.gz
│ │ │ ├── fa-regular-400.svg.gz
│ │ │ ├── fa-regular-400.ttf.gz
│ │ │ ├── fa-regular-400.woff.gz
│ │ │ ├── fa-regular-400.woff2.gz
│ │ │ ├── fa-solid-900.eot.gz
│ │ │ ├── fa-solid-900.svg.gz
│ │ │ ├── fa-solid-900.ttf.gz
│ │ │ ├── fa-solid-900.woff.gz
│ │ │ └── fa-solid-900.woff2.gz
│ └── templates
│ │ ├── base.html
│ │ ├── error.html
│ │ ├── grid.html
│ │ ├── grid_new.html
│ │ ├── message.html
│ │ ├── modal
│ │ ├── upgrade_all.html
│ │ └── wrong_ha_version.html
│ │ ├── overviews.html
│ │ ├── repository.html
│ │ ├── repository
│ │ ├── authors.html
│ │ ├── buttons.html
│ │ ├── menu.html
│ │ ├── note.html
│ │ └── versionselect.html
│ │ ├── settings.html
│ │ ├── settings
│ │ ├── buttons.html
│ │ ├── custom_repositories.html
│ │ ├── dev
│ │ │ ├── remove_new_flag.html
│ │ │ ├── repositories.html
│ │ │ ├── repository.html
│ │ │ ├── set_ha_version.html
│ │ │ ├── template_test.html
│ │ │ └── token.html
│ │ ├── developer.html
│ │ ├── hacs_info.html
│ │ └── hidden_repositories.html
│ │ ├── table.html
│ │ └── table_new.html
│ ├── hacsbase
│ ├── __init__.py
│ ├── backup.py
│ ├── configuration.py
│ ├── const.py
│ ├── data.py
│ ├── exceptions.py
│ ├── migration.py
│ ├── startup.py
│ └── update.py
│ ├── handler
│ ├── __init__.py
│ ├── download.py
│ ├── logger.py
│ └── template.py
│ ├── http.py
│ ├── manifest.json
│ ├── repositories
│ ├── __init__.py
│ ├── appdaemon.py
│ ├── integration.py
│ ├── plugin.py
│ ├── python_script.py
│ ├── repository.py
│ └── theme.py
│ ├── sensor.py
│ └── services.yaml
├── customize.yaml
├── docs
├── ABB-SA-S4.16.2.1.jpg
├── BE-TA55P2.01.jpg
├── BE-TA55P6.01.jpg
├── DMB1T.png
├── Fibsmokesensor.jpg
├── Floor1D.PNG
├── Floor1N.PNG
├── JRA-S4.230.5.1.jpg
├── MDT_AKH-040002.jpg
├── Nightmode.PNG
├── PD11-KNX.jpg
├── Page1D.PNG
├── Page1N.PNG
├── Page2.png
├── PowersupplyKNX.jpg
├── SA-S12.16.5.1.jpg
├── Synology.jpg
├── TA55P8.01.jpg
├── TXA207C.jpg
├── TYA628C.jpg
├── Visaton.jpg
├── ZAS_White.png
├── be-gt2tw.01_1.jpg
├── behringer-xenyx.jpg
├── chromecast-audio.png
├── daymode.PNG
├── fibaro_intercom.jpg
├── fibaromultisensor.png
├── fibarorgbw.png
├── ip router.jpg
├── lepy.jpg
├── mdtakh080002.jpg
├── nas.PNG
├── page1.PNG
├── presentation.jpg
├── seitlich_rund.png
├── speaker-front.png
├── speaker_back.png
├── theben DM4T.jpg
└── txm620d_1.jpg
├── entities
├── cameras
│ ├── entree.yaml
│ ├── erika.yaml
│ ├── garage_back.yaml
│ ├── garage_front.yaml
│ ├── intercom_synology.yaml
│ ├── reserve.yaml
│ └── technique.yaml
├── device_trackers
│ ├── fritz.yaml
│ └── unify.yaml.old
├── groups
│ ├── Etages.yaml
│ ├── Syno.yaml
│ ├── device_location.yaml
│ ├── network_devices.yaml
│ ├── phone.yaml
│ └── radio.yaml
├── input_select
│ ├── clothes_dryer.yaml
│ ├── dish_washer.yaml
│ ├── post_box.yaml
│ └── washing_machine.yaml
├── locks
│ └── front_door.yaml
├── sensors
│ ├── darksky.yaml
│ ├── fritzbox_callmonitor.yaml
│ ├── fritzbox_netmonitor.yaml
│ ├── synologydsm.yaml
│ ├── time_date.yaml
│ ├── ups.yaml
│ ├── version_available.yaml
│ └── version_current.yaml
├── tts
│ └── google_translate.yaml
├── vera
│ └── vera.yaml
├── weather
│ └── darksky.yaml
└── zones
│ ├── parents.yaml
│ ├── work_a.yaml
│ └── work_r.yaml
├── esphome
├── Switch_DishWasher.yaml
├── circulation_pump.yaml
├── includes
│ ├── gosund_sp1.yaml
│ └── network.yaml
├── saltlevel_sensor.yaml
├── switch_clothesdryer.yaml
├── switch_radio_parents.yaml
├── switch_washingmachine.yaml
└── ventilation.yaml
├── integrations
├── automation.yaml
├── camera.yaml
├── cloud.yaml
├── config.yaml
├── device_tracker.yaml
├── frontend.yaml
├── group.yaml
├── hacs.yaml
├── history.yaml
├── http.yaml
├── influxdb.yaml
├── input_select.yaml
├── ios.yaml
├── knx.yaml
├── lock.yaml
├── logbook.yaml
├── logger.yaml
├── lovelace.yaml
├── map.yaml
├── mobile_app.yaml
├── mqtt.yaml
├── old_packages
├── packages
│ ├── a_rolladen.yaml
│ ├── alarmte.yaml
│ ├── calm.yaml
│ ├── gn.yaml.txt
│ ├── homekit.yaml
│ ├── knx.yaml
│ ├── knx_climate.yaml
│ ├── knx_groups.yaml
│ ├── knx_lights.yaml
│ ├── knx_rolladen.yaml
│ ├── knx_sensors.yaml
│ ├── noel.txt
│ ├── radio_new.yaml
│ ├── sensor.yaml
│ └── wg.yaml
├── panel_iframe.yaml
├── recorder.yaml
├── script.yaml
├── sensor.yaml
├── speedtestdotnet.yaml
├── stream.yaml
├── sun.yaml
├── system_health.yaml
├── tts.yaml
├── updater.yaml
├── vera.yaml
├── weather.yaml
└── zone.yaml
├── lovelace
├── floor_plans
│ ├── plan_0.yaml
│ ├── plan_1.yaml
│ └── plan_2.yaml
├── resources
│ ├── banner_card.yaml
│ ├── button-card.yaml
│ ├── card_tools.yaml
│ ├── compact_custom_header.yaml
│ ├── cover_element.yaml
│ ├── decluttering-card.yaml
│ ├── layout_card.yaml
│ ├── lovelace_swipe_navigation.yaml
│ ├── mini_garph_card.yaml
│ ├── mini_media_player.yaml
│ ├── monster_card.yaml
│ ├── plan_coordinates.yaml
│ ├── slider_entity_row.yaml
│ └── swipe_card.yaml
├── sections
│ ├── machine_status.yaml
│ └── radio.yaml
└── views
│ ├── at_and_sc.yaml
│ ├── cameras.yaml
│ ├── floor_0.yaml
│ ├── floor_1.yaml
│ ├── floor_2.yaml
│ ├── floor_3.yaml
│ ├── floor_plans.yaml
│ ├── housecontrol.yaml
│ ├── network_devices.yaml
│ ├── power_usage.yaml
│ ├── rgbw_leds.yaml
│ └── synology_status.yaml
├── panels
└── iframe
│ └── grafana.yaml
├── scripts
├── cover_close_with_goodnight.yaml
├── cover_first_floor_close.yaml
├── cover_first_floor_open.yaml
├── cover_kitchen_close.yaml
├── cover_kitchen_open.yaml
├── erika_slepp.yaml
├── good_night.yaml
├── system_reboot.yaml
└── tschau.yaml
├── themes
├── PmxMononight.yaml
├── christmas.yaml
├── darkcyan.yaml
├── green.yaml
├── midnight.yaml
├── solarized.yaml
└── wood.yaml
├── ui-lovelace.yaml
└── www
├── Capture0.PNG
├── Capture1.PNG
├── Capture2.PNG
├── Floor0H.PNG
├── Floor0V.PNG
├── Floor0VN.PNG
├── Floor1H.PNG
├── Floor1V.PNG
├── Floor1VN.PNG
├── Floor2H.PNG
├── Floor2V.PNG
├── Floor2VN.PNG
├── Garage_off.PNG
├── Garage_on.PNG
├── IMG_0786.PNG
├── IMG_0788.PNG
├── IMG_0789.PNG
├── arrow-down.png
├── arrow-up.png
├── back.png
├── background.png
├── circle.png
├── compact-custom-header-editor.js
├── compact-custom-header.js
├── custom-lovelace
└── swipe-card
│ ├── css
│ └── swiper.min.css
│ ├── js
│ └── swiper.min.js
│ └── swipe-card.js
├── entree_off.png
├── entree_on.png
├── exclamation.png
├── ilot_allume.PNG
├── ilot_aus.png
├── layout-card.js
├── mini-graph-card-bundle.js
├── monster-card.js
├── off.png
├── plan-coordinates.js
├── slider-entity-row.js
├── tracker-card.js
└── treppe_bis.png
/.HA_VERSION:
--------------------------------------------------------------------------------
1 | 0.97.2
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ---
2 | # Extension ignores
3 | *.log
4 | *.db
5 | *.db-shm
6 | *.db-wal
7 | *.pyc
8 | *.js
9 |
10 | # Directory (contents) ignores
11 | deps
12 | .cloud
13 | .storage
14 | notebooks
15 | www/inside
16 | www/community
17 | www/github
18 |
19 | #custom_components
20 | /glances
21 | /node-red
22 | .Trash-0
23 |
24 | # You can whitelist files/folders with !, these will not be ignored.
25 | !*.yaml
26 | !.gitignore
27 | !*.md
28 | !packages
29 | !group
30 | !components
31 | !docs
32 | !*.jpg
33 | !*.png
34 | !*.PNG
35 | !.stubs/secrets.yaml
36 | # Ignore folders
37 |
38 | #igrnore files
39 | .google.token
40 | .www
41 | .vscode
42 | .theia
43 | .ios.conf
44 | .homekit.state
45 | .spotify-token-cache
46 | .uuid
47 | core
48 | tts
49 | aircast.xml
50 | harmony_living.conf
51 | plex.conf
52 | www/compact-custom-header-editor.js
53 |
54 | # Ensure these YAML files are ignored, otherwise your secret data/credentials will leak.
55 | ip_bans.yaml
56 | /secrets.yaml
57 | /esphome/secrets.yaml
58 | /esphome/includes/secrets.yaml
59 | known_devices.yaml
60 | rln8-16-410.png
61 | rlc-410-5MP.png
62 |
--------------------------------------------------------------------------------
/.mdlrc:
--------------------------------------------------------------------------------
1 | rules "~MD033", "~MD013"
--------------------------------------------------------------------------------
/.stubs/secrets.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | icloud_username: 0000000000000000000
3 | icloud_password: 00000000000000
4 | HA_PW: 0000000000000000000
5 |
6 | zone_home_elevation: 000
7 | time_zone: Europe/Luxembourg
8 | latitude_kad: 00.0000
9 | longitude_kad: 0.0000
10 | latitude_bbt: 00.0000
11 | longitude_bbt: 0.0000
12 | latitude_koerich: 00.0000
13 | longitude_Koerich: 0.0000
14 |
15 | synology_ip: 192.168.1.1
16 | synology_cam_ip: http://192.168.1.1:8080
17 | synology_username: username
18 | synology_password: password
19 |
20 | unfiy_username: username
21 | unfiy_pwd: password
22 |
23 | fritz_user: username
24 | fritz_password: password
25 |
26 | spotify_id: 00000000000000000000000000000000
27 | spotify_secret: 00000000000000000000000000000000
28 |
29 | unify_id: username
30 | unify_secret: password
31 | unify_siteid: siteid
32 |
33 | influxdb_user: username
34 | influxdb_secret: password
35 |
36 | influx_grafana_user: username
37 | influx_grafana_pwd: password
38 |
39 | influx_glances_user: username
40 | influx_glances_pwd: password
41 |
42 | grafana_user: username
43 | grafana_secret: password
44 |
45 | dks_api_key: 00000000000000000000000000000000
46 |
47 | nuki_token: nukitoken
48 | nuki_ip: 192.168.1.1
49 | fritz_base_url: basurel
50 |
51 | ipwebcamlu: username
52 | ipwebcamlp: pasword
53 |
54 | veraip: http://192.168.1.1:3480/
55 | mqttip: 192.168.1.1
56 |
57 | xiamomi_gateway: XXXXXXXXXXXXXXXX
58 |
59 | logviwrusr: username
60 | logviwrpwd: password
61 |
62 | noderedusr: username
63 | noderedpwd: password
64 | noderedsecret: nodesecret
65 |
66 | ssh_access_usr: username
67 | ssh_access_pwd: password
68 |
69 | ssh_web_usr: username
70 | ssh_web_pwd: password
71 |
72 | vscode_usr: password
73 |
74 | Wifi_SSID: ssid
75 | Wifi_PWD: password
76 |
77 | wifi_gateway: 192.168.1.1
78 | wifi_subnet: 255.255.255.0
79 | wifi_dns1: 192.168.1.1
80 |
81 | ESP_OTA_PWD: password
82 | ESP_API_PWD: password
83 |
84 | esphome_viessmann_static_ip: 192.168.1.1
85 | esphome_switch_dishwasher_static_ip: 192.168.1.1
86 | esphome_switch_clothesdryer_static_ip: 192.168.1.1
87 | esphome_switch_radio_parents_static_ip: 192.168.1.1
88 | esphome_switch_ventilation_static_ip: 192.168.1.1
89 | esphome_espcam_static_ip: 192.168.1.1
90 |
91 | panel_iframe_grafana_url: https://url.url
92 | github_token: hjkjha3skdfjhs65aékdfhas5dklfjas545ldfkj
93 |
94 | erika_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
95 | erika_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
96 |
97 | entree_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
98 | entree_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
99 |
100 | garage_front_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
101 | garage_front_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
102 |
103 | garage_back_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
104 | garage_back_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
105 |
106 | technique_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
107 | technique_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
108 |
109 | reserve_still: http://ksaldflksadjfsdlkfashldkfasldkfjsasllnvaéskdsldf
110 | reserve_stream: rtsp://klkjsfhsdkjfdfjfzefdlshfjsdmduebjf526
111 |
--------------------------------------------------------------------------------
/.yamllint:
--------------------------------------------------------------------------------
1 | ---
2 | ignore: |
3 | config/custom_components/
4 | config/ip_bans.yaml
5 | config/esphomeyaml/*/
6 | config/notebooks/
7 | rules:
8 | braces:
9 | level: error
10 | min-spaces-inside: 0
11 | max-spaces-inside: 1
12 | min-spaces-inside-empty: -1
13 | max-spaces-inside-empty: -1
14 | brackets:
15 | level: error
16 | min-spaces-inside: 0
17 | max-spaces-inside: 0
18 | min-spaces-inside-empty: -1
19 | max-spaces-inside-empty: -1
20 | colons:
21 | level: error
22 | max-spaces-before: 0
23 | max-spaces-after: 1
24 | commas:
25 | level: error
26 | max-spaces-before: 0
27 | min-spaces-after: 1
28 | max-spaces-after: 1
29 | comments:
30 | level: error
31 | require-starting-space: true
32 | min-spaces-from-content: 2
33 | comments-indentation:
34 | level: error
35 | document-end:
36 | level: error
37 | present: false
38 | document-start:
39 | level: error
40 | present: true
41 | ignore: |
42 | config/known_devices.yaml
43 | empty-lines:
44 | level: error
45 | max: 1
46 | max-start: 0
47 | max-end: 1
48 | hyphens:
49 | level: error
50 | max-spaces-after: 1
51 | indentation:
52 | level: error
53 | spaces: 2
54 | indent-sequences: true
55 | check-multi-line-strings: false
56 | key-duplicates:
57 | level: error
58 | line-length:
59 | ignore: |
60 | .github/support.yml
61 | .github/settings.yml
62 | level: warning
63 | max: 120
64 | allow-non-breakable-words: true
65 | allow-non-breakable-inline-mappings: true
66 | new-line-at-end-of-file:
67 | level: error
68 | new-lines:
69 | level: error
70 | type: unix
71 | trailing-spaces:
72 | level: error
73 | truthy:
74 | level: error
75 |
--------------------------------------------------------------------------------
/automations/circulation_pump_with_lights.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: circulation pump with lights
3 | initial_state: true
4 | id: Circulation_pump_with_lights
5 | trigger:
6 | - platform: state
7 | entity_id: light.spots_cuisine_ilot
8 | to: 'on'
9 | - platform: state
10 | entity_id: light.mirroir_sdb_p
11 | to: 'on'
12 | - platform: state
13 | entity_id: light.lampe_wc
14 | to: 'on'
15 | - platform: state
16 | entity_id: light.LED_SDB_P
17 | to: 'on'
18 | - platform: state
19 | entity_id: light.lumiere_sdb_e
20 | to: 'on'
21 | condition:
22 | - condition: time
23 | after: '05:00:00'
24 | before: '23:59:59'
25 | action:
26 | - service: switch.turn_on
27 | entity_id: switch.circulation_pump_relay
28 |
--------------------------------------------------------------------------------
/automations/coiffeuse_with_aqara.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: coiffeuse_with_aqaura
3 | alias: couffeurs light on
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | platform: event
8 | event_type: deconz_event
9 | event_data:
10 | id: switch_rina
11 | event: 1002
12 | action:
13 | - service: light.toggle
14 | entity_id: light.mirroir_parents
15 |
--------------------------------------------------------------------------------
/automations/fire_alarm.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Fire Alarm
3 | alias: Trigger fire alarm when smoke detected
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: state
8 | entity_id: binary_sensor.smoke_sensor_1er_13
9 | to: 'on'
10 | - platform: state
11 | entity_id: binary_sensor.smoke_sensor_2eme_15
12 | to: 'on'
13 | - platform: state
14 | entity_id: binary_sensor.smoke_sensor_rdc_17
15 | to: 'on'
16 | action:
17 | - service: notify.ios_iphoneadonno
18 | data_template:
19 | title: '*BRAND alarm!*'
20 | message: "Firealarm um: {% for state in states.binary_sensor -%}\n {% if state.state\
21 | \ == 'on' and state.name != 'Wasmachine' and state.name != 'Ping to Vera'\
22 | \ %}\n {{ state.name }}\n {%- endif -%}\n{% endfor %}\n"
23 | - service: light.turn_on
24 | entity_id: group.all_lights
25 | - service: tts.google_translate_say
26 | entity_id: media_player.chromecast_messages
27 | data:
28 | message: Feuer! Verlasst das Haus!
29 | language: de
30 | - service: tts.google_translate_say
31 | entity_id: media_player.chromecast_messages
32 | data:
33 | message: Incendie Detecté! Quittez la maison!
34 | language: fr
35 |
--------------------------------------------------------------------------------
/automations/frontend_day_mode.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Frontend day mode
3 | alias: frontend day mode
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: time
8 | at: 07:00:00
9 | action:
10 | - service: frontend.set_theme
11 | data:
12 | name: default
13 | - service: switch.turn_on
14 | entity_id: switch.day_night
15 |
--------------------------------------------------------------------------------
/automations/ios_lock_door.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: ios_lock_door
3 | alias: 'lock door io app'
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | platform: event
8 | event_type: ios.notification_action_fired
9 | event_data:
10 | actionName: LOCK_DOOR
11 | action:
12 | - service: lock.lock
13 | entity_id: lock.home
14 |
--------------------------------------------------------------------------------
/automations/led_shower_with_light_parents_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Led_sdb_parentsOff
3 | alias: eteindre led sdb Parents
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: state
8 | entity_id: light.spots_douche_p
9 | to: 'off'
10 | action:
11 | - service: light.turn_off
12 | entity_id: light.LED_SDB_P
13 |
--------------------------------------------------------------------------------
/automations/led_shower_with_light_parents_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Led_sdb_parents_on
3 | alias: allumer led sdb Parents
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: state
8 | entity_id: light.spots_douche_p
9 | to: 'on'
10 | action:
11 | - service: light.turn_on
12 | entity_id: light.LED_SDB_P
13 | - delay:
14 | seconds: 1
15 | - service: light.turn_on
16 | entity_id: light.brightness_62
17 | - service: light.turn_on
18 | entity_id: light.rgbw_sdb_61
19 |
--------------------------------------------------------------------------------
/automations/light_center_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: Light center 1er off
3 | initial_state: true
4 | trigger:
5 | - platform: state
6 | entity_id: light.spots_sam
7 | to: 'off'
8 | - platform: state
9 | entity_id: light.spots_living
10 | to: 'off'
11 | condition:
12 | condition: and
13 | conditions:
14 | - condition: state
15 | entity_id: light.spots_sam
16 | state: 'off'
17 | - condition: state
18 | entity_id: light.spots_living
19 | state: 'off'
20 | action:
21 | service: light.turn_off
22 | entity_id: light.spots_millieux
23 |
--------------------------------------------------------------------------------
/automations/light_center_on_.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: Light center 1er on
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.spots_sam
8 | to: 'on'
9 | - platform: state
10 | entity_id: light.spots_living
11 | to: 'on'
12 | action:
13 | service: light.turn_on
14 | entity_id: light.spots_millieux
15 |
--------------------------------------------------------------------------------
/automations/light_couch_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: light couch off
3 | alias: Couch an schierf owes aus
4 | initial_state: true
5 | trigger:
6 | platform: time
7 | at: '23:30:00'
8 | condition:
9 | condition: and
10 | conditions:
11 | - condition: state
12 | entity_id: group.network_devices_mobile
13 | state: not_home
14 | action:
15 | - service: homeassistant.turn_off
16 | entity_id: switch.lampe_canape
17 | - service: switch.turn_off
18 | entity_id: switch.armoire_sam
19 | - service: switch.turn_off
20 | entity_id: switch.prise_sol_escalier
21 | - service: switch.turn_on
22 | entity_id: switch.armoire_cuisine
23 | - service: notify.ios_iphoneadonno
24 | data:
25 | title: Light
26 | message: Switching off lights
27 |
--------------------------------------------------------------------------------
/automations/light_couch_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: light couch on
3 | alias: Couch an schierf owes Un
4 | initial_state: true
5 | trigger:
6 | platform: numeric_state
7 | entity_id: sun.sun
8 | value_template: '{{ state.attributes.elevation }}'
9 | below: -1
10 | condition:
11 | condition: and
12 | conditions:
13 | # - condition: state
14 | # entity_id: group.network_devices_mobile
15 | # state: not_home
16 | - condition: time
17 | after: '16:00:00'
18 | before: '23:00:00'
19 | action:
20 | - service: homeassistant.turn_on
21 | entity_id: switch.lampe_canape
22 | - service: switch.turn_on
23 | entity_id: switch.armoire_sam
24 | - service: switch.turn_on
25 | entity_id: switch.prise_sol_escalier
26 | - service: switch.turn_on
27 | entity_id: switch.armoire_cuisine
28 | - service: notify.ios_iphoneadonno
29 | data:
30 | title: Light
31 | message: Switching on light living
32 | - service: frontend.set_theme
33 | data:
34 | name: darkcyan
35 | - service: switch.turn_off
36 | entity_id: switch.day_night
37 |
--------------------------------------------------------------------------------
/automations/light_dressing_led_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: light off LED Dressing
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.dressing
8 | to: 'off'
9 | condition:
10 | condition: state
11 | entity_id: light.dressing
12 | state: 'off'
13 | action:
14 | service: light.turn_off
15 | entity_id: light.led_dressing
16 |
--------------------------------------------------------------------------------
/automations/light_dressing_led_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: light on LED Dressing
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.Dressing
8 | to: 'on'
9 | condition:
10 | condition: time
11 | after: '07:00:00'
12 | before: '23:00:00'
13 | action:
14 | - service: light.turn_on
15 | entity_id: light.led_dressing
16 |
--------------------------------------------------------------------------------
/automations/light_flur2_with_motion_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | initial_state: true
3 | trigger:
4 | - platform: state
5 | entity_id: binary_sensor.bm_flur_status
6 | to: 'off'
7 | action:
8 | - service: light.turn_off
9 | entity_id: light.couloir_2e
10 |
11 |
--------------------------------------------------------------------------------
/automations/light_flur2_with_motion_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | initial_state: true
3 | trigger:
4 | - platform: state
5 | entity_id: binary_sensor.bm_flur_status
6 | to: 'on'
7 | condition:
8 | - condition: time
9 | after: '07:00:00'
10 | before: '22:00:00'
11 | action:
12 | - service: light.turn_on
13 | data:
14 | entity_id: light.couloir_2e
15 | brightness: 100
16 |
--------------------------------------------------------------------------------
/automations/light_on_sam_morning.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: light sam on morning
3 | alias: light sam on morning
4 | initial_state: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.mirroir_sdb_p
8 | to: 'off'
9 | condition:
10 | condition: and
11 | conditions:
12 | - condition: time
13 | after: 06:00:00
14 | before: 08:00:00
15 | weekday:
16 | - mon
17 | - tue
18 | - wed
19 | - thu
20 | - fri
21 | - condition: sun
22 | before: sunrise
23 | action:
24 | - service: light.turn_on
25 | entity_id: light.lumiere_sam
26 | - service: media_player.volume_set
27 | data_template:
28 | entity_id: media_player.chromecastkeller
29 | volume_level: 0.3
30 | - delay: '00:00:10'
31 | - service: media_player.play_media
32 | data:
33 | entity_id: media_player.chromecastkeller
34 | media_content_id: http://sc-eldolive.newmedia.lu/;stream.mp3
35 | media_content_type: audio/mp4
36 |
--------------------------------------------------------------------------------
/automations/light_reserve_couloir_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: light off resreve avec couloir cave
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.cave_couloir
8 | to: 'off'
9 | action:
10 | - service: light.turn_off
11 | entity_id: light.reserve
12 | - service: light.turn_off
13 | entity_id: light.spots_escalier_01_bis
14 |
--------------------------------------------------------------------------------
/automations/light_reserve_couloir_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: light on couloir avec reserve cave
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: light.cave_couloir
8 | to: 'on'
9 | condition:
10 | - condition: numeric_state
11 | entity_id: sun.sun
12 | value_template: '{{ state.attributes.elevation }}'
13 | below: 10
14 |
15 | action:
16 | - service: light.turn_on
17 | entity_id: light.reserve
18 | - service: light.turn_on
19 | entity_id: light.spots_escalier_01_bis
20 |
--------------------------------------------------------------------------------
/automations/light_sam_off_morning.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: light sam off morning
3 | alias: light sam off morning
4 | initial_state: true
5 | trigger:
6 | - platform: time
7 | at: 08:00:00
8 | - platform: numeric_state
9 | entity_id: sun.sun
10 | value_template: '{{ state.attributes.elevation }}'
11 | above: 9
12 | condition:
13 | condition: and
14 | conditions:
15 | - condition: time
16 | weekday:
17 | - mon
18 | - tue
19 | - wed
20 | - thu
21 | - fri
22 | action:
23 | - service: light.turn_off
24 | entity_id: light.lumiere_sam
25 | - service: light.turn_off
26 | entity_id: light.spots_cuisine_ilot
27 |
--------------------------------------------------------------------------------
/automations/light_sdb_with_dressing_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: light on SDB P avec Dressing
3 | initial_state: true
4 | trigger:
5 | - platform: state
6 | entity_id: light.Dressing
7 | to: 'on'
8 |
9 | condition:
10 | condition: or
11 | conditions:
12 | - condition: time
13 | after: '06:00:00'
14 | before: '08:00:00'
15 | - condition: time
16 | after: '22:00:00'
17 | before: '00:00:00'
18 |
19 | action:
20 | service: light.turn_on
21 | entity_id: light.mirroir_sdb_p
22 |
--------------------------------------------------------------------------------
/automations/light_stairs_with_bedlight_off.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: switch off Stairs with bed_light
3 | initial_state: true
4 | id: switch_off_lights_with_bedlights
5 | trigger:
6 | - platform: state
7 | entity_id: light.lit_d
8 | to: 'off'
9 | - platform: state
10 | entity_id: light.lit_g
11 | to: 'off'
12 | condition:
13 | condition: and
14 | conditions:
15 | - condition: state
16 | entity_id: light.lit_d
17 | state: 'off'
18 | - condition: state
19 | entity_id: light.lit_g
20 | state: 'off'
21 | action:
22 | service: light.turn_off
23 | entity_id: light.spots_escalier_1_2
24 |
--------------------------------------------------------------------------------
/automations/machines/clothes _dryer/cd_clean.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: cd_clean
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.seche_linge
7 | to: 'off'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_13
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.clothes_dryer
16 | option: 'Clean'
17 |
--------------------------------------------------------------------------------
/automations/machines/clothes _dryer/cd_idle.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: cd_idle
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.openclose_13
7 | to: 'on'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.seche_linge
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.clothes_dryer
16 | option: 'Idle'
17 |
--------------------------------------------------------------------------------
/automations/machines/clothes _dryer/cd_running.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: cd_running
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.seche_linge
7 | to: 'on'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_13
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.clothes_dryer
16 | option: 'Running'
17 |
--------------------------------------------------------------------------------
/automations/machines/dish_washer/dw_clean.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | hide_entity: true
3 | alias: dw_clean
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.lave_vaisaille
7 | to: 'off'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_14
11 | state: 'on'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.dish_washer_status
16 | option: 'Clean'
17 |
--------------------------------------------------------------------------------
/automations/machines/dish_washer/dw_idle.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | hide_entity: true
3 | alias: dw_idle
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.openclose_14
7 | to: 'off'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.lave_vaisaille
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.dish_washer_status
16 | option: 'Idle'
17 |
--------------------------------------------------------------------------------
/automations/machines/dish_washer/dw_running.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: dw_running
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.lave_vaisaille
7 | to: 'on'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_14
11 | state: 'on'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.dish_washer_status
16 | option: 'Running'
17 |
--------------------------------------------------------------------------------
/automations/machines/washing_machine/wm_clean.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: wm_clean
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.lave_linge
7 | to: 'off'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_9
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.washing_machine
16 | option: 'Clean'
17 |
--------------------------------------------------------------------------------
/automations/machines/washing_machine/wm_idle.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: wm_idle
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.openclose_9
7 | to: 'on'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.lave_linge
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.washing_machine
16 | option: 'Idle'
17 |
--------------------------------------------------------------------------------
/automations/machines/washing_machine/wm_running.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: wm_running
3 | hide_entity: true
4 | trigger:
5 | platform: state
6 | entity_id: binary_sensor.lave_linge
7 | to: 'on'
8 | condition:
9 | condition: state
10 | entity_id: binary_sensor.openclose_9
11 | state: 'off'
12 | action:
13 | service: input_select.select_option
14 | data:
15 | entity_id: input_select.washing_machine
16 | option: 'Running'
17 |
--------------------------------------------------------------------------------
/automations/notifiy_rina_arrives_leaves_home.yaml.old:
--------------------------------------------------------------------------------
1 | # - id: Notify when rina leaves and arrives home
2 | # alias: Notify when rina leaves and arrives home
3 | # initial_state: true
4 | # trigger:
5 | # - platform: state
6 | # entity_id: device_tracker.iphonederina
7 | # action:
8 | # - service: notify.ios_iphoneadonno
9 | # data:
10 | # title: Presence Rina
11 | # message: "{% if is_state(\"device_tracker.iphonederina\", \"home\") %}\n Rina\
12 | # \ Arrived Home\n{% elif is_state(\"sensor.phone\", \"not_home\") %}\n Rina\
13 | # \ Left Home\n{% else is_state(\"sensor.phone\", \"not home\") %}\n Rina Left\
14 | # \ Home \n{% endif %}"
--------------------------------------------------------------------------------
/automations/nuki_batt_low.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Nuki battery low
3 | alias: Nuki battery low
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | platform: template
8 | value_template: "{{ states.lock.home.attributes.battery_critical == 'true' }}"
9 | action:
10 | - service: notify.ios_iphoneadonno
11 | data_template:
12 | title: Nuki Battery Warning
13 | message: Nuki battery level critical. Please replace batteries
14 |
--------------------------------------------------------------------------------
/automations/nuki_door_locked_notification.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: inform when door is unlocked or locked speakers
3 | alias: doorstaate2
4 | initial_state: true
5 | trigger:
6 | - platform: state
7 | entity_id: lock.home
8 | action:
9 | - service: tts.google_translate_say
10 | entity_id: media_player.chromecast_messages
11 | data_template:
12 | message: >
13 | {% if is_state('lock.home', 'locked' ) %} Porte Verouillée {% else %}Attention! Porte déverouillée!
14 | {% endif %}
15 | language: fr
16 |
--------------------------------------------------------------------------------
/automations/nuki_door_unlocked_notification.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: inform when door is unlocked or locked phones
3 | alias: doorstaate
4 | initial_state: true
5 | trigger:
6 | - platform: state
7 | entity_id: lock.home
8 | action:
9 | - service: notify.ios_iphoneadonno
10 | data:
11 | title: Front Door
12 | message: >
13 | {% if is_state('lock.home', 'locked' ) %} Door Locked {% else %} !!Door Unlocked!! {% endif %}
14 | data:
15 | push:
16 | badge: 0
17 | category: 'lockdoor'
18 | # - service: notify.ios_rinas_iphone
19 | # data:
20 | # title: Entrée
21 | # message: >
22 | # {% if is_state('lock.home', 'locked' ) %} Porte Verouillée {% else %} Déverouillée!!! {% endif %}
23 |
--------------------------------------------------------------------------------
/automations/phone_status_notification.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Phone Stat notifications
3 | alias: Notify about phone state
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: state
8 | entity_id: sensor.phone
9 | action:
10 | - service: notify.ios_iphoneadonno
11 | data:
12 | title: Phone
13 | message: "{% if is_state(\"sensor.phone\", \"idle\") %}\n Phone is idle\n{%\
14 | \ elif is_state(\"sensor.phone\", \"dialing\") %}\n Calling {{ states.sensor.phone.attributes.to_name\
15 | \ }} ({{ states.sensor.phone.attributes.to }})\n{% elif is_state(\"sensor.phone\"\
16 | , \"ringing\") %}\n Incoming call from {{ states.sensor.phone.attributes.from_name\
17 | \ }} ({{ states.sensor.phone.attributes.from }})\n{% else %}\n Talking to\
18 | \ {{ states.sensor.phone.attributes.with_name }} ({{ states.sensor.phone.attributes.with\
19 | \ }})\n{% endif %}"
20 | - service: notify.rinas_iphone
21 | data:
22 | title: Phone
23 | message: "{% if is_state(\"sensor.phone\", \"idle\") %}\n Phone is idle\n{%\
24 | \ elif is_state(\"sensor.phone\", \"dialing\") %}\n Calling {{ states.sensor.phone.attributes.to_name\
25 | \ }} ({{ states.sensor.phone.attributes.to }})\n{% elif is_state(\"sensor.phone\"\
26 | , \"ringing\") %}\n Incoming call from {{ states.sensor.phone.attributes.from_name\
27 | \ }} ({{ states.sensor.phone.attributes.from }})\n{% else %}\n Talking to\
28 | \ {{ states.sensor.phone.attributes.with_name }} ({{ states.sensor.phone.attributes.with\
29 | \ }})\n{% endif %}"
30 | - service: tts.google_translate_say
31 | entity_id: media_player.chromecast_messages
32 | data_template:
33 | message: "{% if is_state(\"sensor.phone\", \"ringing\") %}\n Appel entrant\
34 | \ de {{ states.sensor.phone.attributes.from_name }} ({{ states.sensor.phone.attributes.from\
35 | \ }})\n{% endif %}"
36 | language: fr
37 | # - service: media_player.volume_set
38 | # data_template:
39 | # entity_id: media_player.chromecastkeller
40 | # volume_level: 0.5
41 | # - service: media_player.volume_set
42 | # data_template:
43 | # entity_id: media_player.chromecastchparents
44 | # volume_level: 0.5
45 |
46 | #########################################################################################################
47 |
--------------------------------------------------------------------------------
/automations/radio_off_when_leaving.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: Radio off when leaving home
3 | initial_state: true
4 | hide_entity: true
5 | trigger:
6 | - platform: state
7 | entity_id: device_tracker.rinas_iphone
8 | from: home
9 | to: not_home
10 | - platform: state
11 | entity_id: device_tracker.iphoneadonno
12 | from: home
13 | to: not_home
14 | condition:
15 | condition: state
16 | entity_id: group.network_devices_mobile
17 | state: not_home
18 | action:
19 | - service: notify.ios_iphoneadonno
20 | data:
21 | title: Goodbye
22 | message: Goodbye
23 | - service: light.turn_off
24 | entity_id: light.hall_entree
25 | - service: media_player.turn_off
26 | data:
27 | entity_id: media_player.chromecastkeller
28 | - service: media_player.turn_off
29 | data:
30 | entity_id: media_player.chromecastchparents
31 |
--------------------------------------------------------------------------------
/automations/radio_off_when_tv_on.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: 'Fernseh un radio aus '
3 | initial_state: true
4 | trigger:
5 | platform: state
6 | entity_id: remote.living
7 | condition:
8 | condition: template
9 | value_template: '{{ trigger.to_state.attributes.current_activity == "Watch TV"
10 | }}'
11 | action:
12 | - service: media_player.turn_off
13 | entity_id: media_player.chromecastkeller
14 |
--------------------------------------------------------------------------------
/automations/switch_on_light_when_coming_home.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: Switch on lights when coming home
3 | initial_state: true
4 | trigger:
5 | - platform: state
6 | entity_id: device_tracker.rinas_iphone
7 | to: home
8 | - platform: state
9 | entity_id: device_tracker.iphoneadonno
10 | to: home
11 | condition:
12 | condition: sun
13 | after: sunset
14 | before_offset: '-1:00:00'
15 | action:
16 | - service: notify.ios_iphoneadonno
17 | data:
18 | title: Welcome home
19 | message: Welcome
20 | - service: light.turn_on
21 | entity_id: light.hall_entree
22 | - service: light.turn_on
23 | entity_id: light.lum_ext_avant
24 | - delay: '00:05:00'
25 | - service: light.turn_off
26 | entity_id: light.hall_entree
27 | - service: light.turn_off
28 | entity_id: light.lum_ext_avant
29 |
--------------------------------------------------------------------------------
/automations/system_shutdown_notification.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Hass Shutdown Notification
3 | alias: Hass Shutdown Notification
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - platform: homeassistant
8 | event: shutdown
9 | action:
10 | service: notify.ios_iphoneadonno
11 | data:
12 | title: Shutdown Warning
13 | message: Hassio shutdown
14 |
--------------------------------------------------------------------------------
/automations/system_startup_notification.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Hass Startup Notification
3 | alias: Hass Startup Notification
4 | initial_state: true
5 | hide_entity: true
6 | trigger:
7 | - event: start
8 | platform: homeassistant
9 | action:
10 | - data:
11 | message: Hass restarted
12 | title: Restart Hassio
13 | service: notify.ios_iphoneadonno
14 |
--------------------------------------------------------------------------------
/automations/system_upgrade_aler.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # This alerts me on my iPhone when a new release
3 | # of Home Assistant for Hass.io is released.
4 | #
5 | alias: system_upgrade_alert
6 | initial_state: true
7 | trigger:
8 | platform: state
9 | entity_id: sensor.version_available
10 | condition:
11 | - condition: template
12 | value_template: >-
13 | {{
14 | states('sensor.version_available')
15 | !=
16 | states('sensor.version_current')
17 | }}
18 | action:
19 | - service: notify.ios_iphoneadonno
20 | data_template:
21 | title: Upgrade time!
22 | message: >-
23 | There is a Home Assistant upgrade for Hass.io pending!
24 | Version {{ states('sensor.version_available') }} just got released!
25 | data:
26 | attachment:
27 | content-type: png
28 | url: https://png2.kisspng.com/20180504/avq/kisspng-computer-icons-starburst-clip-art-the-store-to-upgrade-kuangshuai-5aecf79d6760f6.2104595515254793254235.png
29 | - service: persistent_notification.create
30 | data_template:
31 | title: Upgrade time!
32 | message: >-
33 | There is a Home Assistant upgrade for Hass.io pending!
34 | Version {{ states('sensor.version_available') }} just got released!
35 | notification_id: hassio_upgrade
36 |
--------------------------------------------------------------------------------
/automations/weekly_snapshot.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | alias: weeklysnapshot
3 | initial_state: true
4 | id: weeklysnapshot
5 | trigger:
6 | - platform: time
7 | at: 03:00:00
8 | condition:
9 | - condition: time
10 | weekday:
11 | - sun
12 | action:
13 | - service: hassio.snapshot_full
14 | data_template:
15 | name: Automated Backup {{ now().strftime('%Y-%m-%d') }}
16 |
--------------------------------------------------------------------------------
/automations/welcome_home_andrea.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Welcome Home Andrea
3 | alias: welcome home Andrea
4 | trigger:
5 | - entity_id: device_tracker.iphoneadonno
6 | platform: state
7 | to: home
8 | condition:
9 | - after: 08:00:00
10 | before: '20:00:00'
11 | condition: time
12 | - condition: state
13 | entity_id: device_tracker.rinas_iphone
14 | state: not home
15 | action:
16 | - data:
17 | language: en
18 | message: Welcome home. Andrea!
19 | entity_id: media_player.chromecast_messages
20 | service: tts.google_translate_say
21 |
--------------------------------------------------------------------------------
/automations/welcome_home_rina.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | id: Welcome Home Rina
3 | alias: welcome home Rina
4 | trigger:
5 | - platform: state
6 | entity_id: device_tracker.rinas_iphone
7 | to: home
8 | condition:
9 | - condition: time
10 | after: 08:00:00
11 | before: '20:00:00'
12 | action:
13 | - service: tts.google_translate_say
14 | entity_id: media_player.chromecast_messages
15 | data:
16 | message: Bienvenue. Rina
17 | language: fr
18 |
--------------------------------------------------------------------------------
/configuration.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | homeassistant:
3 | packages: !include_dir_named integrations
4 |
5 | discovery:
6 | ignore:
7 | - plex_mediaserver
8 | knx:
9 |
--------------------------------------------------------------------------------
/custom_components/hacs/.translations/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "config": {
3 | "title": "HACS (Home Assistant Community Store)",
4 | "step": {
5 | "user": {
6 | "title": "HACS (Home Assistant Community Store)",
7 | "description": "If you need help with the configuration have a look here: https://custom-components.github.io/hacs/installation/configuration/",
8 | "data": {
9 | "token": "GitHub Personal Access Token",
10 | "sidepanel_title": "Sidepanel title",
11 | "sidepanel_icon": "Sidepanel icon",
12 | "appdaemon": "Enable AppDaemon apps discovery & tracking",
13 | "python_script": "Enable python_scripts discovery & tracking",
14 | "theme": "Enable Themes discovery & tracking"
15 | }
16 | }
17 | },
18 | "error": {
19 | "auth": "Personal Access Token is not correct."
20 | },
21 | "abort": {
22 | "single_instance_allowed": "Only a single configuration of HACS is allowed."
23 | }
24 | }
25 | }
--------------------------------------------------------------------------------
/custom_components/hacs/const.py:
--------------------------------------------------------------------------------
1 | """Constants for HACS"""
2 | NAME_LONG = "HACS (Home Assistant Community Store)"
3 | NAME_SHORT = "HACS"
4 | VERSION = "0.13.2"
5 | DOMAIN = "hacs"
6 | PROJECT_URL = "https://github.com/custom-components/hacs/"
7 | CUSTOM_UPDATER_LOCATIONS = [
8 | "{}/custom_components/custom_updater.py",
9 | "{}/custom_components/custom_updater/__init__.py",
10 | ]
11 |
12 | ISSUE_URL = f"{PROJECT_URL}issues"
13 | DOMAIN_DATA = f"{NAME_SHORT.lower()}_data"
14 |
15 | ELEMENT_TYPES = ["integration", "plugin"]
16 |
17 | IFRAME = {
18 | "title": "Community",
19 | "icon": "mdi:alpha-c-box",
20 | "url": "/community_overview",
21 | "path": "community",
22 | "require_admin": True,
23 | }
24 |
25 |
26 | # Messages
27 | CUSTOM_UPDATER_WARNING = """
28 | This cannot be used with custom_updater.
29 | To use this you need to remove custom_updater form {}
30 | """
31 |
32 | DEV_MODE = "You have 'dev' enabled for HACS, this is not intended for regular use, no support will be given if you break something."
33 |
34 | STARTUP = f"""
35 | -------------------------------------------------------------------
36 | HACS (Home Assistant Community Store)
37 |
38 | Version: {VERSION}
39 | This is a custom integration
40 | If you have any issues with this you need to open an issue here:
41 | https://github.com/custom-components/hacs/issues
42 | -------------------------------------------------------------------
43 | """
44 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/__init__.py:
--------------------------------------------------------------------------------
1 | """Initialize frontend objects."""
2 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/all.min.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/all.min.css.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/hacs.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/hacs.css.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/hacs.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/hacs.js.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/materialize.min.css.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/materialize.min.css.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/materialize.min.js.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/materialize.min.js.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.eot.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.eot.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.svg.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.svg.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.ttf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.ttf.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.woff.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.woff.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.woff2.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-brands-400.woff2.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.eot.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.eot.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.svg.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.svg.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.ttf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.ttf.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.woff.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.woff.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.woff2.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-regular-400.woff2.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.eot.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.eot.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.svg.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.svg.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.ttf.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.ttf.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.woff.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.woff.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.woff2.gz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/elements/webfonts/fa-solid-900.woff2.gz
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/base.html:
--------------------------------------------------------------------------------
1 | {% set progressbar = 'block' if hacs.system.status.background_task else 'none' %}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
25 |
26 |
27 |
Background task running, this page will reload when it's done.
28 |
31 |
32 |
37 | {% if message %}
38 | {% include 'message.html' with context %}
39 | {% endif %}
40 | {% set hacs_repo = hacs.get_by_name("custom-components/hacs") %}
41 | {% if hacs_repo.pending_restart %}
42 | {% set message = "The frontend of HACS have been disabled until you restart Home Assistant." %}
43 | {% include 'message.html' with context %}
44 | {% else %}
45 | {% block content %}
46 | {% endblock %}
47 | {% endif %}
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/error.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
4 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/grid.html:
--------------------------------------------------------------------------------
1 |
2 |
{{ displaytype }}
3 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/grid_new.html:
--------------------------------------------------------------------------------
1 | {% set repositories = namespace(repositories=[]) %}
2 | {% for repository in hacs.sorted_by_name %}
3 | {% if repository.status.new %}
4 | {% set repositories.repositories = repositories.repositories+[repository] %}
5 | {% endif %}
6 | {% endfor %}
7 | {% if repositories.repositories %}
8 |
9 |
NEW REPOSITORIES (ALL)
10 |
18 |
44 |
45 |
46 |
47 | {% endif %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/message.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {{message}}
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/modal/upgrade_all.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Pending Upgrades
4 | {% for repository in hacs.repositories %}
5 | {% if repository.pending_upgrade %}
6 |
- {{repository.information.name}} (
7 | {{repository.display_installed_version}}
8 | ->
9 | {{repository.display_available_version}}
10 | )
11 | {% endif %}
12 | {% endfor %}
13 |
14 |
15 | Be carefull using this feature, elements may contain breaking changes,
16 | make sure you read the release notes for all the elements in the list above.
17 |
18 |
19 |
33 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/modal/wrong_ha_version.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
Unsupported Home Assistant version
4 |
5 | You have version '{{hacs.store.ha_version}}' of Home Assistant, but version '{{repository.available_version}}' of '{{repository.name}}' require version '{{repository.homeassistant_version}}' of Home Assistant, installation and upgrades are disabled for this integration untill you upgrade Home Assistant.
6 |
7 |
8 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/overviews.html:
--------------------------------------------------------------------------------
1 |
2 | {% extends "base.html" %}
3 | {% block content %}
4 | {% if location == 'store' %}
5 |
6 |
8 |
9 | {% if hacs.configuration.frontend_mode == "Grid" %}
10 | {% include 'grid_new.html' with context %}
11 | {% else %}
12 | {% include 'table_new.html' with context %}
13 | {% endif %}
14 | {% endif %}
15 |
16 | {% for type in hacs.common.categories %}
17 |
18 | {% if type == 'appdaemon' %}
19 | {% set displaytype = 'APPDAEMON APPS' %}
20 | {% elif type == 'python_script' %}
21 | {% set displaytype = 'PYTHON SCRIPTS' %}
22 | {% else %}
23 | {% set displaytype = (type + 's') | upper %}
24 | {% endif %}
25 |
26 | {% set repositories = namespace(repositories=[]) %}
27 |
28 | {% for repository in hacs.sorted_by_name %}
29 | {% if not repository.status.hide %}
30 | {% if repository.information.category == type %}
31 | {% if location == 'overview' %}
32 | {% if repository.status.installed %}
33 | {% set repositories.repositories = repositories.repositories+[repository] %}
34 | {% endif %}
35 | {% else %}
36 | {% if repository.information.uid != "172733314" %}
37 | {% set repositories.repositories = repositories.repositories+[repository] %}
38 | {% endif %}
39 | {% endif %}
40 | {% endif %}
41 | {% endif %}
42 | {% endfor %}
43 |
44 | {% if repositories.repositories %}
45 | {% if hacs.configuration.frontend_mode == "Grid" %}
46 | {% include 'grid.html' with context %}
47 | {% else %}
48 | {% include 'table.html' with context %}
49 | {% endif %}
50 | {% endif %}
51 |
52 | {% endfor %}
53 |
54 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/repository/authors.html:
--------------------------------------------------------------------------------
1 | {% if repository.information.authors %}
2 | {% if repository.information.category == "integration" %}
3 |
4 |
5 | Author(s):
6 |
7 |
8 | {% for author in repository.information.authors %}
9 | {% if "@" in author %}
10 | {% set author = author.split("@")[-1] %}
11 | {% endif %}
12 | @{{author}}
14 | {% endfor %}
15 |
16 |
17 | {% else %}
18 |
19 |
20 | Author:
21 |
22 |
23 | {{repository.information.authors}}
24 |
25 |
26 | {% endif %}
27 | {% endif %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/repository/buttons.html:
--------------------------------------------------------------------------------
1 | {% if not repository.can_install %}
2 | {% include 'modal/wrong_ha_version.html' with context %}
3 | {% endif %}
4 |
5 |
6 | {% if repository.can_install %}
7 |
14 | {% else %}
15 |
16 | {{repository.main_action}}
17 |
18 | {% endif %}
19 |
20 | {% if repository.pending_upgrade and repository.display_version_or_commit == "version" %}
21 |
24 | CHANGELOG
25 |
26 | {% endif %}
27 |
28 |
29 | repository
30 |
31 |
32 | {% if repository.status.installed and repository.information.category == "plugin" %}
33 | {% set name = repository.information.full_name.split("/")[-1] %}
34 |
35 | OPEN PLUGIN
36 |
37 | {% endif %}
38 |
39 | {% if repository.status.installed and repository.information.uid != "172733314" %}
40 |
48 | {% endif %}
49 |
50 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/repository/menu.html:
--------------------------------------------------------------------------------
1 |
12 |
13 | {% if repository.display_version_or_commit == "version" %}
14 | {% set hide_show = "hide" if repository.status.show_beta else "show" %}
15 |
24 | {% endif %}
25 |
26 | {% if not repository.status.installed %}
27 | {% if not repository.custom %}
28 | {% if repository.information.uid != "172733314" %}
29 |
39 | {% endif %}
40 | {% endif %}
41 | {% endif %}
42 |
43 |
44 |
46 | Open issue
47 |
48 |
49 |
50 |
51 | {% if repository.information.uid != "172733314" %}
52 |
53 |
56 | Flag this
57 |
58 |
59 | {% endif %}
60 |
61 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/repository/note.html:
--------------------------------------------------------------------------------
1 | {% if repository.additional_info %}
2 |
3 |
4 | {% endif %}
5 |
6 | {% if repository.information.category == "appdaemon" %}
7 |
8 |
9 | When installed, this will be located in '{{repository.content.path.local}}',
10 | you still need to add it to your 'apps.yaml' file.
11 |
12 |
13 | {% elif repository.information.category == "integration" %}
14 |
15 |
16 | When installed, this will be located in '{{repository.content.path.local}}',
17 | you still need to add it to your 'configuration.yaml' file.
18 |
19 |
20 | {% elif repository.information.category == "plugin" %}
21 | {% set name = repository.information.full_name.split("/")[-1] %}
22 |
23 |
24 | When installed, this will be located in '{{repository.content.path.local }}',
25 | you still need to add it to your lovelace configuration ('ui-lovelace.yaml' or the raw UI config editor).
26 |
27 |
28 |
29 | When you add this to your configuration use this:
30 |
31 |
32 | - url: /community_plugin/{{name}}/{{repository.information.file_name}}
33 | {%- if repository.information.javascript_type %}
34 | type: {{repository.information.javascript_type}}
35 | {%- else %}
36 | type: Could not determine the type of this plugin, check the repository.
37 | {%- endif -%}
38 |
39 |
40 |
41 |
42 | {% endif %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/repository/versionselect.html:
--------------------------------------------------------------------------------
1 | {% set tags = repository.releases.published_tags | sort(True) %}
2 | {% if repository.information.uid == "172733314" %}
3 | {% set tags = namespace(tags=[]) %}
4 | {% for tag in repository.releases.published_tags | sort(True) %}
5 | {% if (tag.split(".")[1] | int) == (repository.versions.installed.split(".")[1] | int) %}
6 | {% set tags.tags = tags.tags + [tag] %}
7 | {% endif %}
8 | {% endfor %}
9 | {% set tags = tags.tags + [repository.information.default_branch] %}
10 | {% else %}
11 | {% set tags = tags + [repository.information.default_branch] %}
12 | {% endif %}
13 |
14 |
15 | {% if repository.status.selected_tag %}
16 | {% set selected_tag = repository.status.selected_tag %}
17 | {% else %}
18 | {% set selected_tag = repository.versions.available %}
19 | {% endif %}
20 |
21 | Available versions:
22 |
23 |
24 |
34 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 | {% if hacs.configuration.dev %}
4 | {% set message = "You have 'dev' enabled for HACS, this is not intended for regular use, no support will be given if you break something." %}
5 | {% include 'message.html' with context %}
6 | {% endif %}
7 |
8 | {% include 'modal/upgrade_all.html' with context %}
9 |
10 |
11 | {% include 'settings/hacs_info.html' with context %}
12 | {% include 'settings/buttons.html' with context %}
13 | {% include 'settings/custom_repositories.html' with context %}
14 | {% include 'settings/hidden_repositories.html' with context %}
15 |
16 |
17 | {% if hacs.configuration.dev and not hacs.system.status.background_task %}
18 | {% include 'settings/developer.html' with context %}
19 | {% endif %}
20 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/buttons.html:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/custom_repositories.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
42 |
43 | {% if not hacs.system.status.background_task %}
44 |
60 | {% endif %}
61 |
62 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/remove_new_flag.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
12 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/repositories.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 | {% for repository in hacs.store.frontend|sort(attribute='name') %}
4 |
10 | {% endfor %}
11 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/repository.html:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/custom_components/hacs/frontend/templates/settings/dev/repository.html
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/set_ha_version.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
13 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/template_test.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
17 |
18 | {% if hacs.dev_template %}
19 |
20 |
21 | {{ hacs.dev_template }}
22 |
23 |
24 | {% endif %}
25 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/dev/token.html:
--------------------------------------------------------------------------------
1 | {% extends "base.html" %}
2 | {% block content %}
3 |
4 |
5 | {{hacs.token}}
6 |
7 |
8 | {% endblock %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/developer.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
DEVELOPER TOOLS
4 | {% for button in [
5 | "remove_new_flag",
6 | "repositories",
7 | "set_ha_version",
8 | "token",
9 | "template_test"
10 | ] %}
11 |
12 |
13 |
14 | {{ button.replace("_"," ")}}
15 |
16 |
17 | {% endfor %}
18 |
19 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/hacs_info.html:
--------------------------------------------------------------------------------
1 | {% if hacs.get_by_id("172733314").pending_restart %}
2 | {% set pending_restart = " (RESTART PENDING!) " %}
3 | {% else %}
4 | {% set pending_restart = "" %}
5 | {% endif %}
6 |
7 |
8 |
9 |
HACS (Home Assistant Community Store)
10 |
11 |
12 |
13 | Version:
14 |
15 |
16 | {{hacs.version}}{{pending_restart}}
17 |
18 |
19 |
20 |
21 | Display:
22 |
23 |
24 |
26 |
28 | {% for displayoption in ["Grid", "Table"] %}
29 | {{displayoption}}
31 | {% endfor %}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/settings/hidden_repositories.html:
--------------------------------------------------------------------------------
1 | {% set repositories = namespace(hidden=False) %}
2 | {% for repository in hacs.repositories_list_repo %}
3 | {% if repository.hide %}
4 | {% set repositories.hidden = True %}
5 | {% endif %}
6 | {% endfor %}
7 |
8 | {% if repositories.hidden %}
9 |
42 | {% endif %}
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/table.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{{ displaytype }}
4 |
5 |
6 |
7 | Status
8 | Name
9 | Description
10 | {% if location == 'overview' %}
11 | Installed
12 | Available
13 | {% endif %}
14 |
15 |
16 |
17 | {% for repository in repositories.repositories %}
18 |
20 |
21 | {% if location == 'store' and repository.status.new %}
22 | NEW
23 | {% else %}
24 |
25 | {% endif %}
26 |
27 | {{repository.display_name}}
28 |
29 | {{repository.information.description}}
30 | {% if location == 'overview' %}
31 | {{repository.display_installed_version}}
32 | {{repository.display_available_version}}
33 | {% endif %}
34 |
35 | {% endfor %}
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/custom_components/hacs/frontend/templates/table_new.html:
--------------------------------------------------------------------------------
1 | {% set repositories = namespace(repositories=[]) %}
2 | {% for repository in hacs.sorted_by_name %}
3 | {% if repository.status.new %}
4 | {% set repositories.repositories = repositories.repositories+[repository] %}
5 | {% endif %}
6 | {% endfor %}
7 | {% if repositories.repositories %}
8 |
9 |
10 |
NEW REPOSITORIES (ALL)
11 |
13 |
14 |
16 | Remove the NEW flag for all new items
17 |
18 |
19 |
20 |
21 |
22 | Category
23 | Name
24 | Description
25 |
26 |
27 |
28 | {% for repository in repositories.repositories %}
29 |
31 |
32 | {{repository.information.category | upper}}
33 |
34 |
35 | {{repository.display_name}}
36 |
37 | {{repository.information.description}}
38 |
39 | {% endfor %}
40 |
41 |
42 |
43 |
44 | {% endif %}
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/backup.py:
--------------------------------------------------------------------------------
1 | """Backup."""
2 | import os
3 | from time import sleep
4 | from shutil import copy2, rmtree
5 | from distutils.dir_util import copy_tree
6 |
7 | from integrationhelper import Logger
8 |
9 |
10 | class Backup:
11 | """Backup."""
12 |
13 | def __init__(self, local_path):
14 | """initialize."""
15 | self.logger = Logger("hacs.backup")
16 | self.local_path = local_path
17 | self.backup_path = "/tmp/hacs_backup"
18 |
19 | def create(self):
20 | """Create a backup in /tmp"""
21 | if os.path.exists(self.backup_path):
22 | rmtree(self.backup_path)
23 | while os.path.exists(self.backup_path):
24 | sleep(0.1)
25 | os.makedirs(self.backup_path, exist_ok=True)
26 |
27 | try:
28 | if os.path.isfile(self.local_path):
29 | copy2(self.local_path, self.backup_path)
30 | os.remove(self.local_path)
31 | else:
32 | copy_tree(self.local_path, self.backup_path)
33 | rmtree(self.local_path)
34 | while os.path.exists(self.local_path):
35 | sleep(0.1)
36 | self.logger.debug(
37 | f"Backup for {self.local_path}, created in {self.backup_path}"
38 | )
39 | except Exception: # pylint: disable=broad-except
40 | pass
41 |
42 | def restore(self):
43 | """Restore from backup."""
44 | if os.path.isfile(self.local_path):
45 | os.remove(self.local_path)
46 | else:
47 | rmtree(self.local_path)
48 | while os.path.exists(self.local_path):
49 | sleep(0.1)
50 | copy2(self.backup_path, self.local_path)
51 | self.logger.debug(f"Restored {self.local_path}, from backup {self.backup_path}")
52 |
53 | def cleanup(self):
54 | """Cleanup backup files."""
55 | rmtree(self.backup_path)
56 | while os.path.exists(self.backup_path):
57 | sleep(0.1)
58 | self.logger.debug(f"Backup dir {self.backup_path} cleared")
59 |
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/configuration.py:
--------------------------------------------------------------------------------
1 | """HACS Configuration."""
2 |
3 |
4 | class Configuration:
5 | """Configuration class."""
6 |
7 | def __init__(self, config):
8 | """Initialize."""
9 | self.config = config
10 | self.frontend_mode = "Grid"
11 | self.config_type = None
12 | self.config_entry = None
13 |
14 | @property
15 | def token(self):
16 | """GitHub Access token."""
17 | if self.config.get("token") is not None:
18 | return self.config["token"]
19 | return None
20 |
21 | @property
22 | def sidepanel_title(self):
23 | """Sidepanel title."""
24 | if self.config.get("sidepanel_title") is not None:
25 | return self.config["sidepanel_title"]
26 | return "Community"
27 |
28 | @property
29 | def sidepanel_icon(self):
30 | """Sidepanel icon."""
31 | if self.config.get("sidepanel_icon") is not None:
32 | return self.config["sidepanel_icon"]
33 | return "mdi:alpha-c-box"
34 |
35 | @property
36 | def dev(self):
37 | """Dev mode active."""
38 | if self.config.get("dev") is not None:
39 | return self.config["dev"]
40 | return False
41 |
42 | @property
43 | def plugin_path(self):
44 | """Plugin path."""
45 | if self.config.get("plugin_path") is not None:
46 | return self.config["plugin_path"]
47 | return "www/community/"
48 |
49 | @property
50 | def appdaemon(self):
51 | """Enable appdaemon."""
52 | if self.config.get("appdaemon") is not None:
53 | return self.config["appdaemon"]
54 | return False
55 |
56 | @property
57 | def appdaemon_path(self):
58 | """Appdaemon apps path."""
59 | if self.config.get("appdaemon_path") is not None:
60 | return self.config["appdaemon_path"]
61 | return "appdaemon/apps/"
62 |
63 | @property
64 | def python_script(self):
65 | """Enable python_script."""
66 | if self.config.get("python_script") is not None:
67 | return self.config["python_script"]
68 | return False
69 |
70 | @property
71 | def python_script_path(self):
72 | """python_script path."""
73 | if self.config.get("python_script_path") is not None:
74 | return self.config["python_script_path"]
75 | return "python_scripts/"
76 |
77 | @property
78 | def theme(self):
79 | """Enable theme."""
80 | if self.config.get("theme") is not None:
81 | return self.config["theme"]
82 | return False
83 |
84 | @property
85 | def theme_path(self):
86 | """Themes path."""
87 | if self.config.get("theme_path") is not None:
88 | return self.config["theme_path"]
89 | return "themes/"
90 |
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/const.py:
--------------------------------------------------------------------------------
1 | """Constants for HACS"""
2 | # pylint: disable=unused-import
3 | from ..const import ELEMENT_TYPES
4 |
5 | STORAGE_VERSION = "5"
6 | STORENAME = "hacs"
7 |
8 | # Messages
9 | NOT_SUPPORTED_HA_VERSION = "You have version '{}' of Home Assistant, but version '{}' of '{}' require version '{}' of Home Assistant, install and upgrades are disabled for this integration untill you upgrade Home Assistant."
10 |
11 |
12 | NO_ELEMENTS = "No elements to show, open the store to install some awesome stuff."
13 |
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/exceptions.py:
--------------------------------------------------------------------------------
1 | """Custom Exceptions."""
2 |
3 |
4 | class HacsBaseException(Exception):
5 | """Super basic."""
6 |
7 |
8 | class HacsUserScrewupException(HacsBaseException):
9 | """Raise this when the user does something they should not do."""
10 |
11 |
12 | class HacsNotSoBasicException(HacsBaseException):
13 | """Not that basic."""
14 |
15 |
16 | class HacsDataFileMissing(HacsBaseException):
17 | """Raise this storage datafile is missing."""
18 |
19 |
20 | class HacsDataNotExpected(HacsBaseException):
21 | """Raise this when data returned from storage is not ok."""
22 |
23 |
24 | class HacsRepositoryInfo(HacsBaseException):
25 | """Raise this when repository info is missing/wrong."""
26 |
27 |
28 | class HacsRequirement(HacsBaseException):
29 | """Raise this when repository is missing a requirement."""
30 |
31 |
32 | class HacsMissingManifest(HacsBaseException):
33 | """Raise this when manifest is missing."""
34 |
35 | def __init__(self, message="The manifest file is missing in the repository."):
36 | super().__init__(message)
37 | self.message = message
38 |
39 |
40 | class HacsBlacklistException(HacsBaseException):
41 | """Raise this when the repository is currently in the blacklist."""
42 |
43 | def __init__(self, message="The repository is currently in the blacklist."):
44 | super().__init__(message)
45 | self.message = message
46 |
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/startup.py:
--------------------------------------------------------------------------------
1 | """HACS Startup."""
2 | from . import Hacs
3 |
4 |
5 | class HacsStartup(Hacs):
6 | """Startup class."""
7 |
8 | async def run_startup(self):
9 | """Run startup tasks for HACS."""
10 | self.logger.critical("Startup!")
11 | if self.configuration.dev:
12 | self.logger.critical("Running in DEV mode!")
13 | if self.developer.devcontainer:
14 | self.logger.critical("Running inside a devcontainer")
15 | self.logger.critical("Some features have been disabled")
16 | self.logger.critical("It will only fetch one repository pr category")
17 |
--------------------------------------------------------------------------------
/custom_components/hacs/hacsbase/update.py:
--------------------------------------------------------------------------------
1 | """HACS Updater."""
2 | from . import Hacs
3 |
4 |
5 | class HacsUpdate(Hacs):
6 | """Update class."""
7 |
--------------------------------------------------------------------------------
/custom_components/hacs/handler/__init__.py:
--------------------------------------------------------------------------------
1 | """Initialize handlers."""
2 |
--------------------------------------------------------------------------------
/custom_components/hacs/handler/download.py:
--------------------------------------------------------------------------------
1 | """Download."""
2 | import os
3 | import gzip
4 | import shutil
5 |
6 | import aiofiles
7 | import async_timeout
8 | from integrationhelper import Logger
9 | import backoff
10 | from homeassistant.helpers.aiohttp_client import async_get_clientsession
11 | from ..hacsbase.exceptions import HacsNotSoBasicException
12 |
13 |
14 | @backoff.on_exception(backoff.expo, Exception, max_tries=5)
15 | async def async_download_file(hass, url):
16 | """
17 | Download files, and return the content.
18 | """
19 | logger = Logger("hacs.download.downloader")
20 | if url is None:
21 | return
22 |
23 | # There is a bug somewhere... TODO: Find that bug....
24 | if "tags/" in url:
25 | url = url.replace("tags/", "")
26 |
27 | logger.debug(f"Donwloading {url}")
28 |
29 | result = None
30 |
31 | with async_timeout.timeout(5, loop=hass.loop):
32 | request = await async_get_clientsession(hass).get(url)
33 |
34 | # Make sure that we got a valid result
35 | if request.status == 200:
36 | result = await request.read()
37 | else:
38 | raise HacsNotSoBasicException(
39 | "Got status code {} when trying to download {}".format(
40 | request.status, url
41 | )
42 | )
43 |
44 | return result
45 |
46 |
47 | async def async_save_file(location, content):
48 | """Save files."""
49 | logger = Logger("hacs.download.save")
50 | logger.debug(f"Saving {location}")
51 | mode = "w"
52 | encoding = "utf-8"
53 | errors = "ignore"
54 |
55 | if not isinstance(content, str):
56 | mode = "wb"
57 | encoding = None
58 | errors = None
59 |
60 | try:
61 | async with aiofiles.open(
62 | location, mode=mode, encoding=encoding, errors=errors
63 | ) as outfile:
64 | await outfile.write(content)
65 | outfile.close()
66 |
67 | # Create gz for .js files
68 | if os.path.isfile(location):
69 | if location.endswith(".js") or location.endswith(".css"):
70 | with open(location, "rb") as f_in:
71 | with gzip.open(location + ".gz", "wb") as f_out:
72 | shutil.copyfileobj(f_in, f_out)
73 |
74 | except Exception as error: # pylint: disable=broad-except
75 | msg = "Could not write data to {} - {}".format(location, error)
76 | logger.debug(msg)
77 |
78 | return os.path.exists(location)
79 |
--------------------------------------------------------------------------------
/custom_components/hacs/handler/logger.py:
--------------------------------------------------------------------------------
1 | """HacsLogger"""
2 |
3 |
4 | class HacsLogger:
5 | """Custom logger class for HACS."""
6 |
7 | import logging
8 |
9 | prefix = "custom_components.hacs"
10 |
11 | def debug(self, message, part=None):
12 | """Info messages."""
13 | if part is None:
14 | part = self.prefix
15 | else:
16 | part = "{}.{}".format(self.prefix, part)
17 | self.logging.getLogger(part).debug(message)
18 |
19 | def info(self, message, part=None):
20 | """Info messages."""
21 | if part is None:
22 | part = self.prefix
23 | else:
24 | part = "{}.{}".format(self.prefix, part)
25 | self.logging.getLogger(part).info(message)
26 |
27 | def warning(self, message, part=None):
28 | """Info messages."""
29 | if part is None:
30 | part = self.prefix
31 | else:
32 | part = "{}.{}".format(self.prefix, part)
33 | self.logging.getLogger(part).warning(message)
34 |
35 | def error(self, message, part=None):
36 | """Info messages."""
37 | if part is None:
38 | part = self.prefix
39 | else:
40 | part = "{}.{}".format(self.prefix, part)
41 | self.logging.getLogger(part).error(message)
42 |
43 | def critical(self, message, part=None):
44 | """Info messages."""
45 | if part is None:
46 | part = self.prefix
47 | else:
48 | part = "{}.{}".format(self.prefix, part)
49 | self.logging.getLogger(part).critical(message)
50 |
--------------------------------------------------------------------------------
/custom_components/hacs/handler/template.py:
--------------------------------------------------------------------------------
1 | """Custom template support."""
2 | # pylint: disable=broad-except
3 | from jinja2 import Template
4 | from integrationhelper import Logger
5 |
6 |
7 | def render_template(content, context):
8 | """Render templates in content."""
9 | # Fix None issues
10 | if context.releases.last_release_object is not None:
11 | prerelease = context.releases.last_release_object.prerelease
12 | else:
13 | prerelease = False
14 |
15 | # Render the template
16 | try:
17 | render = Template(content)
18 | render = render.render(
19 | installed=context.status.installed,
20 | pending_update=context.pending_upgrade,
21 | prerelease=prerelease,
22 | selected_tag=context.status.selected_tag,
23 | version_available=context.releases.last_release,
24 | version_installed=context.display_installed_version,
25 | )
26 | return render
27 | except Exception as exception:
28 | Logger("hacs.template").debug(exception)
29 | return content
30 |
--------------------------------------------------------------------------------
/custom_components/hacs/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "domain": "hacs",
3 | "name": "HACS (Home Assistant Community Store)",
4 | "documentation": "https://custom-components.github.io/hacs",
5 | "dependencies": [],
6 | "config_flow": true,
7 | "codeowners": [
8 | "@ludeeus"
9 | ],
10 | "homeassistant": "0.97.0",
11 | "requirements": [
12 | "aiofiles==0.4.0",
13 | "backoff==1.8.0",
14 | "aiogithubapi==0.2.0",
15 | "integrationhelper==0.2.2"
16 | ]
17 | }
--------------------------------------------------------------------------------
/custom_components/hacs/repositories/__init__.py:
--------------------------------------------------------------------------------
1 | """Initialize repositories."""
2 | from .theme import HacsTheme
3 | from .integration import HacsIntegration
4 | from .python_script import HacsPythonScript
5 | from .appdaemon import HacsAppdaemon
6 | from .plugin import HacsPlugin
7 |
--------------------------------------------------------------------------------
/custom_components/hacs/repositories/appdaemon.py:
--------------------------------------------------------------------------------
1 | """Class for appdaemon apps in HACS."""
2 | from .repository import HacsRepository, register_repository_class
3 |
4 |
5 | @register_repository_class
6 | class HacsAppdaemon(HacsRepository):
7 | """Appdaemon apps in HACS."""
8 |
9 | category = "appdaemon"
10 |
11 | def __init__(self, full_name):
12 | """Initialize."""
13 | super().__init__()
14 | self.information.full_name = full_name
15 | self.information.category = self.category
16 | self.content.path.local = self.localpath
17 |
18 | @property
19 | def localpath(self):
20 | """Return localpath."""
21 | return f"{self.system.config_path}/appdaemon/apps/{self.information.name}"
22 |
23 | async def validate_repository(self):
24 | """Validate."""
25 | await self.common_validate()
26 |
27 | # Custom step 1: Validate content.
28 | addir = await self.repository_object.get_contents("apps", self.ref)
29 | if not isinstance(addir, list):
30 | self.validate.errors.append("Repostitory structure not compliant")
31 |
32 | self.content.path.remote = addir[0].path
33 | self.information.name = addir[0].name
34 | self.content.objects = await self.repository_object.get_contents(
35 | self.content.path.remote, self.ref
36 | )
37 |
38 | self.content.files = []
39 | for filename in self.content.objects:
40 | self.content.files.append(filename.name)
41 |
42 | # Handle potential errors
43 | if self.validate.errors:
44 | for error in self.validate.errors:
45 | if not self.system.status.startup:
46 | self.logger.error(error)
47 | return self.validate.success
48 |
49 | async def registration(self):
50 | """Registration."""
51 | if not await self.validate_repository():
52 | return False
53 |
54 | # Run common registration steps.
55 | await self.common_registration()
56 |
57 | # Set local path
58 | self.content.path.local = self.localpath
59 |
60 | async def update_repository(self):
61 | """Update."""
62 | await self.common_update()
63 |
64 | # Get appdaemon objects.
65 | addir = await self.repository_object.get_contents("apps", self.ref)
66 | self.content.path.remote = addir[0].path
67 | self.information.name = addir[0].name
68 | self.content.objects = await self.repository_object.get_contents(
69 | self.content.path.remote, self.ref
70 | )
71 |
72 | self.content.files = []
73 | for filename in self.content.objects:
74 | self.content.files.append(filename.name)
75 |
76 | # Set local path
77 | self.content.path.local = self.localpath
78 |
--------------------------------------------------------------------------------
/custom_components/hacs/repositories/python_script.py:
--------------------------------------------------------------------------------
1 | """Class for python_scripts in HACS."""
2 | from .repository import HacsRepository, register_repository_class
3 |
4 |
5 | @register_repository_class
6 | class HacsPythonScript(HacsRepository):
7 | """python_scripts in HACS."""
8 |
9 | category = "python_script"
10 |
11 | def __init__(self, full_name):
12 | """Initialize."""
13 | super().__init__()
14 | self.information.full_name = full_name
15 | self.information.category = self.category
16 | self.content.path.remote = "python_scripts"
17 | self.content.path.local = f"{self.system.config_path}/python_scripts"
18 | self.content.single = True
19 |
20 | async def validate_repository(self):
21 | """Validate."""
22 | # Run common validation steps.
23 | await self.common_validate()
24 |
25 | # Custom step 1: Validate content.
26 | self.content.objects = await self.repository_object.get_contents(
27 | self.content.path.remote, self.ref
28 | )
29 | if not isinstance(self.content.objects, list):
30 | self.validate.errors.append("Repostitory structure not compliant")
31 |
32 | self.content.files = []
33 | for filename in self.content.objects:
34 | self.content.files.append(filename.name)
35 |
36 | # Handle potential errors
37 | if self.validate.errors:
38 | for error in self.validate.errors:
39 | if not self.system.status.startup:
40 | self.logger.error(error)
41 | return self.validate.success
42 |
43 | async def registration(self):
44 | """Registration."""
45 | if not await self.validate_repository():
46 | return False
47 |
48 | # Run common registration steps.
49 | await self.common_registration()
50 |
51 | # Set name
52 | self.information.name = self.content.objects[0].name.replace(".py", "")
53 |
54 | async def update_repository(self):
55 | """Update."""
56 | # Run common update steps.
57 | await self.common_update()
58 |
59 | # Get python_script objects.
60 | self.content.objects = await self.repository_object.get_contents(
61 | self.content.path.remote, self.ref
62 | )
63 |
64 | self.content.files = []
65 | for filename in self.content.objects:
66 | self.content.files.append(filename.name)
67 |
68 | # Update name
69 | self.information.name = self.content.objects[0].name.replace(".py", "")
70 |
71 | self.content.files = []
72 | for filename in self.content.objects:
73 | self.content.files.append(filename.name)
74 |
--------------------------------------------------------------------------------
/custom_components/hacs/repositories/theme.py:
--------------------------------------------------------------------------------
1 | """Class for themes in HACS."""
2 | from .repository import HacsRepository, register_repository_class
3 |
4 |
5 | @register_repository_class
6 | class HacsTheme(HacsRepository):
7 | """Themes in HACS."""
8 |
9 | category = "theme"
10 |
11 | def __init__(self, full_name):
12 | """Initialize."""
13 | super().__init__()
14 | self.information.full_name = full_name
15 | self.information.category = self.category
16 | self.content.path.remote = "themes"
17 | self.content.path.local = f"{self.system.config_path}/themes"
18 | self.content.single = True
19 |
20 | async def validate_repository(self):
21 | """Validate."""
22 | # Run common validation steps.
23 | await self.common_validate()
24 |
25 | # Custom step 1: Validate content.
26 | self.content.objects = await self.repository_object.get_contents(
27 | self.content.path.remote, self.ref
28 | )
29 | if not isinstance(self.content.objects, list):
30 | self.validate.errors.append("Repostitory structure not compliant")
31 |
32 | self.content.files = []
33 | for filename in self.content.objects:
34 | self.content.files.append(filename.name)
35 |
36 | # Handle potential errors
37 | if self.validate.errors:
38 | for error in self.validate.errors:
39 | if not self.system.status.startup:
40 | self.logger.error(error)
41 | return self.validate.success
42 |
43 | async def registration(self):
44 | """Registration."""
45 | if not await self.validate_repository():
46 | return False
47 |
48 | # Run common registration steps.
49 | await self.common_registration()
50 |
51 | # Set name
52 | self.information.name = self.content.objects[0].name.replace(".yaml", "")
53 |
54 | async def update_repository(self):
55 | """Update."""
56 | # Run common update steps.
57 | await self.common_update()
58 |
59 | # Get theme objects.
60 | self.content.objects = await self.repository_object.get_contents(
61 | self.content.path.remote, self.ref
62 | )
63 |
64 | self.content.files = []
65 | for filename in self.content.objects:
66 | self.content.files.append(filename.name)
67 |
68 | # Update name
69 | self.information.name = self.content.objects[0].name.replace(".yaml", "")
70 |
71 | self.content.files = []
72 | for filename in self.content.objects:
73 | self.content.files.append(filename.name)
74 |
--------------------------------------------------------------------------------
/custom_components/hacs/sensor.py:
--------------------------------------------------------------------------------
1 | """Sensor platform for HACS."""
2 | # pylint: disable=unused-argument
3 | from integrationhelper import Logger
4 | from homeassistant.helpers.entity import Entity
5 | from .hacsbase import Hacs as hacs
6 | from .const import DOMAIN, VERSION, NAME_LONG, PROJECT_URL
7 |
8 |
9 | async def async_setup_platform(hass, config, async_add_entities, discovery_info=None):
10 | """Setup sensor platform."""
11 | async_add_entities([HACSSensor()])
12 |
13 |
14 | async def async_setup_entry(hass, config_entry, async_add_devices):
15 | """Setup sensor platform."""
16 | async_add_devices([HACSSensor()])
17 |
18 |
19 | class HACSSensor(Entity):
20 | """HACS Sensor class."""
21 |
22 | def __init__(self):
23 | """Initialize."""
24 | self._state = None
25 | self.logger = Logger("hacs.sensor")
26 | self.has_update = []
27 | self.repositories = []
28 |
29 | async def async_update(self):
30 | """Update the sensor."""
31 | if hacs.system.status.background_task:
32 | return
33 |
34 | self.repositories = []
35 |
36 | for repository in hacs.repositories:
37 | if repository.pending_upgrade:
38 | self.repositories.append(repository)
39 | self._state = len(self.repositories)
40 |
41 | @property
42 | def unique_id(self):
43 | """Return a unique ID to use for this sensor."""
44 | return (
45 | "0717a0cd-745c-48fd-9b16-c8534c9704f9-bc944b0f-fd42-4a58-a072-ade38d1444cd"
46 | )
47 |
48 | @property
49 | def name(self):
50 | """Return the name of the sensor."""
51 | return "hacs"
52 |
53 | @property
54 | def state(self):
55 | """Return the state of the sensor."""
56 | return self._state
57 |
58 | @property
59 | def icon(self):
60 | """Return the icon of the sensor."""
61 | return "mdi:package"
62 |
63 | @property
64 | def unit_of_measurement(self):
65 | """Return the unit of measurement."""
66 | return "pending update(s)"
67 |
68 | @property
69 | def device_state_attributes(self):
70 | """Return attributes for the sensor."""
71 | data = []
72 | for repository in self.repositories:
73 | data.append(
74 | {
75 | "name": repository.information.full_name,
76 | "installed version": repository.display_installed_version,
77 | "available version": repository.display_available_version,
78 | }
79 | )
80 | return {"repositories": data}
81 |
82 | @property
83 | def device_info(self):
84 | return {
85 | "identifiers": {(DOMAIN, self.unique_id)},
86 | "name": NAME_LONG,
87 | "sw_version": VERSION,
88 | "manufacturer": PROJECT_URL,
89 | }
90 |
--------------------------------------------------------------------------------
/custom_components/hacs/services.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | install:
3 | description: This is NOT intended to be used here, this is intended for developers!
4 | fields:
5 | repository:
6 | description: The repository ID
7 | example: '"123456789"'
8 | register:
9 | description: This is NOT intended to be used here, this is intended for developers!
10 | fields:
11 | repository:
12 | description: The full name of the repository
13 | example: 'developer/repo'
14 | repository_type:
15 | description: The repository type
16 | example: 'plugin'
17 |
--------------------------------------------------------------------------------
/customize.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | switch.armoire_cuisine:
3 | friendly_name: Armoire Cuisine
4 | icon: mdi:power-socket-eu
5 | binary_sensor.lave_vaisaille:
6 | friendly_name: "lave vaisselle"
7 | binary_sensor.lave_linge:
8 | friendly_name: "lave linge"
9 | binary_sensor.seche_linge:
10 | friendly_name: "sêche linge"
11 |
--------------------------------------------------------------------------------
/docs/ABB-SA-S4.16.2.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/ABB-SA-S4.16.2.1.jpg
--------------------------------------------------------------------------------
/docs/BE-TA55P2.01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/BE-TA55P2.01.jpg
--------------------------------------------------------------------------------
/docs/BE-TA55P6.01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/BE-TA55P6.01.jpg
--------------------------------------------------------------------------------
/docs/DMB1T.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/DMB1T.png
--------------------------------------------------------------------------------
/docs/Fibsmokesensor.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Fibsmokesensor.jpg
--------------------------------------------------------------------------------
/docs/Floor1D.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Floor1D.PNG
--------------------------------------------------------------------------------
/docs/Floor1N.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Floor1N.PNG
--------------------------------------------------------------------------------
/docs/JRA-S4.230.5.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/JRA-S4.230.5.1.jpg
--------------------------------------------------------------------------------
/docs/MDT_AKH-040002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/MDT_AKH-040002.jpg
--------------------------------------------------------------------------------
/docs/Nightmode.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Nightmode.PNG
--------------------------------------------------------------------------------
/docs/PD11-KNX.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/PD11-KNX.jpg
--------------------------------------------------------------------------------
/docs/Page1D.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Page1D.PNG
--------------------------------------------------------------------------------
/docs/Page1N.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Page1N.PNG
--------------------------------------------------------------------------------
/docs/Page2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Page2.png
--------------------------------------------------------------------------------
/docs/PowersupplyKNX.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/PowersupplyKNX.jpg
--------------------------------------------------------------------------------
/docs/SA-S12.16.5.1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/SA-S12.16.5.1.jpg
--------------------------------------------------------------------------------
/docs/Synology.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Synology.jpg
--------------------------------------------------------------------------------
/docs/TA55P8.01.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/TA55P8.01.jpg
--------------------------------------------------------------------------------
/docs/TXA207C.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/TXA207C.jpg
--------------------------------------------------------------------------------
/docs/TYA628C.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/TYA628C.jpg
--------------------------------------------------------------------------------
/docs/Visaton.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/Visaton.jpg
--------------------------------------------------------------------------------
/docs/ZAS_White.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/ZAS_White.png
--------------------------------------------------------------------------------
/docs/be-gt2tw.01_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/be-gt2tw.01_1.jpg
--------------------------------------------------------------------------------
/docs/behringer-xenyx.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/behringer-xenyx.jpg
--------------------------------------------------------------------------------
/docs/chromecast-audio.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/chromecast-audio.png
--------------------------------------------------------------------------------
/docs/daymode.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/daymode.PNG
--------------------------------------------------------------------------------
/docs/fibaro_intercom.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/fibaro_intercom.jpg
--------------------------------------------------------------------------------
/docs/fibaromultisensor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/fibaromultisensor.png
--------------------------------------------------------------------------------
/docs/fibarorgbw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/fibarorgbw.png
--------------------------------------------------------------------------------
/docs/ip router.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/ip router.jpg
--------------------------------------------------------------------------------
/docs/lepy.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/lepy.jpg
--------------------------------------------------------------------------------
/docs/mdtakh080002.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/mdtakh080002.jpg
--------------------------------------------------------------------------------
/docs/nas.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/nas.PNG
--------------------------------------------------------------------------------
/docs/page1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/page1.PNG
--------------------------------------------------------------------------------
/docs/presentation.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/presentation.jpg
--------------------------------------------------------------------------------
/docs/seitlich_rund.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/seitlich_rund.png
--------------------------------------------------------------------------------
/docs/speaker-front.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/speaker-front.png
--------------------------------------------------------------------------------
/docs/speaker_back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/speaker_back.png
--------------------------------------------------------------------------------
/docs/theben DM4T.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/theben DM4T.jpg
--------------------------------------------------------------------------------
/docs/txm620d_1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/docs/txm620d_1.jpg
--------------------------------------------------------------------------------
/entities/cameras/entree.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: Entree
4 | framerate: 25
5 | still_image_url: !secret entree_still
6 | stream_source: !secret entree_stream
7 |
--------------------------------------------------------------------------------
/entities/cameras/erika.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: Erika
4 | framerate: 25
5 | still_image_url: !secret erika_still
6 | stream_source: !secret erika_stream
7 |
--------------------------------------------------------------------------------
/entities/cameras/garage_back.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: Garage
4 | framerate: 25
5 | still_image_url: !secret garage_back_still
6 | stream_source: !secret garage_back_stream
7 |
--------------------------------------------------------------------------------
/entities/cameras/garage_front.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: garagef
4 | framerate: 25
5 | still_image_url: !secret garage_front_still
6 | stream_source: !secret garage_front_stream
7 |
--------------------------------------------------------------------------------
/entities/cameras/intercom_synology.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: synology
3 | url: !secret synology_cam_ip
4 | username: !secret synology_username
5 | password: !secret synology_password
6 | timeout: 15
7 | verify_ssl: false
8 |
--------------------------------------------------------------------------------
/entities/cameras/reserve.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: Reserve
4 | framerate: 25
5 | still_image_url: !secret reserve_still
6 | stream_source: !secret reserve_stream
7 |
--------------------------------------------------------------------------------
/entities/cameras/technique.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: generic
3 | name: Technique
4 | framerate: 25
5 | still_image_url: !secret technique_still
6 | stream_source: !secret technique_stream
7 |
--------------------------------------------------------------------------------
/entities/device_trackers/fritz.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: fritz
3 | interval_seconds: 30
4 | # consider_home: 180
5 |
--------------------------------------------------------------------------------
/entities/device_trackers/unify.yaml.old:
--------------------------------------------------------------------------------
1 |
2 | # platform: unifi
3 | # username: !secret unify_id
4 | # password: !secret unify_secret
5 | # site_id: !secret unify_siteid
6 | # detection_time: 240
7 | # verify_ssl: false
--------------------------------------------------------------------------------
/entities/groups/Syno.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | Syno_MISC:
3 | name: Syno General
4 | entities:
5 | - sensor.memory_usage_real
6 | - sensor.network_up
7 | - sensor.network_down
8 |
9 | Disk_status:
10 | name: Disk Status
11 | icon: mdi:chart-pie
12 | entities:
13 | - sensor.status_sda
14 | - sensor.status_sdb
15 | - sensor.status_sdc
16 | - sensor.status_sdd
17 |
18 | Smart_status:
19 | name: S.M.A.R.T Status
20 | entities:
21 | - sensor.status_smart_sda
22 | - sensor.status_smart_sdb
23 | - sensor.status_smart_sdc
24 | - sensor.status_smart_sdd
25 |
26 | Disk_Temperatures:
27 | name: Temperatures
28 | entities:
29 | - sensor.temperature_sda
30 | - sensor.temperature_sdb
31 | - sensor.temperature_sdc
32 | - sensor.temperature_sdd
33 |
34 | CPU_info:
35 | name: CPU Load
36 | entities:
37 | - sensor.cpu_load_total
38 | - sensor.cpu_load_user
39 | - sensor.cpu_load_other
40 | - sensor.cpu_load_system
41 |
42 | volume_info:
43 | name: Disk Volume
44 | entities:
45 | - sensor.total_size_volume_1
46 | - sensor.used_space_volume_1
47 | - sensor.volume_used_volume_1
48 |
--------------------------------------------------------------------------------
/entities/groups/device_location.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | Device_location:
3 | name: Device Location
4 | entities:
5 | - device_tracker.ipaddeadonno
6 | - device_tracker.iphone
7 | - device_tracker.andreasapple_watch
8 |
--------------------------------------------------------------------------------
/entities/groups/network_devices.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | Network_devices_AP:
3 | name: Access Points
4 | entities:
5 | - sensor.apbureau
6 | - sensor.apchambrarr
7 | - sensor.aplocaltech
8 |
9 | Network_devices_Tablets:
10 | name: Tablets
11 | entities:
12 | - sensor.ipad_1
13 | - sensor.lenovoliving
14 | - sensor.xorokeller
15 | - sensor.xorokummer
16 | - camera.lenovo
17 | - camera.entree
18 |
19 | Network_devices_PCs:
20 | name: PCs
21 | entities:
22 | - sensor.rinalt
23 | - sensor.swordlt
24 |
25 | Network_devices_mobile:
26 | name: Mobile Devices
27 | entities:
28 | - device_tracker.andreasplewatch
29 | - device_tracker.iphonederina
30 | - device_tracker.iphoneadonno
31 |
32 | Network_devices_misc:
33 | name: Network Devices Misc
34 | entities:
35 | - device_tracker.xp710
36 | - device_tracker.syno
37 | - device_tracker.knxip
38 | - device_tracker.fourmicro
39 | - device_tracker.fourvapeur
40 | - device_tracker.tvbox_living
41 | - device_tracker.chaudiere
42 | - device_tracker.hassiotest
43 | - binary_sensor.porte_1ard1
44 |
45 | Network_devices_router:
46 | name: Router
47 | entities:
48 | - sensor.fritz_box
49 | - sensor.isp_connection
50 | - sensor.speedtest_download
51 | - sensor.speedtest_upload
52 | - sensor.speedtest_ping
53 |
--------------------------------------------------------------------------------
/entities/groups/phone.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | phone:
3 | name: Telephone
4 | icon: mdi:phone-classic
5 | entities:
6 | - sensor.phone_line_status
7 |
--------------------------------------------------------------------------------
/entities/groups/radio.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | Residence Radio:
3 | name: Haus Radio
4 | entities:
5 | - switch.RDOLiving
6 | - input_number.volume_radio_living
7 | - switch.rdochparents
8 | - input_number.volume_radio_parents
9 | # - input_slider.volume_radio_haus
10 |
--------------------------------------------------------------------------------
/entities/input_select/clothes_dryer.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | clothes_dryer:
3 | name: clothes_dryer_status
4 | options:
5 | - Running
6 | - Idle
7 | - Clean
8 |
--------------------------------------------------------------------------------
/entities/input_select/dish_washer.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | dish_washer_status:
3 | name: dish_washer_status
4 | options:
5 | - Running
6 | - Idle
7 | - Clean
8 |
--------------------------------------------------------------------------------
/entities/input_select/post_box.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | postbox:
3 | name: postbox_status
4 | options:
5 | - Mail-empty
6 | - Mail
7 | - Box
8 |
--------------------------------------------------------------------------------
/entities/input_select/washing_machine.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | washing_machine:
3 | name: wahsing_machine_status
4 | options:
5 | - Running
6 | - Idle
7 | - Clean
8 |
--------------------------------------------------------------------------------
/entities/locks/front_door.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: nuki
3 | host: !secret nuki_ip
4 | port: 8080
5 | token: !secret nuki_token
6 |
--------------------------------------------------------------------------------
/entities/sensors/darksky.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: darksky
3 | api_key: !secret dks_api_key
4 | monitored_conditions:
5 | - summary
6 | - icon
7 | - nearest_storm_distance
8 | - temperature
9 | - cloud_cover
10 | - humidity
11 | - ozone
12 |
--------------------------------------------------------------------------------
/entities/sensors/fritzbox_callmonitor.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: fritzbox_callmonitor
3 | name: Phone
4 | username: !secret fritz_user
5 | password: !secret fritz_password
6 | phonebook: 0
7 | prefixes:
8 | - '+49'
9 | - '+4989'
10 | - '089'
11 | - '+352'
12 |
--------------------------------------------------------------------------------
/entities/sensors/fritzbox_netmonitor.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: fritzbox_netmonitor
3 |
--------------------------------------------------------------------------------
/entities/sensors/synologydsm.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: synologydsm
3 | host: !secret synology_ip
4 | username: !secret synology_username
5 | password: !secret synology_password
6 | monitored_conditions:
7 | - cpu_total_load
8 | - memory_real_usage
9 | - network_up
10 | - disk_status
11 | - disk_smart_status
12 | - disk_temp
13 | - network_down
14 | - volume_size_used
15 | - volume_size_total
16 | - cpu_system_load
17 | - cpu_user_load
18 | - cpu_other_load
19 | - volume_percentage_used
20 | - volume_device_type
21 | - volume_disk_temp_avg
22 |
--------------------------------------------------------------------------------
/entities/sensors/time_date.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The time and date (time_date) sensor platform.
3 | # Has the time in various formats, the date, or both.
4 | #
5 | # This is usefull for displaying and automation purposes.
6 | #
7 | # https://www.home-assistant.io/components/time_date/
8 | #
9 | platform: time_date
10 | display_options:
11 | - 'time'
12 | - 'date'
13 | - 'date_time'
14 | - 'date_time_iso'
15 | - 'time_date'
16 | - 'time_utc'
17 | - 'beat'
18 |
--------------------------------------------------------------------------------
/entities/sensors/ups.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: nut
3 | name: UPS Name
4 | host: 192.168.1.201
5 | port: 3493
6 | alias: ups_name
7 | username: admin
8 | password: sdfh514dfsh65
9 | resources:
10 | - ups.load
11 | - ups.realpower.nominal
12 | - input.voltage
13 | - battery.runtime
14 |
--------------------------------------------------------------------------------
/entities/sensors/version_available.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The version sensor platform is displaying the
3 | # available version online.
4 | #
5 | # https://www.home-assistant.io/components/sensor.version/
6 | #
7 | platform: version
8 | name: version_available
9 | source: hassio
10 | image: qemux86-64
11 |
--------------------------------------------------------------------------------
/entities/sensors/version_current.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The version sensor platform is displaying the
3 | # current version.
4 | #
5 | # https://www.home-assistant.io/components/sensor.version/
6 | #
7 | platform: version
8 | name: version_current
9 |
--------------------------------------------------------------------------------
/entities/tts/google_translate.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The Google Text-to-Speech platform use Google Text-to-Speech engine to
3 | # read a text with a natural sounding voice(s).
4 | #
5 | # https://www.home-assistant.io/components/google_translate/
6 | #
7 | platform: google_translate
8 | service_name: google_translate_say
9 |
10 | # Set the default voice language.
11 | language: 'en'
12 |
13 | # Cache voice files to a local storage.
14 | cache: true
15 |
16 | # Path to a location for caching the tts files.
17 | cache_dir: /tmp/tts
18 |
19 | # Time to hold (in seconds) the voice data inside memory for fast play
20 | # on a media player. (min 60, max 57600)
21 | time_memory: 300
22 |
--------------------------------------------------------------------------------
/entities/vera/vera.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | vera_controller_url: !secret veraip
3 | exclude: [39, 40, 45, 48, 47, 48, 42, 44, 51, 52, 56]
4 |
--------------------------------------------------------------------------------
/entities/weather/darksky.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | platform: darksky
3 | api_key: !secret dks_api_key
4 |
--------------------------------------------------------------------------------
/entities/zones/parents.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Koerich
3 | latitude: !secret latitude_koerich
4 | longitude: !secret longitude_Koerich
5 | icon: mdi:home-variant
6 |
--------------------------------------------------------------------------------
/entities/zones/work_a.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: Kadaster
3 | latitude: !secret latitude_kad
4 | longitude: !secret longitude_kad
5 | icon: mdi:worker
6 |
--------------------------------------------------------------------------------
/entities/zones/work_r.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | name: BBT
3 | latitude: !secret latitude_bbt
4 | longitude: !secret longitude_bbt
5 | radius: 100
6 | icon: mdi:school
7 |
--------------------------------------------------------------------------------
/esphome/Switch_DishWasher.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: switch_dishwasher
4 | ip_address: !secret esphome_switch_dishwasher_static_ip
5 |
6 | <<: !include includes/gosund_sp1.yaml
7 |
8 | sensor:
9 | - platform: hlw8012
10 | sel_pin:
11 | number: GPIO12
12 | inverted: true
13 | cf_pin: GPIO04
14 | cf1_pin: GPIO05
15 | current:
16 | name: "${plug_name}_Amperage"
17 | unit_of_measurement: A
18 | filters:
19 | - calibrate_linear:
20 | # Map 0.0 (from sensor) to 0.0 (true value)
21 | - 0.0 -> 0.0
22 | - 10.4 -> 8.233
23 | - 0.2 -> 0.155
24 |
25 | voltage:
26 | name: "${plug_name}_Voltage"
27 | unit_of_measurement: V
28 | filters:
29 | - calibrate_linear:
30 | # Map 0.0 (from sensor) to 0.0 (true value)
31 | - 619.5 -> 241.7
32 | - 611.9 -> 236.3
33 |
34 | power:
35 | name: "${plug_name}_Wattage"
36 | unit_of_measurement: W
37 | filters:
38 | - calibrate_linear:
39 | # Map 0.0 (from sensor) to 0.0 (true value)
40 | - 0.0 -> 2.0
41 | - 113.8 -> 21.2
42 | - 11450 -> 1960
43 |
44 | id: "${plug_name}_Wattage"
45 | change_mode_every: 4
46 | update_interval: 5s
47 | - platform: total_daily_energy
48 | name: "${plug_name}_Total Daily Energy"
49 | power_id: "${plug_name}_Wattage"
50 | filters:
51 | # Multiplication factor from W to kW is 0.001
52 | - multiply: 0.001
53 | unit_of_measurement: kWh
54 |
55 | binary_sensor:
56 | - platform: template
57 | name: Lave Vaisaille
58 | filters:
59 | - delayed_off: 20s
60 | lambda: |-
61 | return id(${plug_name}_Wattage).state > 5;
62 |
--------------------------------------------------------------------------------
/esphome/circulation_pump.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: circulation_pump
4 | ip_address: !secret esphome_viessmann_static_ip
5 |
6 | esphome:
7 | name: ${plug_name}
8 | platform: ESP8266
9 | board: esp01_1m
10 |
11 | <<: !include includes/network.yaml
12 |
13 | logger:
14 | baud_rate: 0
15 |
16 | uart:
17 | rx_pin: RX
18 | baud_rate: 4800
19 |
20 | # Enable Home Assistant API
21 | api:
22 | password: !secret ESP_API_PWD
23 | reboot_timeout:
24 | hours: 1
25 | ota:
26 | password: !secret ESP_OTA_PWD
27 |
28 | time:
29 | - platform: homeassistant
30 | id: homeassistant_time
31 |
32 | sensor:
33 | - platform: wifi_signal
34 | name: ${plug_name}_wifi_signal
35 | update_interval: 10s
36 | - platform: uptime
37 | name: ${plug_name}_uptime
38 | - platform: cse7766
39 | current:
40 | name: "${plug_name}_current"
41 | voltage:
42 | name: "${plug_name}_voltage"
43 | power:
44 | name: "${plug_name}_power"
45 |
46 | text_sensor:
47 | - platform: version
48 | name: ${plug_name}_esphome_version
49 |
50 | switch:
51 | - platform: restart
52 | name: ${plug_name}_restart
53 | - platform: gpio
54 | name: ${plug_name}_relay
55 | id: relay
56 | pin: GPIO12
57 | # restore_mode: ALWAYS_ON
58 | on_turn_on:
59 | - light.turn_on: led
60 | - delay: 180s
61 | - switch.turn_off: relay
62 | on_turn_off:
63 | - light.turn_off: led
64 |
65 | binary_sensor:
66 | - platform: gpio
67 | id: button
68 | pin:
69 | number: GPIO0
70 | mode: INPUT_PULLUP
71 | inverted: true
72 | on_press:
73 | - switch.toggle: relay
74 |
75 | output:
76 | - platform: esp8266_pwm
77 | id: blue_led
78 | pin:
79 | number: GPIO13
80 | inverted: true
81 |
82 | light:
83 | - platform: monochromatic
84 | output: blue_led
85 | id: led
86 |
--------------------------------------------------------------------------------
/esphome/includes/gosund_sp1.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | esphome:
3 | name: ${plug_name}
4 | platform: ESP8266
5 | board: esp8285
6 | # Enable logging
7 | logger:
8 | # Enable Web server
9 | <<: !include network.yaml
10 |
11 | api:
12 | password: !secret ESP_API_PWD
13 | ota:
14 | password: !secret ESP_OTA_PWD
15 | time:
16 | - platform: homeassistant
17 | id: homeassistant_time
18 |
19 | binary_sensor:
20 | - platform: gpio
21 | pin:
22 | number: GPIO3
23 | inverted: true
24 | name: "${plug_name}_button"
25 |
26 | switch:
27 | - platform: gpio
28 | name: "${plug_name}_Relay"
29 | pin: GPIO14
30 | restore_mode: ALWAYS_ON
31 | - platform: gpio
32 | name: "${plug_name}_LED_Blue"
33 | pin: GPIO1
34 | inverted: true
35 | restore_mode: ALWAYS_OFF
36 | - platform: gpio
37 | name: "${plug_name}_LED_Red"
38 | pin: GPIO13
39 | inverted: true
40 | restore_mode: ALWAYS_OFF
41 | sensor:
42 | # Extra sensor to keep track of plug uptime
43 | - platform: uptime
44 | name: ${plug_name}_Uptime Sensor
45 |
--------------------------------------------------------------------------------
/esphome/includes/network.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | web_server:
3 | port: 80
4 | # Enable Home Assistant API
5 | wifi:
6 | ssid: !secret Wifi_SSID
7 | password: !secret Wifi_PWD
8 | manual_ip:
9 | static_ip: ${ip_address}
10 | gateway: !secret wifi_gateway
11 | subnet: !secret wifi_subnet
12 | dns1: !secret wifi_dns1
13 | # use_address: 192.168.1.105
14 |
--------------------------------------------------------------------------------
/esphome/saltlevel_sensor.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | esphome:
3 | name: saltlevel_sensor
4 | platform: ESP8266
5 | board: d1_mini
6 |
7 | wifi:
8 | ssid: !secret Wifi_SSID
9 | password: !secret Wifi_PWD
10 |
11 | # Enable logging
12 | logger:
13 |
14 | # Enable Home Assistant API
15 |
16 | api:
17 | password: !secret ESP_API_PWD
18 | reboot_timeout:
19 | hours: 1
20 | ota:
21 | password: !secret ESP_OTA_PWD
22 |
23 | time:
24 | - platform: homeassistant
25 | id: homeassistant_time
26 | switch:
27 | - platform: restart
28 | name: "Saltlevel Sensor Restart"
29 | sensor:
30 | - platform: ultrasonic
31 | trigger_pin: D1
32 | echo_pin: D2
33 | name: "Saltlevel"
34 | # update_interval: 12h
35 | update_interval: 10s
36 |
37 | - platform: dht
38 | pin: D3
39 | model: DHT11
40 | temperature:
41 | name: "Garage Temperature"
42 | humidity:
43 | name: "Garage Humidity"
44 | update_interval: 10s
45 |
--------------------------------------------------------------------------------
/esphome/switch_clothesdryer.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: switch_clothesdryer
4 | ip_address: !secret esphome_switch_clothesdryer_static_ip
5 |
6 | <<: !include includes/gosund_sp1.yaml
7 |
8 | sensor:
9 | - platform: hlw8012
10 | sel_pin:
11 | number: GPIO12
12 | inverted: true
13 | cf_pin: GPIO04
14 | cf1_pin: GPIO05
15 | current:
16 | name: "${plug_name}_Amperage"
17 | unit_of_measurement: A
18 | filters:
19 | - calibrate_linear:
20 | # Map 0.0 (from sensor) to 0.0 (true value)
21 | - 0.0 -> 0.01
22 | - 10.5 -> 8.2
23 |
24 | voltage:
25 | name: "${plug_name}_Voltage"
26 | unit_of_measurement: V
27 | filters:
28 | - calibrate_linear:
29 | # Map 0.0 (from sensor) to 0.0 (true value)
30 | - 0.0 -> 0.0
31 | - 622.5 -> 240.8
32 | - 617.0 -> 238.8
33 | - 612.7 -> 237.4
34 |
35 | power:
36 | name: "${plug_name}_Wattage"
37 | unit_of_measurement: W
38 | filters:
39 | - calibrate_linear:
40 | # Map 0.0 (from sensor) to 0.0 (true value)
41 | - 0.0 -> 1.4
42 | - 4.1 -> 2.0
43 | - 10463 -> 1800
44 |
45 | id: "${plug_name}_Wattage"
46 | change_mode_every: 4
47 | update_interval: 10s
48 | - platform: total_daily_energy
49 | name: "${plug_name}_Total Daily Energy"
50 | power_id: "${plug_name}_Wattage"
51 | filters:
52 | # Multiplication factor from W to kW is 0.001
53 | - multiply: 0.001
54 | unit_of_measurement: kWh
55 |
56 | binary_sensor:
57 | - platform: template
58 | name: Seche Linge
59 | filters:
60 | - delayed_off: 100s
61 | lambda: |-
62 | return id(${plug_name}_Wattage).state > 8;
63 |
--------------------------------------------------------------------------------
/esphome/switch_radio_parents.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: switch_radio_parents
4 | # Higher value gives lower watt readout
5 | current_res: "0.00221"
6 | # Lower value gives lower voltage readout
7 | voltage_div: "955"
8 | ip_address: !secret esphome_switch_radio_parents_static_ip
9 |
10 | <<: !include includes/gosund_sp1.yaml
11 |
12 | sensor:
13 | - platform: hlw8012
14 | sel_pin:
15 | number: GPIO12
16 | inverted: true
17 | cf_pin: GPIO04
18 | cf1_pin: GPIO05
19 | current:
20 | name: "${plug_name}_Amperage"
21 | unit_of_measurement: A
22 | # filters:
23 | # - calibrate_linear:
24 | # # Map 0.0 (from sensor) to 0.0 (true value)
25 | # - 0.0 -> 0.0
26 |
27 | voltage:
28 | name: "${plug_name}_Voltage"
29 | unit_of_measurement: V
30 | # filters:
31 | # - calibrate_linear:
32 | # Map 0.0 (from sensor) to 0.0 (true value)
33 |
34 | power:
35 | name: "${plug_name}_Wattage"
36 | unit_of_measurement: W
37 | # filters:
38 | # - calibrate_linear:
39 | # Map 0.0 (from sensor) to 0.0 (true value)
40 |
41 | id: "${plug_name}_Wattage"
42 | change_mode_every: 4
43 | update_interval: 10s
44 | - platform: total_daily_energy
45 | name: "${plug_name}_Total Daily Energy"
46 | power_id: "${plug_name}_Wattage"
47 | filters:
48 | # Multiplication factor from W to kW is 0.001
49 | - multiply: 0.001
50 | unit_of_measurement: kWh
51 |
--------------------------------------------------------------------------------
/esphome/switch_washingmachine.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: switch_washingmachine
4 | ip_address: !secret esphome_switch_washingmachine_static_ip
5 |
6 | <<: !include includes/gosund_sp1.yaml
7 |
8 | sensor:
9 | - platform: hlw8012
10 | sel_pin:
11 | number: GPIO12
12 | inverted: true
13 | cf_pin: GPIO04
14 | cf1_pin: GPIO05
15 | current:
16 | name: "${plug_name}_Amperage"
17 | unit_of_measurement: A
18 | filters:
19 | - calibrate_linear:
20 | # Map 0.0 (from sensor) to 0.0 (true value)
21 | - 0.0 -> 0.01
22 | - 10.0 -> 8.22
23 |
24 | voltage:
25 | name: "${plug_name}_Voltage"
26 | unit_of_measurement: V
27 | filters:
28 | - calibrate_linear:
29 | # Map 0.0 (from sensor) to 0.0 (true value)
30 | - 0.0 -> 0.0
31 | - 588.8 -> 241.8
32 | - 580 -> 236
33 |
34 | power:
35 | name: "${plug_name}_Wattage"
36 | unit_of_measurement: W
37 | filters:
38 | - calibrate_linear:
39 | # Map 0.0 (from sensor) to 0.0 (true value)
40 | - 0.0 -> 1.4
41 | - 41.4 -> 9
42 | - 10674 -> 1942
43 |
44 | id: "${plug_name}_Wattage"
45 | change_mode_every: 4
46 | update_interval: 10s
47 | - platform: total_daily_energy
48 | name: "${plug_name}_Total Daily Energy"
49 | power_id: "${plug_name}_Wattage"
50 | filters:
51 | # Multiplication factor from W to kW is 0.001
52 | - multiply: 0.001
53 | unit_of_measurement: kWh
54 |
55 | binary_sensor:
56 | - platform: template
57 | name: Lave Linge
58 | filters:
59 | - delayed_off: 20s
60 | lambda: |-
61 | return id(${plug_name}_Wattage).state > 8;
62 |
--------------------------------------------------------------------------------
/esphome/ventilation.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | substitutions:
3 | plug_name: switch_ventilation
4 | # Higher value gives lower watt readout
5 | current_res: "0.00226"
6 | # Lower value gives lower voltage readout
7 | voltage_div: "930"
8 | ip_address: !secret esphome_switch_ventilation_static_ip
9 |
10 | <<: !include includes/gosund_sp1.yaml
11 |
12 | sensor:
13 | - platform: hlw8012
14 | sel_pin:
15 | number: GPIO12
16 | inverted: true
17 | cf_pin: GPIO04
18 | cf1_pin: GPIO05
19 | current:
20 | name: "${plug_name}_Amperage"
21 | unit_of_measurement: A
22 | filters:
23 | - calibrate_linear:
24 | # # Map 0.0 (from sensor) to 0.0 (true value)
25 | - 0.0 -> 0.0
26 | - 10.4 -> 8.26
27 |
28 | voltage:
29 | name: "${plug_name}_Voltage"
30 | unit_of_measurement: V
31 | filters:
32 | - calibrate_linear:
33 | # # Map 0.0 (from sensor) to 0.0 (true value)
34 | - 0.0 -> 0.0
35 | - 607.6 -> 241.1
36 | - 598.4 -> 237.5
37 |
38 | power:
39 | name: "${plug_name}_Wattage"
40 | unit_of_measurement: W
41 | filters:
42 | - calibrate_linear:
43 | # Map 0.0 (from sensor) to 0.0 (true value)
44 | - 0.0 -> 1.3
45 | - 113.8 -> 21.2
46 | - 11118 -> 1936
47 |
48 | id: "${plug_name}_Wattage"
49 | change_mode_every: 4
50 | update_interval: 2s
51 | - platform: total_daily_energy
52 | name: "${plug_name}_Total Daily Energy"
53 | power_id: "${plug_name}_Wattage"
54 | filters:
55 | # Multiplication factor from W to kW is 0.001
56 | - multiply: 0.001
57 | unit_of_measurement: kWh
58 |
59 | binary_sensor:
60 | - platform: template
61 | name: Ventitlation
62 | filters:
63 | - delayed_off: 10s
64 | lambda: |-
65 | return id(${plug_name}_Wattage).state > 5;
66 |
--------------------------------------------------------------------------------
/integrations/automation.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # This handles the loading of my automations
3 | #
4 | # https://www.home-assistant.io/docs/automation/
5 | #
6 | automation: !include_dir_list ../automations
7 |
--------------------------------------------------------------------------------
/integrations/camera.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The camera component allows you to use IP cameras with Home Assistant.
3 | # This loads up all my camera configurations
4 | #
5 | # https://www.home-assistant.io/components/camera/
6 | #
7 | camera: !include_dir_list ../entities/cameras
8 |
--------------------------------------------------------------------------------
/integrations/cloud.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The Home Assistant Cloud allows you to quickly integrate your local
3 | # Home Assistant with various cloud services like Amazon Alexa and Google Home.
4 | #
5 | # https://www.home-assistant.io/components/cloud/
6 | #
7 | cloud:
8 |
--------------------------------------------------------------------------------
/integrations/config.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The config component enables a set of additional capabilities to manage and
3 | # configure certain parts of Home Assistant straight from the frontend.
4 | #
5 | # https://www.home-assistant.io/components/config/
6 | #
7 | config:
8 | base_url: !secret fritz_base_url
9 |
--------------------------------------------------------------------------------
/integrations/device_tracker.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Home Assistant can get information from various devices. These can be used,
3 | # for example, to track the location of your mobile phone.
4 | #
5 | # This configuration loads up my device trackers
6 | #
7 | # https://www.home-assistant.io/components/device_tracker/
8 | #
9 | device_tracker: !include_dir_list ../entities/device_trackers
10 |
--------------------------------------------------------------------------------
/integrations/frontend.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Configures the official Home Assistant frontend.
3 | #
4 | # https://www.home-assistant.io/components/frontend/
5 | #
6 | frontend:
7 | # Version of the JavaScript to serve to clients.
8 | javascript_version: auto
9 |
10 | # List of additional resources to load (latest javascript)
11 | extra_html_url: []
12 |
13 | # List of additional resource to load (es5 javascript)
14 | extra_html_url_es5: []
15 |
16 | # We can define additional/custom themes for the frontend here.
17 | themes: !include_dir_merge_named ../themes
18 |
--------------------------------------------------------------------------------
/integrations/group.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Groups allow the user to combine multiple entities into one.
3 | # This loads up my custom created groups
4 | #
5 | # https://www.home-assistant.io/components/group/
6 | #
7 | group: !include_dir_merge_named ../entities/groups
8 |
--------------------------------------------------------------------------------
/integrations/hacs.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | hacs:
3 | token: !secret github_token
4 |
--------------------------------------------------------------------------------
/integrations/history.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The history component will track everything that is going on within
3 | # Home Assistant and allows the user to browse through it.
4 | #
5 | # https://www.home-assistant.io/components/history/
6 | #
7 | history:
8 |
--------------------------------------------------------------------------------
/integrations/http.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | http:
3 | ip_ban_enabled: true
4 | login_attempts_threshold: 5
5 | use_x_forwarded_for: true
6 | trusted_proxies: 172.30.33.8
7 |
--------------------------------------------------------------------------------
/integrations/influxdb.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # I store a lot of sensor data into InfluxDB, which allows me to query
3 | # a longer history with ease. I use the Community Hass.io add-on for this,
4 | # combined with the Community Hass.io Grafana add-on for the graphs.
5 | #
6 | # https://github.com/hassio-addons/addon-influxdb
7 | # https://github.com/hassio-addons/addon-grafana
8 | # https://www.home-assistant.io/components/influxdb/
9 | #
10 | influxdb:
11 |
12 | # This is the Hass.io add-on slug, allowing a direct connection to the addon.
13 | host: a0d7b954-influxdb
14 | port: 8086
15 |
16 | # The database name to store all the metrics in.
17 | database: homeassistant2
18 |
19 | # Authentication credentials.
20 | username: !secret influxdb_user
21 | password: !secret influxdb_secret
22 |
23 | # Max number of retries in case of a failure.
24 | max_retries: 3
25 |
26 | # The list of attribute names which should be reported as tags
27 | # and not fields to InfluxDB.
28 | # I've added `device_class` tag and the Z-Wave `node_id`.
29 |
30 | # I like to specify (whitelist) each thing I'd like to put
31 | # into InfluxDB, to keep the database as clean as possible.
32 |
33 | # include:
34 | # entities: !include_dir_merge_list ../influxdb
35 |
--------------------------------------------------------------------------------
/integrations/input_select.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | input_select: !include_dir_merge_named ../entities/input_select
3 |
--------------------------------------------------------------------------------
/integrations/ios.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The Home Assistant for iOS app offers a companion app for iOS which
3 | # is deeply integrated into both Home Assistant and iOS.
4 | #
5 | # https://www.home-assistant.io/components/ios/
6 | # https://www.home-assistant.io/docs/ecosystem/ios/
7 | #
8 | ios:
9 | push:
10 | categories:
11 | - name: 'rollo'
12 | identifier: 'rollo'
13 | actions:
14 | - identifier: 'STOP_ROLLO'
15 | title: 'Stop'
16 | destructive: true
17 | activationMode: 'background'
18 | - name: 'quiet'
19 | identifier: 'quiet'
20 | actions:
21 | - identifier: 'QUIET_DISABLE'
22 | title: 'Disable'
23 | activationMode: 'background'
24 | - name: 'lockdoor'
25 | identifier: 'lockdoor'
26 | actions:
27 | - identifier: 'LOCK_DOOR'
28 | title: 'Lock The Door'
29 | destructive: true
30 | activationMode: 'background'
31 |
--------------------------------------------------------------------------------
/integrations/knx.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | knx:
3 |
--------------------------------------------------------------------------------
/integrations/lock.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | lock: !include_dir_list ../entities/locks
3 |
--------------------------------------------------------------------------------
/integrations/logbook.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The logbook component provides a different perspective on the history of
3 | # your house by showing all the changes that happened to your house in
4 | # reverse chronological order.
5 | #
6 | # https://www.home-assistant.io/components/logbook/
7 | #
8 | logbook:
9 |
--------------------------------------------------------------------------------
/integrations/logger.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | logger:
3 | default: warn
4 | logs:
5 | pychromecast.socket_client: fatal
6 |
--------------------------------------------------------------------------------
/integrations/lovelace.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Lovelace component for confuring the UI.
3 | #
4 | # I use Lovelace in manual YAML mode. Pro: I can have my Lovelace in Git
5 | # with easy. Cons: I do not have access to the Lovelace UI editor.
6 | #
7 | # https://www.home-assistant.io/lovelace/
8 | # https://www.home-assistant.io/lovelace/yaml-mode/
9 | #
10 | lovelace:
11 | mode: yaml
12 |
--------------------------------------------------------------------------------
/integrations/map.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # This offers a map on the frontend to display the location of tracked devices.
3 | #
4 | # https://www.home-assistant.io/components/map/
5 | #
6 | map:
7 |
--------------------------------------------------------------------------------
/integrations/mobile_app.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | #
3 | # The Mobile App component allows Home Assistant mobile apps to easily
4 | # integrate with Home Assistant.
5 | #
6 | # https://www.home-assistant.io/components/mobile_app/
7 | #
8 | mobile_app:
9 |
--------------------------------------------------------------------------------
/integrations/mqtt.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | mqtt:
3 | broker: !secret mqttip
4 |
--------------------------------------------------------------------------------
/integrations/old_packages:
--------------------------------------------------------------------------------
1 | ../components/packages
--------------------------------------------------------------------------------
/integrations/packages/gn.yaml.txt:
--------------------------------------------------------------------------------
1 | script:
2 |
3 | goodnight:
4 | alias: Good Night
5 | sequence:
6 | - service: light.turn_off
7 | entity_id: hall_entree
8 | - service: light.turn_off
9 | entity_id: cave_couloir
10 | - service: light.turn_off
11 | entity_id: garage
12 | - service: light.turn_off
13 | entity_id: wc_cave
14 | - service: light.turn_off
15 | entity_id: technique
16 | - service: light.turn_off
17 | entity_id: spots_escalier_0-1
18 | #1er#
19 | - service: light.turn_off
20 | entity_id: buro
21 | - service: light.turn_off
22 | entity_id: led_sam
23 | - service: light.turn_off
24 | entity_id: led_living
25 | - service: light.turn_off
26 | entity_id: led_cuisine
27 | - service: light.turn_off
28 | entity_id: lampe_wc
29 | - service: light.turn_off
30 | entity_id: spots_escalier_0-1_bis
31 | - service: light.turn_off
32 | entity_id: couloir_premier
33 | - service: light.turn_off
34 | entity_id: lumiere_sam
35 | - service: light.turn_off
36 | entity_id: spots_sam
37 | - service: light.turn_off
38 | entity_id: spots_living
39 | - service: light.turn_off
40 | entity_id: centre_living
41 | - service: light.turn_off
42 | entity_id: spots_cuisine
43 | - service: light.turn_off
44 | entity_id: spots_cuisine_ilot
45 | - service: homeassistant.turn_off
46 | entity_id: light_sam
47 | - service: homeassistant.turn_off
48 | entity_id: light_living
49 | - service: media_player.turn_off
50 | data:
51 | entity_id: media_player.chromecastkeller
--------------------------------------------------------------------------------
/integrations/packages/homekit.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The HomeKit component allows you to forward entities from Home Assistant
3 | # to Apple HomeKit, so they can be controlled from Apple’s Home app and Siri.
4 | #
5 | # https://www.home-assistant.io/components/homekit
6 | #
7 | homekit:
8 | filter:
9 | include_domains:
10 | - light
11 | # - switch
12 | # - cover
13 | - lock
14 | - media_player
15 |
--------------------------------------------------------------------------------
/integrations/packages/knx.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | switch:
3 |
4 | - platform: knx
5 | name: day_night
6 | address: '4/2/16'
7 |
8 | #############################
9 | ### RDC /cave
10 | #############################
11 |
12 | - platform: knx
13 | name: Prise Devant
14 | address: '1/5/0'
15 | state_address: '1/5/1'
16 | - platform: knx
17 | name: Prise Arriere
18 | address: '1/5/2'
19 | state_address: '1/5/3'
20 |
21 | #############################
22 | ### 1etage
23 | #############################
24 |
25 | - platform: knx
26 | name: Armoire Sam
27 | address: '2/5/0'
28 | state_address: '2/5/1'
29 | - platform: knx
30 | name: Armoire Cuisine
31 | address: '2/5/2'
32 | state_address: '2/5/3'
33 | - platform: knx
34 | name: Lampe Canape
35 | address: '2/5/4'
36 | state_address: '2/5/5'
37 | - platform: knx
38 | name: "Armoire TV"
39 | address: '2/5/6'
40 | state_address: '2/5/7'
41 | - platform: knx
42 | name: Terrasse
43 | address: '2/5/8'
44 | state_address: '2/5/9'
45 | - platform: knx
46 | name: Prise sol Escalier
47 | address: '2/5/10'
48 | state_address: '2/5/11'
49 | - platform: knx
50 | name: Prise Buero arriere
51 | address: '2/5/12'
52 | state_address: '2/5/13'
53 |
54 | #############################
55 | ### 2etage
56 | #############################
57 |
58 | - platform: knx
59 | name: prise Ch enfant arr
60 | address: '3/5/0'
61 | state_address: '3/5/1'
62 |
63 | - platform: knx
64 | name: prise Ch enfant av
65 | address: '3/5/2'
66 | state_address: '3/5/3'
67 |
68 | #############################
69 | ### 3etage /Combles
70 | #############################
71 |
--------------------------------------------------------------------------------
/integrations/packages/knx_groups.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | group:
3 | Rolladen Premier:
4 | name: Rolladen 1er
5 | entities:
6 | - cover.1er_etage
7 | - automation.fermer_jalousies_au_soir
8 | - cover.kueche_links_a
9 | - cover.kueche_links_m
10 | - cover.kueche_rechts_m
11 | - cover.kueche_rechts_a
12 | - cover.living
13 | - cover.buero
14 |
15 | Rolladen Keller:
16 | name: Rolladen cave
17 | entities:
18 | - cover.cave
19 | - automation.fermer_jalousies_au_soir
20 | - cover.local_technique_porte
21 | - cover.local_technique_fenetre
22 | - cover.garage_fenetre
23 | - cover.garage_porte
24 | Rolladen Chambres:
25 | name: Rolladen 2eme
26 | entities:
27 | - cover.2eme_etage
28 | - automation.fermer_jalousies_au_soir
29 | - cover.chac_enfant_route
30 | - cover.chac_enfant_arriere
31 | - cover.sdb_parents
32 | - cover.chac_parents
33 |
34 | Light 1er:
35 | name: Light
36 | entities:
37 | - light.spots_escalier_01
38 | - light.spots_escalier_01_bis
39 | - light.spots_escalier_12
40 | - light.couloir_1er
41 | - light.spots_Millieux
42 | - light.buro
43 | - light.lampe_wc
44 |
45 | Light Living:
46 | name: Living
47 | entities:
48 | - light.centre_Living
49 | - light.spots_living
50 | - light.led_living
51 | - switch.lampe_canape
52 | - switch.armoire_tv
53 |
54 | Light sam:
55 | name: Salle A Manger
56 | entities:
57 | - light.spots_sam
58 | - light.lumiere_sam
59 | - light.led_sam
60 | - switch.armoire_sam
61 |
62 | Light cuisine:
63 | name: Cuisine
64 | entities:
65 | - light.spots_cuisine
66 | - light.spots_cuisine_ilot
67 | - light.led_cuisine
68 | - switch.armoire_cuisine
69 |
70 | sdb_enfants:
71 | name: SDB Enfants
72 | entities:
73 | - light.Mirroir_SDB_Enfants
74 | - light.Lumiere_SDB_E
75 |
76 | chambre_parents:
77 | name: Parents
78 | entities:
79 | - light.LED_Parents
80 | - light.Lit_G
81 | - light.Lit_D
82 | - light.Spots_Parents
83 | - light.led_dressing
84 | - light.mirroir_parents
85 | - light.dressing
86 |
87 | sdb_parents:
88 | name: SDB Parents
89 | entities:
90 | - light.Spots_SDB_P
91 | - light.Spots_Douche_P
92 | - light.Mirroir_SDB_P
93 | - light.LED_SDB_P
94 | - climate.SDB_Parents
95 |
96 | chambre_enfant_avant:
97 | name: Enfant Av
98 | entities:
99 | - light.chambre_av
100 |
101 | chambre_enfant_arriere:
102 | name: Enfant Ar
103 | entities:
104 | - light.chambre_ar
105 |
--------------------------------------------------------------------------------
/integrations/packages/knx_sensors.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | sensor:
3 | - platform: knx
4 | name: Helligkeit Treppe oben
5 | state_address: '4/2/15'
6 | type: 'illuminance'
7 |
8 | # Example configuration.yaml entry
9 | binary_sensor:
10 | - platform: knx
11 | state_address: '4/2/19'
12 | name: Bm_flur_status
13 |
14 |
--------------------------------------------------------------------------------
/integrations/packages/noel.txt:
--------------------------------------------------------------------------------
1 | automation:
2 | - alias: arbre de noel soir on
3 | initial_state: True
4 | trigger:
5 | platform: numeric_state
6 | entity_id: sun.sun
7 | value_template: '{{ state.attributes.elevation }}'
8 | below: -1
9 | action:
10 | - service: switch.turn_on
11 | entity_id: switch.prise_sol_escalier
12 | - service: switch.turn_on
13 | entity_id: switch.prise_devant
14 | - service: notify.ios_iphoneadonno
15 | data:
16 | title: "Arbre on soir"
17 | message: Arbre on soir
18 |
19 |
20 | - alias: arbre de noel soir off
21 | initial_state: True
22 | trigger:
23 | platform: time
24 | at: '01:00:00'
25 | action:
26 | - service: switch.turn_off
27 | entity_id: switch.prise_sol_escalier
28 | - service: switch.turn_off
29 | entity_id: switch.prise_devant
30 |
31 |
32 | - alias: arbre de noel matin off
33 | initial_state: True
34 | trigger:
35 | platform: numeric_state
36 | entity_id: sun.sun
37 | value_template: '{{ state.attributes.elevation }}'
38 | above: 1
39 | condition:
40 | condition: time
41 | weekday:
42 | - mon
43 | - tue
44 | - wed
45 | - thu
46 | - fri
47 | action:
48 | - service: switch.turn_off
49 | entity_id: switch.prise_sol_escalier
50 | - service: switch.turn_off
51 | entity_id: switch.prise_devant
52 | - service: notify.ios_iphoneadonno
53 | data:
54 | title: "Arbre off morning"
55 | message: Arbre off morning
56 |
57 | - alias: arbre de noel matin on
58 | initial_state: True
59 | trigger:
60 | platform: time
61 | at: '06:00:00'
62 | condition:
63 | condition: and
64 | conditions:
65 | - condition: time
66 | weekday:
67 | - mon
68 | - tue
69 | - wed
70 | - thu
71 | - fri
72 | - condition: sun
73 | before: sunrise
74 | before_offset: "-1:00:00"
75 |
76 | action:
77 | - service: switch.turn_on
78 | entity_id: switch.prise_sol_escalier
79 | - service: switch.turn_on
80 | entity_id: switch.prise_devant
--------------------------------------------------------------------------------
/integrations/packages/sensor.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Sensors are gathering information about states and conditions.
3 | #
4 | # This loads up my sensor configurations
5 | #
6 | # https://www.home-assistant.io/components/sensor/
7 | #
8 | sensor: !include_dir_list ../sensors
9 |
--------------------------------------------------------------------------------
/integrations/packages/wg.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | #########################################################################################################
3 | automation:
4 | - id: Welcome Sergio
5 | alias: welcome Sergio
6 | initial_state: true
7 | hide_entity: true
8 | trigger:
9 | - platform: state
10 | entity_id: device_tracker.iphonedesergio_3
11 | to: home
12 | condition:
13 | - condition: time
14 | after: 08:00:00
15 | before: '20:00:00'
16 | - condition: state
17 | entity_id: switch.quiet_mode
18 | state: 'off'
19 | action:
20 | - service: tts.google_translate
21 | entity_id: media_player.chromecast_messages
22 | data:
23 | message: Benvenuto. Sergio
24 | language: it
25 | - service: notify.ios_iphoneadonno
26 | data:
27 | title: "Intruder"
28 | message: Sergio is connected to the WIFI
29 |
30 | # - id: Welcome Caroline
31 | # alias: welcome Caroline
32 | # initial_state: True
33 | # hide_entity: true
34 | # trigger:
35 | # - platform: state
36 | # entity_id: device_tracker.iphonedesergio_3
37 | # to: home
38 | # condition:
39 | # - condition: time
40 | # after: 08:00:00
41 | # before: '20:00:00'
42 | # - condition: state
43 | # entity_id: switch.quiet_mode
44 | # state: 'off'
45 | # action:
46 | # - service: tts.google_translate
47 | # entity_id: media_player.chromecast_messages
48 | # data:
49 | # message: Benvenuto. Sergio
50 | # language: it
51 | # - service: notify.ios_iphoneadonno
52 | # data:
53 | # title: "Intruder"
54 | # message: Sergio is connected to the WIFI
55 |
--------------------------------------------------------------------------------
/integrations/panel_iframe.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The panel_iframe support allows you to add additional panels to your
3 | # Home Assistant frontend. The panels are listed in the sidebar and can
4 | # contain external resources like the web frontend of your router,
5 | # your monitoring system, or your media server.
6 | #
7 | # This configration loads up all my panels
8 | #
9 | # https://www.home-assistant.io/components/panel_iframe/
10 | #
11 | panel_iframe: !include_dir_merge_named ../../panels/iframes
12 |
--------------------------------------------------------------------------------
/integrations/recorder.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The recorder component is storing details in a database which
3 | # then are handled by the history component.
4 | #
5 | # https://www.home-assistant.io/components/recorder/
6 | #
7 | recorder:
8 | # The number of days of history to keep in the recorder database
9 | purge_keep_days: 3
10 |
11 | # How often (in days) the purge task runs
12 | purge_interval: 1
13 |
14 | exclude:
15 | entities:
16 | - sun.sun # Don't record sun data
17 | - sensor.date
18 | - sensor.time
19 |
--------------------------------------------------------------------------------
/integrations/script.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The script component allows users to specify a sequence of actions to be
3 | # executed by Home Assistant when turned on.
4 | #
5 | # This loads up my custom scripts.
6 | #
7 | # https://www.home-assistant.io/components/script/
8 | #
9 | script: !include_dir_merge_named ../scripts
10 |
--------------------------------------------------------------------------------
/integrations/sensor.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Sensors are gathering information about states and conditions.
3 | #
4 | # This loads up my sensor configurations
5 | #
6 | # https://www.home-assistant.io/components/sensor/
7 | #
8 | sensor: !include_dir_list ../entities/sensors
9 |
--------------------------------------------------------------------------------
/integrations/speedtestdotnet.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The speedtestdotnet integration uses the Speedtest.net
3 | # web service to measure network bandwidth performance.
4 | #
5 | # https://www.home-assistant.io/components/speedtestdotnet/
6 | #
7 | speedtestdotnet:
8 | scan_interval:
9 | minutes: 15
10 |
--------------------------------------------------------------------------------
/integrations/stream.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The stream component provides a way to proxy live streams through
3 | # Home Assistant.
4 | #
5 | # https://www.home-assistant.io/components/stream/
6 | #
7 | stream:
8 |
--------------------------------------------------------------------------------
/integrations/sun.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The sun component will use your current location to track if the sun is
3 | # above or below the horizon.
4 | #
5 | # https://www.home-assistant.io/components/sun/
6 | #
7 | sun:
8 | # The (physical) elevation of your location, in meters above sea level.
9 | elevation: !secret zone_home_elevation
10 |
--------------------------------------------------------------------------------
/integrations/system_health.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The System Health component provides an API to offer information
3 | # on the system and its components.
4 | #
5 | # https://www.home-assistant.io/components/system_health/
6 | #
7 | system_health:
8 |
--------------------------------------------------------------------------------
/integrations/tts.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Text-to-Speech (TTS) enables Home Assistant to speak to you.
3 | # This loads up my TTS service configurations
4 | #
5 | # https://www.home-assistant.io/components/tts/
6 | #
7 | tts: !include_dir_list ../entities/tts
8 |
--------------------------------------------------------------------------------
/integrations/updater.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # The updater component will check daily for new releases.
3 | # It will show a badge in the frontend if a new version is found.
4 | # As Hass.io has its own schedule for release it doesn’t make sense
5 | # to use this component on Hass.io. Nevertheless, I'm still including it,
6 | # since I like to know something is upcoming :)
7 | #
8 | # https://www.home-assistant.io/components/updater/
9 | #
10 | # For more information, please see:
11 | # https://home-assistant.io/blog/2016/10/25/explaining-the-updater/
12 | #
13 | updater:
14 | # I chose to share some information with the Home Assistant developers.
15 | # It will help them to prioritize the development.
16 | # That why this option is enabled.
17 | reporting: true
18 |
19 | # I'm also reporting a list of components that I'm using.
20 | include_used_components: true
21 |
--------------------------------------------------------------------------------
/integrations/vera.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | vera: # !include_dir_list ../entities/vera
3 | vera_controller_url: !secret veraip
4 | exclude: [39, 40, 45, 48, 47, 48, 42, 44, 51, 52, 56]
5 |
--------------------------------------------------------------------------------
/integrations/weather.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | #
3 | # This handles the loading of my weather platforms.
4 | #
5 | # https://www.home-assistant.io/components/weather/
6 | #
7 | weather: !include_dir_list ../entities/weather
8 |
--------------------------------------------------------------------------------
/integrations/zone.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Zones allow you to specify certain regions on earth (for now).
3 | #
4 | # https://www.home-assistant.io/components/zone/
5 | #
6 | zone: !include_dir_list ../entities/zones
7 |
--------------------------------------------------------------------------------
/lovelace/resources/banner_card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/banner-card/banner-card.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/button-card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/button-card/button-card.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/card_tools.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/lovelace-card-tools/card-tools.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/compact_custom_header.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/compact-custom-header/compact-custom-header.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/cover_element.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/cover-element/cover-element-bundle.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/decluttering-card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/decluttering-card/decluttering-card.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/layout_card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/lovelace-layout-card/layout-card.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/lovelace_swipe_navigation.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/lovelace-swipe-navigation/swipe-navigation.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/mini_garph_card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/mini-graph-card/mini-graph-card-bundle.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/mini_media_player.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/mini-media-player/mini-media-player-bundle.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/resources/monster_card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/monster-card/monster-card.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/plan_coordinates.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/plan-coordinates/plan-coordinates.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/slider_entity_row.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/lovelace-slider-entity-row/slider-entity-row.js
3 | type: js
4 |
--------------------------------------------------------------------------------
/lovelace/resources/swipe_card.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | url: /community_plugin/swipe-card/swipe-card.js
3 | type: module
4 |
--------------------------------------------------------------------------------
/lovelace/sections/machine_status.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | cards:
3 | - type: custom:button-card
4 | entity: input_select.washing_machine
5 | show_state: false
6 | show_icon: true
7 | show_name: false
8 | state:
9 | - value: 'Clean'
10 | icon: mdi:washing-machine
11 | color: rgb(255, 0, 0)
12 | styles:
13 | icon:
14 | - animation: blink 2s ease infinite
15 | - value: 'Running'
16 | icon: mdi:washing-machine
17 | color: rgb(152,251,152)
18 | - value: 'Idle'
19 | icon: mdi:washing-machine
20 | color: rgb(169,169,169)
21 | tap_action:
22 | action: more-info
23 |
24 | - type: custom:button-card
25 | entity: input_select.clothes_dryer
26 | show_icon: true
27 | show_name: false
28 | state:
29 | - value: 'Clean'
30 | icon: mdi:tumble-dryer
31 | color: rgb(255, 0, 0)
32 | styles:
33 | icon:
34 | - animation: blink 2s ease infinite
35 | - value: 'Running'
36 | icon: mdi:tumble-dryer
37 | color: rgb(152,251,152)
38 | - value: 'Idle'
39 | icon: mdi:tumble-dryer
40 | color: rgb(169,169,169)
41 | tap_action:
42 | action: more-info
43 | - type: custom:button-card
44 | entity: input_select.dish_washer_status
45 | show_icon: true
46 | show_name: false
47 | state:
48 | - value: 'Clean'
49 | icon: mdi:dishwasher
50 | color: rgb(255, 0, 0)
51 | styles:
52 | icon:
53 | - animation: blink 2s ease infinite
54 | - value: 'Running'
55 | icon: mdi:dishwasher
56 | color: rgb(152,251,152)
57 | - value: 'Idle'
58 | icon: mdi:dishwasher
59 | color: rgb(169,169,169)
60 | tap_action:
61 | action: more-info
62 | - type: custom:button-card
63 | entity: input_select.postbox
64 | show_icon: true
65 | show_name: false
66 | state:
67 | - value: 'Mail-empty'
68 | icon: mdi:mailbox-outline
69 | color: rgb(169,169,169)
70 | - value: 'Mail'
71 | icon: mdi:email-alert
72 | color: rgb(255, 0, 0)
73 | - value: 'Box'
74 | icon: mdi:package-variant-closed
75 | color: rgb(152,251,152)
76 | tap_action:
77 | action: more-info
78 | - type: custom:button-card
79 | entity: switch.switch_ventilation_relay
80 | show_icon: true
81 | show_name: false
82 | state:
83 | - value: 'on'
84 | icon: mdi:fan
85 | color: rgb(152,251,152)
86 | spin: true
87 | - value: 'off'
88 | icon: mdi:fan-off
89 | # color: rgb(152,251,152)
90 | tap_action:
91 | action: toggle
92 |
93 | type: horizontal-stack
94 |
--------------------------------------------------------------------------------
/lovelace/sections/radio.yaml:
--------------------------------------------------------------------------------
1 | # ---
2 | # type: custom:banner-card
3 | # heading: "Radio"
4 | # entities:
5 | # - switch.rdoliving
6 | # - input_number.volume_radio_living
7 | # - switch.rdochparents
8 | # - input_number.volume_radio_parents
9 | ---
10 | entities:
11 | - switch.rdoliving
12 | - input_number.volume_radio_living
13 | - switch.rdochparents
14 | - input_number.volume_radio_parents
15 | title: Radio
16 | type: entities
17 |
--------------------------------------------------------------------------------
/lovelace/views/cameras.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | badges: []
3 | title: cameras
4 | icon: mdi:camera
5 | cards:
6 | - camera_view: live
7 | entity: camera.entree
8 | type: picture-entity
9 | - camera_view: live
10 | entity: camera.reserve
11 | type: picture-entity
12 | - camera_view: live
13 | entity: camera.erika
14 | type: picture-entity
15 | - camera_view: live
16 | entity: camera.technique
17 | type: picture-entity
18 | - camera_view: live
19 | entity: camera.garage
20 | type: picture-entity
21 | - camera_view: live
22 | entity: camera.garagef
23 | type: picture-entity
24 |
--------------------------------------------------------------------------------
/lovelace/views/floor_0.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | icon: 'mdi:numeric-0-box-multiple-outline'
3 | id: 1
4 | title: Cave
5 | cards:
6 |
7 | - entities:
8 | - entity: cover.cave
9 | name: Cave Global
10 | - label: Local Technique
11 | style:
12 | height: 3px
13 | type: section
14 | - entity: cover.local_technique_fenetre
15 | icon: 'mdi:format-align-justify'
16 | name: Local Technique Fenêtre
17 | type: 'custom:slider-entity-row'
18 | - entity: binary_sensor.local_technique_fenetre
19 | - entity: cover.local_technique_porte
20 | icon: 'mdi:format-align-justify'
21 | name: Local Technique Porte
22 | type: 'custom:slider-entity-row'
23 | - entity: binary_sensor.local_technique_porte
24 | - label: Garage
25 | style:
26 | height: 3px
27 | type: section
28 | - entity: cover.garage_fenetre
29 | icon: 'mdi:format-align-justify'
30 | name: Garage Fenêtre
31 | type: 'custom:slider-entity-row'
32 | - entity: binary_sensor.garage_porte
33 | - entity: cover.garage_porte
34 | icon: 'mdi:format-align-justify'
35 | name: Garage Porte
36 | type: 'custom:slider-entity-row'
37 | - entity: binary_sensor.garage_fenetre
38 | - entity: binary_sensor.garage
39 | - entity: binary_sensor.reserve
40 | - entity: binary_sensor.entree
41 | show_header_toggle: false
42 | theme: Backend-selected
43 | title: Rolladen
44 | type: entities
45 | - cards:
46 | - entities:
47 | - entity: light.hall_entree
48 | name: Eingang
49 | - entity: light.cave_couloir
50 | name: Flur
51 | - entity: light.technique
52 | name: Technik
53 | - entity: light.wc_cave
54 | name: WC
55 | type: entities
56 | - entities:
57 | - entity: light.reserve
58 | name: Reserve
59 | - entity: light.garage
60 | name: Garage
61 | - entity: light.lum_ext_avant
62 | name: Front
63 | - entity: light.lamp_ext_arr
64 | name: Garten
65 | - entity: light.spots_escalier_0_1
66 | icon: 'mdi:stairs'
67 | name: Treppen 0 - 1
68 | - entity: light.spots_escalier_0_1_bis
69 | icon: /local/treppe_bis.png
70 | name: Treppen 0 - 1 Lamper
71 | type: entities
72 | type: horizontal-stack
73 | - entities:
74 | - entity: switch.circulation_pump_relay
75 | - entity: sensor.circulation_pump_power
76 | - entity: sensor.circulation_pump_current
77 | - entity: sensor.circulation_pump_voltage
78 | - entity: sensor.circulation_pump_wifi_signal
79 | - entity: switch.circulation_pump_restart
80 | show_header_toggle: false
81 | title: Circulation-Viessmann
82 | type: entities
83 |
--------------------------------------------------------------------------------
/lovelace/views/floor_3.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | cards:
3 | - !include ../sections/radio.yaml
4 | - cards:
5 | - entities:
6 | - entity: light.escalier_lumieres_centrale
7 | icon: 'mdi:ceiling-light'
8 | name: Escalier
9 | - entity: light.combles
10 | icon: 'mdi:spotlight-beam'
11 | name: Speicher
12 | - entity: light.local_technique
13 | icon: 'mdi:water-pump'
14 | name: Technik
15 | icon: ceiling-light
16 | title: Licht
17 | type: entities
18 |
19 | type: vertical-stack
20 | icon: 'mdi:numeric-3-box-multiple-outline'
21 | id: 4
22 | title: 3rd
23 |
--------------------------------------------------------------------------------
/lovelace/views/floor_plans.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | icon: 'mdi:floor-plan'
3 | id: 0
4 | panel: true
5 | title: Floorplan
6 | cards:
7 | - type: 'custom:layout-card'
8 | layout: horizontal
9 | cards:
10 | - cards:
11 | - !include ../sections/machine_status.yaml
12 | - card:
13 | entities:
14 | - entity: light.lit_d
15 | name: Andrea
16 | tap_action:
17 | action: toggle
18 | - entity: light.lit_g
19 | name: Rina
20 | tap_action:
21 | action: toggle
22 | type: glance
23 | conditions:
24 | - entity: switch.quiet_mode
25 | state: 'on'
26 | type: conditional
27 | - camera_view: live
28 | entity: camera.intercom
29 | type: picture-entity
30 | - entities:
31 | - entity: device_tracker.iphoneadonno
32 | name: Andrea
33 | - entity: device_tracker.rinas_iphone
34 | name: Rina
35 | title: Presence
36 | type: glance
37 | - !include ../sections/radio.yaml
38 | - type: custom:banner-card
39 | heading: "Temperatures"
40 | row_size: 4
41 | entities:
42 | - sensor.eingang
43 | - sensor.buero
44 | - sensor.living
45 | - sensor.kueche
46 | - sensor.kind2
47 | - sensor.flur_og
48 | - sensor.kind1
49 | - sensor.eltern
50 | - sensor.sdb_eltern
51 | - sensor.sdb_kinder
52 | - sensor.speicher
53 | type: vertical-stack
54 | - !include ../floor_plans/plan_0.yaml
55 | - !include ../floor_plans/plan_1.yaml
56 | - !include ../floor_plans/plan_2.yaml
57 |
--------------------------------------------------------------------------------
/lovelace/views/housecontrol.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | icon: 'mdi:wrench'
3 | badges: []
4 | cards:
5 |
6 | - entity: sensor.saltlevel
7 | max: 0.45
8 | min: 0.03
9 | name: Salt Level
10 | severity:
11 | green: 0
12 | red: 0.38
13 | yellow: 0.26
14 | theme: default
15 | type: gauge
16 |
--------------------------------------------------------------------------------
/lovelace/views/network_devices.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | icon: 'mdi:network'
3 | title: Network Devices
4 | cards:
5 |
6 | - entities:
7 | - entity: device_tracker.aplocaltechnique
8 | name: Cave
9 | - entity: device_tracker.apbureau
10 | name: Living
11 | - entity: device_tracker.apchambrearr
12 | name: Deuxième
13 | title: Access Points
14 | type: glance
15 | - cards:
16 | - content: ' '
17 | title: Speedtest
18 | type: markdown
19 | - entity: sensor.speedtest_ping
20 | hours_to_show: 48
21 | line_color: '#039be5'
22 | name: Ping
23 | type: sensor
24 | - cards:
25 | - entity: sensor.speedtest_download
26 | hours_to_show: 48
27 | line_color: '#039be5'
28 | name: Down
29 | type: sensor
30 | - entity: sensor.speedtest_upload
31 | hours_to_show: 48
32 | line_color: '#039be5'
33 | name: UP
34 | type: sensor
35 | type: horizontal-stack
36 | type: vertical-stack
37 | - entities:
38 | - entity: device_tracker.ipaddeadonno
39 | name: iPad
40 | title: Tablettes
41 | type: glance
42 |
--------------------------------------------------------------------------------
/lovelace/views/power_usage.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | badges:
3 | - binary_sensor.lave_linge
4 | - binary_sensor.seche_linge
5 | - binary_sensor.lave_vaisaille
6 | - binary_sensor.ventitlation
7 | cards:
8 |
9 | - cards:
10 | - entities:
11 | - sensor.switch_clothesdryer_wattage
12 | hours_to_show: 4
13 | points_per_hour: 30
14 | type: 'custom:mini-graph-card'
15 | - entities:
16 | - sensor.switch_washingmachine_wattage
17 | hours_to_show: 4
18 | points_per_hour: 60
19 | type: 'custom:mini-graph-card'
20 | - entities:
21 | - sensor.switch_dishwasher_wattage
22 | hours_to_show: 24
23 | type: 'custom:mini-graph-card'
24 | - entities:
25 | - sensor.switch_ventilation_wattage
26 | hours_to_show: 24
27 | type: 'custom:mini-graph-card'
28 | type: vertical-stack
29 | icon: 'mdi:power'
30 | title: powerusage
31 |
--------------------------------------------------------------------------------
/lovelace/views/rgbw_leds.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | cards:
3 |
4 | - entities:
5 | - light.blue_65
6 | - light.blue_liv_35
7 | - light.rgbw_liv_31
8 | - light.rgbw_controller_sam_25
9 | - light.rgbw_sdb_61
10 | title: RGBW
11 | type: entities
12 | icon: 'mdi:led-strip'
13 | id: RGBW
14 | title: ARGBW
15 |
--------------------------------------------------------------------------------
/panels/iframe/grafana.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # Adds an iframe panel to the Home Assistant frontend for the Grafana add-on.
3 | # This allows me to access Grafana straight from Home Asssitant's UI
4 | #
5 | # https://github.com/hassio-addons/addon-grafana#embedding-into-home-assistant
6 | # https://www.home-assistant.io/components/panel_iframe/
7 | grafana:
8 | title: Grafana
9 | icon: mdi:chart-timeline
10 | url: !secret panel_iframe_grafana_url
11 |
--------------------------------------------------------------------------------
/scripts/cover_close_with_goodnight.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | # rollo_close_gn:
3 | # alias: rollo close at goodnight
4 | # sequence:
5 | # - service: notify.ios_iphoneadonno
6 | # data:
7 | # title: "Closing Binds"
8 | # message: Closing blinds
9 | # data:
10 | # push:
11 | # badge: 0
12 | # category: 'rollo'
13 | # ############cave#
14 | # - service: cover.set_cover_position
15 | # data:
16 | # entity_id: cover.cave
17 | # position: 0
18 | # #############1er#
19 | # - service: cover.set_cover_position
20 | # data:
21 | # entity_id: cover.kueche_links_a
22 | # position: 22
23 | # - service: cover.set_cover_position
24 | # data:
25 | # entity_id: cover.kueche_links_m
26 | # position: 22
27 | # - service: cover.set_cover_position
28 | # data:
29 | # entity_id: cover.kueche_rechts_m
30 | # position: 22
31 | # - service: cover.set_cover_position
32 | # data:
33 | # entity_id: cover.kueche_rechts_a
34 | # position: 22
35 | # - service: cover.set_cover_position
36 | # data:
37 | # entity_id: cover.living
38 | # position: 45
39 | # - service: cover.set_cover_position
40 | # data:
41 | # entity_id: cover.buero
42 | # position: 22
43 | # ############2eme#
44 | # - service: cover.set_cover_position
45 | # data:
46 | # entity_id: cover.chac_enfant_route
47 | # position: 22
48 | # - service: cover.set_cover_position
49 | # data:
50 | # entity_id: cover.chac_enfant_arriere
51 | # position: 22
52 | # - service: cover.set_cover_position
53 | # data:
54 | # entity_id: cover.sdb_parents
55 | # position: 22
56 | # - service: cover.set_cover_position
57 | # data:
58 | # entity_id: cover.chac_parents
59 | # position: 10
60 |
--------------------------------------------------------------------------------
/scripts/cover_first_floor_close.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | close1st:
3 | alias: close1st
4 | sequence:
5 | - service: cover.set_cover_position
6 | data:
7 | entity_id: cover.cuisine
8 | position: 22
9 | - service: cover.set_cover_position
10 | data:
11 | entity_id: cover.buero
12 | posistion: 22
13 | - service: cover.set_cover_position
14 | data:
15 | entity_id: cover.living
16 | position: 45
17 |
--------------------------------------------------------------------------------
/scripts/cover_first_floor_open.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | open1st:
3 | alias: open1st
4 | sequence:
5 | - service: cover.open_cover
6 | entity_id: cover.1er_etage
7 |
--------------------------------------------------------------------------------
/scripts/cover_kitchen_close.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | zuhi:
3 | alias: zuhi
4 | sequence:
5 | - service: cover.set_cover_position
6 | data:
7 | entity_id: cover.cuisine
8 | position: 22
9 |
--------------------------------------------------------------------------------
/scripts/cover_kitchen_open.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | aufhi:
3 | alias: aufhi
4 | sequence:
5 | - service: cover.open_cover
6 | entity_id: cover.cuisine
7 |
8 |
--------------------------------------------------------------------------------
/scripts/erika_slepp.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | erika_sleep:
3 | alias: erika sleep
4 | sequence:
5 | - delay: # supports milliseconds, seconds, minutes, hours, days
6 | seconds: 3
7 | - service: light.turn_on
8 | data:
9 | entity_id:
10 | - light.lit_d
11 | - light.lit_g
12 | - service: cover.set_cover_position
13 | data:
14 | entity_id: cover.chac_enfant_route
15 | position: 22
16 | - service: cover.set_cover_position
17 | data:
18 | entity_id: cover.chac_enfant_arriere
19 | position: 22
20 | - service: cover.set_cover_position
21 | data:
22 | entity_id: cover.sdb_parents
23 | position: 22
24 | - service: cover.set_cover_position
25 | data:
26 | entity_id: cover.chac_parents
27 | position: 10
28 |
--------------------------------------------------------------------------------
/scripts/good_night.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | good_night:
3 | alias: good night
4 | sequence:
5 | - service: light.turn_off
6 | data:
7 | entity_id: group.all_lights
8 | - service: switch.turn_off
9 | data:
10 | entity_id:
11 | - switch.armoire_cuisine
12 | - switch.armoire_tv
13 | - switch.lampe_canape
14 | - switch.armoire_sam
15 | - switch.rdoliving
16 | - switch.prise_sol_escalier
17 | - switch.rdochparents
18 | - switch.terrasse
19 | - delay: # supports milliseconds, seconds, minutes, hours, days
20 | seconds: 3
21 | - service: light.turn_on
22 | data:
23 | entity_id:
24 | - light.lit_d
25 | - light.lit_g
26 | - light.spots_escalier_1_2
27 | - service: automation.trigger
28 | data:
29 | entity_id: automation.fermer_jalousies_au_soir
30 | - service: lock.lock
31 | entity_id: lock.home
32 |
--------------------------------------------------------------------------------
/scripts/system_reboot.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | reboothouse:
3 | alias: neustart
4 | sequence:
5 | - service: homeassistant.restart
6 |
--------------------------------------------------------------------------------
/scripts/tschau.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | tschau:
3 | alias: tschau
4 | sequence:
5 | - service: light.turn_off
6 | data:
7 | entity_id: group.all_lights
8 | - service: switch.turn_off
9 | data:
10 | entity_id:
11 | - switch.armoire_tv
12 | - switch.rdoliving
13 | - switch.rdochparents
14 | - switch.terrasse
15 | - service: cover.set_cover_position
16 | data:
17 | entity_id: cover.cave
18 | position: 0
19 | - delay:
20 | seconds: 3
21 | - service: light.turn_on
22 | entity_id: light.cave_couloir
23 |
--------------------------------------------------------------------------------
/themes/PmxMononight.yaml:
--------------------------------------------------------------------------------
1 | ---
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 |
--------------------------------------------------------------------------------
/themes/darkcyan.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | darkcyan:
3 | # Main colors that can be changed
4 | primary-color: "#00bcd4"
5 | disabled-text-color: "#545454"
6 | divider-color: "rgba(255, 255, 255, 0.12)"
7 | paper-card-background-color: "#4e4e4e"
8 | paper-grey-200: "#191919"
9 | paper-item-icon-color: "#d3d3d3"
10 | paper-listbox-background-color: "#202020"
11 | paper-listbox-color: "#FFFFFF"
12 | primary-background-color: "#303030"
13 | primary-text-color: "#cfcfcf"
14 | secondary-background-color: "#2b2b2b"
15 | secondary-text-color: "#04a7bc"
16 | # Colors based on variables, see above
17 | label-badge-background-color: "var(--secondary-background-color)"
18 | label-badge-text-color: "var(--text-primary-color)"
19 | paper-card-header-color: "#var(--paper-item-icon-color)"
20 | paper-grey-50: "var(--primary-text-color)"
21 | paper-item-icon-active-color: "var(--primary-color)"
22 | paper-item-icon_-_color: "var(--primary-text-color)"
23 | paper-slider-active-color: "var(--primary-color)"
24 | paper-slider-knob-color: "var(--primary-color)"
25 | paper-slider-knob-start-color: "var(--primary-color)"
26 | paper-slider-pin-color: "var(--primary-color)"
27 | paper-slider-secondary-color: "var(--light-primary-color)"
28 | paper-toggle-button-checked-ink-color: "var(--dark-primary-color)"
29 | paper-toggle-button-checked-button-color: "var(--primary-color)"
30 | paper-toggle-button-checked-bar-color: "var(--light-primary-color)"
31 | paper-toggle-button-unchecked-bar-color: "var(--primary-text-color)"
32 |
--------------------------------------------------------------------------------
/themes/green.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | green:
3 | primary-color: "#6CA518"
4 |
--------------------------------------------------------------------------------
/themes/solarized.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | solarized:
3 | primary-color: "#2aa198"
4 | disabled-text-color: "#859900"
5 | divider-color: "#586e75" # "rgba(255, 255, 255, 0.12)"
6 | paper-card-background-color: "#002b36"
7 | paper-grey-200: "#586e75"
8 | paper-item-icon-color: "#b58900"
9 | paper-listbox-background-color: "#002b36"
10 | paper-listbox-color: "#b58900"
11 | primary-background-color: "#073642"
12 | primary-text-color: "#839496"
13 | secondary-background-color: "#073642"
14 | secondary-text-color: "#859900"
15 | text-primary-color: "#839496"
16 | label-badge-background-color: "var(--secondary-background-color)"
17 | label-badge-text-color: "var(--text-primary-color)"
18 | paper-card-header-color: "#cb4b16"
19 | paper-grey-50: "#b58900"
20 | paper-item-icon-active-color: "#dc322f"
21 | paper-item-icon_-_color: "#FF00FF" # no clue
22 | paper-slider-active-color: "#dc322f"
23 | paper-slider-knob-color: "#dc322f"
24 | paper-slider-knob-start-color: "#b58900"
25 | paper-slider-pin-color: "#FF00FF" # no clue
26 | paper-slider-secondary-color: "#dc322f"
27 | paper-toggle-button-checked-ink-color: "#dc322f"
28 | paper-toggle-button-checked-button-color: "#dc322f"
29 | paper-toggle-button-checked-bar-color: "#cb4b16"
30 | paper-toggle-button-unchecked-bar-color: "#b58900"
31 | table-row-background-color: "#002b36"
32 | table-row-alternative-background-color: "#073642"
33 | google-red: "#dc322f"
34 | google-green: "#859900"
35 | google-blue: "#268bd2"
36 | google-yellow: "#b58900"
37 | accent-color: "#cb4b16"
38 | paper-green: "#859900"
39 | paper-blue: "#268bd2"
40 | paper-orange: "#cb4b16"
41 |
--------------------------------------------------------------------------------
/themes/wood.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | wood:
3 | primary-color: "#6B3A1F"
4 | disabled-text-color: "#A58456"
5 | divider-color: "#EDE4D8" # "rgba(255, 255, 255, 0.15)"
6 | dark-primary-color: "#592A13"
7 |
8 | primary-background-color: "#C4AD92"
9 | primary-text-color: "#FFFFFF"
10 | secondary-background-color: "#675335"
11 | secondary-text-color: "#6B3A1F"
12 | text-primary-color: "#693A23"
13 |
14 | label-badge-background-color: "var(--primary-background-color)"
15 | label-badge-text-color: "var(--text-primary-color)"
16 |
17 | paper-card-background-color: "#A58456"
18 | paper-grey-50: "#6B3A1F"
19 | paper-grey-200: "#DDD4C8"
20 | paper-item-icon-color: "#6B3A1F"
21 | paper-listbox-background-color: "#A58456"
22 | paper-listbox-color: "#6B3A1F"
23 |
24 | paper-card-header-color: "#EDE4D8"
25 |
26 | paper-item-icon-active-color: "#F7C02A"
27 | paper-item-icon_-_color: "#FF00FF"
28 |
29 | paper-slider-active-color: "#A56521"
30 | paper-slider-knob-color: "#A56521"
31 | paper-slider-knob-start-color: "#6B3A1F"
32 | paper-slider-pin-color: "#FF00FF"
33 | paper-slider-secondary-color: "#A06020"
34 |
35 | paper-toggle-button-checked-ink-color: "#A56521"
36 | paper-toggle-button-checked-button-color: "#A56521"
37 | paper-toggle-button-checked-bar-color: "#EDE4D8"
38 | paper-toggle-button-unchecked-bar-color: "#EDE4D8"
39 |
40 | table-row-background-color: "#A58456"
41 | table-row-alternative-background-color: "#C67A2E"
42 |
43 | google-red: "#A56521"
44 | google-green: "#A58456"
45 | google-blue: "#268BD2"
46 | google-yellow: "#6B3A1F"
47 | accent-color: "#EDE4D8"
48 | paper-green: "#A58456"
49 | paper-blue: "#268BD2"
50 | paper-orange: "#EDE4D8"
51 |
--------------------------------------------------------------------------------
/ui-lovelace.yaml:
--------------------------------------------------------------------------------
1 | ---
2 | title: Home
3 | background: center / cover no-repeat url("/local/background.png") fixed
4 | excluded_entities: null
5 | resources: !include_dir_list lovelace/resources
6 | cch:
7 | options: clock
8 |
9 | views:
10 | - !include lovelace/views/floor_plans.yaml
11 | - !include lovelace/views/floor_0.yaml
12 | - !include lovelace/views/floor_1.yaml
13 | - !include lovelace/views/floor_2.yaml
14 | - !include lovelace/views/floor_3.yaml
15 | - !include lovelace/views/at_and_sc.yaml
16 | - !include lovelace/views/synology_status.yaml
17 | - !include lovelace/views/network_devices.yaml
18 | - !include lovelace/views/housecontrol.yaml
19 | - !include lovelace/views/power_usage.yaml
20 | - !include lovelace/views/rgbw_leds.yaml
21 | - !include lovelace/views/cameras.yaml
22 |
--------------------------------------------------------------------------------
/www/Capture0.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Capture0.PNG
--------------------------------------------------------------------------------
/www/Capture1.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Capture1.PNG
--------------------------------------------------------------------------------
/www/Capture2.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Capture2.PNG
--------------------------------------------------------------------------------
/www/Floor0H.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor0H.PNG
--------------------------------------------------------------------------------
/www/Floor0V.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor0V.PNG
--------------------------------------------------------------------------------
/www/Floor0VN.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor0VN.PNG
--------------------------------------------------------------------------------
/www/Floor1H.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor1H.PNG
--------------------------------------------------------------------------------
/www/Floor1V.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor1V.PNG
--------------------------------------------------------------------------------
/www/Floor1VN.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor1VN.PNG
--------------------------------------------------------------------------------
/www/Floor2H.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor2H.PNG
--------------------------------------------------------------------------------
/www/Floor2V.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor2V.PNG
--------------------------------------------------------------------------------
/www/Floor2VN.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Floor2VN.PNG
--------------------------------------------------------------------------------
/www/Garage_off.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Garage_off.PNG
--------------------------------------------------------------------------------
/www/Garage_on.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/Garage_on.PNG
--------------------------------------------------------------------------------
/www/IMG_0786.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/IMG_0786.PNG
--------------------------------------------------------------------------------
/www/IMG_0788.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/IMG_0788.PNG
--------------------------------------------------------------------------------
/www/IMG_0789.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/IMG_0789.PNG
--------------------------------------------------------------------------------
/www/arrow-down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/arrow-down.png
--------------------------------------------------------------------------------
/www/arrow-up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/arrow-up.png
--------------------------------------------------------------------------------
/www/back.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/back.png
--------------------------------------------------------------------------------
/www/background.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/background.png
--------------------------------------------------------------------------------
/www/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/circle.png
--------------------------------------------------------------------------------
/www/entree_off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/entree_off.png
--------------------------------------------------------------------------------
/www/entree_on.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/entree_on.png
--------------------------------------------------------------------------------
/www/exclamation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/exclamation.png
--------------------------------------------------------------------------------
/www/ilot_allume.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/ilot_allume.PNG
--------------------------------------------------------------------------------
/www/ilot_aus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/ilot_aus.png
--------------------------------------------------------------------------------
/www/off.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/off.png
--------------------------------------------------------------------------------
/www/plan-coordinates.js:
--------------------------------------------------------------------------------
1 | class PlanCoordinates extends HTMLElement {
2 |
3 | constructor() {
4 | super();
5 | this.attachShadow({ mode: 'open' });
6 | }
7 |
8 | setConfig(config) {
9 | const root = this.shadowRoot;
10 | if (root.lastChild) root.removeChild(root.lastChild);
11 | this.style.display = 'none';
12 | const card = document.createElement('div');
13 | card.id = "plan-coordinates"
14 | const content = document.createElement('div');
15 | const style = document.createElement('style');
16 | style.textContent = `
17 | #plan-coordinates {
18 | position: absolute;
19 | right: 0px;
20 | top: 16px;
21 | z-index: 1000;
22 | }
23 | #content {
24 | background-color: var(--paper-card-background-color);
25 | border: 1px solid var(--label-badge-blue);
26 | padding: 16px;
27 | }
28 | `;
29 | content.id = "content";
30 | card.appendChild(content);
31 | root.appendChild(style);
32 | root.appendChild(card);
33 | document.addEventListener("mousemove", el => {
34 | let calc_top = 16 - (document.body.querySelector('home-assistant').getBoundingClientRect().top);
35 | card.style.top = `${calc_top}px`;
36 | if (el.path[0] && el.path[0].tagName == 'IMG') {
37 | this.style.display = 'block';
38 | const percentX = Math.ceil((el.clientX - el.path[0].x) * 100 / el.path[0].width);
39 | const percentY = Math.ceil((el.clientY - el.path[0].y) * 100 / el.path[0].height);
40 | content.innerHTML = `left: ${percentX}% top: ${percentY}%`;
41 | }
42 | });
43 | document.addEventListener('scroll', el => {
44 | let calc_top = 16 - (document.body.querySelector('home-assistant').getBoundingClientRect().top);
45 | card.style.top = `${calc_top}px`;
46 | }, true);
47 | }
48 | set hass(hass) {
49 | }
50 |
51 | getCardSize() {
52 | return 1;
53 | }
54 | }
55 | customElements.define('plan-coordinates', PlanCoordinates);
--------------------------------------------------------------------------------
/www/treppe_bis.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/adonno/Home-AssistantConfig/8038c0143c6a990e409951202bb1bda149fcbaf7/www/treppe_bis.png
--------------------------------------------------------------------------------