Direkt zum Hauptinhalt

Push Notifactions / Benachrichtigungen

Beschreibung:

Wenn man die Home Assistant Companion App installiert hat auf Android oder iOS kann man benachrichtungen senden.
Natürlich kann man auch andere Geräte Nachrichten senden, das hängt davon ab, welche Entität (Device) ausgewählt wurde, was die Benachrichtigung erhalten soll.

Kanäle für Benachrichtungen  Android:

Es gibt zwei Arten von Kanälen

  • Push Benachrichtungskanäle (Nur auf Android)
    • General: Für allgemeine Benachrichtigungen, die keine spezielle Kategorisierung benötigen.

    • Camera: Benachrichtigungen, die mit Kameras oder Bildern verknüpft sind (z. B. Snapshot von einer Sicherheitskamera).

    • Location: Benachrichtigungen im Zusammenhang mit Standortaktualisierungen (z. B. Standortänderungen des Geräts).

    • Alert: Dringende Warnungen, die Aufmerksamkeit erfordern (visuell, aber ohne spezifische Audio-Streams).
    • Progress: Für Benachrichtigungen, die den Fortschritt eines Prozesses darstellen (z. B. Updates oder Installationen).

    • Eigene Kanäle, es können auch Kanäle selbst erstellt werden.


Hinweis:

Push Töne werden auf den Medianausgabe Streams ausgegben
Push Töne funktionieren nicht im Lautlosmodus, selbst wenn bei Push Benachrichtung im Channel,
auch bei Bitte nicht stören, melden angehakt ist.
DiesWenn beziehtbitte sichnicht nicht stören angehakt ist lässt nur aufdie dasBenachrichigung Anzeigendann deranzeigen, Benachrichigung,den Ton hört man trotzdem nicht auf den Ton!!

Workaround: Die Lautstärke per Befehl vorher hochstellen kommen wir später zu..
Hier schon mal der Befehl fürs laut stellen des Benachrichtungs Media Stream

data:
      message: command_volume_level
      title: "100"
      data:
        channel: notification_stream
        
        
Als JSON Data für den Service in Node Red

{
    "message": "command_volume_level",
    "data": {
        "command": 100,
        "media_stream": "notification_stream"
    }
}
  • Medien Ausgabe Kanäle für Akustik (Nur Android)
    • alarm_stream: Stelle die Lautstärke für den Alarm-Stream ein.
    • call_stream: Stelle die Lautstärke für den Anruf-Stream ein.
    • dtmf_stream: Stelle die Lautstärke für DTMF-Töne ein.
    • music_stream: Stelle die Lautstärke für den Musik-Stream ein.
    • notification_stream: Stelle die Lautstärke für den Benachrichtigungs-Stream ein.
    • ring_stream: Stelle die Lautstärke für den Klingel-Stream ein.
    • system_stream: Stelle die Lautstärke für den System-Stream ein.
    • Anything else: Die Benachrichtigung wird als normale Benachrichtigung gepostet und der Befehl wird nicht verarbeitet.

Kanäle für Benachrichtungen iOS:

Auf iOS gibt es Keine Kanäle in diesem Sinne wie bei Android. Hier können wir zwischen 3 Kategorien wählen

Die drei Kategorien sind:

  1. notification (Standard)

    • Beschreibung: Dies ist die Standardkategorie. Die Benachrichtigung wird in der Mitteilungszentrale angezeigt, spielt eventuell einen Ton ab (abhängig von den Geräteeinstellungen) und erscheint als Banner.
      Wird keine Category angegeben, wird sowieo notifiction benutzt. Ist also Standard
    • Geeignet für: Allgemeine Benachrichtigungen, die keine besondere Aufmerksamkeit erfordern.
    • Beispiel:
      {
        "message": "Neue Nachricht erhalten.",
        "data": {
          "push": {
            "category": "notification"
          }
        }
      }
      

  2. alarm

    • Beschreibung: Diese Kategorie priorisiert die Benachrichtigung stark. Sie wird auch dann abgespielt, wenn der Nicht stören-Modus aktiv ist, und ein lauter Ton wird abgespielt (vorausgesetzt, die Benachrichtigung hat einen Ton definiert).
    • Geeignet für: Kritische Alarme wie Rauchmelder, Einbruchalarm oder medizinische Warnungen.
    • Beispiel:
      {
        "message": "Rauchmelder-Alarm! Bitte überprüfen!",
        "data": {
          "push": {
            "category": "alarm"
          }
        }
      }
      




  3. silent

    • Beschreibung: Die Benachrichtigung wird still gesendet, ohne Banner, Ton oder Mitteilung in der Mitteilungszentrale. Sie wird nur in Home Assistant verarbeitet.
    • Geeignet für: Hintergrundaufgaben, stille Benachrichtigungen oder Datenübertragungen an Home Assistant.
    • Beispiel:
      {
        "message": "Daten aktualisiert.",
        "data": {
          "push": {
            "category": "silent"
          }
        }
      }
      

