# 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.

<div id="bkmrk-hinweis%3A-push-t%C3%B6ne-f" style="border: 1px solid #ffc107; background-color: #fff3cd; padding: 15px; margin-bottom: 20px;">**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.  
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..  
</div>```
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:

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"
            }
          }
        }
        
        ```
        
        Siehe auch Tabelle Beschreibung der Parameter [hier](#bkmrk--11)

### 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](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/S9W9EWvsM1EAzlsu-auswahl-424.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/S9W9EWvsM1EAzlsu-auswahl-424.png)

Quelltext

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

Parameter

<table id="bkmrk-parameter-typ-beschr" style="width: 100%;"><thead><tr><th style="width: 15.57%;">Parameter</th><th style="width: 9.27903%;">Typ</th><th style="width: 49.5745%;">Beschreibung</th><th style="width: 25.5908%;">Beispiel</th></tr></thead><tbody><tr><td style="width: 15.57%;">`message`</td><td style="width: 9.27903%;">String</td><td style="width: 49.5745%;">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.  
</td><td style="width: 25.5908%;">`"TTS"`</td></tr><tr><td style="width: 15.57%;">`data`</td><td style="width: 9.27903%;">Objekt</td><td style="width: 49.5745%;">Zusätzliche Daten und Einstellungen für die Benachrichtigung.</td><td style="width: 25.5908%;">Siehe unten.</td></tr><tr><td style="width: 15.57%;"> `priority`</td><td style="width: 9.27903%;">String</td><td style="width: 49.5745%;">Die Wichtigkeit der Benachrichtigung. `high` sorgt dafür, dass die Benachrichtigung mit hoher Priorität gesendet wird.</td><td style="width: 25.5908%;">`"high"`</td></tr><tr><td style="width: 15.57%;"> `media_stream`</td><td style="width: 9.27903%;">String</td><td style="width: 49.5745%;">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.  
</td><td style="width: 25.5908%;">`"alarm_stream"`</td></tr><tr><td style="width: 15.57%;"> `tts_text`</td><td style="width: 9.27903%;">String</td><td style="width: 49.5745%;">Text, der über Text-to-Speech (TTS) wiedergegeben werden soll.</td><td style="width: 25.5908%;">`"Rauchmelder Fahrradschuppen Rauch erkannt"`</td></tr></tbody></table>

### 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](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/nmdzrXnge6CG364L-auswahl-425.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/nmdzrXnge6CG364L-auswahl-425.png)

Dann auf die 3 Punkte und auf Herunterladen klicken.[![Menü_014.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/Gmm2F51NbaDDsjai-menu-014.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/Gmm2F51NbaDDsjai-menu-014.png)

Nun die letzte Version auswählen und herunterladen anklicken.

[![Auswahl_426.png](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/7LGFisgH5wuk3jSF-auswahl-426.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/7LGFisgH5wuk3jSF-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](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/lihViQ8yk0ZWnKmf-auswahl-427.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/lihViQ8yk0ZWnKmf-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](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/Jo6X08mCMOWhNNpn-img-0147.PNG)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/Jo6X08mCMOWhNNpn-img-0147.PNG)

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

[![IMG_0148.PNG](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/UFL2wyscFOoPPh90-img-0148.PNG)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/UFL2wyscFOoPPh90-img-0148.PNG)

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

[![IMG_0149.PNG](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/FcnPjAEGTbNWjVpO-img-0149.PNG)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/FcnPjAEGTbNWjVpO-img-0149.PNG)

Nun das Auto trennen raus nehmen.

[![IMG_0150.PNG](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/JJLqcFz9fgWfmiGT-img-0150.PNG)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/JJLqcFz9fgWfmiGT-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](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/N5neKE6OEwxHAYsy-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/N5neKE6OEwxHAYsy-grafik.png)

ALs json data haben wir nur Message und sprache

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

[![grafik.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/GuGrIvYXhneHUb6C-grafik.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/GuGrIvYXhneHUb6C-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](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/scaled-1680-/S9W9EWvsM1EAzlsu-auswahl-424.png)](https://wiki.hacker-net.de/uploads/images/gallery/2024-11/S9W9EWvsM1EAzlsu-auswahl-424.png)

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"
            }
        ]
    }
}
```

<span id="bkmrk--11"></span>

##### Beschreibung der Parameter:

<table id="bkmrk-parameter-typ-beschr-0" style="width: 100%;"><thead><tr><th style="width: 12.4864%;">Parameter</th><th style="width: 10.6241%;">Typ</th><th style="width: 54.4038%;">Beschreibung</th><th style="width: 22.5002%;">Beispiel</th></tr></thead><tbody><tr><td class="align-left" style="width: 12.4864%;">`message`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">Die Hauptnachricht der Benachrichtigung, die dem Benutzer angezeigt wird.</td><td style="width: 22.5002%;">`"Rauchmelder-Alarm! Bitte überprüfen!"`</td></tr><tr><td class="align-left" style="width: 12.4864%;">`data`</td><td style="width: 10.6241%;">Objekt</td><td style="width: 54.4038%;">Enthält zusätzliche Informationen und Konfigurationen für die Benachrichtigung.</td><td style="width: 22.5002%;">Siehe unten.</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `channel`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">Der Benachrichtigungskanal, der für Android verwendet wird. Kanäle steuern Benachrichtigungseigenschaften wie Ton oder Priorität.</td><td style="width: 22.5002%;">`"Alarm"`</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `priority`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">**`priority`** ist ein älteres, legacy‑Feld, das vor allem auf Android &lt; 8.0 (NotificationCompat) greift.

Auf neueren Geräten (ab Android 8.0) wird `priority` zwar noch akzeptiert, **empfohlen** wird aber, den Kanal per `importance` korrekt zu konfigurieren und `priority` nur als Fallback zu verwenden.

Die Property **`priority`** 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.

- **`priority: "high"`** ⇒ kurze Heads‑Up‑Notification oben am Bildschirm, mit Ton (vorausgesetzt der Kanal/Stream ist entsprechend konfiguriert)
- **`priority: "default"`** ⇒ normale Mitteilung ohne Popup
- **`priority: "low"`** oder **`"min"`** ⇒ möglichst unaufdringlich (kein Ton, kein Banner)

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

</td><td style="width: 22.5002%;">`"high"`</td></tr><tr><td style="width: 12.4864%;">importance</td><td style="width: 10.6241%;">String  
</td><td style="width: 54.4038%;">Auf Android‑Geräten (ab Version 8.0+) wird die Wichtigkeit eines Notification‑**Kanals** über das `importance`‑Feld gesteuert. Die möglichen Werte sind:

- `min`  
    - `low`  
    - `default`  
    - `high`  
    - `max`

Die Beschreibung der Werte Siehe Tabelle importance

</td><td style="width: 22.5002%;">  
</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `ttl`</td><td style="width: 10.6241%;">Integer</td><td style="width: 54.4038%;">**`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.  
- **`ttl: 0`** → Nachricht wird sofort zugestellt und **nicht** zwischengespeichert.
- **`ttl: 3600`** → Nachricht bleibt bis zu 1 Stunde aktiv 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 dein Handy gerade keine Verbindung hatte.

