Connettore Protocol Translator
Panoramica
Sezione intitolata “Panoramica”Il connettore Protocol Translator decodifica un payload da un formato strutturato in una map chiave-valore piatta, opzionalmente rinomina le chiavi, quindi codifica il risultato in un formato di destinazione diverso. È il bridge canonico tra protocolli industriali e stadi a valle JSON-nativi.
Tipo Connettore: MeddleProtocolTranslator
Formati Supportati
Sezione intitolata “Formati Supportati”- flat-json — Map chiave/valore semplice (
{ "temp": 25.5, "press": 101.3 }) - nested-json — Oggetto annidato; decodificato per dot-flattening, codificato per dot-unflattening (
{ "sensor": { "temp": 25.5 } }↔{ "sensor.temp": 25.5 }) - sparkplugb — Forma Eclipse Sparkplug B: un array
metricsdi voci{ "name": "...", "value": ... } - opcua-json — JSON OPC-UA per nodo: ogni chiave di primo livello mappa a
{ "value": ..., "sourceTimestamp": ... }
sourceFormat e targetFormat devono differire.
Configurazione
Sezione intitolata “Configurazione”{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "sparkplugb", "targetFormat": "flat-json", "keyMappings": { "Temperature/Zone1": "temperature_zone_1", "Pressure/Main": "pressure_main" } }}Il connettore prima decodifica le metriche Sparkplug B in { "Temperature/Zone1": 25.5, "Pressure/Main": 101.3 }, quindi rinomina le chiavi secondo keyMappings, infine emette il JSON flat.
Parametri di Configurazione
Sezione intitolata “Parametri di Configurazione”- sourceFormat (richiesto): Uno tra
flat-json,nested-json,sparkplugb,opcua-json - targetFormat (richiesto): Uno tra
flat-json,nested-json,sparkplugb,opcua-json(deve differire dasourceFormat) - keyMappings: Map opzionale di
oldKey -> newKey. Le chiavi non presenti nella map passano invariate.
Pipeline di Traduzione
Sezione intitolata “Pipeline di Traduzione”- Decode — Il payload sorgente viene normalizzato in una
map[string]anypiatta.flat-jsoncopia il payload così com’ènested-jsonappiattisce gli oggetti annidati con.come separatoresparkplugbestrae ognimetrics[i].valuechiavato dametrics[i].nameopcua-jsonestrae il campovaluedi ogni nodo di primo livello
- Rename — Applica
keyMappingsper rinominare le chiavi. - Encode — Rimodella la map flat nel formato di destinazione.
flat-jsonscrive la map direttamentenested-jsonespande le chiavi delimitate da.in oggetti annidatisparkplugbavvolge ogni coppia chiave/valore come{ "name": k, "value": v }in un arraymetricsopcua-jsonavvolge ogni valore come{ "value": v, "sourceTimestamp": null }
Casi d’Uso
Sezione intitolata “Casi d’Uso”- Sparkplug B a JSON flat per ingestione in database che si aspettano chiavi semplici
- OPC-UA JSON a JSON flat per rimuovere i metadati dei nodi prima dell’alerting
- JSON flat a Sparkplug B quando si pubblica su un broker MQTT conforme a Sparkplug
- Flattening di JSON annidato per connettori a valle che si aspettano uno spazio chiavi piatto
Esempio: OPC-UA a JSON Flat
Sezione intitolata “Esempio: OPC-UA a JSON Flat”{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "opcua-json", "targetFormat": "flat-json" }}Input:
{ "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" }}Output:
{ "ns=2;s=Temp": 25.5, "ns=2;s=Press": 101.3}Esempio: JSON Flat a JSON Annidato
Sezione intitolata “Esempio: JSON Flat a JSON Annidato”{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "flat-json", "targetFormat": "nested-json", "keyMappings": { "temp": "sensor.temperature", "press": "sensor.pressure" } }}Input: { "temp": 25.5, "press": 101.3 }
Output: { "sensor": { "temperature": 25.5, "pressure": 101.3 } }
Migliori Pratiche
Sezione intitolata “Migliori Pratiche”- Usa
keyMappingsper allineare i nomi di tag a monte con le convenzioni di schema a valle in un singolo step - Combina con Transform per cambiamenti a livello di valore (formule, coercizione di tipo) che vanno oltre la rinomina delle chiavi
- I payload Sparkplug B devono contenere un array
metricsdi oggetti con campinameevalue— valida a monte se la sorgente è inaffidabile - Il round-trip
flat-json -> opcua-json -> flat-jsonè supportato, masourceTimestampviene impostato anullin codifica
Connettori Correlati
Sezione intitolata “Connettori Correlati”- Transform - JSONPath, template ed estrazione di valori statici
- Reshape - Rinomina diretta di chiavi senza cambio di formato
- File Format - Parsing di CSV e XML