diff options
Diffstat (limited to 'diller.js')
-rw-r--r-- | diller.js | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/diller.js b/diller.js new file mode 100644 index 0000000..7627d31 --- /dev/null +++ b/diller.js @@ -0,0 +1,63 @@ +var mqtt = require('mqtt'); +var _ = require('underscore'); +var winston = require('winston'); +var bunyan = require('bunyan'); +var pg = require('pg'); +var connectionString = process.env.DATABASE_URL || 'postgres://diller:diller@localhost:5432/diller'; +var mqttUrl = process.env.MQTT_URL || 'mqtt://trygvis.io'; + +var pgClient = new pg.Client(connectionString); +pgClient.connect(); +pgClient.on('connect', function () { + log.info('connected to pg'); +}); + +var log = bunyan.createLogger({name: 'main'}); + +var apps = [ + './apps/logger', + './apps/device', + './apps/values' +]; + +appConfig = { + pg: { + connect: function (cb) { + pg.connect(connectionString, cb); + } + } +}; + +apps = _.map(apps, function (name) { + log.info('Loading app: ' + name); + var app = require(name); + var cfg = _.clone(appConfig); + + cfg.log = bunyan.createLogger({name: name}); + app.init(cfg); + return {name: name, instance: app}; +}); + +log.info('Connecting to ' + mqttUrl); +var mqttClient = mqtt.connect(mqttUrl); + +mqttClient.on('offline', function () { + log.info('offline'); +}); + +mqttClient.on('error', function (error) { + log.info('error', {error: error}); +}); + +mqttClient.on('connect', function () { + log.info('Connected'); + mqttClient.subscribe('/diller/#'); +}); + +mqttClient.on('message', function (topic, message, payload) { + log.info('got message', {message: message.toString()}); + + _.each(apps, function (app) { + app.instance.onMessage(topic, message, payload); + }); +}); |