Notification Push

Les notifications push sont utilisées lorsqu’il est important d’être informé automatiquement et aussi rapidement que possible des événements. Par exemple, vous souhaitez être averti immédiatement d’une alarme intrusion (voir exemple d’application ESP32MQTTAlarmSystem).

C’est exactement ce que fait le push server de RadioShuttle MQTT. Les topics MQTT surveillés sont immédiatement transférés vers un appareil mobile, où le message est affiché avec un signal audio comme notification de poussée.

Les notifications push sont une combinaison de différents composants :

services push par Apple et Google

Pour les appareils mobiles, les fabricants proposent des services dits push. Cela signifie que les notifications de push sont automatiquement affichées directement sur l’appareil mobile. S’il n’y a pas de réception, le message est envoyé dès que l’appareil mobile est à nouveau disponible. Les services push sont le lien entre l’application RadioShuttle et le serveur push MQTT de RadioShuttle.

L’application RadioShuttle

L’application gère les paramètres de notification de push. Toutes les notifications de push peuvent également y être visualisées. Après une configuration unique, les notifications de push sont automatiquement reçues même si l’application n’est pas en cours d’exécution. L’application est le lien entre le serveur push de RadioShuttle MQTT et les services push d’Apple ou de Google respectivement.

L’application offre les fonctions suivantes :

  • Affichage automatique des notifications push par message sonore sur l’appareil mobile (même si l’application n’est pas active ou si l’écran est verrouillé)
  • Notification en quelques secondes
  • Gestion des comptes utilisateurs (adresse serveur MQTT avec nom d’utilisateur et mot de passe)
  • Gestion des Topics MQTT, ce qui devrait déclencher une notification push (alarme). Pour des topics individuels, la notification push peut être activée/désactivée avec le son
  • Plusieurs utilisateurs peuvent utiliser le même compte. Exemple : Mère, père, enfant. Tous utilisent automatiquement les mêmes réglages. Tous sont notifiés en même temps
  • Une application peut utiliser plusieurs comptes MQTT. Exemple : Immeuble d’habitation à Paris, maison de vacances à Flayosc, bureau à Bordeaux
  • Les messages des 30 derniers jours peuvent être consultés

L’application RadioShuttle est disponible pour iOS et Android et peut être téléchargée gratuitement sur l’Apple App Store ou Google Play Store. Le code source du serveur push et des applications (Android et iOS) est disponible pour les utilisateurs commerciaux et peut être adapté pour des projets/solutions et publié comme une application séparée

Serveur MQTT (Broker)

Le serveur MQTT gère les messages d’un compte utilisateur avec les topics enregistrés. C’est, pour ainsi dire, le lien entre les nœuds ou capteurs distants et le serveur push.

Serveur push MQTT

Le serveur push MQTT de RadioShuttle est le lien entre le serveur MQTT, l’application mobile et les notifications de push envoyées via Google ou Apple. Le serveur push lui-même n’a pas ses propres comptes d’utilisateur, mais se connecte au serveur MQTT au nom de l’utilisateur et surveille les messages des topics qui doivent être convertis en notifications push.

L’utilisation du serveur push public (push.radioshuttle.de) est gratuite pour les licenciés de RadioShuttle, c’est-à-dire les clients d’une carte RadioShuttle (actuellement ECO Power or LongRa), jusqu’à trois appareils mobiles et trois comptes différents

L’utilisation commerciale illimitée du logiciel de serveur push RadioShuttle MQTT pour le fonctionnement sur vos propres serveurs est disponible pour une location annuelle du logiciel avec support inclus. Le code source du serveur push écrit en Java est donc disponible (sous réserve d’un accord de confidentialité). Cela nécessite des certificats de push développeur Apple ou Google.

Le serveur push MQTT lui-même est coupé pour des raisons de sécurité et de disponibilité. La configuration en cache (certificats et paramètres) est cryptée via AES afin que les attaquants ayant un accès root ne puissent pas accéder aux données utilisables. Si les notifications push sont mal utilisées, elles sont limitées et collectées de manière à ce que la surcharge puisse être exclue et que les fournisseurs tels que Google et Apple ne bloquent pas l’accès. Lorsque le serveur push ou MQTT est redémarré, la connexion est automatiquement rétablie.

Remarque : Cette solution est actuellement en phase de test. Cependant, l’application MQTT Push Client pour Android est déjà disponible sur le Google Play Store. Une version iOS de l’application suivra bientôt.

Questions et réponses

Que faire si un appareil mobile n’est pas actif pendant une longue période ?

