From da92c94089632d21c117bba1ddfa7f03fdbd96bc Mon Sep 17 00:00:00 2001 From: Claus Dethlefsen Date: Thu, 25 Jun 2026 06:55:45 +0200 Subject: [PATCH] =?UTF-8?q?docker:=20tilf=C3=B8j=20healthcheck=20til=20HA?= =?UTF-8?q?=20+=20autoheal-container=20mod=20frosne=20h=C3=A6ng?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dashboards/views/06c_indkorsel_snapshots.yaml | 2 +- docker/docker-compose.homeassistant.yml | 21 ++++++++ include/automations/varme_styring.yaml | 48 +++++++++++++++++++ include/scripts/doorbell.yaml | 26 ++++++++-- www/mealie.json | 2 +- 5 files changed, 93 insertions(+), 6 deletions(-) diff --git a/dashboards/views/06c_indkorsel_snapshots.yaml b/dashboards/views/06c_indkorsel_snapshots.yaml index 5a95abc..b2a3f91 100644 --- a/dashboards/views/06c_indkorsel_snapshots.yaml +++ b/dashboards/views/06c_indkorsel_snapshots.yaml @@ -5,5 +5,5 @@ panel: true cards: - type: iframe - url: /local/snapshots/indkorsel_loader.html?v=20260620194231 + url: /local/snapshots/indkorsel_loader.html?v=20260625061240 aspect_ratio: 100% diff --git a/docker/docker-compose.homeassistant.yml b/docker/docker-compose.homeassistant.yml index c90b04f..fb0a3c8 100644 --- a/docker/docker-compose.homeassistant.yml +++ b/docker/docker-compose.homeassistant.yml @@ -11,3 +11,24 @@ services: restart: always environment: - TZ=Europe/Copenhagen + labels: + - "autoheal=true" + healthcheck: + # Tjekker at HA's web-API faktisk svarer (ikke kun at processen kører) + test: ["CMD", "curl", "-fs", "http://localhost:8123/manifest.json"] + interval: 30s # tjek hvert 30. sekund + timeout: 10s # svar skal komme inden 10 sek + retries: 3 # 3 fejl i træk => unhealthy + start_period: 120s # giv HA 2 min til at boote inden tjek tæller + + autoheal: + container_name: autoheal + image: willfarrell/autoheal:latest + restart: always + environment: + - AUTOHEAL_CONTAINER_LABEL=autoheal # genstart kun containere med label autoheal=true + - AUTOHEAL_INTERVAL=15 # tjek health-status hvert 15. sekund + - AUTOHEAL_START_PERIOD=300 # vent 5 min efter egen opstart inden overvågning + - TZ=Europe/Copenhagen + volumes: + - /var/run/docker.sock:/var/run/docker.sock diff --git a/include/automations/varme_styring.yaml b/include/automations/varme_styring.yaml index 32973e5..1c38dd9 100644 --- a/include/automations/varme_styring.yaml +++ b/include/automations/varme_styring.yaml @@ -110,3 +110,51 @@ - service: input_boolean.turn_off target: entity_id: input_boolean.vacation_mode + +- alias: "Varme - Påmindelse: Luk håndklæde-varmer (sommer)" + id: varme_paamindelse_haandklaedevarmer_sommer + description: > + Sender en påmindelse 1. juni om at lukke den manuelle hane til + håndklæde-varmeren i badeværelset, så den ikke trækker fjernvarme + hele sommeren. Hanen kan ikke styres af HA, så det er en manuel handling. + trigger: + - platform: time + at: "09:00:00" + condition: + - condition: template + value_template: "{{ now().month == 6 and now().day == 1 }}" + action: + - service: notify.mobile_app_claus_iphone_15pro + data: + title: "Sommer: Luk håndklæde-varmeren" + message: > + Husk at lukke den manuelle hane til håndklæde-varmeren i badeværelset, + så den ikke trækker fjernvarme hele sommeren. + data: + push: + interruption-level: time-sensitive + tag: haandklaedevarmer_sommer + +- alias: "Varme - Påmindelse: Åbn håndklæde-varmer (efterår)" + id: varme_paamindelse_haandklaedevarmer_efteraar + description: > + Sender en påmindelse 1. oktober om at åbne den manuelle hane til + håndklæde-varmeren i badeværelset igen før fyringssæsonen. + Hanen kan ikke styres af HA, så det er en manuel handling. + trigger: + - platform: time + at: "09:00:00" + condition: + - condition: template + value_template: "{{ now().month == 10 and now().day == 1 }}" + action: + - service: notify.mobile_app_claus_iphone_15pro + data: + title: "Efterår: Åbn håndklæde-varmeren" + message: > + Husk at åbne den manuelle hane til håndklæde-varmeren i badeværelset + igen, så den er klar til fyringssæsonen. + data: + push: + interruption-level: time-sensitive + tag: haandklaedevarmer_efteraar diff --git a/include/scripts/doorbell.yaml b/include/scripts/doorbell.yaml index 47f38a5..b2d86fa 100644 --- a/include/scripts/doorbell.yaml +++ b/include/scripts/doorbell.yaml @@ -8,6 +8,11 @@ doorbell: alias: Dørklokke sequence: + # Gem Denon-receiverens tilstand, saa den kan gendannes efter dingdong + - variables: + denon_state: "{{ states('media_player.denon_avr_x2300w') }}" + denon_source: "{{ state_attr('media_player.denon_avr_x2300w', 'source') }}" + denon_volume: "{{ state_attr('media_player.denon_avr_x2300w', 'volume_level') }}" - parallel: - sequence: - variables: @@ -103,7 +108,20 @@ doorbell: volume_level: "{{ volumennat }}" target: entity_id: media_player.andreas - - service: media_player.select_source - data: - entity_id: media_player.denon_avr_x2300w - source: TV Audio + # Gendan Denon-receiveren til praecis den kilde og volumen den stod paa foer ringningen + - choose: + - conditions: + - condition: template + value_template: "{{ denon_state not in ['off', 'standby', 'unavailable', 'unknown', 'none'] }}" + sequence: + - service: media_player.select_source + data: + entity_id: media_player.denon_avr_x2300w + source: "{{ denon_source }}" + - delay: "00:00:01" + - condition: template + value_template: "{{ denon_volume not in [none, 'None', '', 'unknown', 'unavailable'] }}" + - service: media_player.volume_set + data: + entity_id: media_player.denon_avr_x2300w + volume_level: "{{ denon_volume | float }}" diff --git a/www/mealie.json b/www/mealie.json index 066af15..966b58d 100644 --- a/www/mealie.json +++ b/www/mealie.json @@ -1 +1 @@ -{"count": 8, "items": [{"date": "2026-06-20", "recipe": {"name": "Bagte s\u00f8de kartofler med fyld", "slug": "bagte-sode-kartofler-med-fyld"}}, {"date": "2026-06-20", "recipe": {"name": "Engelsk b\u00f8f ", "slug": ""}}, {"date": "2026-06-26", "recipe": {"name": "M\u00f8rbradb\u00f8ffer med bl\u00f8de l\u00f8g og fl\u00f8desauce", "slug": "morbradboffer-med-blode-log-og-flodesauce"}}, {"date": "2026-06-25", "recipe": {"name": "Macaroni and cheese", "slug": "macaroni-and-cheese"}}, {"date": "2026-06-24", "recipe": {"name": "Rester fra mandag (Tortellini i fad)", "slug": ""}}, {"date": "2026-06-23", "recipe": {"name": "Rester fra s\u00f8ndag (Kylling med cornflakes)", "slug": ""}}, {"date": "2026-06-22", "recipe": {"name": "Tortellini i fad", "slug": "tortellini-i-fad"}}, {"date": "2026-06-21", "recipe": {"name": "Kylling med cornflakes", "slug": "kylling-med-cornflakes"}}]} \ No newline at end of file +{"count": 7, "items": [{"date": "2026-07-01", "recipe": {"name": "Spaghetti i tomatsauce med k\u00f8dboller", "slug": "spaghetti-i-tomatsauce-med-kodboller"}}, {"date": "2026-06-30", "recipe": {"name": "Paprikagryde \u2013 en klassisk m\u00f8rbradgryde", "slug": "paprikagryde-en-klassisk-morbradgryde"}}, {"date": "2026-06-29", "recipe": {"name": "Spaghetti i tomatsauce med k\u00f8dboller", "slug": "spaghetti-i-tomatsauce-med-kodboller"}}, {"date": "2026-06-28", "recipe": {"name": "Paprikagryde \u2013 en klassisk m\u00f8rbradgryde", "slug": "paprikagryde-en-klassisk-morbradgryde"}}, {"date": "2026-06-27", "recipe": {"name": "Laks p\u00e5 grill med citron og krydderurter", "slug": "laks-pa-grill-med-citron-og-krydderurter"}}, {"date": "2026-06-26", "recipe": {"name": "Citrongr\u00e6s marineret m\u00f8rbrad med nudler", "slug": "citrongraes-marineret-morbrad-med-nudler"}}, {"date": "2026-06-25", "recipe": {"name": "Macaroni and cheese", "slug": "macaroni-and-cheese"}}]} \ No newline at end of file