Skip to content

Commit 340716e

Browse files
committed
give tts some time to generate and download + fix group resync
1 parent 167cafe commit 340716e

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

custom_components/lms_tts_notify/__init__.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
CONF_CHIMETTS_TTS_SPEED = 'chimetts_tts_speed'
3434
CONF_CHIMETTS_TTS_PITCH = 'chimetts_tts_pitch'
3535

36-
ATTR_SYNC_GROUP = 'sync_group'
36+
ATTR_SYNC_GROUP = 'group_members'
3737
ATTR_VOLUME = 'volume_level'
3838
ATTR_POSITION = 'media_position'
3939

@@ -418,6 +418,7 @@ def __init__(self, hass, config):
418418
self.force_play = False
419419
self.status = 'idle'
420420
self._message = ''
421+
self._timeout = 15
421422
self._device_group = ''
422423
self._chimetts_option_chime_path = config.get(CONF_CHIMETTS_OPTION_CHIME_PATH)
423424
self._chimetts_option_end_chime_path = config.get(CONF_CHIMETTS_OPTION_END_CHIME_PATH)
@@ -437,6 +438,7 @@ def run(self):
437438
break
438439
self.status = 'playing'
439440
self._message = event.get(ATTR_MESSAGE, '').replace('<br>', '')
441+
self._timeout = len(self._message.split())
440442
self._repeat = event.get(CONF_REPEAT, self._config.get(CONF_REPEAT))
441443
self._volume = event.get(CONF_VOLUME, self._config.get(CONF_VOLUME))
442444
self._pause = event.get(CONF_PAUSE, self._config.get(CONF_PAUSE))
@@ -485,29 +487,32 @@ def stop_handler(self, _):
485487

486488
def wait_on_idle(self):
487489
'''Wait until player is done playing'''
488-
timeout = time.time() + 15 #break is media player is stuck
490+
_LOGGER.debug('Waiting for %s status idle', self._media_player)
491+
timeout = time.time() + 5 + self._timeout #break is media player is stuck
489492
while True:
490493
# Force update status of the media_player
491494
service_data = {'entity_id': self._media_player}
492495
self._hass.services.call('homeassistant', 'update_entity', service_data)
493496
time.sleep(0.2)
494497
state = self._hass.states.get(self._media_player).state
495498
if time.time() > timeout:
496-
_LOGGER.debug('Player stuck')
499+
_LOGGER.debug('Player stuck, timeout %ss reached', self._timeout)
497500
break
498501
if state in ['idle', 'paused', 'off', 'unavailable']:
502+
_LOGGER.debug('Player %s idle', self._media_player)
499503
break
500504

501505
def wait_on_finished(self):
502506
'''Wait for player to finish'''
503507
_LOGGER.debug('Waiting for %s to finish', self._media_player)
504-
timeout = time.time() + 2
508+
timeout = time.time() + 5
505509
while True:
506510
service_data = {'entity_id': self._media_player}
507511
self._hass.services.call('homeassistant', 'update_entity', service_data)
508512
time.sleep(0.2)
509513
if self._hass.states.get(self._media_player).state in ['off', 'idle', 'unavailable']:
510514
self.status = 'done'
515+
_LOGGER.debug('Player: %s done', self._media_player)
511516
break
512517
else:
513518
_LOGGER.debug('Player: %s not done', self._media_player)
@@ -523,7 +528,7 @@ def audio_alert(self):
523528
)
524529
# stop media player before changing volume
525530
time.sleep(self._pause)
526-
_LOGGER.debug('Playing message \'%s\' ', self._message)
531+
_LOGGER.debug('Start audio alert')
527532
# Set alert volume
528533
if self._volume:
529534
service_data = {
@@ -541,6 +546,7 @@ def audio_alert(self):
541546
'command': 'playlist',
542547
'parameters': ['resume', self._alert_sound],
543548
}
549+
_LOGGER.debug('Playing alert sound')
544550
self._hass.services.call('squeezebox', 'call_method', service_data)
545551
time.sleep(self._pause)
546552
self.wait_on_idle()
@@ -570,7 +576,7 @@ def audio_alert(self):
570576
'message': self._message,
571577
}
572578

573-
_LOGGER.debug('Playing message on %s.%s', self._tts_group, self._tts_service)
579+
_LOGGER.debug('Playing message: %s on %s with %s.%s', self._message, self._media_player, self._tts_group, self._tts_service)
574580
self._hass.services.call(self._tts_group, self._tts_service, service_data)
575-
time.sleep(self._pause)
576-
self.wait_on_idle()
581+
time.sleep(self._timeout/3) # give tts some time to generate and download if not in cache
582+
self.wait_on_idle()

custom_components/lms_tts_notify/manifest.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
"dependencies": ["media_player", "squeezebox"],
66
"codeowners": ["@floris-b"],
77
"issue_tracker": "https://github.com/floris-b/lms_tts_notify/issues",
8-
"after_dependencies": ["media_player", "squuezebox"],
8+
"after_dependencies": ["media_player", "squeezebox"],
99
"iot_class": "local_push",
10-
"version": "0.3.16"
10+
"version": "0.3.17"
1111
}

0 commit comments

Comments
 (0)