Ich finde hier keine Lösung und brauche mal Hilfe

Ich habe jetzt Stundenlang Videos angesehen die immer nur
das selbe zeigen: Zeitschleifen oder Ein/Aus Themen.
Das hilft mir aber kein Stück weiter.

Bei mir läuft in der HomeMatic ein selbst erstelltes Zeitmodul
das ich gerne in HA übernehmen möchte.
Dort kann ich aus einer ganzen Liste, eine bestimmt Stunde
Auswählen und ist die Zeit da,
werde ich über meinen MP3 Player daran erinnert.

Die Auslösung im Progamm erfolgt über Webhook,
dann soll aber ERST zum Zeitpunkt z.b. 9:00,
der DANN Befehl erfolgen.

Klappt nicht, nach Auslösung läuft das ganze durch, egal wie spät es ist.
Ich habe schon etliches Ausprobiert auch Helfer, das letzte hier
hat auch keine Lust bis 9:00 zu warten.

alias: Timer um 09:00 Uhr Täglich
description: ""
triggers:
  - trigger: webhook
    allowed_methods:
      - GET
    local_only: true
    webhook_id: "-BfYvsP-3dnpjNGVPmyHMZxpM"
conditions:
  - condition: time
    after: "08:59:00"
    before: "09:00:00"
actions:
  - action: rest_command.mp3_timer_ist_abgelaufen
    data: {}
mode: single

Hallo und willkommen
Ich habe deine frage 1 zu 1 beim Gemini gestellt und das ist di Antwort

Das ist ein klassisches Szenario beim Umstieg von HomeMatic zu Home Assistant (HA). Während HomeMatic oft mit festen Zeitmodulen in Programmen arbeitet, nutzt Home Assistant dafür meist „Helper“ (Helfer) in Kombination mit einer Automatisierung.

Hier ist ein flexibler Weg, wie du das in Home Assistant nachbauen kannst, inklusive der Auswahlmöglichkeit für die Stunde.


1. Den „Helfer“ erstellen (Die Auswahl-Liste)

Zuerst erstellen wir eine Liste, in der du die Stunde auswählen kannst.

  1. Gehe zu Einstellungen > Geräte & Dienste > Helfer.
  2. Klicke auf Helfer erstellen > Dropdown.
  3. Name: z. B. Erinnerung Stunde.
  4. Optionen: Füge die Stunden hinzu (z. B. 08, 09, 10 … bis 22).
  5. Speichere den Helfer. Er hat nun die Entität-ID input_select.erinnerung_stunde.

2. Die Automatisierung erstellen

Diese Automatisierung prüft jede volle Stunde, ob die aktuelle Zeit mit deiner Auswahl übereinstimmt.

Trigger: Zeitraster (Time Pattern) – Stunden: /1 (prüft jede Stunde bei Minute 0).

Bedingung: Ist die aktuelle Stunde gleich dem Wert im Helfer?

YAML-Code für die Automatisierung:

`YAMLalias: „MP3 Erinnerung zur gewählten Stunde“
description: „Spielt eine Ansage, wenn die gewählte Stunde erreicht ist“
trigger:

  • platform: time_pattern
    minutes: „00“ # Triggert immer zur vollen Stunde
    condition:
  • condition: template
    value_template: „{{ now().strftime(‚%H‘) == states(‚input_select.erinnerung_stunde‘) }}“
    action:
  • service: media_player.play_media
    target:
    entity_id: media_player.dein_mp3_player # Hier deinen Player wählen
    data:
    media_content_id: „https://deine-ha-url.com/local/audio/erinnerung.mp3
    media_content_type: „music“
    mode: single`

3. Alternative: Ein konkreter Zeit-Helfer (Eleganter)

Statt nur einer Liste für die Stunde könntest du auch einen Helfer vom Typ „Datum und/oder Uhrzeit“ anlegen.

  • Vorteil: Du kannst im Dashboard eine exakte Uhrzeit (z. B. 14:30) per Picker einstellen.
  • Trigger: In der Automatisierung wählst du dann einfach „Zeit“ und nutzt die Entität des Helfers als Auslöser. Das spart die Prüfung im Hintergrund.

4. Integration im Dashboard

