Example #1
0
var discovery = new SonosDiscovery();

var coordinator;
var roomName = 'Office';
var stopTimer;
var stopTimeout = 3000; // in ms, eq 30 seconds
var isActive;

// You can't get the player unless it has been discovered
// On first topology-change, you will have found your system
discovery.on('topology-change', function () {
  // remove event handler if topology changes
  if (coordinator)
    coordinator.removeListener('transport-state', transportChangeHandler);

  console.log('fetching player', roomName);
  var player = discovery.getPlayer(roomName);
  coordinator = player.coordinator;
  coordinator.on('transport-state', transportChangeHandler);
});

function transportChangeHandler(transportData) {
  var state = transportData.state;
  if (!isActive && state.playerState == 'PLAYING') {
    // Player is started, or is playing
    console.log('Player is active');
    isActive = true; // use this flag to know if the stop state is the first one after play.
    clearTimeout(stopTimer);

    // ADD code for starting playback here
var favCounter=20;
var canDelta=true;
var favServer;
var inFaves=false;
var canDelta=true;
var favTimer;
var favURI;
var favTrack;
var player;

// Get our ip addressand make sure our audio container directory exists
initialize();

// Wait until the Sonos discovery process is done, then grab our player
discovery.on('topology-change', function() {
    if (!player)
        grabPlayer();
})

// Here we're going to look for favorites changes
discovery.on('favorites', function(favorites) {
    faves = [];
    for (var i = 0; i < favorites.length; i++) {
        faves.push(favorites[i].title);
    }
// And go get their tts audio
    getFaveAudio(0);
});

discovery.on('transport-state', function(msg) {
    if (msg.uuid == player.coordinator.uuid) {
// And if we've paused, turn the LED off
// discovery.applyPreset(presets[buttonToPreset[keyCode]]);

// this maps keycodes to predefined presets
var buttonToPreset = {
    "1a": "all",
    "2a": "tv"
};


var SonosDiscovery = require('sonos-discovery');
var discovery = new SonosDiscovery();

var targetPlayer = null;
discovery.on('topology-change', function () {
    if (targetPlayer == null) {
        targetPlayer = discovery.getPlayer(defaultTargetPlayerName);
    }
});


var LinuxKeyboard = require('./linux-keyboard.js');
var keyboardKeys = new LinuxKeyboard('event2');
var keyboardMedia = new LinuxKeyboard('event3');

keyboardKeys.on('keypress', processKeyEvent);
keyboardMedia.on('keypress', processKeyEvent);

function processKeyEvent(event) {
    console.log(event.keyCode + " " + event.keyId);

    if (targetPlayer)
    return true;
  },
  "minus": function (player) {
    player.setVolume("-1");
    return true;
  },
};

var player = null;

// We need an initial player as soon as we have scanned the network
// I auto select the "TV Room" just to have anything controllable
// I mapped my color buttons to change the current player if needed
discovery.on('topology-change', function () {
  if (player == null) {
      console.log(`selecting player ${PLAYER_NAME}`);
    player = discovery.getPlayer(PLAYER_NAME);
  }
});

var allowRepeat;

socket.on("data", function (data) {
  var cols = data.toString().split(' ');
  var keyCode = cols[2];
  var repeat = cols[1];
  console.log(repeat, keyCode);
  allowRepeat = repeat == "00" ? true : allowRepeat;

  if (allowRepeat && player && actions[keyCode]) {
    allowRepeat = actions[keyCode](player);
  }
Example #5
0
        if (obj.indexOf(this[i].toLowerCase()) !== (-1)) {
            return true;
        }
    }
    return false;
};

// Look for changes to players' state (stopping and starting)
// Used to reset the queue after a player responds to the "say" command
discovery.on('transport-state', function(data) {
    if (!queueSave[data.uuid]) return;
    if (!queueSave[data.uuid]['started']) {
        queueSave[data.uuid]['started'] = true;
        return;
    }
    var player = discovery.getPlayerByUUID(data.uuid);
    if (player.state.currentState !== 'PAUSED_PLAYBACK' && player.state.currentState !== 'STOPPED') return;
    player.setAVTransportURI(queueSave[data.uuid]['favURI'], '', function(success) {
        player.seek(queueSave[data.uuid]['favTrack'], function() {
            queueSave[data.uuid] = null;
        });
    });
});

app.post('/xmlrpc.php', ifttt, function(req, res) {

    var players = [];
    var playerUUIDs = [];
    // Get all of the players mentioned in this command
    for (var i = 0; i < req.body.mt_keywords.length; i++) {
        var player = discovery.getPlayer(req.body.mt_keywords[i]);
        if (!player) continue;