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 Passwort)
- 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 des Push-Servers sowie der Apps (Android und iOS) steht kommerziellen Nutzern zur Verfügung 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 die nicht kommerzielle Nutzung bis zu max. 3 Mobilgeräte und 3 MQTT-Konten zur Zeit kostenlos.
RadioShuttle-Lizenznehmern, also Kunden eines RadioShuttle-Boards, stellen wir diesen Dienst dauerhaft kostenlos zur Verfügung.
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). Hierfür sind Entwickler-Push-Zertifikate von Apple bzw. Google erforderlich.
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.
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.
Nichtsdestotrotz werden beim nächsten Öffnen der App die letzten 100 Nachrichten direkt vom Server geladen (synchronisiert), sofern diese nicht bereits via Cloud Messaging zugestellt wurden.
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 Minute 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
- Es empfiehlt sich, Statusmeldungen (Temperatur, Statistik usw.) 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 sicherstellen, 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
Lassen sich auch Nachrichteninhalte, die nicht im Textformat übertragen werden, anzeigen?
Standardmäßig werden MQTT-Push-Benachrichtigungen über empfangene MQTT-Daten direkt im Fenster „Messages“, das für einfache Textnachrichten geeignet ist, angezeigt. MQTT-Benachrichtigungen können allerdings auch binär, XML, JSON oder anderweitig kodiert sein. Hier bieten JavaScript-basierte Filterskripte die Möglichkeit, die Benachrichtigungen zu analysieren und zu formatieren, um die gewünschten Daten in Form einer Textnachricht darzustellen.
Was ist, wenn die Push-Dienste von Google/Apple ausfallen?
Bei Ausfall der Apple/Google Push-Dienste versucht der RadioShuttle MQTT-Push-Server, die Benachrichtigungen 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?
Die Installation sowie der Betrieb eines MQTT-Push-Servers auf einem eigenen Server ist grundsätzlich möglich. Dazu müssen folgende Voraussetzungen erfüllt sein:
- Rechner mit Java 1.8 oder neuer
- Ein eigenes Apple- und Google-Entwicklerkonto
- Der Domainname des eigenen Push-Servers muss uns mitgeteilt werden
- RadioShuttle-Lizenznehmer, also Kunden eines RadioShuttle-Boards, erhalten Zugang zur Software
- Die Apps für Android bzw. iOS müssen unter eigenem Namen mit eigener App-ID publiziert werden
- Ein SSL-Serverzertifikat erstellen lassen (von RadioShuttle oder einer Zertifizierungsbehörde)
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 diesen 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