Hilfe bei der Automation einer Benachrichtigung

Hallo zusammen und schonmal vielen Dank für die Hilfe.

Ich bin vor kurzem von ioBroker zu Home Assistant gewechselt. Noch nicht komplett, aber so langsam wird es.
Um was es mir jetzt im speziellen geht ist eine Benachrichtigung um 23:59 Uhr über Telegram Bot.
Er soll mir die Yieldtotal (sensor.opendtu_ertrag_total) von meiner openDTU schicken und dazu noch von meinem Bitshake SMR den Total_in (sensor.netzbezug_total) und Total out (sensor.einspeisung_total).
Die Daten lasse ich mir noch per MQTT vom ioBroker zu Home Assistant schicken. Das klappt auch alles wunderbar. Zur Zeit bekomme ich die Telegram Nachricht noch von ioBroker.
Die Daten schreibe ich mir dann in eine Exel Datei.
Da ich im Mai '22 Corona hatte habe ich da einige Schäden davon getragen. Unter anderem ist mein Kurzzeitgedächtnis komplett weg. Daher diese Nachrichten, damit ich das alles etwas besser nachverfolgen kann was unser BKW so erwirtschaftet.
Die Benachrichtigungen vom Trockner und der Waschmaschine habe ich hin bekommen. Das war auch nicht so schwer. In ioBroker habe ich diese Benachrichtigungen mit Blockly umgesetzt.

Vielen Dank und liebe Grüße
Michael

Wo genau liegt das Problem?
Geht es darum wie Du an den Wert von dem Sensor sensor.opendtu_ertrag_total kommst?
Das machst Du über ein Template, welches Du Du in den Benachrichtung als Message verwenden tust.

{{ states('sensor.opendtu_ertrag_total') }}

Templates kannst Du unter Entwicklungswerkzeuge → YAML im Template Editor testen.

Die Template Dokumentation findest Du hier.

Einen Automatisierung die um 23:59 den Wert der drei Sensoren als Nachricht versendet wäre dann:

alias: Täglicher Energiereport
description: ""
trigger:
  - platform: time
    at: "23:59:00"
condition: []
action:
  - service: notify.xyz
    metadata: {}
    data:
      title: Täglicher Energiebericht
      message: |
        Yieldtotal : {{ states('sensor.opendtu_ertrag_total') | float(0) }}
        Total_in: {{ states('sensor.netzbezug_total') | float(0)}}
        Total out: {{ states('sensor.einspeisung_total') | float(0) }}
mode: single

Gruß
Osorkon

1 „Gefällt mir“

Hallo Osorkon,

vielen vielen Dank, ich werde das genauso ausprobieren. Wie ich an die Daten komme wusste ich. Hab mich da etwas missverständlich ausgedrückt.
Mein Problem ist das ich diese Daten nicht in eine Nachricht bekommen habe, jedenfalls hatte ich keine Ahnung wie ich das anstellen soll. Ich muß mich einfach mehr mit der Programmierung in yaml auseinandersetzen.

alias: Täglicher Energiereport
  description: ""
  trigger:
  - platform: time
    at: '15:45:00'
  condition: []
  action:
  - service: telegram_bot.send_message
    metadata: {}
    data:
      title: Täglicher Energiebericht
      target: 656950xxxx
      message: |
        Yieldtotal: {{ states('sensor.opendtu_ertrag_total') | float(0) }}
        Total_in: {{ states('sensor.netzbezug_total') | float(0) }}
        Total out: {{ states('sensor.einspeisung_total') | float(0) }}
  mode: single

Ich habe das jetzt so probiert. Leider kommen keine Nachrichten an.
Vielleicht hast du eine Idee was da falsch läuft. Ich habe nur den Service geändert und das target hinzugefügt.

1 „Gefällt mir“

Dann liegt es an Deinem Telegram Bot?!
Kannst Du ganz normale Text Nachrichten auf diesem Weg verschicken, ich behaupte mal, das ist nicht der Fall.
Als Target, verwendest Du die Chat-ID, richtig? Ist diese korrekt?

Gruß
Osorkon

Ich denke nicht das es an dem Bot liegt. Ich bekomme Textnachrichten darüber wenn z.B. die Waschmaschine oder der 3D Drucker fertig ist. Das klappt alles.
Ich habe einmal meine Chat ID und eine ID für den Gruppenchat. Ja die ID´s sind korrekt eingestellt. Wenn Text verschickt wird kommt es auch an.

So sieht der Bot in der configuration.yaml aus

telegram_bot:
  - platform: polling
    api_key: "6935706775:AAExxxxxd6sPmVBVU98nqEqM_6ki9iuYc"
    allowed_chat_ids:
      - 656950xxxx
      - -413832xxxx

Dann einfach mal beides testen:

service: telegram_bot.send_message
data:
  title: Täglicher Energiebericht
  target: 656950xxxx
  message: |
    Yieldtotal: {{ states('sensor.opendtu_ertrag_total') | float(0) }}
    Total_in: {{ states('sensor.netzbezug_total') | float(0) }}
    Total out: {{ states('sensor.einspeisung_total') | float(0) }}

Und

service: telegram_bot.send_message
data:
  title: Täglicher Energiebericht
  target: 656950xxxx
  message: Test 

Entweder kommen beide Nachrichten an oder keine von beiden.

Kannst Du einfach unter Entwicklungswerkzeuge → Dienste testen, musst nicht extra eine Automatisierung dafür erstellen.

Gruß
Osorkon

Beim ersten kommt nichts an und beim zweiten kommt Test.

Kann ich mir grad nicht vorstellen?!
Wüsste auch nicht wo das Problem, bei Dir sein sollte.
Verwende den gleichen code 1:1, ändere lediglich die Chat-ID
Und das ist das Ergebnis:

Gruß
Osorkon

Tja das ist ja auch sehr merkwürdig. Hast du den Code direkt in der automations.yaml eingetragen oder hast du das über die Automatisierung in HA gemacht? Könnte ja sein das das auch noch einen Unterschied macht. Wie gesagt, ich hab von der ganzen Sache noch sehr sehr wenig Ahnung.
Vielleicht lösche ich den Telegram Bot nochmal, starte neu und versuche es dann nochmal neu.

Ist egal ob über eine Automatisierung oder als als Dienst in den Entwicklungswerkzeugen. Beides funktioniert wie es soll.

Wird beim Ausführen über den Dienst, ein Fehler angemeckert?
Wird die Automatisierung fehlerfrei abgearbeitet, oder gibt es irgendwelche Fehler. Siehe Abläufe (Traces)

Gruß
Osorkon

Was kommt denn wenn du das in den Enwicklungswerkzeuge unter Template eingibst?

Ist egal ob der Sensor was liefert oder überhaupt existent ist. In dem Fall wird eine 0 als Ergebnis ausgespuckt… :wink:

Bei Ihm kommt bei Telegram ja gar nichts an?!

Gruß
Osorkon

1 „Gefällt mir“
Ausgeführt: 3. April 2024 um 19:15:00
Ergebnis:
params:
  domain: telegram_bot
  service: send_message
  service_data:
    title: Täglicher Energiebericht
    target: 656950xxxx
    message: |-
      Yieldtotal : 605.577
      Total_in: 3741.0
      Total out: 47.0
  target: {}
running_script: false

Das ist die Ausgabe die ich unter Schrittdetails angezeigt bekomme. Ist aber sonst keine Warnung zu sehen.

D.h. die Nachricht wird versendet kommt aber nicht an?!
Sehr seltsam.
Hast Du noch weitere Notify Dienste Eingerichtet, die Du alternativ testen könntest?

Gruß
Osorkon

Nein hab ich nicht, da bis jetzt alles per Telegram gekappt hat. Dürfte ja kein großer Aufwand sein einen anderen Dienst zu nehmen. Was kannst du da empfehlen?

Passt das, dass da am Ende nochmal target: {} steht?

Eigentlich muss es mit Telegram Funktionieren, es tut ja nicht nur bei mir, sondern bei all den anderen die Telegram User ja auch.

Hast Du Telegram auch noch als notify angelegt.
Also:

#notify.yaml
- name: telegram_xyz
  platform: telegram
  chat_id: !secret telegram_chat_id_xyz

Und dann den notify.telegram_xyz als Dienst verwenden. Wie in meinen ersten Post.

Gruß
Osorkon

Nein das hatte ich nicht, werde ich schnell machen.

Ausgeführt: 3. April 2024 um 20:00:00
Ergebnis:
params:
  domain: notify
  service: telegram_xyz
  service_data:
    title: Täglicher Energiebericht
    target: 656950xxxx
    message: |-
      Yieldtotal : 605.593
      Total_in: 3742.0
      Total out: 47.0
  target: {}
running_script: false

Aber wieder keine Nachricht angekommen.

Lass mal bite die zugehörige Automatisierung sehen.

Gruß
Osorkon

id: "1712163582197"
  alias: Täglicher Energiereport
  description: ""
  trigger:
    - platform: time
      at: "20:00:00"
  condition: []
  action:
    - service: notify.telegram_xyz
      metadata: {}
      data:
        title: Täglicher Energiebericht
        target: 656950xxxx
        message: |
          Yieldtotal : {{ states('sensor.opendtu_ertrag_total') | float(0) }}
          Total_in: {{ states('sensor.netzbezug_total') | float(0)}}
          Total out: {{ states('sensor.einspeisung_total') | float(0) }}
  mode: single