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.
- General: Für allgemeine Benachrichtigungen, die keine spezielle Kategorisierung benötigen.
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.
Wenn bitte nicht nicht stören angehakt ist lässt nur die Benachrichigung dann anzeigen, den Ton hört man trotzdem nicht!
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.
- alarm_stream_max: Stelle die Lautstärke für den Alarm-Stream TTS ein
(Aber nur wenn die MESSAGE TTS ist (TextToSpeech), bei allen anderen wirds ignoriert. - 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:
-
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" } } }
- 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.
-
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" } } }
- Beschreibung: Diese Kategorie priorisiert die Benachrichtigung stark. Sie wird auch dann abgespielt, wenn der
-
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" } } }Siehe auch Tabelle Beschreibung der Parameter hier
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
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.
Dann auf die 3 Punkte und auf Herunterladen klicken.
Nun die letzte Version auswählen und herunterladen anklicken.
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.
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
Nun geben wir unserem gerät hinter der ID Namen zum identifizieren.
Nun nach dem Speichern wir der link zu den Profilen freigeschaltet, da drauf klicken nach unten scrollen
Nun das Auto trennen raus nehmen.
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)
ALs json data haben wir nur Message und sprache
{
"message": "Rauchmelder {{ global.rauchmeldertext }} Rauch erkannt",
"language": "de"
}
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
Der Quelltext
{
"message": "Rauchmelder-Alarm! Bitte überprüfen!",
"data": {
"channel": "Alarm",
"priority": "high",
"importance": "high",
"ttl": 0,
"push":{
"category": "alarm",
"interruption_level": "time-sensitive"
},
"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 |
Auf neueren Geräten (ab Android 8.0) wird Die Property
Tipp: Für Alarm‑ oder TTS‑Nachrichten immer |
"high" |
| importance | String |
Auf Android‑Geräten (ab Version 8.0+) wird die Wichtigkeit eines Notification‑Kanals über das
Die Beschreibung der Werte Siehe Tabelle importance |
|
ttl |
Integer | 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.
Merke: Ein hoher |
0 |
push |
Array |
Push ist ein Array für iOS, zum Verständnis sind bei den nächsten beiden Parametern das Wort push davor, damit man man weis wo zu es gehört. Der Typ String bezieht sich auf das Element in push |
|
push.category |
String |
Auf iOS gibt es kein Äquivalent zu den Android‑Feldern
Es werden folgende Werte unterstützt:
|
"data": { "push": { "category": "alarm" } } |
push.interruption_level |
String |
|
"data": { "push": { "category": "alarm", "interruption_level": "time-sensitive" } } |
actions |
Array | Eine Liste von Aktionen, die in der Benachrichtigung angezeigt werden. | SIehe json 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" |
Tabelle importance Werte und unterschied zu Priority
| Stufe | Konstante | Verhalten | Entspricht (Android 7.x priority) |
|---|---|---|---|
| None | IMPORTANCE_NONE (0) |
Keine Anzeige, kein Ton, nicht im Benachrichtigungsbereich sichtbar | (kein Äquivalent) |
| Min | IMPORTANCE_MIN (1) |
Kein Ton, kein Icon, nicht im Status‑Bar‑Bereich | PRIORITY_MIN |
| Low | IMPORTANCE_LOW (2) |
Kein Ton, nur in der Benachrichtigungs‑Leiste | PRIORITY_LOW |
| Default | IMPORTANCE_DEFAULT (3) |
Ton, erscheint in Leiste | PRIORITY_DEFAULT |
| High | IMPORTANCE_HIGH (4) |
Ton + Heads‑Up‑Popup (aufklappbar) | PRIORITY_HIGH / PRIORITY_MAX |
Kurz erklärt:
IMPORTANCE_HIGHerzeugt ein kurzes Popup (Heads‑Up) und Ton.
IMPORTANCE_DEFAULTspielt Ton, aber ohne Popup.
IMPORTANCE_LOW/MINsind ruhig, ohne Ton bzw. ohne Leisten‑Icon.
IMPORTANCE_NONEunterdrückt die Notification komplett. Android DevelopersAndroid Developers
Unterschied zu priority:
-
priorityist der ältere Parameter (Android ≤7.x) und steuert ebenfalls Popup vs. stille Notification.
Am besten beide Parameter definieren priority und importance um maximale Kompatibilität zu gewährleisten
Notfication, stehen lassen, nicht 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 (wieStop) ausgeführt wird.
Verhalten:
-
Mit
stickyallein: Die Benachrichtigung bleibt bestehen, aber der Benutzer kann sie durch Wischen entfernen. -
Mit
sticky+persistent: Die Benachrichtigung kann nur durch eine Aktion (z. B. denStop-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: trueideal. -
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.
Es muss aber dazu ein Tag angeben werden siehe ioS und Android weiter unten
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.
iOS und Android:
tagWird benötigt um die Nachricht eine ID zu geben, denn mit der ID kann die Nachricht angesprochen werden, zum
Beispiel um sie Programm technisch zu löschen, denn auf dem Smartphone lässt Sie sich nicht mehr löschen.
Auch wenn der Button ausgelöst wird, bleibt die Nachricht bestehen
Wichtig! Wird der Tag vergessen bleibt die Nachricht wegwischbar!
Im Beispiel Quelltext, wir lassen sticky für Android einfach stehen.:
{
"message": "Rauchmelder-Alarm! Bitte überprüfen!",
"data": {
"channel": "Alarm",
"priority": "high",
"importance":"high",
"ttl": 0,
"sticky": true,
"persistent": true,
"tag": "android_phone_anna",
"actions": [
{
"action": "SNOOZE",
"title": "Rauchmelder Stoppen",
"icon": "mdi:bell-alert"
},
{
"action": "IRGENDWAS",
"title": "IRGENDWAS Stoppen",
"icon": "mdi:bell-alert"
}
]
}
}
Den Button druck auswerten
Dazu brauchen wir ein Alle Events Node
Dann eine Switch Node zum auswerten
Nun können wir die Events node mit der Switch node verbinden.
Der Oberste Ausgang der Switchnode wird true, also wenn der button gedrückt wurde.
Die Eigenschaft der Events Node
Die Eigenschaft der Switch node
Namen vergeben
Wir wollen msg.payload.event.action auswerten, den Button
Und nun die Werte als string rein.
Über hinzufügen können mehrer Werte angegeben werden, jeder ausgang ist für den jeweiligen Wert.
Hier snooze PIN1 IRGENDWAS PIN2
Sollten mehrer buttons vorhanden zein können die pin zwei und soweiter für weitere Buttons benutzt werden.
Tipp, wenn auf verschiednenen Geräten Buttons Ausgewertet werden sollen, die in verschiedenen Flows drin sind.
Macht es sinn die Werte der Buttons unique für jedes Gerät zu machen. Sprich beim Send button den Button unique definieren und beim Auswerten diesen wieder zu nehmen.
Bei den anderen Flows würde man dann andere namen nehmen.
fertig
Nicht weg wischbare Nachricht über den Tag wieder löschen.
message, der Befehl das eine Notification entfernt werden soll, hier "clear_notification"
Als data muss nur der tag der zu löschenden Notification übergeben werden
Hier : "tag": "android_phone_anna"
{
"message": "clear_notification",
"data": {
"tag": "android_phone_anna"
}
}
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,
"tag": "android_phone_anna",
"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"]
}
}
}