</td><td style="width: 22.5002%;">`0`</td></tr><tr><td style="width: 12.4864%;">`push`</td><td style="width: 10.6241%;">Array  
</td><td style="width: 54.4038%;">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  
</td><td style="width: 22.5002%;">  
</td></tr><tr><td style="width: 12.4864%;">`push.category`</td><td style="width: 10.6241%;">String  
</td><td style="width: 54.4038%;">Auf iOS gibt es kein Äquivalent zu den Android‑Feldern `priority` oder `importance` – die werden von der Companion App schlicht ignoriert. Stattdessen steuerst du das Verhalten über zwei iOS‑spezifische Felder in deinem Payload:

**`push.category`**

- Legt fest, in welche Kategorie (notification, alarm, silent) die Notification fällt.  
      
    `alarm` spielt deinen definierten Ton auch im „Nicht stören“ ab.

Es werden folgende Werte unterstützt:

- **`notification`** (Standard)
    
    
    - Anzeige: Banner in der Mitteilungszentrale und auf dem Sperrbildschirm
    - Ton: Spielt einen Ton ab, sofern das Gerät nicht stumm geschaltet ist und der User es erlaubt
    - Einsatz: Allgemeine Hinweise, Status‑Updates, alles, was keine besondere Dringlichkeit hat
- **`alarm`**
    
    
    - Anzeige: Banner und Mitteilung wie bei „notification“, **selbst im „Nicht stören“‑Modus**
    - Ton: Laut und durchdringend, auch wenn das Gerät stumm ist oder DND aktiv
    - Einsatz: Kritische Warnungen (Rauchmelder, Einbruch, medizinische Notfälle), bei denen man sofortige Aufmerksamkeit benötigt
