531 lines
20 KiB
YAML
531 lines
20 KiB
YAML
- alias: Package Dieta - Notifica Giornaliera Dieta su Telegram
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.diet_notification_time
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: /diet
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: /diet_today
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ trigger.platform == ''time'' }}'
|
|
- condition: state
|
|
entity_id: input_boolean.diet_notification_switch
|
|
state: 'on'
|
|
- condition: template
|
|
value_template: '{{ trigger.platform == ''event'' }}'
|
|
action:
|
|
- variables:
|
|
days:
|
|
Monday: monday
|
|
Tuesday: tuesday
|
|
Wednesday: wednesday
|
|
Thursday: thursday
|
|
Friday: friday
|
|
Saturday: saturday
|
|
Sunday: sunday
|
|
today: '{{ days[now().strftime(''%A'')] }}'
|
|
days_it:
|
|
monday: lunedì
|
|
tuesday: martedì
|
|
wednesday: mercoledì
|
|
thursday: giovedì
|
|
friday: venerdì
|
|
saturday: sabato
|
|
sunday: domenica
|
|
today_it: '{{ days_it[today] }}'
|
|
list: '{{ state_attr(''sensor.weekly_diet'', ''yaml_list'') or [] }}'
|
|
data: '{% set day_data = list | selectattr(''day'', ''equalto'', today) | list
|
|
| first %} {% set col = day_data.breakfast if day_data is defined and ''breakfast''
|
|
in day_data else '' '' %} {% set lun = day_data.lunch if day_data is defined
|
|
and ''lunch'' in day_data else '' '' %} {% set din = day_data.dinner if day_data
|
|
is defined and ''dinner'' in day_data else '' '' %} {% set sna = day_data.snack
|
|
if day_data is defined and ''snack'' in day_data else '' '' %} {% set out
|
|
= "📅 *Dieta di {}*\n".format(today_it | capitalize) %} {% set out = out +
|
|
"🥐 *Colazione:* {}\n🍝 *Pranzo:* {}\n🌙 *Cena:* {}\n🍪 *Snack:* {}".format(col,
|
|
lun, din, sna) %} {{ out }}
|
|
|
|
'
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.diet_day
|
|
option: '{{ today }}'
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: 1234567890
|
|
parse_mode: markdown
|
|
message: '{{ data }}'
|
|
inline_keyboard:
|
|
- 🧽 Modifica Colazione:/diet_edit_breakfast, 🍝 Modifica Pranzo:/diet_edit_lunch
|
|
- 🌙 Modifica Cena:/diet_edit_dinner, 🍪 Modifica Snack:/diet_edit_snack
|
|
- 🗓 Lunedì:/day_monday, 🗓 Martedì:/day_tuesday, 🗓 Mercoledì:/day_wednesday,
|
|
🗓 Giovedì:/day_thursday
|
|
- 🗓 Venerdì:/day_friday, 🗓 Sabato:/day_saturday, 🗓 Domenica:/day_sunday, ♻️
|
|
Reset Giorno:/diet_reset_day
|
|
- 🔄 Aggiorna:/diet_today, ❌ Annulla:/diet_cancel
|
|
- alias: Package Dieta - Azioni Dieta via Telegram
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_callback
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.data.startswith(''/diet_'') or trigger.event.data.data.startswith(''/day_'')
|
|
}}'
|
|
action:
|
|
- variables:
|
|
command: '{{ trigger.event.data.data }}'
|
|
giorni_it:
|
|
monday: lunedì
|
|
tuesday: martedì
|
|
wednesday: mercoledì
|
|
thursday: giovedì
|
|
friday: venerdì
|
|
saturday: sabato
|
|
sunday: domenica
|
|
- choose:
|
|
- conditions: '{{ command == ''/diet_cancel'' }}'
|
|
sequence:
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
- conditions: '{{ command.startswith(''/day_'') }}'
|
|
sequence:
|
|
- variables:
|
|
day: '{{ command.replace(''/day_'', '''') }}'
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.diet_day
|
|
option: '{{ day }}'
|
|
- wait_template: '{{ states(''input_select.diet_day'') == day }}'
|
|
timeout: 00:00:05
|
|
- event: telegram_callback
|
|
event_data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message:
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
data: /diet_today
|
|
- conditions: '{{ command == ''/diet_today'' }}'
|
|
sequence:
|
|
- variables:
|
|
day: '{{ states(''input_select.diet_day'') }}'
|
|
giorni_it:
|
|
monday: lunedì
|
|
tuesday: martedì
|
|
wednesday: mercoledì
|
|
thursday: giovedì
|
|
friday: venerdì
|
|
saturday: sabato
|
|
sunday: domenica
|
|
giorno_italiano: '{{ giorni_it[day] if day in giorni_it else day }}'
|
|
list: '{{ state_attr(''sensor.weekly_diet'', ''yaml_list'') or [] }}'
|
|
day_data: '{{ (list | selectattr(''day'', ''equalto'', day) | list | first)
|
|
if list else {} }}'
|
|
breakfast: '{{ day_data.breakfast if day_data is defined and ''breakfast''
|
|
in day_data else '' '' }}'
|
|
lunch: '{{ day_data.lunch if day_data is defined and ''lunch'' in day_data
|
|
else '' '' }}'
|
|
dinner: '{{ day_data.dinner if day_data is defined and ''dinner'' in day_data
|
|
else '' '' }}'
|
|
snack: '{{ day_data.snack if day_data is defined and ''snack'' in day_data
|
|
else '' '' }}'
|
|
message: '📅 *Dieta di {{ giorno_italiano|capitalize }}*
|
|
|
|
🥐 *Colazione:* {{ breakfast }}
|
|
|
|
🍝 *Pranzo:* {{ lunch }}
|
|
|
|
🌙 *Cena:* {{ dinner }}
|
|
|
|
🍪 *Snack:* {{ snack }}
|
|
|
|
'
|
|
- service: telegram_bot.edit_message
|
|
data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
parse_mode: markdown
|
|
message: '{{ message }}'
|
|
inline_keyboard:
|
|
- 🧽 Modifica Colazione:/diet_edit_breakfast, 🍝 Modifica Pranzo:/diet_edit_lunch
|
|
- 🌙 Modifica Cena:/diet_edit_dinner, 🍪 Modifica Snack:/diet_edit_snack
|
|
- 🗓 Lunedì:/day_monday, 🗓 Martedì:/day_tuesday, 🗓 Mercoledì:/day_wednesday,
|
|
🗓 Giovedì:/day_thursday
|
|
- 🗓 Venerdì:/day_friday, 🗓 Sabato:/day_saturday, 🗓 Domenica:/day_sunday,
|
|
♻️ Reset Giorno:/diet_reset_day
|
|
- 🔄 Aggiorna:/diet_today, ❌ Annulla:/diet_cancel
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
- choose:
|
|
- conditions: '{{ command == ''/diet_edit_breakfast'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: breakfast
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Inserisci la Colazione via messaggio.
|
|
- conditions: '{{ command == ''/diet_edit_lunch'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: lunch
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Inserisci il Pranzo via messaggio.
|
|
- conditions: '{{ command == ''/diet_edit_dinner'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: dinner
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Inserisci la Cena via messaggio.
|
|
- conditions: '{{ command == ''/diet_edit_snack'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: snack
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Inserisci lo Snack via messaggio.
|
|
- conditions: '{{ command == ''/diet_reset_day'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: script.reset_diet_split_json
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: ❌ Pasti del giorno resettati. Premi 'Aggiorna' per aggiornare.
|
|
- choose:
|
|
- conditions: '{{ command != ''/diet_today'' and not command.startswith(''/day_'')
|
|
and command != ''/diet_cancel'' }}'
|
|
sequence:
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: ✅ Scrivi il pasto nel campo di testo.
|
|
- alias: Package Dieta - Ricezione Testo da Telegram
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_text
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states(''input_text.diet_edit_active'') != '''' }}'
|
|
action:
|
|
- variables:
|
|
type: '{{ states(''input_text.diet_edit_active'') }}'
|
|
text: '{{ trigger.event.data.text }}'
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_{{ type }}
|
|
value: '{{ text }}'
|
|
- service: script.save_diet_split_json
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: ''
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: 1234567890
|
|
message: ✅ {{ 'Colazione' if type == 'breakfast' else 'Pranzo' if type == 'lunch'
|
|
else 'Cena' if type == 'dinner' else 'Snack' if type == 'snack' else type
|
|
| capitalize }} aggiornata. Premi Aggiorna per visualizzare la modifica.
|
|
response_variable: telegram_feedback_response
|
|
- delay: 00:00:01
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: 1234567890
|
|
message_id: last
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: 1234567890
|
|
message_id: last
|
|
- alias: Package Dieta - Reset dei Campi di Testo
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_select.diet_day
|
|
actions:
|
|
- action: script.reset_input_text_diet
|
|
- alias: Package Diet - Telegram Daily Diet Notification
|
|
trigger:
|
|
- platform: time
|
|
at: input_datetime.diet_notification_time
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: /diet
|
|
- platform: event
|
|
event_type: telegram_command
|
|
event_data:
|
|
command: /diet_today
|
|
condition:
|
|
- condition: or
|
|
conditions:
|
|
- condition: and
|
|
conditions:
|
|
- condition: template
|
|
value_template: '{{ trigger.platform == ''time'' }}'
|
|
- condition: state
|
|
entity_id: input_boolean.diet_notification_switch
|
|
state: 'on'
|
|
- condition: template
|
|
value_template: '{{ trigger.platform == ''event'' }}'
|
|
action:
|
|
- variables:
|
|
days:
|
|
Monday: monday
|
|
Tuesday: tuesday
|
|
Wednesday: wednesday
|
|
Thursday: thursday
|
|
Friday: friday
|
|
Saturday: saturday
|
|
Sunday: sunday
|
|
today: '{{ days[now().strftime(''%A'')] }}'
|
|
list: '{{ state_attr(''sensor.weekly_diet'', ''yaml_list'') or [] }}'
|
|
data: '{% set day_data = list | selectattr(''day'', ''equalto'', today) | list
|
|
| first %} {% set col = day_data.breakfast if day_data is defined and ''breakfast''
|
|
in day_data else '' '' %} {% set lun = day_data.lunch if day_data is defined
|
|
and ''lunch'' in day_data else '' '' %} {% set din = day_data.dinner if day_data
|
|
is defined and ''dinner'' in day_data else '' '' %} {% set sna = day_data.snack
|
|
if day_data is defined and ''snack'' in day_data else '' '' %} {% set out
|
|
= "📅 *Diet of {}*\n".format(today | capitalize) %} {% set out = out + "🥐 *Breakfast:*
|
|
{}\n🍝 *Lunch:* {}\n🌙 *Dinner:* {}\n🍪 *Snack:* {}".format(col, lun, din, sna)
|
|
%} {{ out }}
|
|
|
|
'
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.diet_day
|
|
option: '{{ today }}'
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: 1234567890
|
|
parse_mode: markdown
|
|
message: '{{ data }}'
|
|
inline_keyboard:
|
|
- 🧽 Edit Breakfast:/diet_edit_breakfast, 🍝 Edit Lunch:/diet_edit_lunch
|
|
- 🌙 Edit Dinner:/diet_edit_dinner, 🍪 Edit Snack:/diet_edit_snack
|
|
- 🗓 Monday:/day_monday, 🗓 Tuesday:/day_tuesday, 🗓 Wednesday:/day_wednesday,
|
|
🗓 Thursday:/day_thursday
|
|
- 🗓 Friday:/day_friday, 🗓 Saturday:/day_saturday, 🗓 Sunday:/day_sunday, ♻️ Reset
|
|
Day:/diet_reset_day
|
|
- 🔄 Refresh:/diet_today, ❌ Cancel:/diet_cancel
|
|
- alias: Package Diet - Telegram Diet Actions
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_callback
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ trigger.event.data.data.startswith(''/diet_'') or trigger.event.data.data.startswith(''/day_'')
|
|
}}'
|
|
action:
|
|
- variables:
|
|
command: '{{ trigger.event.data.data }}'
|
|
- choose:
|
|
- conditions: '{{ command == ''/diet_cancel'' }}'
|
|
sequence:
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
- conditions: '{{ command.startswith(''/day_'') }}'
|
|
sequence:
|
|
- variables:
|
|
day: '{{ command.replace(''/day_'', '''') }}'
|
|
- service: input_select.select_option
|
|
data:
|
|
entity_id: input_select.diet_day
|
|
option: '{{ day }}'
|
|
- wait_template: '{{ states(''input_select.diet_day'') == day }}'
|
|
timeout: 00:00:05
|
|
- event: telegram_callback
|
|
event_data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message:
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
data: /diet_today
|
|
- conditions: '{{ command == ''/diet_today'' }}'
|
|
sequence:
|
|
- variables:
|
|
day: '{{ states(''input_select.diet_day'') }}'
|
|
list: '{{ state_attr(''sensor.weekly_diet'', ''yaml_list'') or [] }}'
|
|
day_data: '{{ (list | selectattr(''day'', ''equalto'', day) | list | first)
|
|
if list else {} }}'
|
|
breakfast: '{{ day_data.breakfast if day_data is defined and ''breakfast''
|
|
in day_data else '' '' }}'
|
|
lunch: '{{ day_data.lunch if day_data is defined and ''lunch'' in day_data
|
|
else '' '' }}'
|
|
dinner: '{{ day_data.dinner if day_data is defined and ''dinner'' in day_data
|
|
else '' '' }}'
|
|
snack: '{{ day_data.snack if day_data is defined and ''snack'' in day_data
|
|
else '' '' }}'
|
|
message: '📅 *Diet of {{ day.capitalize() }}*
|
|
|
|
🥐 *Breakfast:* {{ breakfast }}
|
|
|
|
🍝 *Lunch:* {{ lunch }}
|
|
|
|
🌙 *Dinner:* {{ dinner }}
|
|
|
|
🍪 *Snack:* {{ snack }}
|
|
|
|
'
|
|
- service: telegram_bot.edit_message
|
|
data:
|
|
chat_id: '{{ trigger.event.data.chat_id }}'
|
|
message_id: '{{ trigger.event.data.message.message_id }}'
|
|
parse_mode: markdown
|
|
message: '{{ message }}'
|
|
inline_keyboard:
|
|
- 🧽 Edit Breakfast:/diet_edit_breakfast, 🍝 Edit Lunch:/diet_edit_lunch
|
|
- 🌙 Edit Dinner:/diet_edit_dinner, 🍪 Edit Snack:/diet_edit_snack
|
|
- 🗓 Monday:/day_monday, 🗓 Tuesday:/day_tuesday, 🗓 Wednesday:/day_wednesday,
|
|
🗓 Thursday:/day_thursday
|
|
- 🗓 Friday:/day_friday, 🗓 Saturday:/day_saturday, 🗓 Sunday:/day_sunday,
|
|
♻️ Reset Day:/diet_reset_day
|
|
- 🔄 Refresh:/diet_today, ❌ Cancel:/diet_cancel
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
- choose:
|
|
- conditions: '{{ command == ''/diet_edit_breakfast'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: breakfast
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Enter the breakfast via message.
|
|
- conditions: '{{ command == ''/diet_edit_lunch'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: lunch
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Enter the lunch via message.
|
|
- conditions: '{{ command == ''/diet_edit_dinner'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: dinner
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Enter the dinner via message.
|
|
- conditions: '{{ command == ''/diet_edit_snack'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: snack
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: 📝 Enter the snack via message.
|
|
- conditions: '{{ command == ''/diet_reset_day'' }}'
|
|
sequence:
|
|
- service: script.reset_input_text_diet
|
|
- delay: 00:00:01
|
|
- service: script.reset_diet_split_json
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: ❌ Day meals reset. Press 'Refresh' to update.
|
|
- choose:
|
|
- conditions: '{{ command != ''/diet_today'' and not command.startswith(''/day_'')
|
|
and command != ''/diet_cancel'' }}'
|
|
sequence:
|
|
- service: telegram_bot.answer_callback_query
|
|
data:
|
|
callback_query_id: '{{ trigger.event.data.id }}'
|
|
message: ✅ Write the meal in the text field.
|
|
- alias: Package Diet - Telegram Text Reception
|
|
trigger:
|
|
- platform: event
|
|
event_type: telegram_text
|
|
condition:
|
|
- condition: template
|
|
value_template: '{{ states(''input_text.diet_edit_active'') != '''' }}'
|
|
action:
|
|
- variables:
|
|
type: '{{ states(''input_text.diet_edit_active'') }}'
|
|
text: '{{ trigger.event.data.text }}'
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_{{ type }}
|
|
value: '{{ text }}'
|
|
- service: script.save_diet_split_json
|
|
- service: input_text.set_value
|
|
data:
|
|
entity_id: input_text.diet_edit_active
|
|
value: ''
|
|
- service: telegram_bot.send_message
|
|
data:
|
|
target: 1234567890
|
|
message: ✅ {{ type | capitalize }} updated. Press Refresh to view the update.
|
|
response_variable: telegram_feedback_response
|
|
- delay: 00:00:01
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: 1234567890
|
|
message_id: last
|
|
- service: telegram_bot.delete_message
|
|
data:
|
|
chat_id: 1234567890
|
|
message_id: last
|
|
- alias: Package Diet - Reset text fields
|
|
triggers:
|
|
- trigger: state
|
|
entity_id:
|
|
- input_select.diet_day
|
|
actions:
|
|
- action: script.reset_input_text_diet
|