JSFiddle - React, Tailwind, and code Playground

by jpencausse

JavaScript

var BUREAU  = '11111';
var SALON   = '22222';
var LUMENS  = '33333';

exports.action = function(data, callback, config, SARAH){
  
  // Patch for v2.9 
  init(SARAH); 

  // Get luminosity
  SARAH.call('eedomus', { 'periphId' : LUMENS}, function(options){

    var lumens = options.json.last_value;
    var state  = compute(data.learn, data.scene, lumens);
    if (state != data.scene){
      SARAH.speak("Finalement j'ai décidé de " + (state == 1 ? "faire" : "ne pas faire") + " l'action");
    }
    
    // Switch lights
    scene(state, callback, SARAH); 
  });
}

// ==========================================
//  BRAIN
//  Don't do read/write on RaspberryPi
// ==========================================
   
var brain  = require('./lib/brain');
var fs     = require('fs');
var net    = new brain.NeuralNetwork();
var file   = 'plugins/41Scene/brain.json';
var set    = [{'input': {l: 100/100, t: 0}, 'output': {s: 0}},
              {'input': {l:   0/100, t: 0}, 'output': {s: 1}}];

// Read file once
if (fs.existsSync(file)){
  set = JSON.parse(fs.readFileSync(file,'utf8'));

}
net.train(set);    

var compute = function(learn, state, lum){ 
  console.log('lumens:', lum, 'state:', state);
  
  if (learn){
    set.push({'input': {l: lum/100, t: minutes() }, 'output': {s: state}});
    net.train(set);
    fs.writeFileSync(file, JSON.stringify(set), 'utf8');
    return state;
  }
  
  // Guess only for switch 'on'. Not 'off'
  if (state == 1){ 
    return Math.round(net.run({l: lum/100, t: minutes() }).s); // Should remember luminosity for X minutes
  } 
  
  return state;
}

var moment = require('moment'); 
    moment.lang('fr');

var minutes = function(){
  var millis  = moment().startOf('day').diff(moment())
  return (-millis/60000) / (24*60);
}

// ==========================================
//  RUN SCENE
// ==========================================

var scene = function(state, callback, SARAH){
  var tts = '';

  if (state == 1){
    lights(BUREAU, true, SARAH);
   ...