Перейти к содержанию

Xiot-plc-system-log-events: различия между версиями

Материал из XIOT Wiki
Добавлен аудит системных событий PLC для журнала и аналитики
 
Английские адреса Wiki: обновление ссылок с сохранением русских подписей
 
(не показано 6 промежуточных версий этого же участника)
Строка 2: Строка 2:
__TOC__
__TOC__


=Цель=
=Разделы=


Журнал должен показывать не только работу устройств и сценариев, но и изменения самой системы: какая конфигурация действует, когда подключались панели и оборудование, почему перезапускался контроллер, какие драйверы теряли связь и восстановились ли они.
{| class="wikitable"
! Таблица !! Содержание
|-
| [[Xiot-plc-message-system-map|Полная карта]] || Количество сообщений по всем устройствам и сценариям
|-
| [[Xiot-plc-message-templates|Каталог шаблонов]] || Тексты существующих сообщений устройств и сценариев
|-
| [[Xiot-plc-message-system-development-plan|Таблица доработок]] || Приоритет добавления недостающих сообщений
|}


Это позволит по одной временной линии ответить на вопросы:
=Контроллер=


* после какого изменения началась проблема;
{| class="wikitable sortable" style="width:100%"
* работало ли оборудование в момент выполнения сценария;
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
* была ли панель на связи;
|-
* применена ли новая конфигурация;
| Контроллер запущен || События || <code>Контроллер XIOT запущен. Версия {версия}.</code> || После успешного запуска || Нет
* происходил ли перезапуск контроллера или драйвера;
|-
* восстановилась ли система самостоятельно;
| Контроллер запущен частично || Ошибки в работе || <code>Контроллер XIOT запущен с ограничениями: {краткая причина}.</code> || Если часть настроенных компонентов не запущена || Нет
* сколько времени продолжался разрыв связи.
|-
| Контроллер не запущен || Критические ошибки || <code>Контроллер XIOT не смог запустить проект: {краткая причина}.</code> || После окончательной ошибки запуска || Нет
|-
| Запрошен перезапуск || События || <code>Контроллер XIOT перезапускается: {причина}.</code> || Перед плановым перезапуском || Нет
|-
| Контроллер остановлен || События || <code>Контроллер XIOT остановлен: {причина}.</code> || При плановой остановке || Нет
|-
| Предыдущая работа завершилась аварийно || Ошибки в работе || <code>Предыдущая работа контроллера XIOT завершилась аварийно.</code> || При следующем запуске после незапланированного завершения || Нет
|-
| Контроллер перезапускается аварийно повторно || Критические ошибки || <code>Контроллер XIOT несколько раз завершил работу аварийно.</code> || После подтверждённой серии аварийных перезапусков || Нет
|-
| Контроллер восстановлен || События || <code>Контроллер XIOT восстановил работу после перезапуска.</code> || После успешного запуска вслед за аварийным завершением || Нет
|}


=Основной принцип=
=Системные службы=


Системное событие создаётся при устойчивом переходе состояния, а не при каждом heartbeat, опросе или попытке переподключения.
{| class="wikitable sortable" style="width:100%"
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
|-
| Служба приложения не запущена || Ошибки в работе || <code>Служба приложения не запущена: порт {номер порта} уже используется.</code> || При отказе запуска службы приложения из-за занятого порта || Нет
|-
| Веб-интерфейс не запущен || Ошибки в работе || <code>Веб-интерфейс не запущен: порт 5551 уже используется.</code> || При отказе запуска веб-интерфейса из-за занятого порта || Нет
|-
| Служба управления не запущена || Ошибки в работе || <code>Служба управления не запущена: порт 5552 уже используется.</code> || При отказе запуска службы управления из-за занятого порта || Нет
|-
| Служба управления недоступна || Ошибки в работе || <code>Служба управления недоступна: не удалось открыть порт 5552.</code> || При окончательной ошибке открытия порта службы управления || Нет
|-
| Служба авторизации не запущена || Ошибки в работе || <code>Служба авторизации не запущена: порт 18887 уже используется.</code> || При отказе запуска службы авторизации из-за занятого порта || Нет
|}


Для каждого наблюдаемого объекта запоминаются:
=Конфигурация проекта=


* последнее устойчивое состояние;
{| class="wikitable sortable" style="width:100%"
* время начала текущего состояния;
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
* время последнего сообщения;
|-
* причина перехода;
| Начата загрузка конфигурации || События || <code>Начата загрузка новой конфигурации проекта.</code> || Один раз в начале загрузки || Нет
* число неудачных попыток;
|-
* признак первого запуска, чтобы начальное состояние не выглядело как аварийное отключение.
| Конфигурация принята || События || <code>Новая конфигурация проекта загружена и принята.</code> || После успешной проверки загруженных данных || Нет
 
|-
Подключение записывается после короткой проверки устойчивости. Отключение записывается после таймаута. Восстановление содержит длительность перерыва.
| Конфигурация применена || События || <code>Новая конфигурация проекта применена: {устройств} устройств, {сценариев} сценариев.</code> || После успешного запуска новой конфигурации || Нет
 
|-
=Предлагаемые события=
| Конфигурация не изменилась || События || <code>Загруженная конфигурация совпадает с действующей.</code> || При повторной загрузке действующей конфигурации || Нет
 
|-
==Контроллер и служба XIOT==
| Загрузка прервана || Ошибки в работе || <code>Загрузка конфигурации проекта прервана: {причина}.</code> || Если начатая загрузка не завершилась || Нет
 
|-
{| class="wikitable sortable"
| Конфигурация отклонена || Ошибки в работе || <code>Конфигурация проекта не загружена: {понятная причина}.</code> || После окончательного отказа || Нет
! Событие !! Уровень !! Текст !! Когда записывать !! Место добавления
|-
| Конфигурация не применена || Ошибки в работе || <code>Новая конфигурация проекта не применена: {понятная причина}. Продолжает работать предыдущая конфигурация.</code> || Если новая конфигурация не запущена, но предыдущая продолжает работать || Нет
|-
| Рабочая конфигурация отсутствует || Критические ошибки || <code>Контроллер XIOT не имеет рабочей конфигурации проекта.</code> || Если не удалось запустить ни новую, ни предыдущую конфигурацию || Нет
|-
| Добавлено устройство || События || <code>В конфигурацию добавлено устройство «{название}» в комнате «{комната}».</code> || После успешного добавления || Нет
|-
|-
| Контроллер запущен || Информация || <code>Контроллер XIOT запущен. Версия {версия}, конфигурация от {дата}.</code> || После загрузки конфигурации и запуска основных модулей || Конец основной последовательности запуска в <code>xiot.py</code>
| Изменено устройство || События || <code>Конфигурация устройства «{название}» обновлена.</code> || После успешного изменения || Нет
|-
|-
| Плановый перезапуск || События || <code>Контроллер XIOT перезапускается: {причина}.</code> || Перед штатным завершением процесса || Единая функция завершения вместо прямого завершения процесса
| Удалено устройство || События || <code>Из конфигурации удалено устройство «{название}».</code> || После успешного удаления || Нет
|-
|-
| Аварийное завершение предыдущего запуска || Предупреждения || <code>Предыдущая работа контроллера завершилась аварийно.</code> || При старте, если предыдущая сессия не оставила отметку штатного завершения || Начало запуска до инициализации устройств
| Добавлен сценарий || События || <code>В конфигурацию добавлен сценарий «{название}».</code> || После успешного добавления || Нет
|-
|-
| Контроллер остановлен || События || <code>Контроллер XIOT остановлен.</code> || При штатной остановке службы || Обработчики сигналов завершения
| Изменён сценарий || События || <code>Конфигурация сценария «{название}» обновлена.</code> || После успешного изменения || Нет
|-
|-
| Локальный брокер восстановлен || Информация || <code>Локальная служба обмена сообщениями восстановлена после {длительность}.</code> || После успешного подключения вслед за перезапуском брокера || Контроль локального брокера и обработчики подключения
| Удалён сценарий || События || <code>Из конфигурации удалён сценарий «{название}».</code> || После успешного удаления || Нет
|-
|-
| Локальный брокер недоступен || Ошибки в работе || <code>Локальная служба обмена сообщениями недоступна {длительность}. Выполняется восстановление.</code> || После нескольких неудачных проверок || Контроль соединения с локальным брокером
| Изменение объекта не выполнено || Ошибки в работе || <code>Не удалось изменить «{название}»: {понятная причина}.</code> || После окончательной ошибки добавления, изменения или удаления || Нет
|}
|}


