Advertisement
energywave

Alexa misc + E' pronto da mangiare

Dec 6th, 2022
1,525
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 7.88 KB | None | 0 0
  1. sensor:
  2.   - platform: template
  3.     sensors:
  4.       last_alexa:
  5.         value_template: >
  6.          {{ expand(states.group.ovunque) | selectattr('attributes.last_called','eq',True) | map(attribute='entity_id') | first }}
  7.  
  8. input_text:
  9.   alexa_actionable_notification:
  10.     name: Alexa Actionable Notification Holder
  11.     max: 255
  12.     initial: '{"text": "Questa è una prova delle azioni Alexa con skill personalizzata. Funziona?", "event": "actionable.skill.test"}'
  13.  
  14. script:
  15.  # Script actionable notification di Alexa
  16.   activate_alexa_actionable_notification:
  17.     description: "Attiva una notifica azionabile su uno specifico dispositivo echo"
  18.     fields:
  19.       text:
  20.         description: "Il testo che vuoi che Alexa pronunci"
  21.         example: "Vuoi chiudere la porta?"
  22.       event_id:
  23.         description: "ID evento da correlare per le risposte"
  24.         example: "ask_close_door"
  25.       alexa_device:
  26.         description: "Dispositivo Alexa che vuoi usare"
  27.         example: "media_player.alexa_mansarda"
  28.     sequence:
  29.       - service: input_text.set_value
  30.         data:
  31.           entity_id: input_text.alexa_actionable_notification
  32.           value: '{"text": "{{ text }}", "event": "{{ event_id }}"}'
  33.       - service: media_player.play_media
  34.         data:
  35.           entity_id: "{{ alexa_device }}"
  36.           media_content_type: skill
  37.           media_content_id: amzn1.ask.skill.2352ef13-b515-43a9-92b2-5a64fc8e3201
  38.  
  39.   # Script da chiamare con routing di Alexa: "Alexa, è pronto da mangiare"
  40.   # TODO: raffinare le notifiche a seconda di dove vengono rilevati gli utenti, magari chiamandoli per nome se si sa dove sono.
  41.   pronto_da_mangiare:
  42.     alias: "E' pronto da mangiare"
  43.     description: "Script da usare per la routine di Alexa che avvisa che è pronto da mangiare"
  44.     sequence:
  45.       - alias: "Se papà è a casa o in zona"
  46.         choose:
  47.           - conditions:
  48.               - condition: template
  49.                 value_template: "{{distance(states.device_tracker.tel_henrik) < 20 or is_state('binary_sensor.henrik_at_home','on')}}"
  50.             sequence:
  51.               - service: script.multinotify
  52.                 continue_on_error: true
  53.                 data:
  54.                   title: "E' pronto da mangiare"
  55.                   message: "Antonella chiama a raduno la famiglia a tavola"
  56.                   notify_app: notify.mobile_app_tel_henrik
  57.                   group: meal
  58.                   channel: meal
  59.                   icon: meal
  60.                   app_actions:
  61.                     - action: "pronto_mangiare_ok"
  62.                       title: "CONFERMA"
  63.                     - action: "pronto_mangiare_returning"
  64.                       title: "STO RIENTRANDO"
  65.                     - action: "pronto_mangiare_delay"
  66.                       title: "TRA POCO"
  67.       - alias: "Se Erica è a casa"
  68.         choose:
  69.           - conditions:
  70.               - condition: template
  71.                 value_template: "{{is_state('binary_sensor.erica_at_home','on')}}"
  72.             sequence:
  73.               - service: script.multinotify
  74.                 continue_on_error: true
  75.                 data:
  76.                   title: "E' pronto da mangiare"
  77.                   message: "La mamma chiama a raduno la famiglia a tavola!"
  78.                   notify_app: notify.mobile_app_iphone_di_erica
  79.                   group: meal
  80.                   channel: meal
  81.                   icon: meal
  82.                   app_actions:
  83.                     - action: "pronto_mangiare_ok"
  84.                       title: "CONFERMA"
  85.                     - action: "pronto_mangiare_delay"
  86.                       title: "TRA POCO"
  87.       - service: script.multinotify
  88.         data:
  89.           title: "E' pronto da mangiare!"
  90.           message: "Hey, è pronto da mangiare!"
  91.           alexa_target:
  92.            - media_player.mansarda
  93.             - media_player.primo_piano
  94.           alexa_volume: 0.8
  95.           alexa_force: true
  96.  
  97. automation:
  98.   - id: a2c0ecc8-29e5-4965-a120-bf32d56284ba
  99.     alias: "Comunicazione - Notifica - Pronto da mangiare Actions"
  100.     description: "Quando si preme su una risposta alla notifica che è pronto da mangiare"
  101.     trigger:
  102.       - platform: event
  103.         event_type: mobile_app_notification_action
  104.         event_data:
  105.           action: "pronto_mangiare_ok"
  106.         id: "ok"
  107.       - platform: event
  108.         event_type: mobile_app_notification_action
  109.         event_data:
  110.           action: "pronto_mangiare_delay"
  111.         id: "delay"
  112.       - platform: event
  113.         event_type: mobile_app_notification_action
  114.         event_data:
  115.           action: "pronto_mangiare_returning"
  116.         id: "returning"
  117.     variables:
  118.       user_id: "{{trigger.event.context.user_id}}"
  119.       person_id: "{{ states.person | selectattr('attributes.user_id', 'defined') | selectattr('attributes.user_id', '==', user_id) | map(attribute='attributes.id') | first | default('') }}"
  120.       person_name_surname: "{{ states.person[person_id].name | default('Utente sconosciuto') }}"
  121.       person_name: "{{ person_name_surname | regex_findall(find='(\\w+) ') | first }}"
  122.     action:
  123.       - alias: "A seconda della risposta"
  124.         choose:
  125.           - conditions:
  126.              - "{{trigger.id == 'ok'}}"
  127.             sequence:
  128.               - service: script.multinotify
  129.                 data:
  130.                   message: "{{person_name}} conferma che sta arrivando a mangiare"
  131.                   alexa_target: media_player.pian_terreno
  132.                   alexa_volume: 0.8
  133.                   alexa_force: true
  134.           - conditions:
  135.              - "{{trigger.id == 'delay'}}"
  136.             sequence:
  137.               - service: script.multinotify
  138.                 data:
  139.                   message: "{{person_name}} ha sentito che è pronto ma arriverà tra poco, appena terminata una attività"
  140.                   alexa_target: media_player.pian_terreno
  141.                   alexa_volume: 0.8
  142.                   alexa_force: true
  143.           - conditions:
  144.              - "{{trigger.id == 'returning'}}"
  145.             sequence:
  146.               - service: script.multinotify
  147.                 data:
  148.                   message: "{{person_name}} ha letto la notifica e comunica che sta arrivando, il tempo di rientrare a casa. Al momento risulta a {{ distance(states.person[person_id]) | float(0) | round(1) }} chilometri da casa."
  149.                   alexa_target: media_player.pian_terreno
  150.                   alexa_volume: 0.8
  151.                   alexa_force: true
  152.  
  153.   # Se viene fermata la musica a pian terreno e il volume è al 30% ripristina il volume normale del 60% per evitare che in seguito risponano Echo Dot più lontani...
  154.   - id: 979a8650-d59c-416f-8b36-e2b96bae47af
  155.     alias: "Alexa - Azione - Ripristino volume dopo musica"
  156.     description: "Ripristina il volume al 60% dopo aver riprodotto la musica al pian terreno"
  157.     trigger:
  158.       - platform: state
  159.         entity_id: media_player.pian_terreno
  160.         from: "playing"
  161.     condition:
  162.       - alias: "Se il volume era al 30% (quella impostata automaticamente dalla musica di sottofondo)"
  163.         condition: template
  164.         value_template: "{{ is_state_attr('media_player.pian_terreno', 'volume_level', 0.3) }}"
  165.     action:
  166.       - alias: "Imposta il volume al 60%"
  167.         service: media_player.volume_set
  168.         data:
  169.           entity_id: media_player.pian_terreno
  170.           volume_level: 0.6
  171.  
  172.   # Notifica quando Alexa Media Player necessita relogin
  173.   - id: 11996eb7-ed6a-4592-af88-994534b3c836
  174.     alias: Alexa - Notifica - Relogin Alexa Media Player
  175.     trigger:
  176.       - platform: event
  177.         event_type: "alexa_media_relogin_required"
  178.     action:
  179.       - service: script.multinotify
  180.         data:
  181.           title: Alexa relogin
  182.           message: Alexa Media Player richiede il relogin su Home Assistant. Le notifiche non verranno più riprodotte finché non verrà fatto il relogin.
  183.           group: warning
  184.           notify_app: notify.all_android_devices
  185.           critical: true
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement