###################################################################### # @CCOSTAN - Follow Me on X # For more info visit https://www.vcloudinfo.com/click-here # Original Repo : https://github.com/CCOSTAN/Home-AssistantConfig # ------------------------------------------------------------------- # Royal Caribbean - Price alerts and a sanitized booked-cruise countdown # Uses Cruise Tracker for webhook alerts and a read-only Kitchen Show fact. # ------------------------------------------------------------------- # Notes: Use script.notify_engine for app notifications. # Notes: The REST endpoint omits confirmation, cabin, price, and watch-list data. ###################################################################### sensor: - platform: rest name: Next Booked Cruise Countdown unique_id: next_booked_cruise_countdown resource: !secret cruise_tracker_next_booked_url method: GET scan_interval: 3600 timeout: 20 value_template: >- {% set cruise = value_json.next_booked_cruise | default(none) %} {{ cruise.days_until if cruise is mapping and cruise.days_until is number else 'unknown' }} json_attributes_path: "$.next_booked_cruise" json_attributes: - ship - sail_date - nights - port icon: mdi:ferry unit_of_measurement: "days" automation: - alias: "Royal Caribbean Price Drop Alert" id: royal_caribbean_price_drop_alert mode: queued trigger: - platform: webhook webhook_id: !secret royalcaribbean_price_drop_webhook variables: payload: "{{ trigger.json | default({}) }}" ship: "{{ payload.ship | default('Royal Caribbean') }}" sail_date: "{{ payload.sail_date | default('') }}" room_type: "{{ payload.room_type | default('') }}" old_price: "{{ payload.old_price | default('') }}" new_price: "{{ payload.new_price | default('') }}" booking_id: "{{ payload.booking_id | default('') }}" details: >- {{ [ship, sail_date, room_type] | select('string') | select('length') | join(' | ') }} message: >- New price {{ new_price }} vs {{ old_price }}. action: - service: script.notify_engine data: who: carlo title: "Royal Caribbean price drop" value1: "{{ details }}" value2: "{{ message }}" value3: "" group: "royal_caribbean_price_drop" level: "active" - service: persistent_notification.create data: title: "Royal Caribbean price drop" message: "{{ details }} - {{ message }}" notification_id: >- {{ 'rc_price_drop_' ~ (booking_id if booking_id else sail_date|replace('-', '')) }}