Digital Pendulum - zegar wypowiadający godzinę

Równo co godzinę (lub nie tylko) urządzenie wypowiada aktualną godzinę, np. jest dwudziesta …

Mam taką aplikację w telefonie (android) - caynax hourlu chime.

Nie pytajcie po co, po prostu chcę mieć. :slight_smile:

Zachciało mi się podobnej funkcjonalności w HA.

Zainstalowałem z HACS Digital Pendulum

Mam dźwięk dzwonka (ustawiony o równej godzine, w określonych godzinach dnia etc.)

Dźwięk odtwarzany jest w głosnikach Google Nest.

Oprócz samego dźwięku powinna być wypowiadana “słownie” godzina.

Tego nie mam.
Czyli sam dźwięk.

1 polubienie

Mam takie. Czegoś mi brakuje ?

Wykonania kolejnych punktów wg dokumentacji.

Bywają takie przypadki, że TTS nie działa na niektórych odtwarzaczach.
Widzę dodatkowo, że Digital Pendulum ma swoje dodatkowe wymagania - trzeba skonfigurować rodzaj odtwarzacza zgodny z odtwarzaczem (3 rodzaje do wyboru, w dodatku z tego co wiem ani urządzenia Alexa, ani Google Home nie odtwarzają języka polskiego w swoim natywnym trybie, odtwarzają to w sumie złe określenie - chodzi o to, że nie syntetyzują polskiego języka).

BTW U mnie to w ogóle nie działa (nawet nie odtwarza dźwięku, nie mówiąc o TTS), a szkoda mi czasu na szukanie przyczyny.
Każda zmiana konfiguracji wymaga restartu HA (bo to komponent niestandardowy) więc dalsze testy sobie daruję.

LOGI

Rejestrator: homeassistant.core
Źródło: core.py:2847
Pierwsze zdarzenie: 12:23:41 (6 wystąpień)
Ostatnio zalogowany: 14:00:05

Error executing service: <ServiceCall tts.speak (c:01KTV32XX8JHP33KBF122D): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest dwunasta i 27, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTV3M1VQDA074PSFHNR59N7V): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest dwunasta i 28, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTV5E15TQM1KB0AADQ85N): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest trzynasta, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTV8B7ARC0YYT7ZKPHZTCY8Z): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest trzynasta i 51, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTV8VHN093JW41S94VEA0): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest czternasta, language=pl, cache=True>
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/core.py”, line 2847, in _run_service_call_catch_exceptions
await coro_or_task
File “/usr/src/homeassistant/homeassistant/core.py”, line 2870, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 949, in entity_service_call
response_data = await _async_handle_entity_calls(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…<5 lines>…
)
^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 828, in _async_handle_entity_calls
single_result = await entity.async_request_call(_with_context(entity, coro))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 1702, in async_request_call
return await coro
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 823, in _with_context
return await coro
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 907, in _handle_single_entity_call
result = await task
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/tts/entity.py”, line 145, in async_speak
ATTR_MEDIA_CONTENT_ID: generate_media_source_id(
~~~~~~~~~~~~~~~~~~~~~~~~^
self.hass,
^^^^^^^^^^
…<4 lines>…
cache=cache,
^^^^^^^^^^^^
),
^
File “/usr/src/homeassistant/homeassistant/components/tts/media_source.py”, line 50, in generate_media_source_id
hass.data[DATA_TTS_MANAGER].process_options(engine_instance, language, options)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/tts/init.py”, line 781, in process_options
raise HomeAssistantError(f"Language ‘{language}’ not supported")
homeassistant.exceptions.HomeAssistantError: Language ‘pl’ not supported

Wydaje się, że pokazujesz właśnie to co opisałem post wyżej - Nest hub nie mówi po polsku.

Dla testów możesz ustawić jakiś język jaki obsługuje (na 100% angielski, niemiecki, włoski i francuski, ale są i jakieś inne), pełna lista niżej, Nest Huby są w rozwijalnych listach na dole

albo eksperymentować z wykorzystaniem go jako odtwarzacz poza natywnym trybem GH

zmiana języka nic nie daje.

To eksperymentuj z innym odtwarzaczem, zgłoś issue do komponentu itd.
Coś się w logach zmieniło?

