Счётчик Sparkplug: сохранить тип UInt64 до базы данных
Фотография конкретного исполнения не приложена.
Sparkplug различает UInt64, Int64, Float и Double. У метрики есть объявленный datatype и соответствующее представление value. Поэтому перевод любого числового payload в один универсальный тип внешнего приложения требует отдельной проверки.
Для большого накопительного счётчика важна точность целого значения, а не только похожая запись на экране. Если промежуточный компонент преобразует его в число с плавающей точкой или ограниченный целый тип, часть диапазона либо точность может потеряться. Это инженерное следствие выбранного преобразования, а не свойство доставки MQTT.
В контракте фиксируют знак, разрядность и тип хранения на каждом участке: источник, кодирование, Host, архив и экспорт. Отображение с округлением можно делать отдельно, сохраняя исходное значение для расчётов и сверки.
В приёмке проверяют небольшие и крупные контрольные целые, а также границы согласованного диапазона. Совпадение нескольких первых цифр не считается доказательством точного переноса счётчика. Успешный Protobuf-разбор не отменяет проверки последующих преобразований.
Основание — Eclipse Sparkplug Specification 3.0.0, 2022-11-16, физические страницы PDF 75, 76, 83, 84, 85. Пример описывает проектную проверку; конкретные broker, gateway и Host не испытывались. Поддержка этой версии каждой реализацией требует подтверждения.