UNPKG

cherry-spotify

Version:

Spotify plugin for cherry home automation via spop

68 lines (54 loc) 1.44 kB
var net = require("net"); /** * Spop specific log function */ function log() { Array.prototype.unshift.call(arguments, "[cherry-spotify]"); console.log.apply(console, arguments); } module.exports = function (ec) { var ip = ec.config.spop_ip; var port = ec.config.spop_port; var socket; function tcp_connect () { if (typeof socket !== "undefined") { socket.destroy(); } socket = new net.Socket(); socket.on('error', function (err) { log('socket error, trying to reconnect', err); tcp_connect(); }); socket.on('connect', function() { log("connected to spop daemon"); }); var buffer = ""; var once = false; socket.on('data', function (data) { var text = data.toString('utf8'); buffer += text; if (text[text.length - 1] === '\n') { var message = buffer.trim(); // empty the buffer for the next message buffer = ""; if (!once) { // first message from Spop, should be the version number log(message); once = true; } else { try { var obj = JSON.parse(message); ec.produce({from: 'spop', body: obj}); } catch (err) { log('caught', err, message); } } } }); socket.connect(port, ip); } tcp_connect(); ec.register('spop', function (cmd) { socket.write(cmd + '\n'); }); }