Use underscores.
Scouts and drivers appended with _scout.js or _driver.js unless in separate folder.
Examples
- led_driver.js
- robot_driver.js
- therometer_driver.js
- microphone_driver.js
- arduino_scout.js
- lcd_driver.js
- test/
- app.js - use "app.js" for app file name.
- scouts/ - use "scouts" folder for internal scouts/drivers.
- arduino/
- index.js
- microphone_driver.js
- lcd_driver.js
- arduino/
- package.json
- test/
- index.js
- lcd_driver.js
- microphone_driver.js
- package.json
var zetta = require('zetta');
var Arduino = require('./scouts/arduino');
var app = zetta();
// app.name() is optional
app.expose('*');
app.load(Arduino);
// geo location observe
app.observe('type="sound" AND location within 30 of 42.213,85.23"', function(microphone){
});
// observe sound sensor in san jose, and update Detroit lcd
app.observe('type="sound" AND city="San Jose"', function(microphone){
app.observe('type="lcd" AND city="Detroit"', function(lcd){
});
});
app.observe(['sound', 'lcd'], function(sound, lcd) {
var amplitudeStream = sound.streams.amplitude;
amplitudeStream.on('data', function(amplitude) {
if (amplitude > 160) {
lcd.call('update', 'I heard dat!');
}
});
});
app.listen(3000); // Use "3000" for examples!
var Driver = require('zetta').Driver;
var util = require('util');
// Name your driver the device it's modeling
var Microphone = module.exports = function(port){
Driver.call(this);
// not saved and not exposed in api
this._port = port;
// saved and exposed in api
this.amplitude = 123;
};
util.inherits(Microphone, Driver);
// must include init function
Microphone.prototype.init = function(config) {
config
.state('ready')
.name('Matt\'s Sound Sensor') // name is optional but our examples should show it.
.type('sound')
.stream('amplitude', this.streamAmplitude); // .stream{Name} as function
}
Microphone.prototype.streamAmplitude = function(stream) {
var self = this;
this._port.on('data', function(d) {
var data = Number(d.toString());
self.amplitude = data;
stream.write(data);
});
};
var util = require('util');
var Scout = require('zetta').Scout;
var SerialPort = require('serialport').SerialPort;
var Microphone = require('./microphone_driver');
var Arduino = module.exports = function(runtime) {
Scout.call(this);
// allow access to runtime to other methods.
this.runtime = runtime;
this.portName = '/dev/tty.usbserial';
};
util.inherits(Arduino, Scout);
// Must include init function
Arduino.prototype.init = function(cb) {
var self = this;
var port = new SerialPort(portName, function(err) {
if(err) {
return cb(err);
}
self.discover(Microphone, port);
});
};