Sommaire

PushBullet est un service très complet permettant de relier vos ordinateurs et appareils mobiles ensemble pour partager entre eux, globalement ou de manière ciblée, des liens, des notifications (par exemple en cas de réception de SMS), des messages, des copier-coller et même des fichiers.

image

Vous pouvez installer les clients PushBullet sur Android, iOS, Windows et directement dans les navigateurs (sous forme d’extension) Chrome, Firefox, Safari ou Opéra.

image

Le package PushBullet pour Constellation vous permettra :

  • d’envoyer des notifications texte
  • d’envoyer des fichiers
  • d’envoyer des liens
  • d’envoyer des SMS de vos smartphones Android
  • de copier un texte dans le presse-papier (avec un abonnement PushBullet Prenium)
  • de récupérer des informations sur l’état de vos devices et utilisateurs connectés au service

Le code source de ce package est en ligne sur : https://github.com/myconstellation/constellation-packages/tree/master/PushBullet

Installation

Prérequis : PushBullet

Pour démarrer vous devez créer un compte sur https://www.pushbullet.com/.

Une fois votre compte activé, installer des clients PushBullet sur vos différents devices, par exemple votre smartphone (iOS ou Android) et dans votre navigateur.

image

Dès à présent, les notifications de votre smartphone seront partagées avec votre navigateur. Vous pourrez également depuis votre navigateur lire/écrire des SMS, etc…

Pour finir, dans les options de votre compte PushBullet, créer un “Access Token” qui servira pour connecter le package Constellation à votre comte PushBullet :

image

Installation du package

Depuis le “Online Package Repository” de votre Console Constellation, déployez le package PushBullet :

image

Une fois le package télécharger votre repository local, sélectionnez la sentinelle sur laquelle déployer le package :

image

Pour finir entrez le token dans la page de Settings et vous pouvez déployer votre package :

image

Vous pouvez également déployer ce package manuellement dans la configuration de votre Constellation :

Détails du package

Les Settings

Nom Type Détail Description
token String Obligatoire Le token d’accès au compte PushBullet
PushDevicesAsStateObjects Boolean Optionnel
Défaut : ”true”
Indique si les devices de votre compte PushBullet doivent être synchronisés dans les StateObjects
PushChatsAsStateObjects Boolean Optionnel
Défaut : ”true”
Indique si les Chats associés à votre compte PushBullet doivent être synchronisés dans les StateObjects
PushCurrentUserAsStateObject Boolean Optionnel
Défaut : ”true”
Indique si les détails votre compte PushBullet doit être synchronisé dans les StateObjects
SendPushesReceivedToGroup String Optionnel
Défaut : ”PushBullet”
Spécifie le nom du groupe dans lequel le package Pushbullet va envoyer les notifications qu’il reçoit (par défaut:  ‘PushBullet’). Laissez le champ vide pour désactiver cette fonctionnalité
SendEphemeralsReceivedToGroup String Optionnel
Défaut : ”PushBullet”
Spécifie le nom du groupe dans lequel le package Pushbullet va envoyer les “ephemerals” qu’il reçoit (par défaut:  ‘PushBullet’). Laissez le champ vide pour désactiver cette fonctionnalité.

Les StateObjects

Vous retrouverez 4 StateObjects publiés par le package :

Nom Type Description
CurrentUser PushBullet.Models.User Information sur l’utilisateur connecté
Chats PushBullet.Models.ChatsList Liste des chats de l’utilisateur
Devices PushBullet.Models.DevicesList Liste des devices connectés à PushBullet de l’utilisateur
RateLimit PushBullet.RateLimits Etat des limites du service pour l’utilisateur

image

Les MessageCallbacks

Le package expose 9 MessageCallbacks :

Nom Réponse (saga) Description
GetDevices PushBullet.Models.DevicesList Récupère la liste des devices de l’utilisateur
GetChats PushBullet.Models.ChatsList Récupère la liste des chats de l’utilisateur
GetPushes PushBullet.Models.PushesList Récupère la liste des notification reçu par l’utilisateur
GetCurrentUser PushBullet.Models.User Récupère le détail de l’utilisateur
SendSMS Aucune Envoi un SMS depuis le smartphone (compatible avec le client Android seulement)
CopyToClipboard Aucune Copie un texte dans le presse-papier d’un device (compatible avec un compte Prenium uniquement)
PushNote Aucune Push une notification (message texte)
PushLink Aucune Push une notification avec un lien
PushFile Aucune Push une notification avec un fichier