Для определения аварийного завершения нужна небольшая постоянная отметка текущей сессии. При старте она создаётся, при штатной остановке закрывается. Само отсутствие отметки не должно считаться аварией при первом запуске после установки.
=Подключения контроллера к XIOT=


==Конфигурация проекта==
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст !! Когда записывать !! Место добавления
| Контроллер подключён к xiot.pro || Контрольные предупреждения || <code>Контроллер подключён к xiot.pro.</code> || После первого подтверждённого подключения || Нет
|-
| Связь с xiot.pro потеряна || Ошибки в работе || <code>Связь контроллера с xiot.pro отсутствует уже {длительность}.</code> || После 60 секунд непрерывного отсутствия связи || Нет
|-
| Связь с xiot.pro восстановлена || Контрольные предупреждения || <code>Связь контроллера с xiot.pro восстановлена. Перерыв длился {длительность}.</code> || После восстановления зафиксированного отключения || Нет
|-
| Контроллер подключён к auth.xiot.pro || Контрольные предупреждения || <code>Контроллер подключён к auth.xiot.pro.</code> || После первого подтверждённого подключения и подписки || Нет
|-
| Связь с auth.xiot.pro потеряна || Ошибки в работе || <code>Связь контроллера с auth.xiot.pro отсутствует уже {длительность}. Причина: {причина}.</code> || После 60 секунд непрерывного отсутствия связи || Нет
|-
| Связь с auth.xiot.pro восстановлена || Контрольные предупреждения || <code>Связь контроллера с auth.xiot.pro восстановлена. Перерыв длился {длительность}.</code> || После восстановления зафиксированного отключения || Нет
|-
|-
| Начата загрузка || Отладка || <code>Начата загрузка конфигурации проекта.</code> || После принятия начала новой сессии загрузки || Приём конфигурации в <code>xiot.py</code>
| Подключение к auth.xiot.pro выключено || Контрольные предупреждения || <code>Подключение контроллера к auth.xiot.pro отключено в настройках.</code> || После изменения настройки || Нет
|-
|-
| Конфигурация принята || Информация || <code>Новая конфигурация проекта принята. После перезапуска будут загружены: {устройств} устройств, {сценариев} сценариев.</code> || После проверки целостности и атомарной записи файла || Завершение приёма конфигурации
| Авторизация auth.xiot.pro удалена || Контрольные предупреждения || <code>Контроллер отключён от auth.xiot.pro: авторизация удалена.</code> || После удаления ранее действовавшей авторизации || Нет
|-
|-
| Конфигурация применена || Информация || <code>Новая конфигурация проекта применена: {устройств} устройств, {сценариев} сценариев.</code> || При первом успешном запуске с новой версией конфигурации || После создания устройств и сценариев
| Авторизация auth.xiot.pro некорректна || Ошибки в работе || <code>Авторизация контроллера в auth.xiot.pro некорректна.</code> || После проверки некорректных данных авторизации || Нет
|-
|-
| Конфигурация не изменилась || Отладка || <code>Полученная конфигурация совпадает с действующей.</code> || Если загружен уже действующий вариант || Завершение приёма конфигурации
| Авторизация auth.xiot.pro истекла || Ошибки в работе || <code>Срок действия авторизации контроллера в auth.xiot.pro истёк.</code> || После проверки срока действия авторизации || Нет
|-
|-
| Загрузка отклонена || Ошибки в работе || <code>Конфигурация проекта не загружена: {понятная причина}.</code> || При неполных данных, ошибке формата, конфликте загрузок или ошибке записи || Все отрицательные результаты приёма конфигурации
| Авторизация auth.xiot.pro отклонена || Ошибки в работе || <code>Авторизация контроллера в auth.xiot.pro отклонена. Код MQTT: {код}.</code> || После отказа сервера в подключении || Нет
|-
|-
| Изменено отдельное устройство || События || <code>Конфигурация устройства «{название}» обновлена.</code> || После успешной горячей перезагрузки устройства || Модуль горячего обновления объектов
| Подписка auth.xiot.pro отклонена || Ошибки в работе || <code>Подписка контроллера на сообщения auth.xiot.pro отклонена сервером.</code> || После исчерпания повторных попыток подписки || Нет
|-
|-
| Добавлено устройство || Информация || <code>В конфигурацию добавлено устройство «{название}» в комнате «{комната}».</code> || После успешного создания нового объекта || Модуль горячего обновления объектов
| Передача данных в auth.xiot.pro нарушена || Ошибки в работе || <code>Передача данных в auth.xiot.pro не выполняется уже {длительность}. Причина: {причина}.</code> || После устойчивой ошибки отправки || Нет
|-
|-
| Удалено устройство || Информация || <code>Из конфигурации удалено устройство «{название}».</code> || После удаления и очистки подписок || Модуль горячего обновления объектов
| Передача данных в auth.xiot.pro восстановлена || Контрольные предупреждения || <code>Передача данных в auth.xiot.pro восстановлена. Перерыв длился {длительность}.</code> || После подтверждённой отправки вслед за зафиксированной ошибкой || Нет
|-
|-
| Добавлен, изменён или удалён сценарий || Информация или События || <code>Сценарий «{название}» {добавлен/обновлён/удалён}.</code> || После успешного изменения || Модуль горячего обновления объектов
| Контроллер повторно подключён к auth.xiot.pro || Контрольные предупреждения || <code>Контроллер повторно подключён к auth.xiot.pro.</code> || После восстановления отключённого подключения или авторизации || Нет
|}
|}


