Сводка по сессии: trace_report.py¶
Через интерфейс «Активность» журнал не выгружается — кнопки скачивания там нет. Но выгружать его отдельно и не нужно: записи журнала лежат прямо внутри трассировок, вместе с временем. Скачайте нужные трассировки в одну папку и запустите:
Скрипт разберёт их и покажет то, ради чего трассировки обычно и скачивают:
Прогонов: 47
=== ЖУРНАЛ ===
08-02 23:05:00 запускаем зарядку | план=soc | заряд=53.0% | нужно 23.97 кВт·ч за 455 мин | ...
08-03 00:21:24 зарядка начата вручную, не вмешиваемся | план=soc | заряд=60.0% | ...
=== ОТПРАВЛЕННЫЕ КОМАНДЫ ===
08-02 23:05:00 number.set_value
08-02 23:06:26 switch.turn_on, input_boolean.turn_on
08-03 00:21:22 input_boolean.turn_off
=== НА ЧТО ОБРАТИТЬ ВНИМАНИЕ ===
08-03 00:21:22 станция теряла связь
08-03 00:21 — 02:46 (2.4 ч) сессия считалась чужой: ток не регулировался
станция отдавала на 10 % меньше уставки (по 31 замерам) — сверьте с «Запасом
по току»; на других токах доля будет иной, разрыв в амперах постоянен
Список команд полезен сам по себе: сразу видно, сколько раз за сессию автоматизация вообще что-то сделала и когда.
Последняя секция отвечает на вопрос «а что вообще пошло не так», не заставляя вчитываться в девяносто строк журнала. Она замечает четыре вещи: обрывы связи со станцией, длительные периоды, когда автоматизация считала зарядку чужой (обычно это признак потерянного флага сессии, а не ручного включения), систематическую недодачу тока и гонку триггеров — два прогона, стартовавших почти одновременно и пославших станции одну и ту же команду (лечится обновлением до 1.4.4). Пример выше — настоящая сессия, и именно эти строки объясняли всё, что в ней случилось.
Недодача считается по этой конкретной сессии, поэтому число отличается от типичного «около 1.3 А», приведённого в разделе «Станция отдаёт меньше, чем просили»: там речь о величине, устоявшейся за несколько сессий, здесь — о среднем за одну.
| Ключ | Что делает |
|---|---|
--vars |
добавляет таблицу решений по каждому пересчёту |
--tz 3 |
часовой пояс, часов от UTC (по умолчанию 3, московский) |
--json |
машинночитаемый вывод целиком, включая все переменные |
Ничего устанавливать не нужно — только системный Python 3.9 или новее (проверено на 3.9). Скрипт работает локально и никуда ничего не отправляет.
Для отчёта об ошибке достаточно двух-трёх трассировок вокруг проблемного момента — выгружать всю сессию целиком не требуется.