add home assistant configuration guidelines
This commit is contained in:
167
hass_trackers/fridge.txt
Normal file
167
hass_trackers/fridge.txt
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
Counters:
|
||||
|
||||
```yaml
|
||||
days_since_fridge_filter_replaced:
|
||||
name: days_since_fridge_filter_replaced
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:fridge
|
||||
last_non_zero_days_since_fridge_filter_replaced:
|
||||
name: last_non_zero_days_since_fridge_filter_replaced
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:fridge
|
||||
```
|
||||
|
||||
Input Buttons:
|
||||
|
||||
```yaml
|
||||
reset_days_since_fridge_filter_replaced:
|
||||
name: reset_days_since_fridge_filter_replaced
|
||||
icon: mdi:fridge
|
||||
undo_reset_days_since_fridge_filter_replaced:
|
||||
name: undo_reset_days_since_fridge_filter_replaced
|
||||
icon: mdi:undo
|
||||
```
|
||||
|
||||
Automations:
|
||||
|
||||
```yaml
|
||||
- alias: 'Counter: Increment days_since_fridge_filter_replaced'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 00:00:00
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_fridge_filter_replaced
|
||||
mode: single
|
||||
- alias: 'Counter: Reset days_since_fridge_filter_replaced'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.reset_days_since_fridge_filter_replaced
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_fridge_filter_replaced
|
||||
mode: single
|
||||
- alias: 'Counter: Update last_non_zero_days_since_fridge_filter_replaced'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- counter.days_since_fridge_filter_replaced
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_fridge_filter_replaced
|
||||
above: 0
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_fridge_filter_replaced
|
||||
mode: single
|
||||
- alias: 'Counter: Reset last_non_zero_days_since_fridge_filter_replaced'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id:
|
||||
- counter.days_since_fridge_filter_replaced
|
||||
above: 0
|
||||
below: 2
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_fridge_filter_replaced
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_fridge_filter_replaced
|
||||
mode: single
|
||||
- alias: 'Counter: Undo Reset days_since_fridge_filter_replaced'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.undo_reset_days_since_fridge_filter_replaced
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_fridge_filter_replaced
|
||||
below: 1
|
||||
action:
|
||||
- service: counter.set_value
|
||||
metadata: {}
|
||||
data:
|
||||
value: "{{ int(states('counter.last_non_zero_days_since_fridge_filter_replaced'))}}"
|
||||
target:
|
||||
entity_id: counter.days_since_fridge_filter_replaced
|
||||
- service: counter.decrement
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_fridge_filter_replaced
|
||||
mode: single
|
||||
```
|
||||
|
||||
Dashboard:
|
||||
|
||||
```yaml
|
||||
title: Days Since Fridge Filter Replaced
|
||||
type: grid
|
||||
square: false
|
||||
columns: 1
|
||||
cards:
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- name: Reset
|
||||
show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.reset_days_since_fridge_filter_replaced
|
||||
show_state: true
|
||||
- name: Undo
|
||||
show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.undo_reset_days_since_fridge_filter_replaced
|
||||
show_state: true
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- type: entity
|
||||
entity: counter.days_since_fridge_filter_replaced
|
||||
state_color: false
|
||||
name: Days Since
|
||||
- type: entity
|
||||
entity: counter.last_non_zero_days_since_fridge_filter_replaced
|
||||
state_color: false
|
||||
name: Last Value
|
||||
- type: history-graph
|
||||
hours_to_show: 72
|
||||
entities:
|
||||
- counter.days_since_fridge_filter_replaced
|
||||
```
|
||||
167
hass_trackers/litterbox.txt
Normal file
167
hass_trackers/litterbox.txt
Normal file
@@ -0,0 +1,167 @@
|
||||
|
||||
Counters:
|
||||
|
||||
```yaml
|
||||
days_since_litter_box_changed:
|
||||
name: days_since_litter_box_changed
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:cat
|
||||
last_non_zero_days_since_litter_box_changed:
|
||||
name: last_non_zero_days_since_litter_box_changed
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:undo
|
||||
```
|
||||
|
||||
Input Buttons:
|
||||
|
||||
```yaml
|
||||
reset_days_since_litter_box_changed:
|
||||
name: reset_days_since_litter_box_changed
|
||||
icon: mdi:cat
|
||||
undo_reset_days_since_litter_box_changed:
|
||||
name: undo_reset_days_since_litter_box_changed
|
||||
icon: mdi:undo
|
||||
```
|
||||
|
||||
Automations:
|
||||
|
||||
```yaml
|
||||
- alias: 'Counter: Increment days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 00:00:00
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Reset days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.reset_days_since_litter_box_changed
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Update last_non_zero_days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- counter.days_since_litter_box_changed
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
above: 0
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Reset last_non_zero_days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id:
|
||||
- counter.days_since_litter_box_changed
|
||||
above: 0
|
||||
below: 2
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Undo Reset days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.undo_reset_days_since_litter_box_changed
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
below: 1
|
||||
action:
|
||||
- service: counter.set_value
|
||||
metadata: {}
|
||||
data:
|
||||
value: "{{ int(states('counter.last_non_zero_days_since_litter_box_changed'))}}"
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
- service: counter.decrement
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
```
|
||||
|
||||
Dashboard:
|
||||
|
||||
```yaml
|
||||
title: REPLACE ME
|
||||
type: grid
|
||||
square: false
|
||||
columns: 1
|
||||
cards:
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.reset_days_since_litter_box_changed
|
||||
show_state: true
|
||||
name: Reset
|
||||
- show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.undo_reset_days_since_litter_box_changed
|
||||
show_state: true
|
||||
name: Undo
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- type: entity
|
||||
entity: counter.days_since_litter_box_changed
|
||||
state_color: false
|
||||
name: Days Since
|
||||
- type: entity
|
||||
entity: counter.last_non_zero_days_since_litter_box_changed
|
||||
state_color: false
|
||||
name: Last Value
|
||||
- type: history-graph
|
||||
hours_to_show: 72
|
||||
entities:
|
||||
- counter.days_since_litter_box_changed
|
||||
```
|
||||
226
home-assistant.md
Normal file
226
home-assistant.md
Normal file
@@ -0,0 +1,226 @@
|
||||
# Home Assistant
|
||||
|
||||
- [Home Assistant](#home-assistant)
|
||||
- [Setup and Configuration](#setup-and-configuration)
|
||||
- [Cert](#cert)
|
||||
- [Door Lock](#door-lock)
|
||||
- [Philips Hue Lights](#philips-hue-lights)
|
||||
- [Shelly](#shelly)
|
||||
- [Trackers](#trackers)
|
||||
|
||||
## Setup and Configuration
|
||||
|
||||
### Cert
|
||||
|
||||
```bash
|
||||
openssl req -sha256 -addext "subjectAltName = DNS:homeassistant.reeselink.com" -newkey rsa:4096 -nodes -keyout secrets/ha-privkey.pem -x509 -days 3650 -out secrets/ha-fullchain.pem
|
||||
scp secrets/ha-* root@homeassistant.reeselink.com:~/ssl/
|
||||
```
|
||||
|
||||
configuration.yaml
|
||||
|
||||
```yaml
|
||||
http:
|
||||
ssl_certificate: "/ssl/ha-fullchain.pem"
|
||||
ssl_key: "/ssl/ha-privkey.pem"
|
||||
use_x_forwarded_for: true
|
||||
trusted_proxies:
|
||||
- 10.1.0.0/16
|
||||
```
|
||||
|
||||
### Door Lock
|
||||
|
||||
1. Install Z-wave
|
||||
2. Install z-wave JS module
|
||||
3. Add device -> How do you want to add your device -> Legacy Secure
|
||||
4. Enter programming pin on lock -> 0
|
||||
|
||||
### Philips Hue Lights
|
||||
|
||||
1. I configure all philips hue lights through zigbee directly connected to HA
|
||||
|
||||
hue lights support color_temp in mireds, here are some mired-kelvin conversions:
|
||||
|
||||
| Kelvin | Mired |
|
||||
| ------ | ----- |
|
||||
| 6000 | 167 |
|
||||
| 4000 | 250 |
|
||||
| 2600 | 385 |
|
||||
|
||||
### Shelly
|
||||
|
||||
1. Outbound Websocket `wss://homeassistant.reeseapps.com/api/shelly/ws`
|
||||
|
||||
### Trackers
|
||||
|
||||
Trackers allow for a simple "days since x" Setup with a reset and undo button.
|
||||
|
||||
Copy each of these into a text editor and find/replace "days_since_litter_box_changed"
|
||||
with the name of the entity you want to track
|
||||
|
||||
Counters:
|
||||
|
||||
```yaml
|
||||
days_since_litter_box_changed:
|
||||
name: days_since_litter_box_changed
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:cat
|
||||
last_non_zero_days_since_litter_box_changed:
|
||||
name: last_non_zero_days_since_litter_box_changed
|
||||
restore: true
|
||||
initial: 0
|
||||
step: 1
|
||||
icon: mdi:undo
|
||||
```
|
||||
|
||||
Input Buttons:
|
||||
|
||||
```yaml
|
||||
reset_days_since_litter_box_changed:
|
||||
name: reset_days_since_litter_box_changed
|
||||
icon: mdi:cat
|
||||
undo_reset_days_since_litter_box_changed:
|
||||
name: undo_reset_days_since_litter_box_changed
|
||||
icon: mdi:undo
|
||||
```
|
||||
|
||||
Automations:
|
||||
|
||||
```yaml
|
||||
- alias: 'Counter: Increment days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: time
|
||||
at: 00:00:00
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Reset days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.reset_days_since_litter_box_changed
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Update last_non_zero_days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- counter.days_since_litter_box_changed
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
above: 0
|
||||
action:
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Reset last_non_zero_days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: numeric_state
|
||||
entity_id:
|
||||
- counter.days_since_litter_box_changed
|
||||
above: 0
|
||||
below: 2
|
||||
condition: []
|
||||
action:
|
||||
- service: counter.reset
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
- service: counter.increment
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
- alias: 'Counter: Undo Reset days_since_litter_box_changed'
|
||||
description: ''
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id:
|
||||
- input_button.undo_reset_days_since_litter_box_changed
|
||||
condition:
|
||||
- condition: numeric_state
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
below: 1
|
||||
action:
|
||||
- service: counter.set_value
|
||||
metadata: {}
|
||||
data:
|
||||
value: "{{ int(states('counter.last_non_zero_days_since_litter_box_changed'))}}"
|
||||
target:
|
||||
entity_id: counter.days_since_litter_box_changed
|
||||
- service: counter.decrement
|
||||
metadata: {}
|
||||
data: {}
|
||||
target:
|
||||
entity_id: counter.last_non_zero_days_since_litter_box_changed
|
||||
mode: single
|
||||
```
|
||||
|
||||
Dashboard:
|
||||
|
||||
```yaml
|
||||
title: REPLACE ME
|
||||
type: grid
|
||||
square: false
|
||||
columns: 1
|
||||
cards:
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.reset_days_since_litter_box_changed
|
||||
show_state: true
|
||||
name: Reset
|
||||
- show_name: true
|
||||
show_icon: true
|
||||
type: button
|
||||
tap_action:
|
||||
action: toggle
|
||||
entity: input_button.undo_reset_days_since_litter_box_changed
|
||||
show_state: true
|
||||
name: Undo
|
||||
- type: grid
|
||||
square: false
|
||||
columns: 2
|
||||
cards:
|
||||
- type: entity
|
||||
entity: counter.days_since_litter_box_changed
|
||||
state_color: false
|
||||
name: Days Since
|
||||
- type: entity
|
||||
entity: counter.last_non_zero_days_since_litter_box_changed
|
||||
state_color: false
|
||||
name: Last Value
|
||||
- type: history-graph
|
||||
hours_to_show: 72
|
||||
entities:
|
||||
- counter.days_since_litter_box_changed
|
||||
```
|
||||
Reference in New Issue
Block a user