SARAH avec Pushbullet et L8Smartlight

Les notifications mobile c’est sympa ! Mais si SARAH pouvait aussi s’en occuper ce serait mieux !

  • Une première approche serait d’aller interroger tous les sites. Mais cela nécessiterait d’implémenter tous les protocoles, autorisations, …
  • Une autre approche serait de créer un Flux RSS à partir de règles IFTTT. Mais ce n’est pas très simple

Pushbullet

Sur Android, le service Pushbullet est capable de forwarder les notifications du mobile vers le desktop et inversement. L’API est très simple et disponible sous NodeJS !

[crayon]
var pusher = false;

exports.init = function(SARAH){
if (pusher) return;

var config = SARAH.ConfigManager.getConfig();
config = config.modules.pushbullet;

var PushBullet = require(‘./lib/pushbullet’);
pusher = new PushBullet(config.key);

var stream = pusher.stream();
stream.on(‘push’, function(push) {
SARAH.run(‘pushbullet’, push);
});
stream.connect();
}

exports.action = function(data, callback, config, SARAH){
callback(data);
}
[/crayon]

Pour résumer, à l’initialisation du plugin, l’API PushBullet ouvre un flux WebSocket vers le service. Pour chaque notification, le plugin s’appel lui même pour rentrer dans la mécanique du moteur de règle de SARAH.

L8 SmartLight

Maintenant SARAH doit afficher ces notifications. Le L8 SmartLight est un « Soundless Speaker » affichant une icône à la place d’un son.

Initialisation

A l’initialisation du plugin, la librairie l8smartlight se branche sur un Port COM/USB.

[crayon]
exports.init = function(SARAH){
if (l8) return;

var config = SARAH.ConfigManager.getConfig();
config = config.modules.l8smartlight;

// Load icons
loadIcon(‘gmail’, ‘plugins/l8smartlight/icons/gmail.png’);
loadIcon(‘twitter’, ‘plugins/l8smartlight/icons/twitter.png’);
loadIcon(‘unknow’, ‘plugins/l8smartlight/icons/unknow.png’);

// Load L8
l8 = new L8();
l8.open(config.port, null, function(err) {
if (err) { l8 = false;
throw new Error("Error occurred: " + err);
}
console.log(‘L8 is ready’);
});
}
[/crayon]

L’idée est de charger des images PNG pour alimenter la structure {r,g,b} de l’API.

Action

Le principe est très simple ! Une requête au plugin ?name=gmail fera clignoter l’icône GMail.

[crayon]
exports.action = function(data, callback, config, SARAH){
config = config.modules.l8smartlight;
if (!config){
return callback({‘tts’ : ‘Invalid l8smartlight parameter’});
}

if (!l8){ return callback({‘tts’ : ‘L8 not ready’}); }
if (!data.name){ return callback({‘tts’ : ‘No L8 icon name’}); }

var name = data.name.toLowerCase();
if (!matrices[name]){ name = ‘unknow’; }
blinkIcon(matrices[name], 3);
callback({});
}
[/crayon]

Aucun TTS n’est nécessaire étant donné que c’est une notification visuelle 🙂

Moteur de Règles

Une notification Pushbullet est un objet JSON contenant l’attribut application_name (le nom de l’application).

Le moteur de règle de SARAH va permettre de chaîner les 2 plugins via une simple règle:

[crayon]
options.name = options.application_name
[/crayon]

Ainsi toutes les notifications sont forwardées sur le L8 SmartLight !

2 réflexions sur “SARAH avec Pushbullet et L8Smartlight

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.