Push-Benachrichtigung

Push-Benachrichtigungen werden dort eingesetzt, wo es darauf ankommt, automatisch und möglichst zeitnah über Ereignisse informiert zu werden. So möchte man z. B. bei einem Einbruchalarm sofort über dieses Vorkommnis benachrichtigt werden (siehe Beispielanwendung ESP32MQTTAlarmSystem).

Der RadioShuttle MQTT-Push-Server macht genau das. Überwachte MQTT-Topics werden unmittelbar auf ein Mobilgerät weitergeleitet, dort wird die Nachricht dann zusammen mit einen Tonsignal als Push-Benachrichtigung angezeigt.

Bei Push-Benachrichtigungen spielen verschiedene Komponeten zusammen:

Push-Dienste von Apple und Google

Für Mobilgeräte bieten die Hersteller sogenannte Push-Dienste an. Damit werden Push-Benachrichtigungen automatisch unmittelbar auf dem Mobilgerät angezeigt. Sollte kein Empfang vorhanden sein, wird die Nachricht übermittelt, sobald das Mobilgerät wieder erreichbar ist. Die Push-Dienste sind das Bindeglied zwischen der RadioShuttle-App sowie dem RadioShuttle MQTT-Push-Server.

RadioShuttle-App

Die App verwaltet die Einstellungen für die Push-Benachrichtigungen. Dort sind auch alle Push-Benachrichtigungen einsehbar. Nach einmaligem Einrichten werden automatisch Push-Benachrichtigungen empfangen, auch wenn die App nicht gestartet ist. Die App ist das Bindeglied zwischen dem RadioShuttle MQTT-Push-Server sowie den Push-Diensten von Apple bzw. Google. Die App bietet folgende Funktionen:

  • Automatische Anzeige der Push-Benachrichtigungen per Meldung mit Ton auf dem Mobilgerät (auch wenn die App nicht aktiv bzw. der Bildschirm gesperrt ist)
  • Benachrichtigung innerhalb von Sekunden
  • Verwaltung des Benutzerkontos (MQTT-Server-Adresse mit Benutzername und Kennwort)
  • Verwaltung von MQTT-Topics, welche eine Push-Benachrichtigung (Alarm) auslösen sollen. Für einzelne Topics kann die Push-Benachrichtigung mit Ton aktiviert/deaktiviert werden
  • Mehrere Anwender können ein identisches Konto verwenden. Beispiel: Mutter, Vater, Kind. Alle nutzen automatisch die identischen Einstellungen. Alle werden gleichzeitig benachrichtigt
  • Eine App kann mehrere MQTT-Konten verwenden. Beispiel: Wohnhaus in München, Ferienhaus am Starnberger See, Geschäftsbüro in Freising
  • Meldungen der letzten 30 Tage können eingesehen werden

Die RadioShuttle-App ist für iOS und Android erhältlich und kann aus dem Apple App Store bzw. Google Play Store kostenlos heruntergeladen werden. Der Quelltext der App ist Open-Source und kann für Projekte/Lösungen angepasst und als eigene App veröffentlicht werden.

MQTT-Server (Broker)

Der MQTT-Server verwaltet Nachrichten für ein Benutzerkonto mit den registrierten Topics. Er ist sozusagen das Bindeglied zwischen den entfernten Knoten bzw. Sensoren und dem Push-Server.

MQTT-Push-ServeR

Der RadioShuttle MQTT-Push-Server ist das Bindeglied zwischen dem MQTT-Server, der mobilen App und den Push-Benachrichtigungen, die über Google bzw. Apple verschickt werden. Der Push-Server selbst besitzt keine eigenen Benutzerkonten, sondern meldet sich beim MQTT-Server stellvertretend für den Anwender an und überwacht Nachrichten von Topics, welche in Push-Benachrichtigungen gewandelt werden sollen.

Die Verwendung des öffentlichen Push-Servers (push.radioshuttle.de) ist für RadioShuttle-Lizenznehmer, also Kunden eines RadioShuttle-Boards (aktuell ECO Power oder LongRa), bis zu drei Mobilgeräten und drei verschiedenen Konten kostenlos.

Der MQTT-Push-Server (Java-Programm) kann von RadioShuttle-Lizenznehmern auf einer eigener Serverhardware installiert werden (Raspberry Pi, Linux, UNIX, Windows, Mac o. ä.). Hierfür sind Entwickler-Push-Zertifikate von Apple bzw. Google erforderlich.

Die uneingeschränkte kommerzielle Nutzung der RadioShuttle MQTT-Push-Server-Software für den Betrieb auf eigenen Servern ist für eine jährliche Softwaremiete mit enthaltenem Support verfügbar. Der in Java verfasste Quelltext des Push-Servers steht damit zur Verfügung (Vertraulichkeitsvereinbarung vorausgesetzt).

Der MQTT-Push-Server selbst ist auf Sicherheit und Verfügbarkeit getrimmt. So werden zwischengespeicherte Konfiguration (Zertifikate und Settings) per AES verschlüsselt, damit Angreifer mit Root-Zugang nicht an verwendbare Daten gelangen. Bei Missbrauch der Push-Benachrichtigungen wird gedrosselt und gesammelt, sodass eine Überlastung ausgeschlossen werden kann und Anbieter wie Google und Apple den Zugang nicht sperren. Beim Neustart des Push- oder des MQTT-Servers wird die Verbindung automatisch wiederhergestellt. 