- **`silent`**
    
    
    - Anzeige: **Kein** sichtbarer Banner, **kein** Ton, keine Badges
    - Verarbeitung: Wird nur intern von der Companion App entgegengenommen und in Home Assistant verarbeitet
    - Einsatz: Hintergrund‑Signale, Status‑Synchronisation, Updates ohne User‑Unterbrechung (z. B. Daten‑Refresh)

</td><td style="width: 22.5002%;">"data": {  
 "push": {  
 "category": "alarm"  
 }  
}</td></tr><tr><td style="width: 12.4864%;">`push.interruption_level`</td><td style="width: 10.6241%;">String  
</td><td style="width: 54.4038%;">- **`notification`** (Standard)
    
    
    - Anzeige: Banner in der Mitteilungszentrale und auf dem Sperrbildschirm
    - Ton: Spielt einen Ton ab, sofern das Gerät nicht stumm geschaltet ist und der User es erlaubt
    - Einsatz: Allgemeine Hinweise, Status‑Updates, alles, was keine besondere Dringlichkeit hat
- **`alarm`**
    
    
    - Anzeige: Banner und Mitteilung wie bei „notification“, **selbst im „Nicht stören“‑Modus**
    - Ton: Laut und durchdringend, auch wenn das Gerät stumm ist oder DND aktiv
    - Einsatz: Kritische Warnungen (Rauchmelder, Einbruch, medizinische Notfälle), bei denen man sofortige Aufmerksamkeit benötigt
- **`silent`**
    
    
    - Anzeige: **Kein** sichtbarer Banner, **kein** Ton, keine Badges
    - Verarbeitung: Wird nur intern von der Companion App entgegengenommen und in Home Assistant verarbeitet
    - Einsatz: Hintergrund‑Signale, Status‑Synchronisation, Updates ohne User‑Unterbrechung (z. B. Daten‑Refresh)

</td><td style="width: 22.5002%;"> "data": {  
 "push": {  
 "category": "alarm",  
 "interruption\_level": "time-sensitive"  
 }  
}  
</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `actions`</td><td style="width: 10.6241%;">Array</td><td style="width: 54.4038%;">Eine Liste von Aktionen, die in der Benachrichtigung angezeigt werden.</td><td style="width: 22.5002%;">SIehe json Data  
</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `action`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">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.  
</td><td style="width: 22.5002%;">`"SNOOZE"`</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `title`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">Der Text des Button, der in der Benachrichtigung angezeigt wird.</td><td style="width: 22.5002%;">`"Rauchmelder Stoppen"`</td></tr><tr><td class="align-left" style="width: 12.4864%;"> `icon`</td><td style="width: 10.6241%;">String</td><td style="width: 54.4038%;">(Optional) Ein Icon, das mit der Aktion verknüpft ist. iOS unterstützt dies, aber Android zeigt normalerweise keine Icons an.</td><td style="width: 22.5002%;">`"mdi:bell-alert"`</td></tr></tbody></table>

##### Tabelle importance Werte und unterschied zu Priority