Avec les notifications Google Push, un maximum de 99 messages par appareil mobile sont stockés et délivrés une fois que l’appareil mobile est de nouveau en ligne. Pour plus de 100 messages en attente qui n’ont pas pu être délivrés, Google supprime toutes les notifications de push pour cet appareil mobile. Ce n’est qu’une fois que l’appareil mobile est à nouveau en ligne que Google active la réception de nouveaux messages pour l’appareil mobile concerné. Les appareils mobiles qui sont régulièrement en ligne (moins de 100 notifications en attente) fonctionnent correctement.

Néanmoins, la prochaine fois que l’application est ouverte, les 100 derniers messages sont chargés (synchronisés) directement à partir du serveur, à moins qu’ils n’aient déjà été transmis par Cloud Messaging.

Combien de notifications push peuvent être envoyées ?

Fondamentalement, les fabricants Google et Apple n’aiment pas voir les appareils mobiles être « spammés » avec des notifications de push. Il est donc recommandé de n’envoyer que quelques messages importants via MQTT. Le serveur push MQTT de RadioShuttle retarde les messages pour les appareils mobiles individuels si plus d’un message est envoyé dans les 20 secondes. Ce délai peut varier de 20 secondes à deux heures, selon le nombre de messages spammé. Une fois le délai écoulé, les messages sont envoyés collectivement.

Recommandations concernant les notifications:

  • Envoyez les messages d’alarme une fois, renvoyez-les après une minute si nécessaire. Si d’autres messages sont nécessaires pour que l’utilisateur puisse regarder son appareil mobile, il est conseillé de n’envoyer d’autres messages que toutes les 30 minutes
  • Il est recommandé d’envoyer des messages d’état (température, statistiques, etc.) seulement toutes les 30 minutes ou seulement si des modifications ont été apportées. Les notifications push peuvent être paramétrées sur silence dans l’application par Topic (par ex. « Messages d’état ») afin que l’appareil mobile ne réponde pas mais que les messages soient toujours présents dans l’application
  • Veuillez vous assurer que chaque appareil mobile n’envoie pas plus de messages que nécessaire, par exemple, que des messages identiques ne sont pas envoyés deux fois
  • Il est recommandé de ne pas envoyer plus de 50 messages par jour à un appareil mobile. D’un point de vue technique, il est également possible d’en faire plus, mais cela n’est pas recommandé à long terme

Que se passe-t-il si les services push Google/Apple échouent ?

Si les services Apple/Google Push échouent, le serveur push MQTT de RadioShuttle tentera d’envoyer les notifications dès que le service sera de nouveau opérationnel. Donc rien ne se perd.

Il y a toujours la possibilité d’ouvrir l’application. Dans ce cas, l’application se connecte au serveur push MQTT, charge les 100 derniers messages dans l’application et les affiche immédiatement.

Le serveur push MQTT de RadioShuttle peut-il être exploité sur son propre serveur ?

L’installation et le fonctionnement d’un serveur push MQTT sur son propre serveur est en principe possible. Les conditions préalables suivantes doivent être remplies :

  • Ordinateur avec Java 1.7 (mise à jour 80) ou plus récent
  • Votre propre compte développeur Apple et Google
  • Le nom de domaine de votre propre serveur push doit nous être communiqué
  • Les licenciés de RadioShuttle, c’est-à-dire les clients d’une carte RadioShuttle, ont accès au logiciel
  • Les applications pour Android ou iOS doivent être publiées sous leur propre nom avec leur propre ID de l’app
  • Créer un certificat de serveur SSL (à partir de RadioShuttle ou d’une autorité de certification)

La solution peut-elle être exploitée sans Internet public ?

Le serveur MQTT Server (« broker ») et le serveur push MQTT de RadioShuttle peuvent également être utilisés dans un réseau privé. L’application peut également être utilisée dans ce réseau privé via WiFi ou VPN et consulter les 100 derniers messages, mais sans notification push.

Pour les notifications push, le serveur push MQTT de RadioShuttle nécessite un accès Internet pour les envoyer. L’accès Internet est uniquement sortant et peut également se faire via un proxy web.

Est-ce que le serveur push MQTT de RadioShuttle a besoin de ses propres données d’accès ?

Non, le serveur push MQTT de RadioShuttle se connecte au serveur MQTT (« broker ») et lui transmet les données d’accès saisies. Ce dernier décide alors si l’accès est autorisé ou non.

Comment désactiver les notifications push ?

Un moyen simple est de retirer l’application de l’appareil mobile. Vous pouvez également supprimer simplement le compte du serveur MQTT dans l’application. En outre, des topics individuels peuvent également être supprimés de l’application.

De quelle version Android et iOS l’application a-t-elle besoin ?

  • Android 4.1 ou plus récent
  • iOS 11 ou plus récent