Conector Protocol Translator
Descripción General
Sección titulada «Descripción General»El conector Protocol Translator decodifica una carga desde un formato estructurado a un mapa plano clave-valor, opcionalmente renombra claves y luego codifica el resultado en un formato de destino diferente. Es el puente canónico entre los protocolos industriales y las etapas descendentes nativas de JSON.
Tipo de Conector: MeddleProtocolTranslator
Formatos Admitidos
Sección titulada «Formatos Admitidos»- flat-json — Mapa plano clave/valor (
{ "temp": 25.5, "press": 101.3 }) - nested-json — Objeto anidado; decodificado aplanando con puntos, codificado desaplanando con puntos (
{ "sensor": { "temp": 25.5 } }↔{ "sensor.temp": 25.5 }) - sparkplugb — Forma Eclipse Sparkplug B: un array
metricsde entradas{ "name": "...", "value": ... } - opcua-json — JSON OPC-UA por nodo: cada clave de nivel superior se mapea a
{ "value": ..., "sourceTimestamp": ... }
sourceFormat y targetFormat deben ser diferentes.
Configuración
Sección titulada «Configuración»{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "sparkplugb", "targetFormat": "flat-json", "keyMappings": { "Temperature/Zone1": "temperature_zone_1", "Pressure/Main": "pressure_main" } }}El conector primero decodifica las métricas de Sparkplug B en { "Temperature/Zone1": 25.5, "Pressure/Main": 101.3 }, luego renombra las claves según keyMappings y por último emite el JSON plano.
Parámetros de Configuración
Sección titulada «Parámetros de Configuración»- sourceFormat (obligatorio): Uno de
flat-json,nested-json,sparkplugb,opcua-json - targetFormat (obligatorio): Uno de
flat-json,nested-json,sparkplugb,opcua-json(debe diferir desourceFormat) - keyMappings: Mapa opcional
oldKey -> newKey. Las claves no presentes en el mapa pasan sin cambios.
Pipeline de Traducción
Sección titulada «Pipeline de Traducción»- Decodificar — La carga fuente se normaliza a un
map[string]anyplano.flat-jsoncopia la carga tal cualnested-jsonaplana objetos anidados usando.como separadorsparkplugbextrae cadametrics[i].valuecon clavemetrics[i].nameopcua-jsonextrae el campovaluede cada nodo de nivel superior
- Renombrar — Aplicar
keyMappingspara renombrar claves. - Codificar — Reformar el mapa plano al formato de destino.
flat-jsonescribe el mapa directamentenested-jsondesaplana las claves delimitadas por.en objetos anidadossparkplugbenvuelve cada clave/valor como{ "name": k, "value": v }en un arraymetricsopcua-jsonenvuelve cada valor como{ "value": v, "sourceTimestamp": null }
Casos de Uso
Sección titulada «Casos de Uso»- Sparkplug B a JSON plano para ingestar en bases de datos que esperan claves simples
- OPC-UA JSON a JSON plano para eliminar metadatos del nodo antes de alertar
- JSON plano a Sparkplug B al publicar en un broker MQTT compatible con Sparkplug
- Aplanado de JSON anidado para conectores descendentes que esperan un espacio de claves plano
Ejemplo: OPC-UA a JSON Plano
Sección titulada «Ejemplo: OPC-UA a JSON Plano»{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "opcua-json", "targetFormat": "flat-json" }}Entrada:
{ "ns=2;s=Temp": { "value": 25.5, "sourceTimestamp": "2025-01-01T12:00:00Z" }, "ns=2;s=Press": { "value": 101.3, "sourceTimestamp": "2025-01-01T12:00:00Z" }}Salida:
{ "ns=2;s=Temp": 25.5, "ns=2;s=Press": 101.3}Ejemplo: JSON Plano a JSON Anidado
Sección titulada «Ejemplo: JSON Plano a JSON Anidado»{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "flat-json", "targetFormat": "nested-json", "keyMappings": { "temp": "sensor.temperature", "press": "sensor.pressure" } }}Entrada: { "temp": 25.5, "press": 101.3 }
Salida: { "sensor": { "temperature": 25.5, "pressure": 101.3 } }
Mejores Prácticas
Sección titulada «Mejores Prácticas»- Usa
keyMappingspara alinear los nombres de tags ascendentes con las convenciones de esquema descendentes en un solo paso - Combina con Transform para cambios a nivel de valor (fórmulas, coerción de tipos) que vayan más allá del renombrado de claves
- Las cargas Sparkplug B deben contener un array
metricsde objetos con camposnameyvalue— valida aguas arriba si la fuente no es fiable - Hacer ida-y-vuelta
flat-json -> opcua-json -> flat-jsonestá soportado, perosourceTimestampse establece anullal codificar
Conectores Relacionados
Sección titulada «Conectores Relacionados»- Transform - Extracción con JSONPath, plantilla y valor estático
- Reshape - Renombrado directo de claves sin cambio de formato
- File Format - Parseo de CSV y XML