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); }
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;