Сообщение «конфигурация принята» нельзя считать окончательным результатом. Главным для аналитики является сообщение «конфигурация применена» после нового запуска и успешного создания объектов.
=Панели управления=


Чтобы сообщение не потерялось во время перезапуска, результат загрузки нужно сохранить как ожидающее системное событие и записать в журнал после старта с новой конфигурацией.
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
==Панели управления==
|-
 
| Обнаружена новая панель || События || <code>Подключена новая панель «{панель}», комната «{комната}», версия {версия}.</code> || Один раз при первой регистрации || Нет
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст !! Правило подавления !! Место добавления
| Панель подключена || События || <code>Панель «{панель}» подключена, комната «{комната}».</code> || После устойчивого подключения известной панели || Нет
|-
|-
| Новая панель || Информация || <code>Подключена новая панель «{панель}», комната «{комната}», версия {версия}.</code> || Один раз при первой регистрации панели || Модуль панелей при первом heartbeat
| Панель отключена || Ошибки в работе || <code>Панель «{панель}» не выходит на связь {длительность}, комната «{комната}».</code> || После истечения времени ожидания || Нет
|-
|-
| Панель подключилась || События || <code>Панель «{панель}» подключена, комната «{комната}».</code> || После 10 секунд устойчивой связи; не создавать отдельно сразу после регистрации || Переход панели в состояние «на связи»
| Связь с панелью восстановлена || События || <code>Связь с панелью «{панель}» восстановлена после {длительность}.</code> || После восстановления зафиксированного отключения || Нет
|-
|-
| Панель отключилась || Предупреждения || <code>Панель «{панель}» не выходит на связь {длительность}, комната «{комната}».</code> || После действующего таймаута heartbeat; одно сообщение на период отключения || Watchdog панелей
| Панель перенесена || События || <code>Панель «{панель}» перенесена из комнаты «{старая комната}» в комнату «{новая комната}».</code> || При фактическом изменении комнаты || Нет
|-
|-
| Связь восстановлена || Информация || <code>Связь с панелью «{панель}» восстановлена после {длительность}.</code> || Первый heartbeat после зафиксированного отключения || Переход панели в состояние «на связи»
| Панель удалена || События || <code>Панель «{панель}» удалена из контроллера.</code> || После подтверждённого удаления || Нет
|-
|-
| Панель перенесена || События || <code>Панель «{панель}» перенесена из комнаты «{старая комната}» в комнату «{новая комната}».</code> || Только при реальном изменении комнаты || Изменение привязки панели
| Приложение панели обновлено || События || <code>Приложение панели «{панель}» обновлено: {старая версия} → {новая версия}.</code> || При изменении ранее известной версии || Нет
|-
|-
| Панель удалена || Информация || <code>Панель «{панель}» удалена из контроллера.</code> || После команды удаления || Удаление панели
| Канал связи панели потерян || Ошибки в работе || <code>Панель «{панель}» потеряла {название канала} связь.</code> || После устойчивой потери канала || Нет
|-
|-
| Изменилась версия приложения || Информация || <code>Приложение панели «{панель}» обновлено: {старая версия} → {новая версия}.</code> || Только при смене ранее известной версии || Обработка состояния панели
| Канал связи панели восстановлен || События || <code>Панель «{панель}» восстановила {название канала} связь после {длительность}.</code> || После восстановления канала || Нет
|}
|}


Обычные heartbeat, время последней активности, изменение страницы, яркости, громкости и показ информационного экрана в журнал не записываются.
=Драйверы и интеграции=


==Драйверы и интеграции==
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
Единый наблюдатель должен принимать состояния всех драйверов и формировать одинаковые сообщения.
|-
 
| Драйвер запущен || События || <code>{драйвер} запущен.</code> || После успешного запуска настроенного драйвера || Нет
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст !! Правило
| Драйвер выключен || События || <code>{драйвер} выключен в настройках.</code> || После изменения настройки || Нет
|-
| Драйвер подключён || События || <code>{драйвер} подключён.</code> || После первого устойчивого подключения || Нет
|-
| Драйвер недоступен || Ошибки в работе || <code>{драйвер} не выходит на связь {длительность}: {понятная причина}.</code> || После устойчивого отключения || Нет
|-
|-
| Драйвер подключён || События || <code>{драйвер} подключён.</code> || После первого устойчивого подключения; при обычном старте можно включать в общую стартовую сводку
| Драйвер обязательной защиты недоступен || Критические ошибки || <code>{драйвер} недоступен; работа обязательной защиты не гарантируется.</code> || Если отключение остановило обязательную функцию безопасности || Нет
|-
|-
| Драйвер отключён || Предупреждения || <code>{драйвер} не выходит на связь {длительность}: {причина}.</code> || После таймаута, одно сообщение на период недоступности
| Драйвер восстановлен || События || <code>{драйвер} восстановил связь после {длительность}.</code> || После восстановления зафиксированного отключения || Нет
|-
|-
| Драйвер восстановлен || Информация || <code>{драйвер} восстановил связь после {длительность}.</code> || При первом устойчивом подключении после предупреждения
| Ошибка настройки драйвера || Ошибки в работе || <code>{драйвер} не запущен: ошибка настройки — {понятная причина}.</code> || Один раз после окончательной ошибки || Нет
|-
|-
| Ошибка настройки || Ошибки в работе || <code>{драйвер} не запущен: ошибка настройки — {причина}.</code> || Один раз после загрузки конфигурации и при изменении ошибки
| Команда драйвера не доставлена || Ошибки в работе || <code>{драйвер} не доставил команду «{действие}»: {понятная причина}.</code> || После исчерпания попыток || Нет
|-
|-
| Драйвер выключен настройкой || События || <code>{драйвер} выключен в настройках.</code> || Только после изменения настройки, не при каждом старте
| Доставка команд восстановлена || События || <code>{драйвер} восстановил доставку команд после {длительность}.</code> || После успешной команды вслед за зафиксированной ошибкой || Нет
|}
|}


