Zählerstand per Mail:

Adarimisator

New member
Hallo zusammen,

ich benötige mal wieder eure Hilfe.. :)

ich habe über mqtt zwei Strom-Leseköpfe von bitshake in den Home Assistant eingebunden.
Diese liefern auch bereits äußerst zuverlässig Daten.
Nun würde ich mir gerne die Daten via Mail übermitteln.

Die notification via Mail ist ebenfalls bereits eingerichtet und funktioniert auch.
Was ich jedoch einfach nicht hin bekomme, das in der E-Mail die Bezugs bzw. Einspeise Daten enthalten sind. .

"https://www.amazon.de/dp/B0CCMXSPVX?psc=1&ref=ppx_yo2ov_dt_b_product_details"

Kann mir einer von euch an dieser Stelle weiterhelfen?

Viele Grüße
Adarimisator
 
Hallo Barry Ricoh,

vielen Dank für Deine schnelle Rückmeldung...
Ja genau, ich hätte gerne die Zählerstände täglich übermittelt.
  • Einspeisung
  • Bezug​
das gleiche dann mit:
  • HT
  • NT​
Und was ein echtes Highlight wäre, wenn ich von allen
Einheiten noch die monatlichen Gesamt-Verbrauchm oder Gesamt-Bezug
erhalten würde....

Monatlich:
  • Gesamt-Bezug
  • Gesamt-Einspeisung
  • Gesamt-Verbrauch (HT)
  • Gesamt-Bezug (NT)​

1718990875081.png

Folgende Entitäten sind hierzu zu finden..

sensor.bitshake_smartmeterreader_ehz_e_in
sensor.bitshake_smartmeterreader_ehz_e_out
sensor.bitshake_smartmeterreader_ehz_meter_id
sensor.bitshake_smartmeterreader_ehz_power
sensor.bitshake_smartmeterreader_last_restart_time
sensor.bitshake_smartmeterreader_last_restart_time_2
sensor.bitshake_smartmeterreader_mqtt_connect_count
sensor.bitshake_smartmeterreader_mqtt_connect_count_2
sensor.bitshake_smartmeterreader_mt681_bezug_gesamt
sensor.bitshake_smartmeterreader_mt681_bezug_ht
sensor.bitshake_smartmeterreader_mt681_bezug_nt
sensor.bitshake_smartmeterreader_mt681_meter_id
sensor.bitshake_smartmeterreader_mt681_power_cur
sensor.bitshake_smartmeterreader_mt681_power_p1
sensor.bitshake_smartmeterreader_mt681_power_p2
sensor.bitshake_smartmeterreader_mt681_power_p3
sensor.bitshake_smartmeterreader_restart_reason
sensor.bitshake_smartmeterreader_restart_reason
sensor.bitshake_smartmeterreader_restart_reason_2
sensor.bitshake_smartmeterreader_ssid
sensor.bitshake_smartmeterreader_ssid_2
sensor.bitshake_smartmeterreader_wifi_connect_count
sensor.bitshake_smartmeterreader_wifi_connect_count_2
 
Also Du hast die Sensoren, die die Werte liefern, der Mailversand klappt generell ebenfalls, nur Du bekommst die Werte nicht in die Mail?

Wenn Du als message etwas in dieser Art einträgst:
YAML:
{{ states('sensor.bitshake_smartmeterreader_mt681_bezug_gesamt') }}
springt es in den YAML-Modus um (lass Dich davon nicht irritieren), aber so kannst Du Sensorwerte übermitteln.
 
Bei mir sieht das etwas anders aus, heißt aber nicht das Nivals Lösung nicht richtig ist.

YAML:
Gesamtverbrauch : {{states.sensor.bitshake_smartmeterreader_mt681_bezug_gesamt.state}}
 
Also Du hast die Sensoren, die die Werte liefern, der Mailversand klappt generell ebenfalls, nur Du bekommst die Werte nicht in die Mail?

Wenn Du als message etwas in dieser Art einträgst:
Hallo Niva,
hallo Barry Ricoh,

besten Dank für eure Antwort..

Also ich glaube ich mache generell schon mal bei dem Aufbau etwas falsch.... ?!?!? !
Denn ich bekomme gar keine Daten... es kommt lediglich eine leere E-Mail an.

Im ScreenShot zeige ich euch einmal den Aufbau der Automatisierung:

1719063333972.png

1719063377652.png

Das kommt an:

1719063537273.png
Also nichts als als eine leere E-Mail... außer der zuvor definierte Satz....
Die Zählerstände fehlen ganz und gar...

Betreffend des Scriptings/Yaml habe ich extrem wenig Erfahrung...
Wäre es für euch okay, wenn ich mir stepp by stepp jeden aufzuführenden schritt
benennt?

Vielen herzlichen Dank vorab für eure geduldige Unterstützung...

Viele Grüße
Adarimisator
 
Hmmm, wenn ich mich mal einmischen darf.
Dein Auslöser dürfte eigentlich niemals funktionieren, weil die Werte sicher niemals für 23 Stunden und 58 Minuten identisch sein werden.
Was Du willst ist, das um 23:58 Uhr die Werte gemailt werden. Dann mußt Du das auch so schreiben.
Code:
platform: time
at: "23:58:00"

Und genau den Part, der wichtige wäre, um zu sehen, was mit der Email nicht klappt, hast Du nicht gepostet.
Was steht den drin bei "Dann mache" ?
Poste mal den YAML Code dazu.
 
Poste mal den YAML-Code, der hinter "Send a notification with e_mail_versenden" steht - und beachte dabei https://forum.heimnetz.de/threads/hinweis-zum-thema-einfuegen-von-yaml-code-in-beitraegen.1019/

Falls es Dir aktuell nicht als YAML-Code angezeigt wird, dann rechts auf die drei Punkte gehen und entsprechend umstellen:
1719064171675.png

Wenn der Mailversand generell klappt hast Du ja schon einen guten Stand erreicht, die Daten kriegen wir da noch rein, aber erstmal wäre der aktuelle Stand gut zu wissen :)
 
Moinsen,
kann es sein, dass du da den falschen Auslöser setzt?
Du willst doch nach meinem Verständnis keine Mail, wenn sich der Wert ändert, sondern einfach eine tgl. Mitteilung, wie die Werte sind?
Außerdem sollen sich die Werte ja nicht für 23 Stunden und 58 Minuten Dauer ändern, oder?

Also kurz:
Auslöser: um x Uhr Nachricht senden
Inhalt: entity wie oben benannt mit Werte wie oben vorgeschlagen als Text...

So wie du es gerade hast > siehe Post von @RudiP > wird vermutlich nie eintreten :)
 
Ich überlege gerade und fürchte, ich habe Unrecht.
Die Automatisierung wird auslösen und fast sogar so, wie geplant.
Sie wartet ja quasi darauf, das bei einer der Entitäten eine Statusänderung oder Änderung in einem Attribut auftritt.
Das macht sie dann 23 Stunden und 58 Minuten lang.
Da in dieser Zeit mit ziemlicher Sicherheit eine Statusänderung eingetreten ist, sollte die Automatisierung nach Ablauf der Zeit auslösen.
Nur halt nicht UM 23:58 sondern immer NACH 23 Stunden und 58 Minuten. Startet man also Mittags um 12 Uhr HA neu, wird die Automatisierung erst am nächsten Tag 11:58 Uhr auslösen.
 
@RudiP:
Für "Einmischungen" bin ich immer dankbar.. ;)
Ich bin noch recht neu und im Umgang gerade mit Scripten absolut unerfahren.. ... ;)

Ich überlege gerade und fürchte, ich habe Unrecht.
Die Automatisierung wird auslösen und fast sogar so, wie geplant.
Sie wartet ja quasi darauf, das bei einer der Entitäten eine Statusänderung oder Änderung in einem Attribut auftritt.
Das macht sie dann 23 Stunden und 58 Minuten lang.
Da in dieser Zeit mit ziemlicher Sicherheit eine Statusänderung eingetreten ist, sollte die Automatisierung nach Ablauf der Zeit auslösen.
Nur halt nicht UM 23:58 sondern immer NACH 23 Stunden und 58 Minuten. Startet man also Mittags um 12 Uhr HA neu, wird die Automatisierung erst am nächsten Tag 11:58 Uhr auslösen.

