- 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