
Um dos objetivos da tecnologia é prover Automatização.
Criado em 1995 por Brendan Eich, na NetScape.
Originalmente foi criado para dar vida as páginas web.
Em 2009 nasceu o NodeJS, uma forma de executar JavaScript fora do browser.
Criado por Ryan Dahl, é uma ambiente de execução multi-plataforma, de código aberto para aplicativos JavaScript no lado do servidor.
$ sudo apt-get install nodejs
Instala o node
(ambiente de execução) e o npm
(instalador de módulos)
Cylon.js é uma framework javascript para robôs, física computacional, e Internet das Coisas.
Plataformas suportadas:
Antes de começar, é necessário instalar a firmata
padrão:
Arquivo → Examples → Firmata → Standard Firmata
Upload
$ mkdir project $ cd project $ npm init $ npm install cylon cylon-firmata --save $ node index.js
var Cylon = require("cylon"); Cylon.robot({ connections: { arduino: { adaptor: 'firmata', port: '/dev/ttyUSB0' } }, devices: { led: { driver: 'led', pin: 13 } }, work: function(my) { every((1).second(), function() { my.led.toggle(); }); } }).start();
Johnny-Five é uma framework javascript para robôs, Internet das Coisas desenvolvido na Bocoup.
Plataformas suportadas:
Antes de começar, é necessário instalar a firmata
padrão:
Arquivo → Examples → Firmata → Standard Firmata
Upload
https://github.com/rwaldron/johnny-five
$ mkdir project $ cd project $ npm init $ npm install johnny-five --save $ node index.js
var five = require("johnny-five"), board, led; board = new five.Board(); board.on("ready", function() { // Create a standard `led` hardware instance led = new five.Led(13); // "strobe" the led in 100ms on-off phases led.strobe(100); });
Cylon.js e Johnny-Five ainda não dão suporte ao receptor infravermelho!
O que fazer para contornar isso?
(Por enquanto...)
Para nosso exemplo vamos usar um Controle Remote Infravermelho para controlar o Popcorntime, uma aplicativo que permite assistir Filmes, Séries e Animes através de stream de torrent.
Precisamos primeiro capturar os dados enviados pelo controle e decodificá-los.
Após decodificação, é necessário enviar para a porta serial qual o comando para aquele botão.
'use strict'; var api = require('./popcorn/api') , com = require('serialport'); var serialPort = new com.SerialPort('/dev/ttyUSB0', { baudrate: 9600, parser: com.parsers.readline('\r\n') }); serialPort.on('open',function() { console.log('Port open'); });
serialPort.on('data', function(data) { function callback(error, response, body) { if (!error && response.statusCode === 200) { api.parseAndSend(data); } else { console.log(error); } } api.send('ping', [], callback); });
if (/^rc4pt:(.*)$/.test(value)) { /* ... */ this.send('getviewstack', [], function(error, response, data) { if (!error && response.statusCode === 200) { /* ... */ switch (currentView) { case 'main-browser': self.handleMainBrowser(cmd); break; case 'player': self.handlePlayer(cmd); break; /* ... */ } } }); }
Api.prototype.handlePlayer = function(cmd) { switch (cmd) { case 'play-pause': this.send('toggleplaying'); break; case 'func-stop': this.send('togglefullscreen'); break; case 'down': this.send('back'); break; } };
Qualquer dúvida entre em contato.