Под наблюдение следует включить:
{| class="wikitable sortable" style="width:100%"
 
! Драйвер или интеграция !! Дополнительные сообщения
* Wiren Board;
|-
* Modbus;
| Wiren Board || Подключение линии; потеря связи; восстановление; ошибка устройства; ошибка канала; устранение ошибки
* Zigbee2MQTT;
|-
* внешние MQTT-подключения;
| Modbus || Порт подключён; порт недоступен; порт занят; нет доступа; устройство недоступно; устройство восстановлено; ошибка канала
* пользовательский MQTT-брокер;
|-
* DMX;
| Zigbee2MQTT || Мост подключён; мост недоступен; добавление разрешено; устройство обнаружено; устройство подключено; устройство удалено; устройство недоступно; устройство восстановлено
* REST API и TCP-подключения;
|-
* Global Caché;
| Внешние MQTT-подключения || Подключено; авторизация отклонена; связь потеряна; связь восстановлена; команда не доставлена
* Russound;
|-
* медиаплееры;
| Пользовательский MQTT-брокер || Запущен; недоступен; клиент подключён; клиент отключён; клиент восстановил связь
* HomeKit;
|-
* Яндекс Алису;
| REST и TCP || Подключено; связь потеряна; связь восстановлена; неверная настройка; команда не выполнена
* локальную и облачную связь панелей;
|-
* системное облачное подключение XIOT.
| DMX || Выход подключён; выход недоступен; передача восстановлена
 
|-
Большинство этих модулей уже публикуют признак подключения. Их не требуется переписывать: единый наблюдатель может подписаться на существующие изменения состояния. Локальные особенности остаются внутри драйвера только для формирования понятной причины.
| HomeKit || Мост запущен; мост остановлен; запуск не выполнен; сопряжение добавлено; сопряжение сброшено; конфигурация обновлена
 
==Физические устройства==
 
Подключение драйвера и доступность конкретного устройства — разные события. Например, Modbus-порт может работать, но один счётчик не отвечать.
 
{| class="wikitable sortable"
! Событие !! Уровень !! Текст !! Источник состояния
|-
|-
| Устройство обнаружено || Информация || <code>Обнаружено новое устройство «{название или адрес}» через {драйвер}.</code> || Обнаружение Zigbee, Modbus или другого драйвера
| Яндекс Алиса || Авторизация утрачена; авторизация восстановлена; доставка задержана; доставка восстановлена; событие отклонено
|-
|-
| Устройство добавлено || Информация || <code>Устройство «{название}» добавлено через {драйвер}.</code> || Завершённое подключение или включение устройства в конфигурацию драйвера
| Russound || Подключено; связь потеряна; связь восстановлена; ошибка обмена
|-
|-
| Устройство недоступно || Предупреждения || <code>Устройство «{название}» не отвечает {длительность}, подключение {драйвер}.</code> || Устойчивая недоступность после нескольких проверок
| 1-Wire || Датчик добавлен; датчик удалён; датчик недоступен; датчик восстановлен
|-
|-
| Связь восстановлена || Информация || <code>Устройство «{название}» снова на связи после {длительность}.</code> || Первый успешный обмен после предупреждения
| Global Caché || Подключено; связь потеряна; связь восстановлена; команда не доставлена
|-
|-
| Устройство удалено || Информация || <code>Устройство «{название}» удалено из {драйвер}.</code> || Подтверждённое удаление
| Погода и интернет-медиа || Данные устарели; источник недоступен; обновление восстановлено
|-
|-
| Ошибка канала || Ошибки в работе || <code>Канал «{канал}» устройства «{название}» не работает: {причина}.</code> || Только для длительной ошибки настройки или обмена, не для одиночного сбоя чтения
| Основной и резервный интернет || Основной канал потерян; включён резервный канал; основной канал восстановлен
|}
|}


Modbus уже ведёт состояния порта, устройства и канала, поэтому сообщения следует формировать в точках устойчивой смены доступности. Для Wiren Board сначала нужно разделить связь с брокером и доступность конкретных контролов. Для Zigbee полезны события присоединения, ухода и длительной недоступности устройства.
=Физические устройства=


==Облако, авторизация и пользовательское приложение==
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст !! Место добавления
| Устройство обнаружено || События || <code>Обнаружено новое устройство «{название или адрес}» через {драйвер}.</code> || После подтверждённого обнаружения || Нет
|-
|-
| Облако подключено || События || <code>Контроллер подключён к облаку XIOT.</code> || Успешное облачное подключение
| Устройство подключено || События || <code>Устройство «{название}» подключено через {драйвер}.</code> || После завершённого подключения || Нет
|-
|-
| Облако недоступно || Предупреждения || <code>Связь с облаком XIOT отсутствует {длительность}.</code> || Отключение после задержки
| Устройство недоступно || Ошибки в работе || <code>Устройство «{название}» не отвечает {длительность}, подключение {драйвер}.</code> || После устойчивой недоступности || Нет
|-
|-
| Облако восстановлено || Информация || <code>Связь с облаком XIOT восстановлена после {длительность}.</code> || Успешное подключение после предупреждения
| Устройство обязательной защиты недоступно || Критические ошибки || <code>Устройство обязательной защиты «{название}» недоступно {длительность}.</code> || Если без устройства не гарантируется выполнение защитной функции || Нет
|-
|-
| Облачная связь выключена || События || <code>Облачная связь XIOT выключена в настройках.</code> || Изменение настройки блокировки облака
| Связь с устройством восстановлена || События || <code>Устройство «{название}» снова на связи после {длительность}.</code> || После восстановления зафиксированного отключения || Нет
|-
|-
| Авторизация сброшена || Предупреждения || <code>Авторизация контроллера сброшена.</code> || Подтверждённая команда сброса
| Устройство удалено || События || <code>Устройство «{название}» удалено из {драйвер}.</code> || После подтверждённого удаления || Нет
|-
|-
| Архив приложения обновлён || Информация || <code>Пользовательское приложение проекта обновлено до версии {версия}.</code> || После успешной загрузки и распаковки архива
| Канал устройства не работает || Ошибки в работе || <code>Канал «{канал}» устройства «{название}» не работает: {понятная причина}.</code> || При длительной ошибке настройки или обмена || Нет
|-
|-
| Архив приложения не обновлён || Ошибки в работе || <code>Не удалось обновить пользовательское приложение: {причина}.</code> || После окончательной ошибки, а не каждой повторной попытки
| Канал устройства восстановлен || События || <code>Канал «{канал}» устройства «{название}» восстановлен после {длительность}.</code> || После устранения зафиксированной ошибки || Нет
|}
|}


В журнал нельзя записывать токены, секреты, полные сетевые адреса облачных запросов и содержимое конфигурации.
=Команды, сценарии и инциденты=


==Обновление программного обеспечения==
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
Служба обновления работает отдельным процессом и сейчас отправляет только состояние окна обновления. Для общей истории она должна передавать небольшое постоянное событие основному процессу или записывать его в очередь ожидающих системных событий.
|-
 
