3333CONF_CHIMETTS_TTS_SPEED = 'chimetts_tts_speed'
3434CONF_CHIMETTS_TTS_PITCH = 'chimetts_tts_pitch'
3535
36- ATTR_SYNC_GROUP = 'sync_group '
36+ ATTR_SYNC_GROUP = 'group_members '
3737ATTR_VOLUME = 'volume_level'
3838ATTR_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 ()
0 commit comments