AutomationDataset/OneStatePackages/OneStatePackages_automation...

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