Sparkplug STATE: состояние Host имеет отдельный формат от телеметрии
Фотография конкретного исполнения не приложена.
Host STATE в Sparkplug передаётся JSON в UTF-8 с полями online и timestamp. online является Boolean, timestamp — числовой отметкой UTC в миллисекундах. Такой пакет нельзя автоматически декодировать как обычный Protobuf payload метрик Edge.
Для BIRTH состояния время связывается с Will текущего CONNECT. QoS и retained-правила STATE также отличаются от правил NBIRTH/DBIRTH. Поэтому один общий шаблон флагов и сериализации для всех сообщений Sparkplug не подходит.
При нескольких брокерах Host хранит временной контекст отдельно для каждого соединения. Переподключение к одному серверу не должно незаметно менять представление сеанса на остальных. Это требуется для корректного распознавания актуального и запоздавшего OFFLINE.
В приёмке проверяют типы JSON-полей, начальное состояние и восстановление после разрыва. Строка с текстом true вместо Boolean либо время в секундах могут выглядеть читаемо, но не соответствовать контракту. Наличие сообщения на STATE-теме не подтверждает правильность его содержания.
Основание — Eclipse Sparkplug Specification 3.0.0, 2022-11-16, физические страницы PDF 41, 43, 60, 61. Пример описывает проектную проверку; конкретные broker, gateway и Host не испытывались. Поддержка этой версии каждой реализацией требует подтверждения.