{% macro sparkline(path) %} {% if path %} {% endif %} {% endmacro %} {% macro tile(label, value, unit, spark_path=None) %}
{{ label }}
{% if value is none %}—{% else %}{{ value }}{% endif %} {% if unit %}{{ unit }}{% endif %} {{ sparkline(spark_path) }}
{% endmacro %} {% if error %} {% endif %} {% if tiles %} {% if tiles.stale or tiles.error %}

Showing last-known values {% if tiles.data_ts %}from {{ tiles.data_ts.strftime('%Y-%m-%d %H:%M UTC') }}{% endif %} {% if tiles.error %} — {{ tiles.error }}{% endif %}.

{% endif %}
{{ tile('Current power', '%.2f'|format(tiles.current_power) if tiles.current_power is not none else none, tiles.current_power_unit, spark_path=tiles.power_sparkline) }} {{ tile("Today's yield", '%.2f'|format(tiles.today_energy) if tiles.today_energy is not none else none, tiles.today_energy_unit, spark_path=tiles.today_energy_sparkline) }} {{ tile('This month', '%.1f'|format(tiles.month_energy) if tiles.month_energy is not none else none, tiles.month_energy_unit, spark_path=tiles.month_energy_sparkline) }} {{ tile('Battery SOC', '%.0f'|format(tiles.battery_soc_pct) if tiles.battery_soc_pct is not none else none, '%', spark_path=tiles.battery_sparkline) }} {{ tile('Open alarms', tiles.alarm_count if tiles.alarm_count is not none else none, '', spark_path=tiles.alarms_sparkline) }}
{% if tiles.data_ts %} Last reading: {{ tiles.data_ts.strftime('%Y-%m-%d %H:%M UTC') }}. {% endif %} Refreshes every 30 seconds. {% elif not error %}

No live data yet.

{% endif %}