<table class="min-w-full" data-end="1301" data-start="172" id="bkmrk-stufe-konstante-verh" style="width: 100%;"><thead data-end="333" data-start="172"><tr data-end="333" data-start="172"><th data-end="185" data-start="172" style="width: 8.82002%;">Stufe</th><th data-end="217" data-start="185" style="width: 20.2622%;">Konstante</th><th data-end="288" data-start="217" style="width: 47.3174%;">Verhalten</th><th data-end="333" data-start="288" style="width: 23.6004%;">Entspricht (Android 7.x priority)</th></tr></thead><tbody data-end="1301" data-start="496"><tr data-end="657" data-start="496"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="509" data-start="496" style="width: 8.82002%;">**None**</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="541" data-start="509" style="width: 20.2622%;">`IMPORTANCE_NONE (0)`</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)] min-w-[calc(var(--thread-content-max-width)/3)]" data-end="612" data-start="541" style="width: 47.3174%;">Keine Anzeige, kein Ton, nicht im Benachrichtigungsbereich sichtbar</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="657" data-start="612" style="width: 23.6004%;">(kein Äquivalent)</td></tr><tr data-end="818" data-start="658"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="671" data-start="658" style="width: 8.82002%;">**Min**</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="703" data-start="671" style="width: 20.2622%;">`IMPORTANCE_MIN (1)`</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)] min-w-[calc(var(--thread-content-max-width)/3)]" data-end="773" data-start="703" style="width: 47.3174%;">Kein Ton, kein Icon, nicht im Status‑Bar‑Bereich</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="818" data-start="773" style="width: 23.6004%;">`PRIORITY_MIN`</td></tr><tr data-end="979" data-start="819"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="832" data-start="819" style="width: 8.82002%;">**Low**</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="864" data-start="832" style="width: 20.2622%;">`IMPORTANCE_LOW (2)`</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)] min-w-[calc(var(--thread-content-max-width)/3)]" data-end="934" data-start="864" style="width: 47.3174%;">Kein Ton, nur in der Benachrichtigungs‑Leiste</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="979" data-start="934" style="width: 23.6004%;">`PRIORITY_LOW`</td></tr><tr data-end="1140" data-start="980"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="993" data-start="980" style="width: 8.82002%;">**Default**</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1025" data-start="993" style="width: 20.2622%;">`IMPORTANCE_DEFAULT (3)`</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1095" data-start="1025" style="width: 47.3174%;">Ton, erscheint in Leiste</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1140" data-start="1095" style="width: 23.6004%;">`PRIORITY_DEFAULT`</td></tr><tr data-end="1301" data-start="1141"><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1154" data-start="1141" style="width: 8.82002%;">**High**</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1186" data-start="1154" style="width: 20.2622%;">`IMPORTANCE_HIGH (4)`</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1256" data-start="1186" style="width: 47.3174%;">Ton + Heads‑Up‑Popup (aufklappbar)</td><td class="max-w-[calc(var(--thread-content-max-width)*2/3)]" data-end="1301" data-start="1256" style="width: 23.6004%;">`PRIORITY_HIGH` / `PRIORITY_MAX`</td></tr></tbody></table>

> **Kurz erklärt:**
> 
> - `IMPORTANCE_HIGH` erzeugt ein kurzes Popup (Heads‑Up) und Ton.
> - `IMPORTANCE_DEFAULT` spielt Ton, aber ohne Popup.
> - `IMPORTANCE_LOW`/`MIN` sind ruhig, ohne Ton bzw. ohne Leisten‑Icon.
> - `IMPORTANCE_NONE` unterdrückt die Notification komplett. <span class="" data-state="closed"><span class="ms-1 inline-flex max-w-full items-center relative top-[-0.094rem] animate-[show_150ms_ease-in]">[<span class="relative start-0 bottom-0 flex h-full w-full items-center"><span class="flex h-4 w-full items-center justify-between overflow-hidden"><span class="max-w-full grow truncate overflow-hidden text-center">Android Developers</span></span></span>](https://developer.android.com/develop/ui/views/notifications/channels?utm_source=chatgpt.com)</span></span><span class="ms-1 inline-flex max-w-full items-center relative top-[-0.094rem] animate-[show_150ms_ease-in]">[<span class="relative start-0 bottom-0 flex h-full w-full items-center"><span class="flex h-4 w-full items-center justify-between overflow-hidden"><span class="max-w-full grow truncate overflow-hidden text-center">Android Developers</span></span></span>](https://developer.android.com/develop/ui/views/notifications?utm_source=chatgpt.com)</span>

**Unterschied zu `priority`:**

- `priority` ist 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 (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.  
    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:

- **`tag`**Wird 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

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/OL9JhnU4yvrECTEJ-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/OL9JhnU4yvrECTEJ-image.png)

Dann eine Switch Node zum auswerten

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/EjZXfc8YUWLUmHth-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/EjZXfc8YUWLUmHth-image.png)

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.

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/e9gw3Jj6JKUGjeOd-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/e9gw3Jj6JKUGjeOd-image.png)

Die Eigenschaft der Events Node

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/QUdRLRWGTL8CEkfC-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/QUdRLRWGTL8CEkfC-image.png)

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

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/8U6D9YYJ3hLi2bnQ-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/8U6D9YYJ3hLi2bnQ-image.png)

  
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.

Beispiel beim Button senden

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/i131U2tzYqHHLJOA-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/i131U2tzYqHHLJOA-image.png)

Und dann beim Button empfangen

[![image.png](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/scaled-1680-/BpvC0pKDoX0EIXh4-image.png)](https://wiki.hacker-net.de/uploads/images/gallery/2025-04/BpvC0pKDoX0EIXh4-image.png)

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"]
    }
  }
}

```