dalej błąd:

image

Tak, wklej obrazek zawierający jeszcze mniej treści… to na 100% ułatwi życie komuś chcącemu pomóc…
Jak sobie wyobrażasz porównanie wcześniejszego loga i tego co pokazałeś obecnie?

W tym poprzednim logu były chociaż jakieś konkretne informacje

Ale i tak twojego problemu nawet nie jestem w stanie odtworzyć, bo nie używam chmury NabuCasa.

Przepraszam. Wstawiam cały log.

Rejestrator: homeassistant.core
Źródło: core.py:2847
Pierwsze zdarzenie: 11 czerwca 2026 15:00:03 (32 wystąpienia)
Ostatnio zalogowany: 16:00:05

Error executing service: <ServiceCall tts.speak (c:01KTXMCNRK2JGE2ZREQ): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest dwunasta, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTXQTDJTZXSGMMC1D1271): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest trzynasta, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTXV88HB5RFRE88KHBKPFABP): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest czternasta, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTXYP42ZDEY0AWHCNC3MC2MR): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest piętnasta, language=pl, cache=True>
Error executing service: <ServiceCall tts.speak (c:01KTY23ZHRDHQJTBS9EJYAC): entity_id=[‘tts.home_assistant_cloud’], media_player_entity_id=[‘media_player.nesthub0dd1_4’], message=Jest szesnasta, language=pl, cache=True>
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/core.py”, line 2847, in _run_service_call_catch_exceptions
await coro_or_task
File “/usr/src/homeassistant/homeassistant/core.py”, line 2870, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 949, in entity_service_call
response_data = await _async_handle_entity_calls(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
…<5 lines>…
)
^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 828, in _async_handle_entity_calls
single_result = await entity.async_request_call(_with_context(entity, coro))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 1702, in async_request_call
return await coro
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 823, in _with_context
return await coro
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/helpers/service.py”, line 907, in _handle_single_entity_call
result = await task
^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/tts/entity.py”, line 145, in async_speak
ATTR_MEDIA_CONTENT_ID: generate_media_source_id(
~~~~~~~~~~~~~~~~~~~~~~~~^
self.hass,
^^^^^^^^^^
…<4 lines>…
cache=cache,
^^^^^^^^^^^^
),
^
File “/usr/src/homeassistant/homeassistant/components/tts/media_source.py”, line 50, in generate_media_source_id
hass.data[DATA_TTS_MANAGER].process_options(engine_instance, language, options)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/src/homeassistant/homeassistant/components/tts/init.py”, line 781, in process_options
raise HomeAssistantError(f"Language ‘{language}’ not supported")
homeassistant.exceptions.HomeAssistantError: Language ‘en’ not supported

homeassistant.exceptions.HomeAssistantError: Language ‘en’ not supported ??

Nie bardzo rozumiem co tu się dzieje, ale teraz to już w ogóle jest jakiś “szoł” -
do nesthuba wysyłasz język polski (co widać, bo żądania zawierają zarówno tekst po polsku jak i język pl), którego on nie obsługuje, więc nie rozumiem z jakiej paki masz dalej w tym samym logu problem z językiem en

Przećwicz wstawianie logów jako kodu (a NIE jako cytowania) = odwrotne apostrofy podstawy-forum a następnie zgłoś issue na githubie (tam się wstawia kod => czyli logi tak samo jak metodą ręczną na forum) i zgłoś issue (nikt lepiej niż autor nie będzie wiedział co tu się dzieje).

Proponuję jednak wybrać na czas testów jakiś inny player niż nesthuba, a dopiero jak się uda to sprawdź na tym sprzęcie czy nadal działa.

BTW jako TTS który działa jakoby “z każdym odtwarzaczem” używam google translate, ale jak już pisałem ten komponent w ogóle u mnie nie działa, a szkoda mi czasu na walkę. Jeśli będę miał więcej czasu i zdrowie mi pozwoli, to zrobię testy za dwa tygodnie może 3 (a jeśli zdrowie nie pozwoli, to nie zrobię ich wcale).

Z ciekawości zainstalowałem.

U mnie też sypie błędami, tylko że nie mam Nabu Casa.

