aboutsummaryrefslogtreecommitdiff
path: root/diller.js
diff options
context:
space:
mode:
Diffstat (limited to 'diller.js')
-rw-r--r--diller.js63
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);
+ });
+});