def check(self): if Settings.autoPauseSonos() and not Settings.linkAudioWithSonos(): try: # Check to see if something has started playing if xbmc.Player().isPlaying(): # If this is a change in play state since the last time we checked if self.xbmcPlayState is False: log("SonosAutoPause: Automatically pausing Sonos") self.xbmcPlayState = True # Pause the sonos if it is playing if self._isSonosPlaying(): self.sonosDevice.pause() self.autoStopped = True self.resumeCountdown = Settings.autoResumeSonos() else: self.xbmcPlayState = False if Settings.autoResumeSonos() > 0 and self.autoStopped: if self.resumeCountdown > 0: self.resumeCountdown = self.resumeCountdown - 1 else: log("SonosAutoPause: Automatically resuming Sonos") self.sonosDevice.play() self.autoStopped = False self.resumeCountdown = Settings.autoResumeSonos() except: # If we fail to stop the speaker playing, it may be because # there is a network problem or the speaker is powered down # So we just continue after logging the error log("SonosAutoPause: Error from speaker %s" % Settings.getIPAddress()) log("SonosAutoPause: %s" % traceback.format_exc())
def updateSonosVolume(self): # Check to see if the Sonos Volume Link is Enabled if not Settings.linkAudioWithSonos(): return # Get the current Kodi Volume xbmcVolume, xbmcMuted = self._getXbmcVolume() log("SonosVolumeLink: xbmcVolume = %d, selfvol = %d" % (xbmcVolume, self.sonosVolume)) # Check to see if it has changed, and if we need to change the sonos value if (xbmcVolume != -1) and (xbmcVolume != self.sonosVolume): log("SonosVolumeLink: Setting volume to = %d" % xbmcVolume) sonosDevice.volume = xbmcVolume self.sonosVolume = xbmcVolume # Check to see if Kodi has been muted if (xbmcMuted != -1) and (xbmcMuted != self.sonosMuted): sonosDevice.mute = xbmcMuted self.sonosMuted = xbmcMuted
log("AutoUpdateIPAddress: Setting IP address to %s" % ipaddresses[0]) Settings.setIPAddress(ipaddresses[0]) ################################ # Main of the Sonos Service ################################ if __name__ == '__main__': log("SonosService: Starting service (version %s)" % __version__) # Start by doing any auto-setting of the IP Address autoIpAdd = AutoUpdateIPAddress() del autoIpAdd # Check for the list of things that impact audio audioChanges = Settings.linkAudioWithSonos() or Settings.switchSonosToLineIn() or Settings.switchSonosToLineInOnMediaStart() # Check to see if we need to launch the Sonos Controller as soon as Kodi starts if Settings.autoLaunchControllerOnStartup(): # Launch the Sonos controller, but do not block as we have more to do as a service log("SonosService: Launching controller on startup") xbmc.executebuiltin('RunScript(%s)' % (os.path.join(__cwd__, "default.py")), False) if (not Settings.isNotificationEnabled()) and (not audioChanges) and (not Settings.autoPauseSonos()): log("SonosService: Notifications, Volume Link and Auto Pause are disabled, exiting service") else: sonosDevice = Sonos.createSonosDevice() # Make sure a Sonos speaker was found if sonosDevice is not None: timeUntilNextCheck = Settings.getNotificationCheckFrequency()