Doorbell: tilføj sonos snapshot/restore for at undgå invalid auth-advarsler fra Sonos
This commit is contained in:
@@ -434,6 +434,8 @@ sections:
|
|||||||
name: Mål HB2 – Kartofler
|
name: Mål HB2 – Kartofler
|
||||||
- entity: input_number.vanding_maal_fugtighed_hojbed_3
|
- entity: input_number.vanding_maal_fugtighed_hojbed_3
|
||||||
name: Mål HB3 – Rabarber
|
name: Mål HB3 – Rabarber
|
||||||
|
- entity: input_number.vanding_maal_fugtighed_drivhus
|
||||||
|
name: Mål Drivhus
|
||||||
|
|
||||||
# �🌿 Zonekontrol
|
# �🌿 Zonekontrol
|
||||||
- type: grid
|
- type: grid
|
||||||
@@ -484,10 +486,19 @@ sections:
|
|||||||
action: call-service
|
action: call-service
|
||||||
service: script.vanding_toggle_hojbed_3
|
service: script.vanding_toggle_hojbed_3
|
||||||
|
|
||||||
- type: tile
|
- type: vertical-stack
|
||||||
entity: switch.hojbed_3
|
cards:
|
||||||
name: Drivhus
|
- type: entities
|
||||||
icon: mdi:greenhouse
|
entities:
|
||||||
|
- entity: input_number.vanding_varighed_drivhus
|
||||||
|
name: Varighed Drivhus
|
||||||
|
- type: tile
|
||||||
|
entity: switch.hojbed_3
|
||||||
|
name: Drivhus
|
||||||
|
icon: mdi:greenhouse
|
||||||
|
tap_action:
|
||||||
|
action: call-service
|
||||||
|
service: script.vanding_toggle_drivhus
|
||||||
|
|
||||||
# 🔋 Sensorbatterier
|
# 🔋 Sensorbatterier
|
||||||
- type: grid
|
- type: grid
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ panel: true
|
|||||||
|
|
||||||
cards:
|
cards:
|
||||||
- type: iframe
|
- type: iframe
|
||||||
url: /local/snapshots/indkorsel_loader.html?v=20260705130716
|
url: /local/snapshots/indkorsel_loader.html?v=20260729191638
|
||||||
aspect_ratio: 100%
|
aspect_ratio: 100%
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
# Eget projektnavn så denne stak ikke ser de andre containere som "orphans"
|
||||||
|
name: esphome
|
||||||
|
|
||||||
|
services:
|
||||||
|
esphome:
|
||||||
|
container_name: esphome
|
||||||
|
image: ghcr.io/esphome/esphome:latest
|
||||||
|
# host-netværk giver adgang til LAN (OTA til 10.0.0.190) + mDNS-discovery.
|
||||||
|
# Dashboard lytter på http://10.0.0.142:6052
|
||||||
|
network_mode: host
|
||||||
|
restart: always
|
||||||
|
environment:
|
||||||
|
- TZ=Europe/Copenhagen
|
||||||
|
# Sæt en adgangskode på dashboardet (valgfrit – udkommentér for at aktivere)
|
||||||
|
# - USERNAME=claus
|
||||||
|
# - PASSWORD=changeme
|
||||||
|
volumes:
|
||||||
|
- /volume1/docker/esphome/config:/config
|
||||||
|
- /etc/localtime:/etc/localtime:ro
|
||||||
@@ -59,3 +59,8 @@
|
|||||||
5. Evt. lille deploy-script der kører `op inject` automatisk
|
5. Evt. lille deploy-script der kører `op inject` automatisk
|
||||||
|
|
||||||
**Reel gevinst:** Fjerner hemmeligheder fra git, ikke fra disken (HA kræver plaintext på disk uanset).
|
**Reel gevinst:** Fjerner hemmeligheder fra git, ikke fra disken (HA kræver plaintext på disk uanset).
|
||||||
|
|
||||||
|
|
||||||
|
## Idéer til udforskning
|
||||||
|
|
||||||
|
- [ ] **Tjek `hass-scene_presets`** — HA-integration/tool til at generere lysscener (præsets) — https://github.com/Hypfer/hass-scene_presets
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
entity_id:
|
entity_id:
|
||||||
- switch.hojbed_1
|
- switch.hojbed_1
|
||||||
- switch.hojbed_2
|
- switch.hojbed_2
|
||||||
|
- switch.hojbed_3
|
||||||
- switch.drivhus_drypvanding
|
- switch.drivhus_drypvanding
|
||||||
- service: switch.turn_off
|
- service: switch.turn_off
|
||||||
data:
|
data:
|
||||||
@@ -43,6 +44,7 @@
|
|||||||
entity_id:
|
entity_id:
|
||||||
- switch.hojbed_1
|
- switch.hojbed_1
|
||||||
- switch.hojbed_2
|
- switch.hojbed_2
|
||||||
|
- switch.hojbed_3
|
||||||
- switch.drivhus_drypvanding
|
- switch.drivhus_drypvanding
|
||||||
- service: switch.turn_off
|
- service: switch.turn_off
|
||||||
data:
|
data:
|
||||||
|
|||||||
@@ -26,6 +26,15 @@ vanding_varighed_hojbed_3:
|
|||||||
initial: 15
|
initial: 15
|
||||||
icon: mdi:timer
|
icon: mdi:timer
|
||||||
|
|
||||||
|
vanding_varighed_drivhus:
|
||||||
|
name: Varighed – Drivhus
|
||||||
|
min: 0
|
||||||
|
max: 60
|
||||||
|
step: 5
|
||||||
|
unit_of_measurement: min
|
||||||
|
initial: 15
|
||||||
|
icon: mdi:timer
|
||||||
|
|
||||||
vanding_varighed_smart:
|
vanding_varighed_smart:
|
||||||
name: Varighed pr. cyklus – smart vanding
|
name: Varighed pr. cyklus – smart vanding
|
||||||
min: 5
|
min: 5
|
||||||
@@ -71,3 +80,12 @@ vanding_maal_fugtighed_hojbed_3:
|
|||||||
unit_of_measurement: "%"
|
unit_of_measurement: "%"
|
||||||
initial: 40
|
initial: 40
|
||||||
icon: mdi:water-percent
|
icon: mdi:water-percent
|
||||||
|
|
||||||
|
vanding_maal_fugtighed_drivhus:
|
||||||
|
name: Mål fugtighed – Drivhus
|
||||||
|
min: 0
|
||||||
|
max: 100
|
||||||
|
step: 5
|
||||||
|
unit_of_measurement: "%"
|
||||||
|
initial: 40
|
||||||
|
icon: mdi:water-percent
|
||||||
|
|||||||
@@ -13,6 +13,14 @@ doorbell:
|
|||||||
denon_state: "{{ states('media_player.denon_avr_x2300w') }}"
|
denon_state: "{{ states('media_player.denon_avr_x2300w') }}"
|
||||||
denon_source: "{{ state_attr('media_player.denon_avr_x2300w', 'source') }}"
|
denon_source: "{{ state_attr('media_player.denon_avr_x2300w', 'source') }}"
|
||||||
denon_volume: "{{ state_attr('media_player.denon_avr_x2300w', 'volume_level') }}"
|
denon_volume: "{{ state_attr('media_player.denon_avr_x2300w', 'volume_level') }}"
|
||||||
|
# Gem Sonos-tilstanden, saa doorbell-sporet ikke bliver liggende i koeen
|
||||||
|
# (undgaar "invalid authentication"-advarsler naar den signerede URL udloeber)
|
||||||
|
- service: sonos.snapshot
|
||||||
|
data:
|
||||||
|
entity_id:
|
||||||
|
- media_player.andreas
|
||||||
|
- media_player.daniel
|
||||||
|
with_group: true
|
||||||
- parallel:
|
- parallel:
|
||||||
- sequence:
|
- sequence:
|
||||||
- variables:
|
- variables:
|
||||||
@@ -108,6 +116,14 @@ doorbell:
|
|||||||
volume_level: "{{ volumennat }}"
|
volume_level: "{{ volumennat }}"
|
||||||
target:
|
target:
|
||||||
entity_id: media_player.andreas
|
entity_id: media_player.andreas
|
||||||
|
# Vent til doorbell-lyden er spillet faerdig, gendan derefter Sonos-koeen
|
||||||
|
- delay: "00:00:06"
|
||||||
|
- service: sonos.restore
|
||||||
|
data:
|
||||||
|
entity_id:
|
||||||
|
- media_player.andreas
|
||||||
|
- media_player.daniel
|
||||||
|
with_group: true
|
||||||
# Gendan Denon-receiveren til praecis den kilde og volumen den stod paa foer ringningen
|
# Gendan Denon-receiveren til praecis den kilde og volumen den stod paa foer ringningen
|
||||||
- choose:
|
- choose:
|
||||||
- conditions:
|
- conditions:
|
||||||
|
|||||||
@@ -10,6 +10,12 @@ spil_paa_lille_bad:
|
|||||||
sequence:
|
sequence:
|
||||||
- variables:
|
- variables:
|
||||||
gammel_volumen: "{{ state_attr('media_player.lille_badevaerelse', 'volume_level') | default(0.3) }}"
|
gammel_volumen: "{{ state_attr('media_player.lille_badevaerelse', 'volume_level') | default(0.3) }}"
|
||||||
|
# Gem Sonos-tilstanden, saa lydfilen ikke bliver liggende i koeen
|
||||||
|
# (undgaar "invalid authentication"-advarsler naar den signerede URL udloeber)
|
||||||
|
- service: sonos.snapshot
|
||||||
|
data:
|
||||||
|
entity_id: media_player.lille_badevaerelse
|
||||||
|
with_group: true
|
||||||
- service: media_player.volume_set
|
- service: media_player.volume_set
|
||||||
data:
|
data:
|
||||||
volume_level: "{{ volumen }}"
|
volume_level: "{{ volumen }}"
|
||||||
@@ -29,3 +35,8 @@ spil_paa_lille_bad:
|
|||||||
volume_level: "{{ gammel_volumen }}"
|
volume_level: "{{ gammel_volumen }}"
|
||||||
target:
|
target:
|
||||||
entity_id: media_player.lille_badevaerelse
|
entity_id: media_player.lille_badevaerelse
|
||||||
|
# Gendan Sonos-koeen, saa den lydfil ryddes ud af koeen
|
||||||
|
- service: sonos.restore
|
||||||
|
data:
|
||||||
|
entity_id: media_player.lille_badevaerelse
|
||||||
|
with_group: true
|
||||||
|
|||||||
@@ -56,6 +56,25 @@ vanding_toggle_hojbed_3:
|
|||||||
entity_id: switch.drivhus_drypvanding
|
entity_id: switch.drivhus_drypvanding
|
||||||
duration: "{{ states('input_number.vanding_varighed_hojbed_3') | int(15) }}"
|
duration: "{{ states('input_number.vanding_varighed_hojbed_3') | int(15) }}"
|
||||||
|
|
||||||
|
vanding_toggle_drivhus:
|
||||||
|
alias: Toggle Drivhus
|
||||||
|
mode: single
|
||||||
|
sequence:
|
||||||
|
- choose:
|
||||||
|
- conditions:
|
||||||
|
- condition: state
|
||||||
|
entity_id: switch.hojbed_3
|
||||||
|
state: "on"
|
||||||
|
sequence:
|
||||||
|
- service: switch.turn_off
|
||||||
|
target:
|
||||||
|
entity_id: switch.hojbed_3
|
||||||
|
default:
|
||||||
|
- service: rainbird.start_irrigation
|
||||||
|
data:
|
||||||
|
entity_id: switch.hojbed_3
|
||||||
|
duration: "{{ states('input_number.vanding_varighed_drivhus') | int(15) }}"
|
||||||
|
|
||||||
vanding_hojbed_skiftevis:
|
vanding_hojbed_skiftevis:
|
||||||
alias: Smart vanding – højbed 1, 2 og 3 efter fugtighed
|
alias: Smart vanding – højbed 1, 2 og 3 efter fugtighed
|
||||||
mode: single
|
mode: single
|
||||||
@@ -85,18 +104,19 @@ vanding_hojbed_skiftevis:
|
|||||||
- condition: template
|
- condition: template
|
||||||
value_template: >
|
value_template: >
|
||||||
{{
|
{{
|
||||||
states('sensor.annes_havesensor_soil_moisture_1') | float(100) < 40 or
|
states('sensor.annes_havesensor_soil_moisture_1') | float(100) < states('input_number.vanding_maal_fugtighed_hojbed_1') | float(40) or
|
||||||
states('sensor.annes_havesensor_soil_moisture_2') | float(100) < 40 or
|
states('sensor.annes_havesensor_soil_moisture_2') | float(100) < states('input_number.vanding_maal_fugtighed_hojbed_2') | float(40) or
|
||||||
states('sensor.annes_havesensor_soil_moisture_3') | float(100) < 40
|
states('sensor.annes_havesensor_soil_moisture_3') | float(100) < states('input_number.vanding_maal_fugtighed_hojbed_3') | float(40)
|
||||||
}}
|
}}
|
||||||
- condition: template
|
- condition: template
|
||||||
value_template: "{{ repeat.index <= 8 }}"
|
value_template: "{{ repeat.index <= 8 }}"
|
||||||
sequence:
|
sequence:
|
||||||
# HB1 – Ærter (switch.hojbed_2) – kun hvis tørt
|
# HB1 – Ærter (switch.hojbed_2) – kun hvis tørt
|
||||||
- if:
|
- if:
|
||||||
- condition: numeric_state
|
- condition: template
|
||||||
entity_id: sensor.annes_havesensor_soil_moisture_1
|
value_template: >
|
||||||
below: 40
|
{{ states('sensor.annes_havesensor_soil_moisture_1') | float(100)
|
||||||
|
< states('input_number.vanding_maal_fugtighed_hojbed_1') | float(40) }}
|
||||||
then:
|
then:
|
||||||
- service: rainbird.start_irrigation
|
- service: rainbird.start_irrigation
|
||||||
data:
|
data:
|
||||||
@@ -109,9 +129,10 @@ vanding_hojbed_skiftevis:
|
|||||||
|
|
||||||
# HB2 – Kartofler (switch.hojbed_1) – kun hvis tørt
|
# HB2 – Kartofler (switch.hojbed_1) – kun hvis tørt
|
||||||
- if:
|
- if:
|
||||||
- condition: numeric_state
|
- condition: template
|
||||||
entity_id: sensor.annes_havesensor_soil_moisture_2
|
value_template: >
|
||||||
below: 40
|
{{ states('sensor.annes_havesensor_soil_moisture_2') | float(100)
|
||||||
|
< states('input_number.vanding_maal_fugtighed_hojbed_2') | float(40) }}
|
||||||
then:
|
then:
|
||||||
- service: rainbird.start_irrigation
|
- service: rainbird.start_irrigation
|
||||||
data:
|
data:
|
||||||
@@ -124,9 +145,10 @@ vanding_hojbed_skiftevis:
|
|||||||
|
|
||||||
# HB3 – Rabarber (switch.drivhus_drypvanding) – kun hvis tørt
|
# HB3 – Rabarber (switch.drivhus_drypvanding) – kun hvis tørt
|
||||||
- if:
|
- if:
|
||||||
- condition: numeric_state
|
- condition: template
|
||||||
entity_id: sensor.annes_havesensor_soil_moisture_3
|
value_template: >
|
||||||
below: 40
|
{{ states('sensor.annes_havesensor_soil_moisture_3') | float(100)
|
||||||
|
< states('input_number.vanding_maal_fugtighed_hojbed_3') | float(40) }}
|
||||||
then:
|
then:
|
||||||
- service: rainbird.start_irrigation
|
- service: rainbird.start_irrigation
|
||||||
data:
|
data:
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
{"count": 7, "items": [{"date": "2026-07-11", "recipe": {"name": "Dampede Bao med nakkekotelet", "slug": "dampede-bao-med-nakkekotelet"}}, {"date": "2026-07-10", "recipe": {"name": "Muslinger i hvidvin og fl\u00f8desauce \u2013 Moules Frites", "slug": "muslinger-i-hvidvin-og-flodesauce-moules-frites"}}, {"date": "2026-07-09", "recipe": {"name": "Clubsandwich med m\u00f8rt kyllingek\u00f8d og bacon", "slug": "clubsandwich-med-mort-kyllingekod-og-bacon"}}, {"date": "2026-07-08", "recipe": {"name": "One Pot Pasta med champignon og bacon", "slug": "one-pot-pasta-med-champignon-og-bacon"}}, {"date": "2026-07-07", "recipe": {"name": "Kylling i fad med pikant og gr\u00f8ntsager", "slug": "kylling-i-fad-med-pikant-og-grontsager"}}, {"date": "2026-07-06", "recipe": {"name": "One Pot Pasta med champignon og bacon", "slug": "one-pot-pasta-med-champignon-og-bacon"}}, {"date": "2026-07-05", "recipe": {"name": "Kylling i fad med pikant og gr\u00f8ntsager", "slug": "kylling-i-fad-med-pikant-og-grontsager"}}]}
|
{"count": 7, "items": [{"date": "2026-08-04", "recipe": {"name": "P\u00f8lsegryde", "slug": "polsegryde"}}, {"date": "2026-08-03", "recipe": {"name": "One pot french onion pasta", "slug": "one-pot-french-onion-pasta"}}, {"date": "2026-08-02", "recipe": {"name": "P\u00f8lsegryde", "slug": "polsegryde"}}, {"date": "2026-08-01", "recipe": {"name": "Pho nudelsuppe med asiatisk ribbensteg", "slug": "pho-nudelsuppe-med-asiatisk-ribbensteg"}}, {"date": "2026-07-31", "recipe": {"name": "Banh Mi Burger", "slug": "banh-mi-burger"}}, {"date": "2026-07-30", "recipe": {"name": "Tex Mex Salat", "slug": "tex-mex-salat"}}, {"date": "2026-07-29", "recipe": {"name": "Marry Me Chicken Orzo med spinat", "slug": "marry-me-chicken-orzo-med-spinat"}}]}
|
||||||
Reference in New Issue
Block a user