{% extends "layout.html" %} {% block title %}OptiWarm - Dashboard{% endblock %} {% block content %}

Dashboard
MQTT Sensors Collector Boiler Controller

Zone / Location

{{ active_zones }}/{{ active_locations }}

Active/Available Boilers

{{ active_boilers }}/{{ total_boilers }}

Average Temperature

{% if avg_temperature %}{{ avg_temperature }}°C{% else %}--°C{% endif %}

Billing Period Cost

{% if billing_period_cost %}{{ billing_period_cost }}{% else %}--{% endif %}

Heating Zones
{% if zone_temperature_data %}
{% for zone in zone_temperature_data %} {% endfor %}
Location Zone Current Temp Min Required
{{ zone.location_name }} {{ zone.zone_name }} {% if zone.current_temp %} {{ zone.current_temp }}°C {% else %} -- {% endif %} {% if zone.min_required_temp %} {{ zone.min_required_temp }}°C {% else %} -- {% endif %}
{% else %}

No heating zones active

Zones will appear here when heating rules are active

{% endif %}
Active Heating Boilers
{% if active_heating_boilers %}
{% for boiler in active_heating_boilers %} {% endfor %}
Boiler Location Hours Session Cost
{{ boiler.name }} {{ boiler.location_name }} {{ boiler.hours_running }}h {{ boiler.session_cost }}
{% else %}

No active heating

Boilers will appear here when they are actively heating

{% endif %}
Recent Activity
{% if recent_events %} {% else %} {% endif %}
{% if recent_events %} {% for event in recent_events %} {% endfor %} {% else %} {% endif %}
Timestamp Location Zone Event Details
{{ event.day_exec.strftime('%Y-%m-%d') if event.day_exec else 'N/A' }} {% if not event.time_from and not event.time_to %} All Day {% else %} ( {% if event.time_from %} {{ event.time_from.strftime('%H:%M') }} {% else %} 00:00{% endif %} - {% if event.time_to %} {{ event.time_to.strftime('%H:%M') }} {% else %} 24:00 {% endif %} ) {% endif %} {{ event.location_name }} {{ event.zone_name }} {{ event.ruletype_name}} {% if event.active %}Active{% else %}Inactive{% endif %}
No activity data
{% endblock %} {% block scripts %} {% endblock %}