image

Quelques exemples

Tester l’envoi d’une notification depuis la Console Constellation

Le MC pour envoyer une simple notification se nomme “PushNote” :

image

Il prend en paramètre :

  • Le titre de la notification
  • Le texte de la notification
  • Le type de la cible pour la notification
  • L’argument de la cible

La cible (target) est une énumération :

image

Vous pouvez envoyer votre notification à un de vos devices, à un autre utilisateur (identifié par son mail), à un canal ou un client Web.

Dans notre cas, sélectionnons la cible par default “Device” et laissons le champs “targetArgument” afin de recevoir la notification sur tous nos devices enregistrés sur PushBullet et cliquons sur “Invoke” :

image

Votre notification sera instantanément reçue sur votre Smartphone :

image

Ici la notification reçue par Chrome sur un poste Windows :

image

Avec une smartwatch associée à votre téléphone, vous recevrez également vos notifications à votre poignet:

image

Envoyer des notification texte ou image depuis un package C#

N’hésitez pas dans le MessageCallbacks Explorer, à cliquer sur le bouton  image afin d’ouvrir le générateur de code pour invoquer le MC sélectionné avec les différentes API Constellation.

Ici en sélectionnant le langage C# :

image

Pour envoyer notre notification de puis un package C# on écrira :

Les deux derniers paramètres étant optionnels (target et targetArguments) vous pouvez les omettre !

Autre solution, générer du code avec le générateur inclus dans le SDK Constellation. Sélectionnez simplement le package “PushBullet” dans le générateur de code :

image

Vous pouvez ensuite invoquer vos MC dans votre code C# à partir du code générer profitant ainsi de l’auto-complétion et de la documentation directement dans votre IDE :

image

