var Conf = require('./config.json') , Helper = require('../Adawim/helper') , Log = require('../Adawim/logging') , WebSocket = require('ws') , GM = require('gm'); // FIXME: maybe use node-gd instead const WIDTH = Conf.display.dimension.width; const HEIGHT = Conf.display.dimension.height; const wsURL = 'ws://'+Conf.hobu.host+':'+Conf.hobu.port; var ws = null; var oled = null; exports.init = function(oled_) { oled = oled_ ws = new WebSocket(wsURL, { perMessageDeflate: false }) ws.on('open', function open() { ws.send('{type:"version"}') ws.send('{type:"check_global"}') }) ws.on('message', function incoming(data) { if(Log.isTrace()) { Log.inspect('Incoming data', data) } handleIncomeingData(JSON.parse(data)) }) } function handleIncomeingData(data_) { const type = data_.data.type const data = data_.data.data switch(type) { case 'version': Log.debug('HoBu Version: ' + data.value) break case 'check_global': handleGlobalCheck(data) break } } function handleGlobalCheck(data) { const isOK = data.result const foundGarageEntry = filterGarageEntry(data).length > 0 if(foundGarageEntry) { oled.clearDisplay() oled.writeLine(0, 0, 'Garagentor offen!') } else { oled.clearDisplay() oled.writeLine(0, 0, 'Garagentor geschlossen!') } } function filterGarageEntry(data) { const keyword = Conf.keywords.garage if(Helper.isDefinedAndNotNull(data.whatswrong)) { return data.whatswrong.filter(function(entry) { return entry.msgOnErr.indexOf(keyword) >= 0 }) } else { return []; } }