Hinweis: Es handelt sich hierbei um eine Entwicklung, welche noch nicht verfügbar ist!

Fragen und Antworten

Was ist, wenn ein Mobilgerät längere Zeit nicht aktiv ist?

Bei Google Push-Benachrichtigungen werden maximal 99 Nachrichten pro Mobilgerät gespeichert und zugestellt sobald das Mobilgerät wieder online ist. Bei über 100 anstehenden Nachrichten, welche nicht zugestellt werden konnten, löscht Google alle Push-Benachrichtigungen für dieses Mobilgerät. Erst nachdem das Mobilgerät wieder online ist, aktiviert Google den Empfang von neuen Nachrichten für das betroffene Mobilgerät. Mobilgeräte, die regelmäßig online sind (weniger als anstehende 100 Meldungen), funktionieren einwandfrei.

Wieviele Push-Benachrichtigungen dürfen gesendet werden?

Grundsätzlich ist zu sagen, dass die Hersteller Google und Apple es nicht gern sehen, wenn Mobilgeräte mit Push-Benachrichtigungen „gespammt“ werden. Daher empfiehlt es sich nur wenige wichtige Meldungen per MQTT zu verschicken. Der RadioShuttle MQTT-Push-Server verzögert Meldungen für einzelne Mobilgeräte, wenn innerhalb von 20 Sekunden mehr als eine Meldung verschickt wird. Diese Verzögerung kann 20 Sekunden bis zwei Stunden betragen, abhängig davon, wie viele Meldungen gespammt werden. Nach Ablauf der Verzögerung werden die Meldungen gesammelt zugestellt.

Empfehlungen für Meldungen

  • Alarm-Meldungen einmal schicken, ggf. nach einer Minuten noch einmal verschicken. Wenn weitere Meldungen gewünscht sind, damit der Anwender auf sein Mobilgerät schaut, empfiehlt es sich, weitere Meldungen nur noch im Intervall von 30 Minuten zu verschicken
  • Statusmeldungen (Temperatur, Statistik usw.)
    Hier empfiehlt es sich, diese nur alle 30 Minuten oder aber nur bei Veränderung zu verschicken. Push-Benachrichtigungen können in der App pro Topic (z. B. „Statusmeldungen“) auf lautlos gestellt werden, damit sich das Mobilgerät nicht meldet, die Meldungen aber dennoch in der App vorhanden sind
  • Bitte pro Mobilgerät prüfen, dass nicht mehr Meldungen als notwendig verschickt werden, z. B. identische Meldungen nicht doppelt verschicken
  • Es wird empfohlen, nicht mehr als 50 Meldungen pro Tag an ein Mobilgerät zu verschicken. Technisch gesehen sind auch mehr möglich, was aber auf Dauer nicht zu empfehlen ist

Was ist wenn die Push-Dienste von Google/Apple ausfallen?

Bei Ausfall der Apple/Google Push-Dienste versucht der RadioShuttle MQTT-Push-Server, diese zuzustellen sobald der Dienst wieder online ist. Es geht somit nichts verloren.

Es besteht jederzeit die Möglichkeit, die App zu öffen. In diesem Fall verbindet sich die App mit dem MQTT-Push-Server, lädt die letzten 100 Meldungen in die App und zeigt diese sofort an.

Kann der RadioShuttle MQTT-Push-Server auf einem eigenen Server betrieben werden?

Ja. Der MQTT-Push-Server kann auf einem eigenen Server installiert und betrieben werden. Hierfür ist ein aktuelles Java 1.7 oder neuer erforderlich. RadioShuttle-Lizenznehmer, also Kunden eines RadioShuttle-Boards, erhalten Zugang zur Software.

Kann die Lösung ohne öffentliches Internet betrieben werden?

Der MQTT-Server („Broker“) sowie der RadioShuttle MQTT-Push-Server können auch in einem privaten Netzwerk betrieben werden. Auch die App kann in diesem privaten Netzwerk per WiFi oder VPN genutzt werden und die letzten 100 Meldungen einsehen, allerdings ohne Push-Benachrichtigung.

Für Push-Benachrichtigungen benötigt der RadioShuttle MQTT-Push-Server einen Internetzugang um diese zu versenden. Der Internetzugang ist nur ausgehend und kann auch über einen Web-Proxy erfolgen.

Benötigt der RadioShuttle MQTT-Push-Server eigene Zugangsdaten?

Nein, der RadioShuttle MQTT-Push-Server verbindet sich mit dem MQTT-Server („Broker“) und leitet die eingegebenen Zugangsdaten dann an den MQTT-Server weiter. Dieser entscheidet dann, ob der Zugang erlaubt ist.

Wie lassen sich Push-Benachrichtigungen deaktivieren?

Eine einfache Möglichkeit besteht darin, die App auf dem Mobilgerät zu entfernen. Es kann auch einfach das Konto für den MQTT-Server in der App gelöscht werden. Zusätzlich lassen sich auch einzelne Topics in der App löschen.

Welche Android- und iOS-Version benötigt die App?

  • Android 4.1 oder neuer
  • iOS 11 oder neuer