var mqtt = require('mqtt'); var fs = require('fs'); var bunyan = require('bunyan'); var config = require('./src/config'); function configureLogging(config) { var cfg = { name: 'main' }; if (config.isProd()) { cfg.streams = [ { level: 'warn', stream: process.stdout }, { level: 'debug', path: 'log/diller.log' } ]; var stat; try { stat = fs.lstatSync('log'); } catch (e) { // Assume this to to be ENOENT fs.mkdirSync('log'); } if (stat && !stat.isDirectory()) { throw 'Not a directory: log'; } } return bunyan.createLogger(cfg); } var log = configureLogging(config); var Diller = require('./src/Diller').Diller; var diller = new Diller(config, log); log.info('Connecting to ' + config.mqttUrl); var mqttClient = mqtt.connect(config.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) { diller.onMessage(topic, message, payload); });