Würde mir prinzipell reichen wenn dies auch funktionieren würde, somit müsste ich dann jedoch nach einem Update den
Server-Neustart immer wieder auf 00:00 Uhr verlegen.. ist nicht wirklich mein Ziel... :-D


Unter "Dann mache" habe ich doch gepostet.. :)
Da steht... Send a notification with e_mail.. mehr habe ich unter "Dann mache" nicht stehen.

@Nival:
Hier das Script zu "Send Notification e_mail"

Code:
notify:
  - name: "E-Mail versenden "
    platform: smtp
    server: "smtp.1und1.de"
    sender: "fo.xxxxxx@xxxxxx.de"
    port: 465
    timeout: 20
    encryption: tls
    username: "fo.xxxxxx@xxxxxx.de"
    password: "1111111111"
    recipient:
      - "fo.xxxxxx@xxxxxx.de"
    sender_name: "Home Assistant"

Habe dies direkt aus der config.yamle raus genommen.
Ich finde den Weg nicht mehr wie ich zu dem Dienst "Send a notification......" komme.


@the other:

wie gesagt, ich arbeite mich zur Zeit in den HA noch ein und gehe mit Sicherheit nicht immer
den einfachsten und besten wege.. und freue mich über jeden Lösungsweg.. :)


vielen lieben Dank für eure Unterstützung.. :)

Viele Grüße
Adarimisator
 
Zuletzt bearbeitet:
Moinsen,
immer gerne. ;)
Der gesuchte Weg sollte sein:
Entwicklerwerkzeuge > Dienste > da dann filtern nach deinem "notify.E-Mail..."
Das sollte den Dienst dann anzeigen...
Oder aber via Automatisierung diesen dann einfügen (Einstellungen der gewünschten Automatisierung > "Dann mache", hier dann "Benachrichtigungen" und den Email Dienst angeben.
:)
 
Moinsen,
2. Post, weil anderes Thema:
weil du sagst, dass du gerade erst anfängst (keine Sorge, ich auch...:)), wollte ich dir den Hinweis geben, dass du Credentials (wie etwa in deinem yaml-sniplet zu den Email Konto Angaben) auch als "geheimen" Eintrag nutzen kannst.
Dazu dies:
https://www.home-assistant.io/docs/configuration/secrets/
Du legst also im File Editor unter secrets.yaml deine echten Crendentials an, etwa so
Code:
NAME_des_SECRETS (zb email_user1): "deinechterbenutzername"
NAME_des_SECRETS (zb email_passwort1): "deinechtespasswort"
NAME_des_SECRETS (zB email_empfaenger1): "deinechterempfänger"
#usw

Dann nutzt du in der yaml nicht mehr deine echten (und im Klartext zu sehenden!) Angaben, sondern Platzhalter-mäßig dies:
Code:
# Example Email
notify:
    name: "Emailnotification"
    platform: smtp
    server: "smtp.gmail.com"
    port: 587
    timeout: 15
    sender: !secret email_user
    encryption: starttls
    username: !secret email_user
    password: !secret email_passwd
    recipient:
        - !secret email_empf1

Das bringt etwas mehr Sicherheit...kannst du für alles nutzen, was du nicht direkt in der yaml eintragen /zeigen willst...

Ist zwar vom eigentlichen Thema abweichend, aber wenn du gerade anfängst, warum nicht hier gleich richtig? ;)
 
Unter "Dann mache" habe ich doch gepostet.. :)
Da steht... Send a notification with e_mail.. mehr habe ich unter "Dann mache" nicht stehen.
Was? Nein. Schau, was Du gepostet hast:
1719071397361.png

Was wichtig wäre:
1719071473058.png

Links mit dem rot markierten aufklappen, wie in meinem vorherigen Beitrag erklärt auf YAML schalten wenn nicht bereits geschehen, den Code der darin steht posten.
 
Ganz genau :) message ist es, was bearbeitet werden muss.

Versuch das hier:
YAML:
data:
  title: "Bezug/Einspeisung:"
  message: "{{ states('sensor.bitshake_smartmeterreader_mt681_bezug_gesamt') }}"

Also, anstelle des jetztigen data:-Eintrages natürlich, das darüber muss stehen bleiben - und genau so kannst Du das auch unter Entwicklerwerkzeuge => Dienste ausprobieren.
 
Zuletzt bearbeitet:
Moinsen,
genau...so wie in Post #12 beschrieben kommst du zu deiner Automatisierung, die dir zB 1 x tgl (Auslöser = Uhrzeit) eine Benachrichtigung (notify) senden soll und zwar per email (wie unter smtp konfiguriert und benannt, bei dir eben "e_mail_versenden"). Dort dann wie von @Nival beschrieben den Eintrag setzen. Fertig. (Hoffentlich). ;)
 
Euch allen betsen Dank für die super tolle Unterstützung..
Es funktioniert super.. habe es jetzt etwas angepasst....

Wollte nun noch in Reihe 19 den "out" wert noch mit hinzugeben haben, dies lässt jedoch
scheinbar yaml nicht zu..
Yaml lässt das speichern von "out" nicht zu.. :(

Weiterhin würde es mich nun interessieren...
ob die Möglichkeit besteht hinter den ausgelesenen Wert "Bezug" "Einspeisung" "HT" "NT" oder
Gesamt noch mit anzugeben..
Sonst müsste ich das über 5-6 E-Mails Verteilen...
Gerne würde ich es zwei E-Mails aufsplitten...

"Mailversand Bezug/Einspeisung:"
  • 11111111 (Bezug)
  • 22222222 (Einspeisung)

"Mailversand HT/NT:"
  • 11111111 (HT)
  • 22222222 (NT)
  • 33333333 (Gesamt)

Code:
alias: "Mailversand Bezug/Einspeisung:"
description: Dieses Automatisierung versendet die Bezugs, sowie die Einspeise Daten
trigger:
  - platform: state
    entity_id:
      - sensor.bitshake_smartmeterreader_ehz_e_in
      - sensor.bitshake_smartmeterreader_ehz_e_out
    for:
      hours: 23
      minutes: 55
      seconds: 0
condition: []
action:
  - service: notify.e_mail_versenden
    metadata: {}
    data:
      title: "Bezug/Einspeisung:"
      message: "{{ states('sensor.bitshake_smartmeterreader_ehz_e_in') }}"
               "{{ states('sensor.bitshake_smartmeterreader_ehz_e_out') }}"
mode: single

Habe nun auch versucht den Wert "time" mit einzubinden, aber hier kommt es bei dem
Versuch zu Speichern zu der Meldung: "Message malformed: extra keys not allowed @ data['entity_id']"

Code:
alias: "Mailversand Bezug/Einspeisung:"
description: Dieses Automatisierung versendet die Bezugs, sowie die Einspeise Daten
trigger:
  - platform: time
    at: "23:58:00"
    entity_id:
      - sensor.bitshake_smartmeterreader_ehz_e_in
      - sensor.bitshake_smartmeterreader_ehz_e_out
    for:
      hours: 23
      minutes: 55
      seconds: 0
condition: []
action:
  - service: notify.e_mail_versenden
    metadata: {}
    data:
      title: "Bezug/Einspeisung:"
      message: "{{ states('sensor.bitshake_smartmeterreader_ehz_e_in') }}"
mode: single

Update: 20:52 Uhr:

Also habe es jetzt über die GUi gemacht...
Kommischerweise geht es jetzt mit der Uhrzeit... ***Am Kopfkratz***
 
Zuletzt bearbeitet:

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.951
Beiträge
49.873
Mitglieder
4.636
Neuestes Mitglied
TL767
Zurück
Oben