Benachrichtung TTS Android only

Um TTS Benachrichtungen zu senden, erstelle wir einen Service call.
Wählen notify bei Domäne aus und service wenn es ein rundruf an alle werden soll notify aus explicit das Gerät.
Über die 3 Punkte erstellen wir die Nachricht

Auswahl_424.png

Quelltext

{
    "message": "TTS",
    "data": {
        "priority": "high",
        "media_stream": "alarm_stream",
        "tts_text": "Rauchmelder Fahrradschuppen Rauch erkannt"
    }
}

Parameter

Parameter Typ Beschreibung Beispiel
message String Der Haupttext der Benachrichtigung, der dem Benutzer angezeigt wird. Hier wird TTS als Befehl ausgewertet und es erscheint keine Benachrichtung, da die TTS einfach abgespielt wird.
"TTS"
data Objekt Zusätzliche Daten und Einstellungen für die Benachrichtigung. Siehe unten.
 priority String Die Wichtigkeit der Benachrichtigung. high sorgt dafür, dass die Benachrichtigung mit hoher Priorität gesendet wird. "high"
 media_stream String Gibt an, welcher Audiokanal für die Benachrichtigung verwendet wird. alarm_stream spielt sie über den Alarmkanal ab. Dieser Kanal ist auch im Silent modus erreichbar und kann auch nicht gemuted werden.
"alarm_stream"
 tts_text String Text, der über Text-to-Speech (TTS) wiedergegeben werden soll. "Rauchmelder Fahrradschuppen Rauch erkannt"

Benachrichtung TTS ios

Eigentlich ist es keine Benachrichtung, aber es passt trotzdem hier her.
Denn iOS unterstützt keine TTS Push Benachrichtung, aber mit einem trick können wir das über die App machen.
Mittels Plugin asu dem HACS Store.

Auswahl_425.png

Dann auf die 3 Punkte und auf Herunterladen klicken.Menü_014.png

Nun die letzte Version auswählen und herunterladen anklicken.

Auswahl_426.png

