• MMauroUtente giovane

    Livello 42
  • Modificato

Package Notification HUB AppDaemon

GitHub release (latest by date) GitHub Release Date Hass.io Maintenance GitHub issues

Notifier Centre for Home Assistant by Engineer Gianpi (@jumping2000)

GitHub release (latest by date) GitHub Release Date Hass.io GitHub issues

Dopo il package centro Notifiche realizzato dal nostro Admin Caio Sweet lo staff di Hassio Help ha deciso di realizzarne uno più completo e funzionale, che permettesse di tenere i messaggi audio da inviare in coda e che non presentasse i limiti del precedente. Grazie alle possibilità offerte dal linguaggio di programmazione Python, all’addon Appdaemon ed agli sforzi congiunti di Caio Sweet e di Gianpi, siamo lieti di presentarvi il nuovo centro notifiche.

Guida AppDaemon: automazioni al massimo, Guida Notifier 2.0, Guida Notifier 3.0, Wiki 2023.7

    Ciao!
    Ho notato che uno script portato dalla vecchia versione faceva piantare il sistema con il seguente errore:

    ==> logs/appdaemon/error.log <==
    2019-12-27 13:03:23.096067 WARNING AppDaemon: ------------------------------------------------------------
    2019-12-27 13:03:23.097652 WARNING AppDaemon: Unexpected error in worker for App Notifier_Dispatch:
    2019-12-27 13:03:23.098240 WARNING AppDaemon: Worker Ags: {'name': 'Notifier_Dispatch', 'id': UUID('6dbcd790-8668-4d81-ad0e-89450f355f80'), 'type': 'event', 'event': 'hub', 'function': <bound method Notifier_Dispatch.notify_hub of <notifier_dispatch.Notifier_Dispatch object at 0x7fc19c8bccc0>>, 'data': {'title': '', 'link': '', 'volume': '0.6', 'mute': '', 'no_show': '', 'notify': '1', 'location': '', 'url': '', 'file': '', 'caption': '', 'alexa_type': 'tts', 'alexa_method': 'speak', 'alexa_push': '', 'media_player_google': '', 'media_player_alexa': 'media_player.soggiorno', 'language': 'it', 'priority': '', 'message_tts': '', 'message': 'ciao'}, 'kwargs': {}}
    2019-12-27 13:03:23.099862 WARNING AppDaemon: ------------------------------------------------------------
    2019-12-27 13:03:23.100803 WARNING AppDaemon: Traceback (most recent call last):
     File "/usr/lib/python3.7/site-packages/appdaemon/appdaemon.py", line 600, in worker
       funcref(args["event"], data, args["kwargs"])
     File "/config/appdaemon/apps/notifier/notifier_dispatch.py", line 115, in notify_hub
       self.notification_manager.send_notify(data, notify_name, self.get_state(self.personal_assistant_name))
     File "/config/appdaemon/apps/notifier/notification_manager.py", line 75, in send_notify
       title = title)
     File "/usr/lib/python3.7/site-packages/appdaemon/plugins/hass/hassapi.py", line 22, in func_wrapper
       return func(*args, **kwargs)
     File "/usr/lib/python3.7/site-packages/appdaemon/plugins/hass/hassapi.py", line 522, in call_service
       r.raise_for_status()
     File "/usr/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
       raise HTTPError(http_error_msg, response=self)
    requests.exceptions.HTTPError: 400 Client Error: Bad Request for url: http://hassio/homeassistant/api/services/notify/1
    
    2019-12-27 13:03:23.101649 WARNING AppDaemon: ------------------------------------------------------------

    Lo script è:

    call_no_annuncio: 1
    media_player_alexa: media_player.soggiorno
    message: Messaggio da leggere
    volume: 0.6
    notify: 1

    Il problema si è risolto togliendo "notify: 1"

      • Caio SweetPrincipiante

        Livello 63

      Ciao :0)

      notify: Friendly_name --> manda messaggio (es. notifty: telegram o notify: massimo o notify: Mobile App Oneplus 5t).
      notify: 0 NON manda nessuna notifica testo 
      Se non metti per nulla notify: --> manda la notifica con il nome di default nel select default_notify_hub.

      Per non creare no_notify, otto mesi fa l'ho pensato così  😛
      Quindi notify: 1 non esiste (nel vecchio package c'era un controllo, ma visto che ora nella guida c'è scritto PRO... abbiamo deciso di togliere le cazzatine???)
      In pratica di default è come se fosse notify: 1, ma non occorre e non si deve scrivere...

      Mi rendo conto che è in contrasto con l'intera logica del package, ma mi sembrava inutile aggiungere un ulteriore "variabile".

        Ho inserito nel file secret i friendly_name dei gh, ma regola solo il volume e non pronuncia il messaggio. Da cosa può dipendere?

          Ciao. Dal nome del servizio tts Google? Prova a vedere in servizi come si chiama...
          tts.google_say? O tts.google_translate_say? Quello che hai in servizi, va messo nel secret alla voce tts_google: tts.google_etcetc.

            Provo, grazie!

              4 giorni dopo
              • Ppscka

                  Livello 0

                anche io stesso problema!

                PS anche disattivando le notifiche persistenti o messaggi di testo alla ricezione delle notifiche continuano ad arrivarmi, l'ho installato da poco tempo quindi puo essere che ancora me lo devo studiare bene

                  • Caio SweetPrincipiante

                    Livello 63

                  anche io stesso problema!

                  PS anche disattivando le notifiche persistenti o messaggi di testo alla ricezione delle notifiche continuano ad arrivarmi, l'ho installato da poco tempo quindi puo essere che ancora me lo devo studiare bene

                  Se hai priority attivo, bypassa tutto, ovvero, manda la nitifica, anche se sono disattivati gli switch..

                  Stesso problema, con google? sopra c'è la soluzione, se non va, dacci più informazioni... metti i file, posta i logs... ;0)

                    • Ppscka

                        Livello 0

                      ok domani posto i log! comunque ho impostato come tts quello tra i servizi (tts.google_translate_say) ma non va, il volume lo regola ma non parla.
                      domani provo a installare google assistant webserver (che tra l'altro non mi si installa, mi da error 404) e vedo se cambia.

                        scusate, ammetto di essere inesperto, volevo capire come utilizzare il nuovo centro notifiche: ho copiato i file della cartella package dello zip, ma il file hub_automation che sta in un altra cartella, va o non va copiato?

                          Sono esempi, nell'altro package stava direttamente nella cartella, ma non tutti vogliono quelle automazioni, quindi abbiamo deciso di inserire il minimo necessario per iniziare, poi ognuno è libero di crearsi le proprie automazioni e/o prendere spunto dagli esempi ;0)

                            5 giorni dopo

                            Volevo solo avvertire Caio che funziona tutto.
                            Grazie davvero per ieri sera!

                            N.B.
                            Avete tolto le automazioni predefiniti in macro che erano fantastiche.....cattivi! 🙂

                              • Caio SweetPrincipiante

                                Livello 63

                              Le trovi nella cartella esempi... Sono tutte li.
                              ? Bravo!

                                Ciao Mauro,
                                ecco il codice dell'automazione per intero:

                                - alias: Benvenuto
                                  initial_state: true
                                  trigger:
                                    - platform: state
                                      entity_id: person.letizia
                                      from: 'not_home'
                                      to: 'home'
                                      for: '00:02:00'
                                  action:
                                    - service: script.my_notify
                                      data_template:
                                        call_no_annuncio: 1
                                        title: Benvenuto
                                        benvenuto: >
                                          {% set person = trigger.entity_id.split('.')[1]|replace('_', ' ') %}
                                          {%- macro benvenuto(person) -%}
                                          {{ [
                                          "Bentornato a casa " ~person~" ",
                                          "Indovina chi è a casa? è " ~person~" ",
                                          person + " è ora in casa. ",
                                          "Benvenuto a casa " ~person~". Ci sei mancato. ",
                                          "La nostra casa è ora completa, riposati e rilassati!. Bentornato " ~person~" ",
                                          "La vita è come una canzone, sei di nuovo al posto tuo. Benvenuto a casa " ~person~" ",
                                          "Ehilà!. " ~person~ " Benvenuto a casa!. ",
                                          "Toc toc. Chi c'è qui? è " ~person~" ",
                                          person~ "!. Tu sei a casa!.",
                                          "Conosco un segreto!. " ~person~ " è a casa!. ",
                                          "Sto percependo un disturbo nella forza.. " ~person~ " deve essere a casa!. ",
                                          "E la casa diventa una casa. Bentornato. " ~person~" ",
                                          person~ " è qui ora. Benvenuto a casa. ",
                                          person~ " è ora qui. ",
                                          "Solo un piccolo annuncio. " ~person~ " è arrivato!. ",
                                          "Perdonate l'interruzione, ma " ~person~ " è a casa!. ",
                                          "I miei sistemi stanno rilevando la presenza di ulteriori umani. " ~person~ " è stato identificato come: in casa. "
                                          "Bentornato "~person~"!. La casa si sta attivando!. ",
                                          "Benvenuto a casa "~person~"!. È bello rivederti!. Lasciami accendere la casa. ",
                                          "Beh, sembra che "~person~" sia finalmente a casa!. Preparerò la casa per te. ",
                                          "È bello vedere che sei tornato sano e salvo "~person~"!. Lasciami aprire la porta e preparare la casa. ",
                                          "Fantastico, "~person~" è tornato!. Permettimi di preparare la casa per te. "
                                          ] | random }}
                                          {%- endmacro -%}
                                          {{ benvenuto(person) }}
                                

                                Caio parlava di inserire la variabile nel file hub_buil_message ma il problema e' dove inserire il tutto.
                                Grazie in anticipo per il supporto!

                                Alessandro

                                  • Caio SweetPrincipiante

                                    Livello 63

                                  Guarda l'esempio qui
                                  Che poi era nel vecchio package pari pari... puoi anche inserirlo tutto se vuoi... ma credo che a parte certe automazioni "standard" per tutti, il resto sia da costruire secondo i propri gusti ed esigenze.

                                    Perfetto!

                                    Ma l'automazione resta questa come da esempio:

                                    - alias: Benvenuto
                                      initial_state: true
                                      trigger:
                                        - platform: state
                                          entity_id: person.alessandro
                                          from: 'not_home'
                                          to: 'home'
                                          for: '00:02:00'
                                      action:
                                        - service: script.my_notify
                                          data_template:
                                            call_no_annuncio: 1
                                            title: Benvenuto
                                            benvenuto: >
                                              {% set person = trigger.entity_id.split('.')[1]|replace('_', ' ') %}
                                              {%- macro benvenuto(person) -%}
                                              {{ [
                                              "Bentornato a casa " ~person~" ",
                                              "Indovina chi è a casa? è " ~person~" ",
                                              person + " è ora in casa. ",
                                              "Benvenuto a casa " ~person~". Ci sei mancato. ",
                                              "La nostra casa è ora completa, riposati e rilassati!. Bentornato " ~person~" ",
                                              "La vita è come una canzone, sei di nuovo al posto tuo. Benvenuto a casa " ~person~" ",
                                              "Ehilà!. " ~person~ " Benvenuto a casa!. ",
                                              "Toc toc. Chi c'è qui? è " ~person~" ",
                                              person~ "!. Tu sei a casa!.",
                                              "Conosco un segreto!. " ~person~ " è a casa!. ",
                                              "Sto percependo un disturbo nella forza.. " ~person~ " deve essere a casa!. ",
                                              "E la casa diventa una casa. Bentornato. " ~person~" ",
                                              person~ " è qui ora. Benvenuto a casa. ",
                                              person~ " è ora qui. ",
                                              "Solo un piccolo annuncio. " ~person~ " è arrivato!. ",
                                              "Perdonate l'interruzione, ma " ~person~ " è a casa!. ",
                                              "I miei sistemi stanno rilevando la presenza di ulteriori umani. " ~person~ " è stato identificato come: in casa. "
                                              "Bentornato "~person~"!. La casa si sta attivando!. ",
                                              "Benvenuto a casa "~person~"!. È bello rivederti!. Lasciami accendere la casa. ",
                                              "Beh, sembra che "~person~" sia finalmente a casa!. Preparerò la casa per te. ",
                                              "È bello vedere che sei tornato sano e salvo "~person~"!. Lasciami aprire la porta e preparare la casa. ",
                                              "Fantastico, "~person~" è tornato!. Permettimi di preparare la casa per te. "
                                              ] | random }}
                                              {%- endmacro -%}
                                              {{ benvenuto(person) }}

                                    Una curiosita'......le macro del tempo quando si attivano?

                                    Grazie mille!!

                                      Per il tempo dipende da come vuoi che funziona... ti faccio un esempio.
                                      Diciamo che voglio richiamare le condizioni del tempo, da diverse automazioni. Per non scrivere sempre lo stesso codice in tutte quelle automazioni dove desidero questa informazione, mi creo un template da richiamare all'occorrenza.

                                      Per prima cosa mi creo la macro

                                      [php]  {%- macro meteo() -%}
                                         Fuori, sarà {{ states('sensor.dark_sky_hourly_summary')|lower }}
                                       {%- endmacro -%}[/php]

                                      poi aggiungerò un condizione, prima che si valorizzi la variabile {{message}}, in modo tale che, solo se attivo questa macro, mi restituisce il risultato.

                                      [php]{% if call_meteo == 1 %} {{ meteo() }} {% endif %}[/php]

                                      Ora non resta che aggiungere l'attivazione all'interno dell'automazione/script.

                                      [php]      - service: script.my_notify
                                             data:
                                               call_meteo: 1[/php]

                                      A questo punto, quando l'automazione parte, in {{message}} avrò le condizioni meteo.

                                      Questo è un semplice esempio, ma si possono realizzare cose più complesse.

                                        8 giorni dopo

                                        Buongiorno,
                                        con l'aggiornamento di ieri sera ha smesso sia di mandare messaggi Telegram che di fare seguici la annunci Google. L'errore nel registro è "0:0" script error.
                                        P.s.: prima dell'aggiornamento funzionava

                                          • Caio SweetPrincipiante

                                            Livello 63

                                          Va aggiornata anche la parte Appdaemon.
                                          Che errori ci sono nei logs di appdaemon?
                                          Controlla se nel secret è stato aggiunta qualche altra variabile alla fine...

                                            Io ho aggiornato direttamente tramite HACS... non viene fatto tutto in automatico? Come bisogna fare?