Protocol Translator-Konnektor
Übersicht
Abschnitt betitelt „Übersicht“Der Protocol Translator-Konnektor decodiert eine Payload von einem strukturierten Format in eine flache Schlüssel-Wert-Map, benennt optional Schlüssel um und codiert das Ergebnis dann in ein anderes Zielformat. Es ist die kanonische Brücke zwischen industriellen Protokollen und JSON-nativen nachgelagerten Stufen.
Konnektor-Typ: MeddleProtocolTranslator
Unterstützte Formate
Abschnitt betitelt „Unterstützte Formate“- flat-json — Einfache Schlüssel/Wert-Map (
{ "temp": 25.5, "press": 101.3 }) - nested-json — Verschachteltes Objekt; durch Punkt-Abflachung dekodiert, durch Punkt-Aufhebung codiert (
{ "sensor": { "temp": 25.5 } }↔{ "sensor.temp": 25.5 }) - sparkplugb — Eclipse-Sparkplug-B-Form: ein
metrics-Array von{ "name": "...", "value": ... }-Einträgen - opcua-json — Pro-Knoten-OPC-UA-JSON: jeder Top-Level-Schlüssel wird auf
{ "value": ..., "sourceTimestamp": ... }abgebildet
sourceFormat und targetFormat müssen sich unterscheiden.
Konfiguration
Abschnitt betitelt „Konfiguration“{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "sparkplugb", "targetFormat": "flat-json", "keyMappings": { "Temperature/Zone1": "temperature_zone_1", "Pressure/Main": "pressure_main" } }}Der Konnektor decodiert zuerst Sparkplug B-Metrics in { "Temperature/Zone1": 25.5, "Pressure/Main": 101.3 }, benennt dann Schlüssel gemäß keyMappings um und gibt dann das flache JSON aus.
Konfigurationsparameter
Abschnitt betitelt „Konfigurationsparameter“- sourceFormat (erforderlich): Einer von
flat-json,nested-json,sparkplugb,opcua-json - targetFormat (erforderlich): Einer von
flat-json,nested-json,sparkplugb,opcua-json(muss sich vonsourceFormatunterscheiden) - keyMappings: Optionale Map von
oldKey -> newKey. Schlüssel, die nicht in der Map vorhanden sind, werden unverändert durchgereicht.
Übersetzungs-Pipeline
Abschnitt betitelt „Übersetzungs-Pipeline“- Decode — Quell-Payload wird in eine flache
map[string]anynormalisiert.flat-jsonkopiert die Payload unverändertnested-jsonflacht verschachtelte Objekte mit.als Trennzeichen absparkplugbextrahiert jedesmetrics[i].value, gekennzeichnet nachmetrics[i].nameopcua-jsonextrahiert dasvalue-Feld jedes Top-Level-Knotens
- Rename —
keyMappingsanwenden, um Schlüssel umzubenennen. - Encode — Die flache Map in das Zielformat umformen.
flat-jsonschreibt die Map direktnested-jsonhebt.-getrennte Schlüssel in verschachtelte Objekte aufsparkplugbumhüllt jeden Schlüssel/Wert als{ "name": k, "value": v }in einemmetrics-Arrayopcua-jsonumhüllt jeden Wert als{ "value": v, "sourceTimestamp": null }
Anwendungsfälle
Abschnitt betitelt „Anwendungsfälle“- Sparkplug B zu flachem JSON für die Aufnahme in Datenbanken, die einfache Schlüssel erwarten
- OPC-UA JSON zu flachem JSON, um Knoten-Metadaten vor der Alarmierung zu entfernen
- Flaches JSON zu Sparkplug B beim Veröffentlichen an einen Sparkplug-konformen MQTT-Broker
- Verschachtelte JSON-Abflachung für nachgelagerte Konnektoren, die einen flachen Schlüsselraum erwarten
Beispiel: OPC-UA zu flachem JSON
Abschnitt betitelt „Beispiel: OPC-UA zu flachem JSON“{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "opcua-json", "targetFormat": "flat-json" }}Eingabe:
{ "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" }}Ausgabe:
{ "ns=2;s=Temp": 25.5, "ns=2;s=Press": 101.3}Beispiel: Flaches JSON zu verschachteltem JSON
Abschnitt betitelt „Beispiel: Flaches JSON zu verschachteltem JSON“{ "type": "MeddleProtocolTranslator", "config": { "sourceFormat": "flat-json", "targetFormat": "nested-json", "keyMappings": { "temp": "sensor.temperature", "press": "sensor.pressure" } }}Eingabe: { "temp": 25.5, "press": 101.3 }
Ausgabe: { "sensor": { "temperature": 25.5, "pressure": 101.3 } }
Best Practices
Abschnitt betitelt „Best Practices“- Verwenden Sie
keyMappings, um vorgelagerte Tag-Namen in einem einzigen Schritt an nachgelagerte Schemakonventionen anzupassen - Kombinieren Sie mit Transform für wertebezogene Änderungen (Formeln, Typkonvertierung), die über das Umbenennen von Schlüsseln hinausgehen
- Sparkplug B-Payloads müssen ein
metrics-Array von Objekten mitname- undvalue-Feldern enthalten — vorgelagert validieren, wenn die Quelle unzuverlässig ist - Round-Tripping
flat-json -> opcua-json -> flat-jsonwird unterstützt, abersourceTimestampwird beim Codieren aufnullgesetzt
Verwandte Konnektoren
Abschnitt betitelt „Verwandte Konnektoren“- Transform - JSONPath, Template und statische Wertextraktion
- Reshape - Direkte Schlüssel-Umbenennung ohne Formatänderung
- File Format - CSV- und XML-Parsing