| Команда отправлена || События || <code>Команда «{действие}» отправлена устройству «{название}»: {причина}.</code> || При фактической отправке команды || Нет
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст
| Команда подтверждена || События || <code>Устройство «{название}» подтвердило команду «{действие}» через {длительность}.</code> || При получении подтверждения || Нет
|-
| Команда не подтверждена || Ошибки в работе || <code>Устройство «{название}» не подтвердило команду «{действие}» за {длительность}.</code> || После истечения времени ожидания || Нет
|-
| Аварийная команда не подтверждена || Критические ошибки || <code>Критическое устройство «{название}» не подтвердило команду «{действие}».</code> || Для команды в цепочке безопасности после истечения времени ожидания || Нет
|-
| Сценарий запущен || События || <code>Сценарий «{название}» запущен: {причина}.</code> || В начале выполнения || Нет
|-
| Сценарий завершён || События || <code>Сценарий «{название}» завершён.</code> || После успешного выполнения || Нет
|-
| Сценарий пропущен || События || <code>Сценарий «{название}» не запущен: {причина}.</code> || При выполнении условия пропуска || Нет
|-
|-
| Обновление начато || Информация || <code>Начато обновление XIOT: {старая версия} → {новая версия}.</code>
| Сценарий остановлен || События || <code>Сценарий «{название}» остановлен: {причина}.</code> || При досрочной остановке без ошибки || Нет
|-
|-
| Пакет загружен || Отладка || <code>Пакет обновления {версия} загружен и проверен.</code>
| Сценарий завершён с ошибкой || Ошибки в работе || <code>Сценарий «{название}» завершён с ошибкой: {понятная причина}.</code> || После окончательной ошибки || Нет
|-
|-
| Установка завершена || Информация || <code>Обновление XIOT установлено. Ожидается перезапуск.</code>
| Пользовательское предупреждение создано || Предупреждения || <code>Требуется внимание: {понятное последствие для пользователя}.</code> || Только если техническая неисправность ограничила понятную пользователю функцию || Да
|-
|-
| Обновление применено || Информация || <code>XIOT обновлён: {старая версия} → {новая версия}.</code>
| Обнаружена опасность || Тревоги || <code>{опасное состояние}: {место и объект}.</code> || При подтверждённой протечке, дыме, охранном или другом опасном состоянии || Да
|-
|-
| Обновление не выполнено || Ошибки в работе || <code>Не удалось обновить XIOT до версии {версия}: {причина}.</code>
| Пользовательское состояние восстановлено || Информация || <code>{функция или состояние} восстановлено после {длительность}.</code> || Только после ранее отправленного пользовательского предупреждения или тревоги || Да
|}
|}


Окончательное сообщение об успешном обновлении создаётся новым процессом после проверки фактически запущенной версии.
=Программное обеспечение и приложение проекта=


==Состояние хранилищ и времени==
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
{| class="wikitable sortable"
|-
! Событие !! Уровень !! Текст
| Обновление начато || События || <code>Начато обновление XIOT: {старая версия} → {новая версия}.</code> || После принятия запроса на обновление || Нет
|-
| Пакет обновления проверен || Отладка || <code>Пакет обновления {версия} загружен и проверен.</code> || После успешной проверки || Нет
|-
|-
| Журнал почти заполнен || Предупреждения || <code>Хранилище журнала заполнено на {процент}. Выполняется очистка старых записей.</code>
| Обновление установлено || События || <code>Обновление XIOT установлено. Ожидается перезапуск.</code> || После успешной установки || Нет
|-
|-
| Очистка не помогла || Ошибки в работе || <code>Не удалось освободить место в хранилище журнала.</code>
| Обновление применено || События || <code>XIOT обновлён: {старая версия} → {новая версия}.</code> || После запуска установленной версии || Нет
|-
|-
| История недоступна || Ошибки в работе || <code>Хранилище истории недоступно: {причина}.</code>
| Обновление не выполнено || Ошибки в работе || <code>Не удалось обновить XIOT до версии {версия}: {понятная причина}.</code> || После окончательной ошибки || Нет
|-
|-
| Время существенно изменилось || Предупреждения || <code>Системное время скорректировано на {разница}.</code>
| Приложение проекта обновлено || События || <code>Приложение проекта обновлено до версии {версия}.</code> || После успешного применения новой версии || Нет
|-
|-
| Изменился основной сетевой адрес || События || <code>Сетевое подключение контроллера изменилось: {интерфейс}.</code>
| Приложение проекта не обновлено || Ошибки в работе || <code>Не удалось обновить приложение проекта: {понятная причина}.</code> || После окончательной ошибки || Нет
|}
|}


Незначительные синхронизации времени, обычная очистка старых сообщений и повторная публикация сетевых параметров в журнал не попадают.
=Сеть, время и хранилища=


=Что не нужно записывать=
{| class="wikitable sortable" style="width:100%"
 
! Событие !! Тип сообщения !! Текст сообщения !! Когда записывать !! Пользователю в мессенджеры
* каждый heartbeat панели;
|-
* каждую попытку переподключения;
| Основной интернет недоступен || Ошибки в работе || <code>Основное подключение к интернету недоступно {длительность}.</code> || После устойчивого отключения || Нет
* каждый успешный опрос Modbus;
|-
* повтор одного состояния без изменения;
| Включён резервный интернет || События || <code>Контроллер перешёл на резервное подключение к интернету.</code> || После подтверждённого переключения || Нет
* промежуточные проценты загрузки обновления;
|-
* полный список тегов и подписок;
| Основной интернет восстановлен || События || <code>Основное подключение к интернету восстановлено после {длительность}.</code> || После устойчивого восстановления || Нет
* секреты, токены и содержимое конфигурации;
|-
* кратковременный разрыв, который восстановился до таймаута;
| Сетевой адрес изменён || События || <code>Сетевое подключение контроллера изменилось: {подключение}.</code> || При фактическом изменении основного подключения || Нет
* начальное состояние «отключено» до первой попытки соединения.
 
=Предлагаемая архитектура=
 
==Единый журнал системных переходов==
 
Добавить один компонент, который получает изменения состояния от PLC и драйверов, сравнивает их с предыдущим устойчивым состоянием и создаёт сообщения.
 
Он должен обеспечивать:
 
* единые русские формулировки;
* задержку подтверждения подключения и отключения;
* одно сообщение на один период неисправности;
* сообщение о восстановлении с длительностью;
* подавление начальных ложных отключений;
* постоянную очередь событий, которые должны пережить перезапуск;
* стабильный код события для аналитики;
* связь события с объектом, комнатой, драйвером и причиной.
 
В первую очередь наблюдатель можно подключить к уже существующим признакам подключения драйверов и панелей. Это даст широкое покрытие без изменений каждого драйвера.
 
==Структура для аналитики==
 
Для системных событий одного русского текста недостаточно. Вместе с текстом следует сохранять:
 
{| class="wikitable"
! Поле !! Пример
|-
|-
| Код события || <code>panel.connection.lost</code>
| Часовой пояс изменён || События || <code>Часовой пояс контроллера изменён: {старый} → {новый}.</code> || После успешного изменения || Нет
|-
|-
| Объект || панель в кухне
| Системное время скорректировано || События || <code>Системное время контроллера скорректировано на {разница}.</code> || После подтверждённой синхронизации времени || Нет
|-
|-
| Категория || панель, конфигурация, драйвер, устройство, контроллер
| Синхронизация времени недоступна || Ошибки в работе || <code>Не удалось синхронизировать системное время: {понятная причина}.</code> || После нескольких последовательных ошибок || Нет
|-
|-
| Предыдущее состояние || на связи
| Журнал почти заполнен || Ошибки в работе || <code>Хранилище журнала заполнено на {процент}.</code> || При достижении порога заполнения || Нет
|-
|-
| Новое состояние || нет связи
| Место в журнале освобождено || События || <code>Свободное место в хранилище журнала восстановлено.</code> || После выхода из состояния ошибки || Нет
|-
|-
| Причина || не получен heartbeat
| Запись журнала недоступна || Критические ошибки || <code>Запись в журнал недоступна: {понятная причина}.</code> || После нескольких последовательных ошибок || Нет
|-
|-
| Длительность || 48 секунд
| Запись журнала восстановлена || События || <code>Запись в журнал восстановлена после {длительность}.</code> || После первого успешного сохранения || Нет
|-
|-
| Версия конфигурации || короткий идентификатор действующей конфигурации
| История измерений недоступна || Ошибки в работе || <code>История измерений недоступна: {понятная причина}.</code> || После устойчивой ошибки || Нет
|-
|-
| Сессия запуска || идентификатор текущего запуска контроллера
| История измерений восстановлена || События || <code>История измерений восстановлена после {длительность}.</code> || После восстановления || Нет
|}
|}