Damit du die Zeit bequem umstellen kannst, fügst du den Helfer einfach zu deinem Dashboard hinzu:

  1. Klicke auf Dashboard bearbeiten.
  2. Füge eine Entitäten-Karte hinzu.
  3. Wähle input_select.erinnerung_stunde.

Ein Tipp zu npm (da dies in deinen Notizen steht)

Da du erwähnt hast, dass du npm aktuell halten möchtest: Wenn du Home Assistant OS nutzt, werden Add-ons automatisch verwaltet. Solltest du HA in einem Docker-Container oder als Core-Installation nutzen, empfiehlt es sich, regelmäßige Updates via npm update in deiner Umgebung zu planen, wobei HA selbst meist unabhängig von globalen npm-Paketen läuft.

Soll ich dir zeigen, wie du die MP3-Datei korrekt in den „Media“-Ordner von Home Assistant hochlädst, damit der Player darauf zugreifen kann?

alias: "MP3 Erinnerung zur gewählten Stunde"
description: "Spielt eine Ansage, wenn die gewählte Stunde erreicht ist"
trigger:
  - platform: time_pattern
    minutes: "00" # Triggert immer zur vollen Stunde
condition:
  - condition: template
    value_template: "{{ now().strftime('%H') == states('input_select.erinnerung_stunde') }}"
action:
  - service: media_player.play_media
    target:
      entity_id: media_player.dein_mp3_player # Hier deinen Player wählen
    data:
      media_content_id: "https://deine-ha-url.com/local/audio/erinnerung.mp3"
      media_content_type: "music"
mode: single

Danke erstmal.
Kannte „Gemini“ noch nicht, werde ich mir ansehen.
Hilft aber nicht oder ich bin einfach zu blind.

Als Auslöser kann ich NUR Webhook nutzen!

Das ganze sieht nun so aus und geht immer noch durch.

alias: Timer um 12:00 Uhr Täglich
description: ""
triggers:
  - trigger: webhook
    allowed_methods:
      - GET
    local_only: true
    webhook_id: "-Pr14-iXjWX7driyqw375PQ5x"
conditions:
  - condition: state
    entity_id: input_select.auswahl_stunden
    state:
      - >-
        00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17,
        18, 19, 20, 21, 22, 23
  - condition: time
    after: "12:00:00"
actions:
  - action: rest_command.mp3_timer_ist_abgelaufen
    data: {}
mode: single

NACHTRAG:
Geht durch aber löst auch um die Uhrzeit (hier 12 Uhr) aus.

Vielleicht kann noch einer der YAML-Freaks hier eine bessere Lösung finden.

Kannst du dein Problem vielleicht noch etwas genauer erklären? :slight_smile:
Ich bin mir nicht sicher, was du erreichen möchtest.
Ein Webhook löst eine Automation aus und die wartet bis zu einer bestimmten Zeit (aus einem Input Helfer?) und löst dann aus? Oder kommt der Webhook zu der Zeit und die Automation soll nur checken, ob in diesem Moment die richtige Zeit ist?

P.S. Gemini ist einfach das „ChatGPT von Google“

Ich muss von ausserhalb HA auslösen, das mache ich schon lange bei allen ZigBee schaltern über Webhook.
Wenn dieser sagen wir um 10:00 Uhr ausgelöst wird dann soll er warten bis z.b. 12:00 Uhr und dann weiter laufen und den MP3 starten.

Ich habe das jetzt so in etwa hin bekommen für den 12 Uhr Stunden Auslöser.
.

alias: Timer um 12:00 Uhr Täglich
description: ""
triggers:
  - trigger: webhook
    allowed_methods:
      - GET
    local_only: true
    webhook_id: "-Pr14-iXjWX7driyqw375PQ5x"
  - trigger: time_pattern
    minutes: "1"
    enabled: true
conditions:
  - condition: state
    entity_id: input_select.auswahl_stunden
    state:
      - >-
        15
  - condition: time
    after: "15:00:00"
actions:
  - action: rest_command.mp3_timer_ist_abgelaufen
    data: {}
mode: single

15 Uhr sorry

Ah, ich verstehe.

Deine Automation sieht ja momentan im Prinzip so aus: Wenn der Webhook empfangen wird, wird die Automation ausgelöst UND jede Minute auch.
Danach prüft sie, ob es 15 Uhr ist und führt dann ggf. die Automation durch.