nachdem das heruntergeladen wurde auf Geräte gehen und auf integration hinzufügen klicken.
Als Suchbgriff brow eingeben und die integration Browser mod auswählen.
Auswahl_427.png
Nun erscheint in der Seitenleiste Browser mod.
Dieses brauchen wir aber erst auf dem iPAD. (Es sei denn Ihr seid schon auf dem iPAD, dann machen wir da später weiter.
Jetzt muss noch die configration.yaml angepasst werden.

Wir fügen folgende abschnitte hinzu.
Solltet ihr den google translate teil schon haben, weil ihr den für was anderes konfiguriert habt, könnt ihr den natürlich weg lassen.

...
# Text to speech
tts:
  - platform: google_translate
    language: de
...
#tatsächlich nur den namen, nichts mehr
browser_mod:
...

Danach Home Assistant neustarten (yaml neuladen reicht nicht)

Nun auf dem Gerät in den Reiter Browsermod gehen
Den haken zum Registrieren rein packen

IMG_0147.PNG

Nun geben wir unserem gerät hinter der ID Namen zum identifizieren.

IMG_0148.PNG

Nun nach dem Speichern wir der link zu den Profilen freigeschaltet, da drauf klicken nach unten scrollen

IMG_0149.PNG

Nun das Auto trennen raus nehmen.

IMG_0150.PNG

Ein TTS Objekt in Node RED erstellen

Ein call service erstellen domain tts , service google translate, auswählen und als entity unser ipad (die Browser ID)

grafik.png

ALs json data haben wir nur Message und sprache

{
    "message": "Rauchmelder {{ global.rauchmeldertext }} Rauch erkannt",
    "language": "de"
}

grafik.png

 

Benachrichtung mit Aktionen

Man kann auch Benachrichtungen mit Buttons erstellen, die Aktionen ausführen wie Seiten öffnen oder variablen ändern in node red.

Dazu legen wir uns eine Benachrichtigung an mit zwei Buttons.
Dazu wieder einen call service reinziehen und vom typ notify auswählen.
Dann unter service notify für alle Geräte oder das Gerät an das gesendet werden soll, explicit auswählen.
Dann auf die 3 Punkte um unseren Inhalt der Benachrichtung zu definieren

Auswahl_424.png

Der Quelltext

{
    "message": "Rauchmelder-Alarm! Bitte überprüfen!",
    "data": {
        "channel": "Alarm",
        "priority": "high",
        "ttl": 0,
        "actions": [
            {
                "action": "SNOOZE",
                "title": "Rauchmelder Stoppen",
                "icon": "mdi:bell-alert"
            },
            {
                "action": "IRGENDWAS",
                "title": "IRGENDWAS Stoppen",
                "icon": "mdi:bell-alert"
            }
        ]
    }
}

Beschreibung der Parameter

Parameter Typ Beschreibung Beispiel
message String Die Hauptnachricht der Benachrichtigung, die dem Benutzer angezeigt wird. "Rauchmelder-Alarm! Bitte überprüfen!"
data Objekt Enthält zusätzliche Informationen und Konfigurationen für die Benachrichtigung. Siehe unten.
 channel String Der Benachrichtigungskanal, der für Android verwendet wird. Kanäle steuern Benachrichtigungseigenschaften wie Ton oder Priorität. "Alarm"
 priority String

Die PrioritätProperty derpriority Benachrichtigung.legt fest, wie wichtig die Notification vom Betriebssystem eingestuft wird und beeinflusst vor allem auf Android, ob sie als Heads‑Up‑Popup aufplatzt oder eher still im Hintergrund landet.

  • highpriority: "high" sorgt fürkurze eineHeads‑Up‑Notification dringendeoben Benachrichtigungam Bildschirm, mit Ton und(vorausgesetzt Pop-upder Kanal/Stream ist entsprechend konfiguriert)

  • priority: "default" ⇒ normale Mitteilung ohne Popup

  • priority: "low" oder "min" ⇒ möglichst unaufdringlich (sofernkein aktiviert).Ton, kein Banner)

Tipp: Für Alarm‑ oder TTS‑Nachrichten immer "high" verwenden, damit die Nachricht wirklich direkt auffällt.

"high"
 ttl Integer Time-to-ttl steht für Time To Live (TTL),und bestimmt, wie lange dieeine BenachrichtigungNotification auf dem Server zwischengespeichert und immer wieder zugestellt wird, falls das Gerät gerade offline ist.
  • ttl: 0 → Nachricht wird sofort zugestellt und nicht zwischengespeichert.

  • ttl: 3600 → Nachricht bleibt bis zu 1 Stunde aktiv bleibt,und wird wiederholt, bis sie zugestellt oder die Stunde abgelaufen ist.

Merke: Ein hoher ttl‑Wert sorgt dafür, dass du auch dann noch benachrichtigt wirst, wenn siedein nichtHandy zugestellt werden kann. 0 bedeutetgerade keine Ablaufzeit.Verbindung hatte.

0
 actions Array Eine Liste von Aktionen, die in der Benachrichtigung angezeigt werden. SieheSIehe Aktionenjson unten.Data
 action String Der interne Schlüssel für die Aktion, der in Automatisierungen verwendet wird, wenn die Schaltfläche gedrückt wird.
Das ist auch der Wert den wir dann auswerten.
"SNOOZE"
 title String Der Text des Button, der in der Benachrichtigung angezeigt wird. "Rauchmelder Stoppen"
 icon String (Optional) Ein Icon, das mit der Aktion verknüpft ist. iOS unterstützt dies, aber Android zeigt normalerweise keine Icons an. "mdi:bell-alert"

ttl steht für Time To Live und bestimmt, wie lange eine Notification auf dem Server zwischengespeichert und immer wieder zugestellt wird, falls das Gerät gerade offline ist.

Notfication, stehen lassen nicht wegwischbar, oder wegwischbar, bei drauf tippen nicht auslösen:

Manchmal möchte man das die Notification ein Button gedrückt werden muss, mit drauf tippen soll auch nichts auseglöst werden.
Sondern nur beim Button

Erklärung der Optionen:
  • sticky: true: Die Benachrichtigung bleibt auf dem Bildschirm, bis eine Aktion ausgeführt wird oder sie manuell entfernt wird.

  • persistent: true: Die Benachrichtigung kann nicht weggewischt werden, sondern verschwindet nur, wenn eine Aktion (wie Stop) ausgeführt wird.

Verhalten:
  • Mit sticky allein: Die Benachrichtigung bleibt bestehen, aber der Benutzer kann sie durch Wischen entfernen.

  • Mit sticky + persistent: Die Benachrichtigung kann nur durch eine Aktion (z. B. den Stop-Button) entfernt werden und ist nicht wegwischbar.

Was solltest du verwenden?
  • Wenn es dir wichtig ist, dass die Benachrichtigung immer präsent bleibt, bis der Benutzer aktiv darauf reagiert, ist persistent: true ideal.

  • Falls es dem Benutzer erlaubt sein soll, die Benachrichtigung durch Wischen zu entfernen, dann verwende nur sticky: true.

Beides gibt dir Flexibilität, je nachdem, wie wichtig die Benachrichtigung in deinem Fall ist.

Android:
  • sticky: Funktioniert einwandfrei, da Android-native Benachrichtigungen standardmäßig Sticky-Funktionalitäten unterstützen.

  • persistent: Funktioniert ebenfalls, da Android es ermöglicht, Benachrichtigungen unentfernbar zu machen.


iOS:
  • sticky: Nicht direkt unterstützt, da iOS keine Sticky-Benachrichtigungen in der gleichen Weise wie Android bietet. Auf iOS werden Benachrichtigungen entweder im Benachrichtigungscenter angezeigt oder verschwinden nach einer festgelegten Zeit, wenn sie nicht persistent sind.

  • persistent: Wird unterstützt, da die Home Assistant Companion App dies auf iOS nutzt, um kritische Benachrichtigungen (wie Rauchmelder) dauerhaft sichtbar zu halten, bis der Benutzer darauf reagiert.

Im Beispiel Quelltext, wir lassen sticky für Android einfach stehen.:

{
    "message": "Rauchmelder-Alarm! Bitte überprüfen!",
    "data": {
        "channel": "Alarm",
        "priority": "high",
        "ttl": 0,
        "sticky": true,
        "persistent": true,
        "actions": [
            {
                "action": "SNOOZE",
                "title": "Rauchmelder Stoppen",
                "icon": "mdi:bell-alert"
            },
            {
                "action": "IRGENDWAS",
                "title": "IRGENDWAS Stoppen",
                "icon": "mdi:bell-alert"
            }
        ]
    }
}
Das die Home Assistant App nicht geöffnet wird, wenn die Nachricht angeklickt wird.

Für iOS wird URL verwendet mit dem Wert null,
Für Android wird clickAction mit noAction verwendet

{
    "message": "Rauchmelder-Alarm! Bitte überprüfen!",
    "data": {
        "channel": "Alarm",
        "priority": "high",
        "ttl": 0,
        "sticky": true,
        "persistent": true,
        "url": null,
        "clickAction": "noAction",
        "actions": [
            {
                "action": "SNOOZE",
                "title": "Rauchmelder Stoppen"
            },
            {
                "action": "IRGENDWAS",
                "title": "IRGENDWAS Stoppen"
            }
        ]
    }
}

NUR iOS Push Benachrichtung auch anzeigen, wenn die Home assistant APP im vordergrund also geöffnet ist:

Das Feld presentation_options betrifft nur die iOS-App und steuert, wie Notifications angezeigt werden, wenn die Companion‑App im Vordergrund läuft. Standardmäßig blendet iOS eingehende Pushes aus, sobald die App aktiv ist – mit presentation_options kannst du das ändern.

Mögliche Werte (als Array oder einzelner String):

  • alert → zeigt ein Banner/Popup

  • sound → spielt den definierten Ton ab

  • badge → aktualisiert das App‑Icon‑Badge

Du kannst mehrere Optionen kombinieren, z. B.:

{
  "message": "Rauchmelder-Alarm!",
  "data": {
    "push": {
      "category": "alarm",
      "presentation_options": ["alert","sound"]
    }
  }
}