Example #1
0
	this.connect = function() {
		clearTimeout(disconnectHandler);

		if (connected) return;
		
		console.log("Connect");
		
		connected = true;
		
		var device = airtunes.add(argv.host, argv);

		device.on('error', function(err) {
		  console.log('device error: ' + err);
		  process.exit(1);
		});	
	},
Example #2
0
function add(speaker, volume) {

    if (speakers[speaker] && speakers[speaker].device) {
        console.log('speaker', speaker, 'already added');
        return;
    }

    volume = volume || 20;
    console.log('add ' + speakers[speaker].host + ':' + speakers[speaker].port);

    console.log('mqtt >', config.prefix + '/status/' + speaker + '/connected', 1);
    mqtt.publish(config.prefix + '/status/' + speaker + '/connected', '1', {retain: true});

    speakers[speaker].device = airtunes.add(speakers[speaker].host, {
        port: speakers[speaker].port,
        volume: volume,
        password: speakers[speaker].password
    });

    speakers[speaker].device.on('status', function (status) {
        console.log('status', speaker, status);
        if (status === 'ready') {
            speakers[speaker].connected = true;

            console.log('mqtt >', config.prefix + '/status/' + speaker + '/connected', 2);
            mqtt.publish(config.prefix + '/status/' + speaker + '/connected', '2', {retain: true});
        } else if (status === 'stopped') {
            delete speakers[speaker].device;
            speakers[speaker].connected = false;


            console.log('mqtt >', config.prefix + '/status/' + speaker + '/connected', 0);
            mqtt.publish(config.prefix + '/status/' + speaker + '/connected', '0', {retain: true});
        }
    });

    speakers[speaker].device.on('error', function (err) {
        console.log('error', speaker, err);
        delete speakers[speaker].device;
        speakers[speaker].connected = false;

        console.log('mqtt >', config.prefix + '/status/' + speaker + '/connected', 0);
        mqtt.publish(config.prefix + '/status/' + speaker + '/connected', '0', {retain: true});

    });

}
Example #3
0
var web = express();

web.get("/", function(req, res) {
  res.sendfile('resources/index.html');
});

web.get(/^\/(css|js|fonts)\/(.+)$/, function(req, res){
  var file = __dirname + '/static/' + req.params[0] + '/' + req.params[1];
  res.sendfile(file);
});

var device = airtunes.add(
  argv.airplay_host,
  {
    'port': argv.airplay_port,
    'password': argv.airplay_password,
    'volume': argv.volume
  });

var hasStarted = false;

device.on('status', function(status) {
  if (!hasStarted) {
    console.log('Connected to AirPlay device (' + device.key + ').');

    hasStarted = true;
  } else {
    // TODO(cvangysel): fix this logic.
    if (status == 'stopped') {
      console.log('Another device took control of device ' + device.key + '.');