Cet article fait suite à « Mon premier module » pour préciser des points de développement avancés.
Persister des données
S.A.R.A.H. utilise différentes mécaniques pour persister ses propres données ou les données fournies par les plugins.
Voici un article décrivant la persistance des données du framework.
Installer des librairies
Les NodeJS, PhantomJS, et ExpressJS installés sont complètement standard. Des librairies supplémentaires sont installées dans script/vendor/:
cheerio(pour parser du HTML)moment(pour manipuler des dates)request(pour envoyer des requêtes)
Ainsi que plusieurs librairies bas niveau pour envoyer des mails, parser du RSS, etc,…
Ajouter une librairie
- Créer un répertoire
plugins/{monplugin}/lib - Ouvrir une commande DOS dans la release
- Faire
NodeJSnpm install {librarie} - Copier le contenu du répertoire créé
node_modulesdansplugins/{monplugin}/lib - Dans un plugin.js la librairie est maintenant dispo via require(‘./lib/{librarie}’)
Lancer un plugin
Une bonne pratique est de créer un plugin perso qui va utiliser et appeler des modules génériques: box domotique, service web, …
Cet appel pourra se faire via le moteur de règles ou directement depuis le code:
[crayon]
var lights = function(id, on, SARAH){
SARAH.run(‘eedomus’, { ‘periphId’ : id , ‘periphValue’ : (on?100:0), ‘quiet’ : true });
}
var scenario = function(state, callback, SARAH){
var tts = »;
if (state == 1){
lights(BUREAU, true, SARAH);
lights(SALON, true, SARAH);
tts = ‘Bonjour’;
}
else {
lights(BUREAU, false, SARAH);
lights(SALON, false, SARAH);
tts = ‘Aurevoir’;
}
callback({‘tts’: tts});
}
[/crayon]
Ces appels vont déclencher toute la mécanique du moteur de règles. Dans la version 2.9 il est possible de n’appeler QUE le script et récupérer sa réponse:
[crayon]
SARAH.call(‘eedomus’, { ‘periphId’ : LUMENS}, function(options){
var lum = options.json.last_value;
scenario(lum>50?1:0, callback, SARAH);
});
[/crayon]
Dans cet exemple le code appel le plugin Eedomus v2.0 pour obtenir l’état d’un capteur de luminosité afin de décider si il faut allumer ou éteindre les lampes.
Un peu d’IA
Voici deux articles expliquant comment utiliser les réseaux de neurones de la librairie brain.js pour apprendre à SARAH des comportements.



Répondre à Jp Encausse Annuler la réponse.