Last active
October 26, 2025 11:32
-
-
Save PaulHibbertMasterOfTheUniverse/e4da731e5a151da55343a488d6191ca4 to your computer and use it in GitHub Desktop.
Automation to automatically reload a video feed in Fully Kiosk in the background to keep it "warm"
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| blueprint: | |
| name: Fully Kiosk – Warm Background Reload (v2) | |
| description: > | |
| Keeps Fully Kiosk preloaded on Fire TV by refreshing the last URL at a set interval | |
| while Fully is not the foreground app. Uses a per-minute trigger + modulo check | |
| (because time_pattern doesn't accept templates). | |
| domain: automation | |
| input: | |
| fire_tv_entity: | |
| name: Fire TV Media Player | |
| description: Select your Fire TV entity (media_player) | |
| selector: | |
| entity: | |
| domain: media_player | |
| fully_device: | |
| name: Fully Kiosk Device | |
| description: Select the Fully Kiosk device (from the Fully Kiosk integration) | |
| selector: | |
| device: | |
| integration: fully_kiosk | |
| last_url_helper: | |
| name: Last URL Helper (input_text) | |
| description: The input_text that stores the last loaded URL | |
| selector: | |
| entity: | |
| domain: input_text | |
| interval: | |
| name: Refresh Interval (minutes) | |
| description: Run only every N minutes (e.g., 10) | |
| default: 10 | |
| selector: | |
| number: | |
| min: 1 | |
| max: 60 | |
| mode: slider | |
| unit_of_measurement: minutes | |
| mode: single | |
| variables: | |
| fire_tv: !input fire_tv_entity | |
| fully_dev: !input fully_device | |
| last_url: !input last_url_helper | |
| interval: !input interval | |
| trigger: | |
| # Fire every minute; we'll gate with conditions | |
| - platform: time_pattern | |
| minutes: "*" | |
| condition: | |
| # Only run on minute boundaries that match the chosen interval | |
| - condition: template | |
| value_template: > | |
| {{ (now().minute % (interval | int)) == 0 }} | |
| # Only if Fully is NOT the foreground app | |
| - condition: template | |
| value_template: > | |
| {% set app = state_attr(fire_tv,'app_id') | default('') %} | |
| {% set src = state_attr(fire_tv,'source') | default('') %} | |
| {{ 'de.ozerov.fully' not in [app, src] }} | |
| # Only if we actually have a last-URL value | |
| - condition: template | |
| value_template: > | |
| {{ states(last_url) not in ['', 'unknown', 'unavailable'] }} | |
| action: | |
| - service: fully_kiosk.load_url | |
| target: | |
| device_id: !input fully_device | |
| data: | |
| url: "{{ states(last_url) }}" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment