SARAH: modules avancés

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

  1. Créer un répertoire plugins/{monplugin}/lib
  2. Ouvrir une commande DOS dans la release
  3. Faire NodeJSnpm install {librarie}
  4. Copier le contenu du répertoire créé node_modules dans plugins/{monplugin}/lib
  5. 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.

  1. Principe du réseau de neuronnes
  2. Implémentation et premiers résultats

7 réflexions sur “SARAH: modules avancés

  • 1 juillet 2013 à 23 h 54 min
    Permalien

    Ouvrir une commande DOS dans la release (c’est quoi le release ?)
    Faire NodeJSnpm install {librarie} (librarie correspond à quoi ?)

    un exemple me sert fort utile je pense

    Répondre
  • 2 juillet 2013 à 8 h 17 min
    Permalien

    Oh, au vu de ta question je crois que tu t’embarque dans une aventure compliquée…

    – Le terme release désigne le dossier de l’application sarah
    – En faisant Shift + Click Droit on peut ouvrir une fenêtre DOS directement à cet endroit
    – Ce qui permet l’execution du programme NPM
    – NPM est un outil de NodeJS en ligne de commande et un service qui permet d’aller chercher des librarie sur GitHub
    – NodeJS est un serveur JavaScript qui permet d’exécuter du code, et donc ce code a parfois besoin de librairies « standard » que l’on va chercher via NPM
    – Typiquement dans la v2.9 de SARAH j’ai rajouté xml2js une librairie permettant de parser du XML. Cela évite aux développeurs de plugins d’aller chercher cette libraries quand ils ont besoin de parser du XML

    Répondre
  • 31 janvier 2015 à 0 h 26 min
    Permalien

    Bonjour !! Tout d’abord merci pour S.A.R.A.H !! Les capacités sont étonnantes !!!

    Je cherche à créer un réveil intelligent à savoir :

    Sarah me réveille, me donne l’état du trafic ferroviaire et allume une lampe branchée sur une prise télécommandé, via un raspberry.

    j’ai déjà réalisé les scripts indépendants.

    Un script « CRON » permet le réveil.
    Un script « Phantom » permet de récupérer le trafic via commande vocale (plugin téléchargé).
    Un script « module » permet de commander la lampe via une commande vocale.

    J’ai cependant du mal à « mixer » les trois, en gros, un Cron qui récupère la météo et envoie une commande SSH.

    Auriez-vous été confronté à une situation similaire ?

    Cordialement,

    Répondre
  • 31 janvier 2015 à 12 h 38 min
    Permalien

    Super j’essaie ça dans la journée. Merci beaucoup pour votre réponse rapide !!!

    Répondre
  • 15 août 2015 à 14 h 48 min
    Permalien

    Super, merci pour les explications.
    J’aimerais juste savoir, comment ajouter un module NodeJS à SARAH?

    Répondre
    • 15 août 2015 à 14 h 49 min
      Permalien

      J’ai rien dit, je suis étourdi c’est marqué en toutes lettres…

      Répondre

Répondre à betaWeb Annuler la réponse

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.