Ich denke, du solltest an die Sache etwas anders rangehen:
Automation 1:
Wenn Webhook empfangen wird, dann einen Boolean-Helfer einschalten.

Automation 2:
Wenn aktuelle Uhrzeit ist die Uhrzeit auf die gewartet wird, dann in den Conditions prüfen, ob der Helfer angeschaltet ist (also ob auf den Timer gewartet wird) und dann den rest_command losschicken. Danach kannst du den Helfer wieder auf off schalten, damit er fürs nächste Mal bereit steht.

Der Trigger für Automation 2 wäre dann soetwas in der Art:

trigger: time
at: "{{states(select.Stunde)}}:00:00"

Ich habe gerade keine Zeit, dir ganze Automationen mit meinen oben genannten Denkanstößen zu geben, daher habe ich ChatGPT mit meinen oberen Gedanken gefüttert:
Automation 1:

alias: Webhook setzt Wartestatus
mode: single
trigger:
  - platform: webhook
    webhook_id: timer_start
action:
  - service: input_boolean.turn_on
    target:
      entity_id: input_boolean.warte_auf_timer

Automation 2:

alias: Timer zur gewählten Stunde ausführen
mode: single
trigger:
  - platform: time_pattern
    minutes: "0"
    seconds: "0"
condition:
  - condition: state
    entity_id: input_boolean.warte_auf_timer
    state: "on"

  - condition: template
    value_template: >
      {{ now().hour == states('select.stunde') | int }}
action:
  - service: rest_command.dein_rest_command

  - service: input_boolean.turn_off
    target:
      entity_id: input_boolean.warte_auf_timer

Da musst du natürlich noch die Entitäten anpassen und den input_boolean (Helfer-Schalter) manuell anlegen.

Wenn du noch Fragen/ Probleme hast, melde dich gerne.

Danke dir!!

Ich habe mit yaml erst dieses Jahr angefangen und ich bin auch kein Programmierer.
Die „Leichten“ Programme gingen ja über den normalen Editor.
Aber ich lerne gern dazu, falls ich nicht weiter komme, melde ich mich.

Gerne :slight_smile:
Du kannst den YAML-Code auch einfügen und dann in den visuellen Editor rüberwechseln. Das meiste kannst du von dort aus bearbeiten.

Ja, das mache ich schon.
Seit diese Hoch/Runter Verschiebe Pfeile nicht mehr im Rechten Menü des Editors sind, mit denen man einen Nachträglich Eingetragenen Befehl z.b. weiter nach oben schieben konnte.
Oder ich übersehe das Erfolgreich… grins

Was meinst du? :slight_smile:
Du kannst die einzelnen Cards doch jetzt einfach per Drag und Drop verschieben? Das ist doch noch einfacher.

Ja, = hab ich gerade gefunden, ich sagte ja, erfolgreich Übersehen. Nochmal Danke.

1 „Gefällt mir“

ich schlage mal einen anderen Ansatz vor.

statt eines input_select wird ein input_datetime verwendet.

Der lässt sich entweder übers GUI oder per service call, zum Beispiel bei Empfang des Webhooks, setzen:

action: input_datetime.set_datetime
target:
  entity_id: input_datetime.startzeit_test
data:
  time: "15:00:00"

und die Automation löst bei erreichen der Zeit in dem Helfer aus:

triggers:
  - trigger: time
    at: input_datetime.startzeit_test
conditions: []
actions: []

ich denke, mit diesem Ansatz wird es leichter/schlanker und die meisten nötigen Dinge erledigt HA.
Und er ist flexibel, die Startzeit ist nicht auf volle Stunden begrenzt.

Falls es tatsächlich nur um Stunden geht, ließe sich der input_datetime Helfer über den input_select füllen.

1 „Gefällt mir“

Danke, das werde ich auch ablegen und mir ansehen!

Das sieht schon etwas leichter aus.

Das Script von MarzyHA hat mich doch etwas nervös gemacht.

Mal so als Info:
Das Timermodul läuft bei mir in der Homematic seit über 10 Jahren und war in einer Stunde fertig, mit Dashboard.
Variable als Werteliste und im Programm die Zeiten abgefangen und den Timer gesetzt, dann ausgelöst.

Irgendwo habe ich letztens geschrieben, HA wäre in der Ausführung der Programme viel Vielseitiger…
Ich muss mit mir nochmal ein Ernstes Wörtchen reden.