Par exemple pour envoyer une image vous pouvez invoquer le MC “PushFile” en spécifiant l’URI (file:// ou http(s)://) vers le fichier à envoyer. Si vous souhaitez envoyer une notification avec l’image de votre caméra par exemple :

L’image sera alors envoyée sur tous vos devices :

image

image

Tutoriels

Il n'y a pas encore de tutoriel exploitant ce package !

Lister ses devices et envoyer des notifications depuis une page Web

Prenons une page HTML que nous allons connecter à Constellation avec AngularJS (documentation ici).

Lorsque la page sera connectée à Constellation, enregistrons un lien vers le StateObject nommé “Devices” pour le package “PushBullet” afin d’enregistrer la liste des devices (propriété “Devices”) de la valeur du StateObject dans une variable de scope Angular sans oublier de faire un “$apply” pour rafraichir le scope AngularJS :

Enfin dans le corps de votre page HTML, affcher une liste à point pour chaque device en affichant différentes informations comme le nom, fabriquant et modele de vos device :

Allons un peu plus loin en ajoutant un bouton sur chaque device pour envoyer une notification (PushNote) au device spécifiquement sélectionné. Dans le <li> ajoutons :

Et bien sûr déclarons la fonction “sendPush” dans notre scope pour invoquer le MC “PushNote” de notre package PushBullet en spécifiant l’ID du device destinataire de ce push et non tous les devices :

Et voilà, aussi simple que cela !

image

Le code complet de la page :

Recevoir des SMS depuis un Arduino/ESP

Si le paramètre “SendEphemeralsReceivedToGroup” n’est pas vide, le package enverra les “Ephemerals” comme les SMS reçus au groupe que vous avez spécifié par ce paramètre. Par défaut, il est défini à “PushBullet”, c’est à dire que si vous vous abonnez au groupe “PushBullet” vous recevrez les SMS et autre de notification de votre smartphone.

Prenons par exemple la page Web AngularJS créée ci-dessus pour bien comprendre. Lorsque votre page est connectée à Constellation, ajoutez le code suivant :

Puis ajoutez un MessageCallback de votre page pour réceptionner le message nommé “ReceiveEphemeral”. On affichera alors le message reçu dans la console de notre navigateur pour comprendre ce que le package envoie :

Lancez votre page et envoyez-vous un SMS :

image

Le message est bien reçu du package PushBullet (propriété Sender) avec la clé (identifiant du MessageCallback) “ReceiveEphemeral”. Le contenu du message (Data) contient :

  • L’identifiant du device qui a reçu la notification
  • Le type de notification. Pour une notification liée à la réception d’un SMS cette valeur est à “sms_changed”
  • Le tableau contenant le ou les notifications

Si la notification de l’“Ephemeral” est de type “sms_changed”, le tableau des notifications contiendra les SMS reçus avec le nom du contact émetteur du SMS (title), le texte du SMS (body) et la date de réception (timestamp).

Enfin, lorsque vous ouvrez le SMS reçu sur votre Smartphone vous allez faire disparaitre la notification ce qui enverra un autre “Ephemeral” de type “dismissal” pour le package “sms” :

image

Il devient alors facile de réaliser un petit objet connecté qui serait capable de nous prévenir en faisant clignoter une LED par exemple, lorsque nous recevons un SMS et d’arrêter cette LED lorsque vous nous faisons disparaitre la notification sur notre Smartphone.

Dans la méthode “setup()” nous allons abonnez notre ESP au groupe “PushBullet” :

Notez que vous pouvez également abonner votre package depuis la Console Constellation.

image

Ajoutons ensuite un MessageCallback “ReceiveEphemeral” pour définir si oui ou non nous devons faire clignoter une LED :

De ce fait déclarons cette variable ainsi que d’autre :

Pour faire clignoter la LED sans bloquer le programme avec des delay(), ajoutons la méthode suivante :

Pour finir dans la boucle principale, appellons notre méthode “driveLed” poru faire clignoter ou éteindre la LED en fonction :

Et voilà comment notifier la réception de SMS avec un LED drivée par un ESP8266 connecté à Constellation !

Envoyer un SMS depuis un simple appel HTTP

Si vous avez installé un client PushBullet sur un smartphone Android, vous pouvez l’utiliser en tant que passerelle SMS avec le MessageCallback “SendSMS” :

image

Ce MC prend en paramètre :

  • L’ID de l’utilisateur
  • L’ID du device qui sera utilisé comme passerelle SMS (ce device doit être un téléphone sous Android)
  • Le n° du destinataire du SMS
  • Le texte du SMS

Pour récupérer votre ID d’utilisateur, affichez les détails du StateObject “CurrentUser” :

image

Faites de même pour récupérer l’ID de votre device Android en visualisant le StateObject “Devices” :

image

Cliquez ensuite sur l’icone image dans le MessageCallback Explorer pour afficher le code snippet du MC “SendSMS” en sélectionnant en tant que langage “HTTP Call” :

image

L’exemple est donné pour l’API Rest Constellation mais vous pouvez aussi utiliser l’API Rest Consumer en remplaçant “/rest/constellation” par “/rest/consumer”.

De ce fait, pour envoyer un SMS depuis un appel HTTP :

Sans oublier bien sûr de remplacer le “xxxx” par une AccessKey valide de votre Constellation.

PushBullet : envoyer des notifications, images, SMS sur vos différents devices
Étiqueté avec :                    

Sur le forum :

  1. Bonjour,

    J’ai un soucis dont je ne trouve aucune solution à propos du package PushBullet déjà inclus dans la bibliothèque.
    Je travail dans un fichier JS relié à un html.
    Lorsque j’appelle le message callback send sms de PushBullet après l’avoir correctement paramétré je suppose, celui-ci ne renvoie rien. J’ai vu que dans le StateObject “Devices”, le paramètre HasSms de mon téléphone portable est sur false alors que d’après votre tutoriel il est censé être sur true.
    Pourriez-vous m’indiquer comment régler ce problème svp?

    Simon.

  2. Ok trouvé, il fallait activer la synchro SMS dans l’appli android mais surtout redémarrer le téléphone.

    Bonne journée!

Continuez la discussion sur le forum Constellation

Participants

Avatar for simcord Avatar for sebastien_warin