Эти данные должны сохраняться в истории, а не существовать только во временном контексте обработки. Боту тогда не придётся угадывать смысл события по формулировке.
=События, которые не записываются в журнал=


=Очередность внедрения=
{| class="wikitable sortable" style="width:100%"
 
! Повторяющееся действие !! Что записывать вместо него
{| class="wikitable sortable"
|-
! Этап !! Что добавить !! Причина приоритета
| Каждый сигнал активности панели || Только подтверждённое отключение и восстановление
|-
|-
| 1 || Применение конфигурации, запуск, штатный и аварийный перезапуск || Позволяет связать проблему с изменением системы
| Каждая попытка переподключения || Один итог отключения и одно восстановление
|-
|-
| 2 || Подключение, отключение и восстановление панелей || Уже есть heartbeat и готовые переходы состояния
| Каждый успешный опрос устройства || Только изменение доступности или значимое изменение состояния
|-
|-
| 3 || Единый наблюдатель подключений драйверов и облака || Большое покрытие через существующие признаки связи
| Повтор уже известного состояния || Первое сообщение и итог восстановления
|-
|-
| 4 || Создание, обновление и удаление устройств и сценариев || Готовые точки есть в горячем обновлении объектов
| Промежуточный процент обновления || Начало, установка, применение или итоговая ошибка
|-
|-
| 5 || Доступность физических устройств Modbus, Zigbee и Wiren Board || Требуется аккуратная модель таймаутов каждого протокола
| Кратковременный разрыв до порога ожидания || Ничего
|-
|-
| 6 || Обновление ПО, пользовательского приложения, хранилища и времени || Требуется обмен событиями между отдельными процессами
| Начальное неизвестное состояние || Первое подтверждённое состояние
|-
|-
| 7 || Сохраняемые структурированные поля для аналитики || Потребуется изменение схемы хранения и API журнала
| Секретные данные и содержимое конфигурации || Только понятная безопасная причина результата
|}
|}


=Итог аудита=
[[Category:XIOT-PLC]][[Category:Сообщения]][[Category:Системные события]]
 
{{DEFAULTSORT:Системные события в журнале XIOT-PLC}}
В PLC уже есть почти все необходимые сигналы состояния, но они распределены между логами, служебными тегами и внутренними признаками драйверов. Наиболее безопасный путь — сначала централизованно преобразовать существующие переходы в сообщения, а затем точечно добавить события, которых нет в состояниях.
 
Первые изменения следует внести в четыре места:
 
# завершение загрузки и применение конфигурации;
# жизненный цикл основного процесса XIOT;
# переходы связи панелей;
# единый наблюдатель состояний драйверов и облака.
 
Так журнал сразу начнёт объяснять большую часть системных проблем без потока повторов.
 
[[Category:XIOT-PLC]][[Category:Сообщения]][[Category:Диагностика]][[Category:Документация интегратора]]

Текущая версия от 22:24, 2 октября 2026

Разделы

Таблица Содержание
Полная карта Количество сообщений по всем устройствам и сценариям
Каталог шаблонов Тексты существующих сообщений устройств и сценариев
Таблица доработок Приоритет добавления недостающих сообщений

Контроллер

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Контроллер запущен События Контроллер XIOT запущен. Версия {версия}. После успешного запуска Нет
Контроллер запущен частично Ошибки в работе Контроллер XIOT запущен с ограничениями: {краткая причина}. Если часть настроенных компонентов не запущена Нет
Контроллер не запущен Критические ошибки Контроллер XIOT не смог запустить проект: {краткая причина}. После окончательной ошибки запуска Нет
Запрошен перезапуск События Контроллер XIOT перезапускается: {причина}. Перед плановым перезапуском Нет
Контроллер остановлен События Контроллер XIOT остановлен: {причина}. При плановой остановке Нет
Предыдущая работа завершилась аварийно Ошибки в работе Предыдущая работа контроллера XIOT завершилась аварийно. При следующем запуске после незапланированного завершения Нет
Контроллер перезапускается аварийно повторно Критические ошибки Контроллер XIOT несколько раз завершил работу аварийно. После подтверждённой серии аварийных перезапусков Нет
Контроллер восстановлен События Контроллер XIOT восстановил работу после перезапуска. После успешного запуска вслед за аварийным завершением Нет

Системные службы

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Служба приложения не запущена Ошибки в работе Служба приложения не запущена: порт {номер порта} уже используется. При отказе запуска службы приложения из-за занятого порта Нет
Веб-интерфейс не запущен Ошибки в работе Веб-интерфейс не запущен: порт 5551 уже используется. При отказе запуска веб-интерфейса из-за занятого порта Нет
Служба управления не запущена Ошибки в работе Служба управления не запущена: порт 5552 уже используется. При отказе запуска службы управления из-за занятого порта Нет
Служба управления недоступна Ошибки в работе Служба управления недоступна: не удалось открыть порт 5552. При окончательной ошибке открытия порта службы управления Нет
Служба авторизации не запущена Ошибки в работе Служба авторизации не запущена: порт 18887 уже используется. При отказе запуска службы авторизации из-за занятого порта Нет