Zmiana głośnika z Nest Hub na Google Home nic nie dała.

Normalnie używam Google Cloud lub Google translate i wszystko działa.

EDIT:

Pojawiła się aktualizacja do 3.1.6

Pomogło tylko tyle, ze zaczęło odtwarzać dźwięk dzwonka ale TTS dalej nie ma.

Rejestrator: custom_components.digital_pendulum.pendulum
Źródło: custom_components/digital_pendulum/pendulum.py:394
Integration: Digital Pendulum (dokumentacja, Problemy)
Pierwsze zdarzenie: 13:24:23 (1 wystąpienie)
Ostatnio zalogowany: 13:24:23

Digital Pendulum: errore durante l’annuncio su ‘media_player.nest_hub’: extra keys not allowed @ data[‘announce’]

Po aktualizacji taki błąd.

This error originated from a custom integration.

Rejestrator: custom_components.digital_pendulum.pendulum
Źródło: custom_components/digital_pendulum/pendulum.py:394
Integration: Digital Pendulum (dokumentacja, Problemy)
Pierwsze zdarzenie: 10:00:05 (2 wystąpienia)
Ostatnio zalogowany: 11:00:05

Digital Pendulum: errore durante l'annuncio su 'media_player.nesthub0dd1_4': extra keys not allowed @ data['announce']

Głosu dalej nie ma.

Musisz usunąć parametr announce, którego głośniki Google nie akceptują (i poprawka dla Nabu Casa: musi być pl-PL zamiast pl )
W /custom_components/digital_pendulum/player_google.py i podmień całą treść na :

from .player_base import BasePlayer

class GooglePlayer(BasePlayer):
    async def play_default_chime(self):
        pass

    async def play_chime(self, chime_url: str):
        try:
            await self.hass.services.async_call(
                "media_player", "play_media",
                {
                    "entity_id": self.player,
                    "media_content_id": chime_url,
                    "media_content_type": "audio/mp3",
                   
                },
                blocking=True,
            )
        except Exception:
            await self.play_default_chime()

    def _find_tts_entity(self) -> str | None:
        preferred = ["tts.google_translate_say", "tts.home_assistant_cloud", "tts.google_translate"]
        for entity_id in preferred:
            if self.hass.states.get(entity_id) is not None:
                return entity_id
        return None

    async def speak(self, text: str, language: str = "pl"):
        tts_entity = self._find_tts_entity()
        if tts_entity == "tts.home_assistant_cloud" and language == "pl":
            language = "pl-PL"
            
        if tts_entity:
            await self.hass.services.async_call(
                "tts", "speak",
                {
                    "entity_id": tts_entity,
                    "media_player_entity_id": self.player,
                    "message": text,
                    "language": language,
                },
                blocking=False,
            )

Restart HA

Wybierz Generic.

Mój Google zaczął mówić czas po tej podmianie

chyba prościej zrobić automatyzację która co jakiś ustalony szablon czasu odczyta godzinę…

alias: Gadający zegar
description: ""
triggers:
  - trigger: time_pattern
    minutes: /30
conditions: []
actions:
  - action: tts.speak
    target:
      entity_id: tts.google_pl_com
    data:
      cache: true
      media_player_entity_id: media_player.nest
      message: "{{ now().strftime(\"%H:%M\") }}"
mode: single

W digital pendulum poza usunięciem w 2 miejscach:

"announce": True,          # ← ripristina lo stato precedente

jeszcze może być problerm z silnikiem tts - nie używam nabu casy więc tts.home_assistant_cloud u mnie nie działa, dopiero po zmianie

  preferred = ["tts.google_translate_say", "tts.home_assistant_cloud", "tts.google_translate"]

na właśniwą nazwe enicji tts ( u mnie akurat “google_pl_com”)

  preferred = ["google_pl_com"]

działa poprawnie, ale dziwnie i tak to wymiawia z 'i" pomiędzy godziną a minutami

Z ciekawość sprawdziłem

message: “{{ now().strftime("%H:%M") }}”

tts.home_assistant_cloud

Mówi:

“Godzina 20.03” (bez “i”)

tts.google_say

Mówi:

“20.03” (bez “i”)