Hi. I have this automation - it was working superb with Kodi for a couple of years, showing the currently played video and live progress on an ulazi clock (the automation was running on a loop while the video was playing)
Recently i have migrated from kodi to jellyfin, updated the entities in the automation, but it doesnt work anymore. It seems it just updates the ulanzi clock once, when i press play or pause triggering it and then stops running (in fact, looking at traces it actually fails with: "Error: While condition [{‘condition’: ‘template’, ‘value_template’: Template<template=({{ active_player != ‘none’ and states(active_player) == ‘playing’ }}) renders=33278>}] terminated because it looped 10000 times
")
Ive been trying to troubleshoot it and make it working as it used to work with Kodi for months now, but without any luck ![]()
alias: Ulanzi Living Room Jellyfin
description: Show Kodi progress on living room Ulanzi - TBD
triggers:
- entity_id: media_player.jellyfin_livingroom_michal
trigger: state
from: null
to: null
- entity_id: media_player.jellyfin_livingroom_emilia
trigger: state
from: null
to: null
- entity_id:
- remote.living_room_harmony_hub
trigger: state
conditions: []
actions:
- data:
qos: 0
retain: false
topic: awtrix_livingroom/custom/kodi_title
action: mqtt.publish
- data:
qos: 0
retain: false
topic: awtrix_livingroom/custom/kodi_time
action: mqtt.publish
- data:
qos: 0
retain: false
topic: awtrix_livingroom/custom/temperature
action: mqtt.publish
- data:
qos: 0
retain: false
topic: awtrix_livingroom/custom/humidity
action: mqtt.publish
- variables:
active_player: >
{% if is_state('media_player.jellyfin_livingroom_michal', 'playing') %}
media_player.jellyfin_livingroom_michal
{% elif is_state('media_player.jellyfin_livingroom_emilia', 'playing')
%}
media_player.jellyfin_livingroom_emilia
{% elif is_state('media_player.jellyfin_livingroom_michal', 'paused') %}
media_player.jellyfin_livingroom_michal
{% elif is_state('media_player.jellyfin_livingroom_emilia', 'paused') %}
media_player.jellyfin_livingroom_emilia
{% else %}
none
{% endif %}
- choose:
- conditions:
- condition: template
value_template: >-
{{ active_player != 'none' and states(active_player) == 'playing'
}}
sequence:
- data:
qos: 0
retain: false
payload: |-
{
"text": "{% if state_attr(active_player, 'media_content_type') == 'tvshow' %}{{ state_attr(active_player, 'media_series_title') | slugify(separator=" ")}} - {{ state_attr(active_player, 'media_season') }}x{{ state_attr(active_player, 'media_episode') }} - {{ state_attr(active_player, 'media_title') | slugify(separator=" ")}} {% elif state_attr(active_player, 'media_content_type') == 'movie' %}{{ state_attr(active_player, 'media_title') | slugify(separator=" ")}}{% endif %}",
"icon": "1405",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_title
action: mqtt.publish
- data:
qos: 0
retain: false
payload: |-
{
"text": "[{{(((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) | timestamp_custom('%H:%M:%S',false))}}/{{(state_attr(active_player, 'media_duration') | int | timestamp_custom('%H:%M:%S',false))}}]",
"icon": "1405",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_time
action: mqtt.publish
- repeat:
sequence:
- data:
qos: 0
retain: false
payload: |-
{
"text": "{% if state_attr(active_player, 'media_content_type') == 'tvshow' %}{{ state_attr(active_player, 'media_series_title') | slugify(separator=" ")}} - {{ state_attr(active_player, 'media_season') }}x{{ state_attr(active_player, 'media_episode') }} - {{ state_attr(active_player, 'media_title') | slugify(separator=" ")}} {% elif state_attr(active_player, 'media_content_type') == 'movie' %}{{ state_attr(active_player, 'media_title') | slugify(separator=" ")}}{% endif %}",
"icon": "1405",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_title
action: mqtt.publish
- data:
qos: 0
retain: false
payload: |-
{
"text": "[{{(((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) | timestamp_custom('%H:%M:%S',false))}}/{{(state_attr(active_player, 'media_duration') | int | timestamp_custom('%H:%M:%S',false))}}]",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_time
action: mqtt.publish
while:
- condition: template
value_template: >-
{{ active_player != 'none' and states(active_player) ==
'playing' }}
- conditions:
- condition: template
value_template: >-
{{ active_player != 'none' and states(active_player) == 'paused'
}}
sequence:
- data:
qos: 0
retain: false
payload: |-
{
"text": "{% if state_attr(active_player, 'media_content_type') == 'tvshow' %}{{ state_attr(active_player, 'media_series_title') | slugify(separator=" ")}} - {{ state_attr(active_player, 'media_season') }}x{{ state_attr(active_player, 'media_episode') }} - {{ state_attr(active_player, 'media_title') | slugify(separator=" ")}} {% elif state_attr(active_player, 'media_content_type') == 'movie' %}{{ state_attr(active_player, 'media_title') | slugify(separator=" ")}}{% endif %}",
"icon": "1405",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_title
action: mqtt.publish
- data:
qos: 0
retain: false
payload: |-
{
"text": "[{{(state_attr(active_player, 'media_position') | int|timestamp_custom('%H:%M:%S',false))}}/{{(state_attr(active_player, 'media_duration') | int|timestamp_custom('%H:%M:%S',false))}}]",
"icon": "1405",
"rainbow": false,
"repeat": 1,
"pushIcon": 0,
"textCase": 0,
"progress": {{ ( ((state_attr(active_player, 'media_position') | int) + ( as_timestamp(now()) | int - as_timestamp(state_attr(active_player,'media_position_updated_at')) | int )) / states.media_player.jellyfin_livingroom_michal.attributes.media_duration * 100 ) | round() }},
"progressC": "18B04C"
}
topic: awtrix_livingroom/custom/kodi_time
action: mqtt.publish
mode: single