- binary_sensor: - name: tesla_charge_now state: > {% set deadline_raw = states('input_datetime.tesla_charge_deadline') %} {% set deadline_ts = as_timestamp(deadline_raw) if deadline_raw not in ['unknown','unavailable',''] else none %} {% set hours_needed = states('sensor.tesla_charge_hours_needed') | float(0) | round(0, 'ceil') %} {% set prices = (state_attr('sensor.energidataservice','today') or []) + (state_attr('sensor.energidataservice','tomorrow') or []) %} {# Filter valid price entries and apply deadline #} {% set valid = [] %} {% for p in prices %} {% if p.hour is defined and p.hour %} {% set ts = as_timestamp(p.hour) %} {% if not deadline_ts or ts <= deadline_ts %} {% set valid = valid + [p] %} {% endif %} {% endif %} {% endfor %} {# Pick cheapest hours #} {% set cheapest = (valid | sort(attribute='price'))[:hours_needed] %} {# Current hour #} {% set now_slot = now().replace(minute=0, second=0, microsecond=0).isoformat() %} {{ cheapest | selectattr('hour','equalto',now_slot) | list | count > 0 }}