{% import "_ui.html" as ui %} {% if oob %}
{% include "_dev_sub.html" %}
{% endif %}
{% for d in devices %} {% set st = d.status %}{% set down = d.online is false %} {% set rst = ros_state(st) %} {% set fw_new = st.fw_current and st.fw_upgrade and st.fw_upgrade != st.fw_current %} {% else %} {% endfor %}
УстройствоГруппаКаналROSUpgrade ROSFWUpgrade FWUptimeЗапрос бэкапа (UTC)Действия
{% if down %}
{% if "HTTP 401" in (d.last_error or "") %}Ошибка авторизации{% elif "HTTP " in (d.last_error or "") %}Устройство ответило ошибкой{% else %}Нет соединения{% endif %}
{% else %}
{{ d.host }}:{{ d.port }}{% if st.model %} · {{ st.model }}{% endif %}
{% endif %}
{{ group_names.get(d.group_id) or "—" }} {% if down %}—{% else %}{{ st.channel or "—" }}{% endif %} {% if down %}—{% else %}{{ st.ros_installed or st.ros_version or "—" }}{% endif %} {% if down or rst == "unknown" %}— {% elif rst == "check_error" %}проверка не удалась {% elif rst == "update" %}{{ ui.icon("up", 12, 2.2) }}{{ st.ros_latest }} {% elif rst == "downgrade" %}канал: {{ st.ros_latest }} {% else %}{{ ui.icon("check", 14, 2.2) }}актуально{% endif %} {% if down %}—{% else %}{{ st.fw_current or "—" }}{% endif %} {% if down or not (st.fw_current and st.fw_upgrade) %}— {% elif fw_new %}{{ ui.icon("up", 12, 2.2) }}{{ st.fw_upgrade }} {% else %}{{ ui.icon("check", 14, 2.2) }}актуально{% endif %} {% if down %}—{% else %}{{ st.uptime or "—" }}{% endif %} {{ d.last_backup_requested_at|dt }}
{{ "Нет устройств, подходящих под фильтр." if filtered else "Устройств пока нет. Добавьте первое." }}
Показано {{ devices|length }} из {{ total }} {{ total|plural("устройства", "устройств", "устройств") }}