Конфигурация проекта

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Начата загрузка конфигурации События Начата загрузка новой конфигурации проекта. Один раз в начале загрузки Нет
Конфигурация принята События Новая конфигурация проекта загружена и принята. После успешной проверки загруженных данных Нет
Конфигурация применена События Новая конфигурация проекта применена: {устройств} устройств, {сценариев} сценариев. После успешного запуска новой конфигурации Нет
Конфигурация не изменилась События Загруженная конфигурация совпадает с действующей. При повторной загрузке действующей конфигурации Нет
Загрузка прервана Ошибки в работе Загрузка конфигурации проекта прервана: {причина}. Если начатая загрузка не завершилась Нет
Конфигурация отклонена Ошибки в работе Конфигурация проекта не загружена: {понятная причина}. После окончательного отказа Нет
Конфигурация не применена Ошибки в работе Новая конфигурация проекта не применена: {понятная причина}. Продолжает работать предыдущая конфигурация. Если новая конфигурация не запущена, но предыдущая продолжает работать Нет
Рабочая конфигурация отсутствует Критические ошибки Контроллер XIOT не имеет рабочей конфигурации проекта. Если не удалось запустить ни новую, ни предыдущую конфигурацию Нет
Добавлено устройство События В конфигурацию добавлено устройство «{название}» в комнате «{комната}». После успешного добавления Нет
Изменено устройство События Конфигурация устройства «{название}» обновлена. После успешного изменения Нет
Удалено устройство События Из конфигурации удалено устройство «{название}». После успешного удаления Нет
Добавлен сценарий События В конфигурацию добавлен сценарий «{название}». После успешного добавления Нет
Изменён сценарий События Конфигурация сценария «{название}» обновлена. После успешного изменения Нет
Удалён сценарий События Из конфигурации удалён сценарий «{название}». После успешного удаления Нет
Изменение объекта не выполнено Ошибки в работе Не удалось изменить «{название}»: {понятная причина}. После окончательной ошибки добавления, изменения или удаления Нет

Подключения контроллера к XIOT

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Контроллер подключён к xiot.pro Контрольные предупреждения Контроллер подключён к xiot.pro. После первого подтверждённого подключения Нет
Связь с xiot.pro потеряна Ошибки в работе Связь контроллера с xiot.pro отсутствует уже {длительность}. После 60 секунд непрерывного отсутствия связи Нет
Связь с xiot.pro восстановлена Контрольные предупреждения Связь контроллера с xiot.pro восстановлена. Перерыв длился {длительность}. После восстановления зафиксированного отключения Нет
Контроллер подключён к auth.xiot.pro Контрольные предупреждения Контроллер подключён к auth.xiot.pro. После первого подтверждённого подключения и подписки Нет
Связь с auth.xiot.pro потеряна Ошибки в работе Связь контроллера с auth.xiot.pro отсутствует уже {длительность}. Причина: {причина}. После 60 секунд непрерывного отсутствия связи Нет
Связь с auth.xiot.pro восстановлена Контрольные предупреждения Связь контроллера с auth.xiot.pro восстановлена. Перерыв длился {длительность}. После восстановления зафиксированного отключения Нет
Подключение к auth.xiot.pro выключено Контрольные предупреждения Подключение контроллера к auth.xiot.pro отключено в настройках. После изменения настройки Нет
Авторизация auth.xiot.pro удалена Контрольные предупреждения Контроллер отключён от auth.xiot.pro: авторизация удалена. После удаления ранее действовавшей авторизации Нет
Авторизация auth.xiot.pro некорректна Ошибки в работе Авторизация контроллера в auth.xiot.pro некорректна. После проверки некорректных данных авторизации Нет
Авторизация auth.xiot.pro истекла Ошибки в работе Срок действия авторизации контроллера в auth.xiot.pro истёк. После проверки срока действия авторизации Нет
Авторизация auth.xiot.pro отклонена Ошибки в работе Авторизация контроллера в auth.xiot.pro отклонена. Код MQTT: {код}. После отказа сервера в подключении Нет
Подписка auth.xiot.pro отклонена Ошибки в работе Подписка контроллера на сообщения auth.xiot.pro отклонена сервером. После исчерпания повторных попыток подписки Нет
Передача данных в auth.xiot.pro нарушена Ошибки в работе Передача данных в auth.xiot.pro не выполняется уже {длительность}. Причина: {причина}. После устойчивой ошибки отправки Нет
Передача данных в auth.xiot.pro восстановлена Контрольные предупреждения Передача данных в auth.xiot.pro восстановлена. Перерыв длился {длительность}. После подтверждённой отправки вслед за зафиксированной ошибкой Нет
Контроллер повторно подключён к auth.xiot.pro Контрольные предупреждения Контроллер повторно подключён к auth.xiot.pro. После восстановления отключённого подключения или авторизации Нет

Панели управления

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Обнаружена новая панель События Подключена новая панель «{панель}», комната «{комната}», версия {версия}. Один раз при первой регистрации Нет
Панель подключена События Панель «{панель}» подключена, комната «{комната}». После устойчивого подключения известной панели Нет
Панель отключена Ошибки в работе Панель «{панель}» не выходит на связь {длительность}, комната «{комната}». После истечения времени ожидания Нет
Связь с панелью восстановлена События Связь с панелью «{панель}» восстановлена после {длительность}. После восстановления зафиксированного отключения Нет
Панель перенесена События Панель «{панель}» перенесена из комнаты «{старая комната}» в комнату «{новая комната}». При фактическом изменении комнаты Нет
Панель удалена События Панель «{панель}» удалена из контроллера. После подтверждённого удаления Нет
Приложение панели обновлено События Приложение панели «{панель}» обновлено: {старая версия} → {новая версия}. При изменении ранее известной версии Нет
Канал связи панели потерян Ошибки в работе Панель «{панель}» потеряла {название канала} связь. После устойчивой потери канала Нет
Канал связи панели восстановлен События Панель «{панель}» восстановила {название канала} связь после {длительность}. После восстановления канала Нет

Драйверы и интеграции

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Драйвер запущен События {драйвер} запущен. После успешного запуска настроенного драйвера Нет
Драйвер выключен События {драйвер} выключен в настройках. После изменения настройки Нет
Драйвер подключён События {драйвер} подключён. После первого устойчивого подключения Нет
Драйвер недоступен Ошибки в работе {драйвер} не выходит на связь {длительность}: {понятная причина}. После устойчивого отключения Нет
Драйвер обязательной защиты недоступен Критические ошибки {драйвер} недоступен; работа обязательной защиты не гарантируется. Если отключение остановило обязательную функцию безопасности Нет
Драйвер восстановлен События {драйвер} восстановил связь после {длительность}. После восстановления зафиксированного отключения Нет
Ошибка настройки драйвера Ошибки в работе {драйвер} не запущен: ошибка настройки — {понятная причина}. Один раз после окончательной ошибки Нет
Команда драйвера не доставлена Ошибки в работе {драйвер} не доставил команду «{действие}»: {понятная причина}. После исчерпания попыток Нет
Доставка команд восстановлена События {драйвер} восстановил доставку команд после {длительность}. После успешной команды вслед за зафиксированной ошибкой Нет
Драйвер или интеграция Дополнительные сообщения
Wiren Board Подключение линии; потеря связи; восстановление; ошибка устройства; ошибка канала; устранение ошибки
Modbus Порт подключён; порт недоступен; порт занят; нет доступа; устройство недоступно; устройство восстановлено; ошибка канала
Zigbee2MQTT Мост подключён; мост недоступен; добавление разрешено; устройство обнаружено; устройство подключено; устройство удалено; устройство недоступно; устройство восстановлено
Внешние MQTT-подключения Подключено; авторизация отклонена; связь потеряна; связь восстановлена; команда не доставлена
Пользовательский MQTT-брокер Запущен; недоступен; клиент подключён; клиент отключён; клиент восстановил связь
REST и TCP Подключено; связь потеряна; связь восстановлена; неверная настройка; команда не выполнена
DMX Выход подключён; выход недоступен; передача восстановлена
HomeKit Мост запущен; мост остановлен; запуск не выполнен; сопряжение добавлено; сопряжение сброшено; конфигурация обновлена
Яндекс Алиса Авторизация утрачена; авторизация восстановлена; доставка задержана; доставка восстановлена; событие отклонено
Russound Подключено; связь потеряна; связь восстановлена; ошибка обмена
1-Wire Датчик добавлен; датчик удалён; датчик недоступен; датчик восстановлен
Global Caché Подключено; связь потеряна; связь восстановлена; команда не доставлена
Погода и интернет-медиа Данные устарели; источник недоступен; обновление восстановлено
Основной и резервный интернет Основной канал потерян; включён резервный канал; основной канал восстановлен

Физические устройства

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Устройство обнаружено События Обнаружено новое устройство «{название или адрес}» через {драйвер}. После подтверждённого обнаружения Нет
Устройство подключено События Устройство «{название}» подключено через {драйвер}. После завершённого подключения Нет
Устройство недоступно Ошибки в работе Устройство «{название}» не отвечает {длительность}, подключение {драйвер}. После устойчивой недоступности Нет
Устройство обязательной защиты недоступно Критические ошибки Устройство обязательной защиты «{название}» недоступно {длительность}. Если без устройства не гарантируется выполнение защитной функции Нет
Связь с устройством восстановлена События Устройство «{название}» снова на связи после {длительность}. После восстановления зафиксированного отключения Нет
Устройство удалено События Устройство «{название}» удалено из {драйвер}. После подтверждённого удаления Нет
Канал устройства не работает Ошибки в работе Канал «{канал}» устройства «{название}» не работает: {понятная причина}. При длительной ошибке настройки или обмена Нет
Канал устройства восстановлен События Канал «{канал}» устройства «{название}» восстановлен после {длительность}. После устранения зафиксированной ошибки Нет

Команды, сценарии и инциденты

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Команда отправлена События Команда «{действие}» отправлена устройству «{название}»: {причина}. При фактической отправке команды Нет
Команда подтверждена События Устройство «{название}» подтвердило команду «{действие}» через {длительность}. При получении подтверждения Нет
Команда не подтверждена Ошибки в работе Устройство «{название}» не подтвердило команду «{действие}» за {длительность}. После истечения времени ожидания Нет
Аварийная команда не подтверждена Критические ошибки Критическое устройство «{название}» не подтвердило команду «{действие}». Для команды в цепочке безопасности после истечения времени ожидания Нет
Сценарий запущен События Сценарий «{название}» запущен: {причина}. В начале выполнения Нет
Сценарий завершён События Сценарий «{название}» завершён. После успешного выполнения Нет
Сценарий пропущен События Сценарий «{название}» не запущен: {причина}. При выполнении условия пропуска Нет
Сценарий остановлен События Сценарий «{название}» остановлен: {причина}. При досрочной остановке без ошибки Нет
Сценарий завершён с ошибкой Ошибки в работе Сценарий «{название}» завершён с ошибкой: {понятная причина}. После окончательной ошибки Нет
Пользовательское предупреждение создано Предупреждения Требуется внимание: {понятное последствие для пользователя}. Только если техническая неисправность ограничила понятную пользователю функцию Да
Обнаружена опасность Тревоги {опасное состояние}: {место и объект}. При подтверждённой протечке, дыме, охранном или другом опасном состоянии Да
Пользовательское состояние восстановлено Информация {функция или состояние} восстановлено после {длительность}. Только после ранее отправленного пользовательского предупреждения или тревоги Да

Программное обеспечение и приложение проекта

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Обновление начато События Начато обновление XIOT: {старая версия} → {новая версия}. После принятия запроса на обновление Нет
Пакет обновления проверен Отладка Пакет обновления {версия} загружен и проверен. После успешной проверки Нет
Обновление установлено События Обновление XIOT установлено. Ожидается перезапуск. После успешной установки Нет
Обновление применено События XIOT обновлён: {старая версия} → {новая версия}. После запуска установленной версии Нет
Обновление не выполнено Ошибки в работе Не удалось обновить XIOT до версии {версия}: {понятная причина}. После окончательной ошибки Нет
Приложение проекта обновлено События Приложение проекта обновлено до версии {версия}. После успешного применения новой версии Нет
Приложение проекта не обновлено Ошибки в работе Не удалось обновить приложение проекта: {понятная причина}. После окончательной ошибки Нет

Сеть, время и хранилища

Событие Тип сообщения Текст сообщения Когда записывать Пользователю в мессенджеры
Основной интернет недоступен Ошибки в работе Основное подключение к интернету недоступно {длительность}. После устойчивого отключения Нет
Включён резервный интернет События Контроллер перешёл на резервное подключение к интернету. После подтверждённого переключения Нет
Основной интернет восстановлен События Основное подключение к интернету восстановлено после {длительность}. После устойчивого восстановления Нет
Сетевой адрес изменён События Сетевое подключение контроллера изменилось: {подключение}. При фактическом изменении основного подключения Нет
Часовой пояс изменён События Часовой пояс контроллера изменён: {старый} → {новый}. После успешного изменения Нет
Системное время скорректировано События Системное время контроллера скорректировано на {разница}. После подтверждённой синхронизации времени Нет
Синхронизация времени недоступна Ошибки в работе Не удалось синхронизировать системное время: {понятная причина}. После нескольких последовательных ошибок Нет
Журнал почти заполнен Ошибки в работе Хранилище журнала заполнено на {процент}. При достижении порога заполнения Нет
Место в журнале освобождено События Свободное место в хранилище журнала восстановлено. После выхода из состояния ошибки Нет
Запись журнала недоступна Критические ошибки Запись в журнал недоступна: {понятная причина}. После нескольких последовательных ошибок Нет
Запись журнала восстановлена События Запись в журнал восстановлена после {длительность}. После первого успешного сохранения Нет
История измерений недоступна Ошибки в работе История измерений недоступна: {понятная причина}. После устойчивой ошибки Нет
История измерений восстановлена События История измерений восстановлена после {длительность}. После восстановления Нет

События, которые не записываются в журнал

Повторяющееся действие Что записывать вместо него
Каждый сигнал активности панели Только подтверждённое отключение и восстановление
Каждая попытка переподключения Один итог отключения и одно восстановление
Каждый успешный опрос устройства Только изменение доступности или значимое изменение состояния
Повтор уже известного состояния Первое сообщение и итог восстановления
Промежуточный процент обновления Начало, установка, применение или итоговая ошибка
Кратковременный разрыв до порога ожидания Ничего
Начальное неизвестное состояние Первое подтверждённое состояние
Секретные данные и содержимое конфигурации Только понятная безопасная причина результата