Zum Hauptinhalt springen

Anbindung externer Programme

Auch Geräte, die vom Edge nicht unterstützt werden, können in das Datenmodell des Edges aufgenommen werden.

HTTP-Verbindungsbildschirm — Platz zum Empfangen von extern eingespielten Werten

Wenn ein extern erstelltes Programm Werte liest und per HTTP hineinschiebt, werden diese Werte genauso behandelt wie Tags, die das Edge direkt erfasst hat. Plattformübertragung, Verlauf, Alarm und Flow funktionieren alle vollständig. Es ist kein neuer Treiber erforderlich.

Wann wird dies verwendet?
  • Geräte mit Protokollen, für die es keinen Treiber im Edge gibt
  • Bestehende Systeme (MES · SCADA · eigene Kollektoren), die Werte bereits lesen
  • Wenn Sie Werte hochladen möchten, die berechnet oder verarbeitet wurden

Wie funktioniert das?​

Die HTTP-Verbindung erfasst nichts. Sie ist ein Cache, der Werte entgegennimmt.

외부 프로그램 ──HTTP──▶ 엣지의 값 캐시 ──timecycle 주기로 샘플링──▶ 태그 이력 · 플랫폼

Warum verschwinden Werte, wenn man sie hineinschiebt?​

Weil außen ein Push stattfindet, aber im Inneren des Edges weiterhin ein Polling läuft.

Andere Treiber lassen das Edge die Geräte direkt pollen. Bei HTTP sitzt an der Stelle des «Geräts» lediglich ein Cache, und die Seite, die den Cache liest, pollt genauso. Wenn also die Rhythmen der einspeisenden und der lesenden Seite nicht übereinstimmen, weichen die Werte voneinander ab.

Außen → EdgeEdge → Verlauf
MethodePush (wann immer extern gewünscht)Polling (Intervall timecycle)
Wenn verpasst—Von den Werten zwischen den Intervallen bleibt nur der letzte übrig
MQTT · Kafka · WebSocket sind genauso

Treiber, die Nachrichten empfangen, haben alle dieselbe Struktur. Sie überschreiben die Nachricht vom Broker mit einem «letzten Wert» und der Erfassungsplaner liest diesen in seinem Intervall.

TreiberQuelle des Werts
HTTPAnfrage eines externen Programms
MQTT ClientAbonniertes Thema
KafkaVom Consumer empfangener Datensatz
WebSocketEmpfangener Frame

Daher ist es normal, dass die Anzahl der erfassten Vorgänge viel geringer ist als die Anzahl der am Broker veröffentlichten Vorgänge. Wenn der LAG des Brokers 0 ist, empfängt das Edge alles — nur im Verlauf bleibt pro Intervall einer. Es gab Fälle, in denen dies fälschlich als Datenverlust interpretiert und lange untersucht wurde (Fallbeispiele aus der Praxis).

Aus dieser Struktur ergeben sich Eigenschaften. Verstehen Sie diese zuerst, bevor Sie beginnen.

EigenschaftBedeutung
Eingespielte Werte werden nicht sofort gespeichertSie werden im Intervall timecycle der Verbindung abgetastet
Wenn schneller als das Intervall gespielt wird, gehen Zwischenwerte verlorenEs bleibt nur der letzte Wert
Wenn langsamer als das Intervall gespielt wird, wird derselbe Wert wiederholt gespeichertDer im Cache verbliebene Wert wird weiter gelesen

Um eine schnelle Reaktion zu erreichen, reduzieren Sie timecycle. Dieser Wert entspricht der Reaktionsverzögerung. Bei 1000 (1 Sekunde) bleibt der Wert nach maximal 1 Sekunde erhalten. Reduzieren Sie auf 200, bleibt er nach maximal 0,2 Sekunden erhalten. Der Mindestwert ist 100 (0,1 Sekunde).

Gewünschttimecycle
Fast sofortige Reaktion100 ~ 200
Allgemeine Echtzeitüberwachung1000
Langsam veränderliche Werte (Temperatur, Füllstand)5000 oder mehr
Eine Reduzierung des Intervalls bedeutet keine «vollständige» Erfassung

Ein kürzeres Intervall reduziert die Verzögerung, aber die Eigenschaft, nur den letzten Wert zu lesen, bleibt bestehen. Wenn sich der Wert innerhalb eines Intervalls dreimal ändert, bleibt nur der letzte erhalten.

Wenn Sie jedes Ereignis lückenlos aufzeichnen müssen, ist diese Methode nicht geeignet. Das gilt selbst bei einem noch so feinen Intervall.

Ein kürzeres Intervall erhöht die Last

Mit diesem Intervall werden alle Tags dieser Verbindung gelesen. Wenn Sie das Intervall einer Verbindung mit vielen Tags auf 100 senken, steigt die Last entsprechend. Es ist besser, nur die Tags, die schnell sein müssen, in einer separaten HTTP-Verbindung zu platzieren und nur bei dieser Verbindung das Intervall zu senken.


Schritt 1 — Erstellen Sie eine HTTP-Verbindung​

Navigieren Sie im Bildschirm zu Verbindung → Hinzufügen → HTTP.

https://<엣지 주소>/ui/connect/http

HTTP-Verbindungen haben keine Treiberoptionen. Es gibt Felder für IP und Port, aber der Treiber liest sie nicht — da es sich um formale Eingaben handelt, hat jeder Wert keinen Einfluss auf den Betrieb.

Sie können sie auch über REST erstellen. Alle acht Felder sind Pflichtfelder.

curl -X POST https://<엣지 주소>/api/v1/opc \
-H 'X-API-Key: <API 키>' \
-H 'Content-Type: application/json' \
-d '{
"opc_id": "OPC_EXTERNAL_01",
"opc_name": "외부 수집기",
"opc_type": "HTTP",
"site_id": "SITE_00001",
"opc_agent_ip": "127.0.0.1",
"opc_agent_port": 80,
"timecycle": 1000,
"async": false
}'
FeldRegel
opc_idBeginnt mit OPC_, Großbuchstaben, Zahlen, Unterstriche, 1–60 Zeichen
site_idBeginnt mit SITE_
opc_typeMuss exakt HTTP sein. Andernfalls wird das Einspeisen von Werten abgelehnt
opc_agent_port1–65535
timecycle100 oder mehr (Millisekunden). Dieser Wert ist das Abtastintervall
Wenn eines fehlt, verhält es sich anders als im Bildschirm

Wenn Sie im Bildschirm erstellen, füllt der Bildschirm fehlende Werte aus. Daher tritt es nur bei der REST-Erstellung auf, dass eine Verbindung mit fehlenden Feldern erstellt wird, aber nicht funktioniert.


Schritt 2 — Tag registrieren und tag_id abrufen​

Erstellen Sie Tags unter dieser Verbindung. Ein Wert entspricht einem Tag.

Wählen Sie den Datentyp passend zum Charakter des Werts. Wenn der Wert als Zeichenfolge kommt und der deklarierte Typ passt, wird er korrekt geparst. Umgekehrt führt ein falscher Typ zu einer Ausnahme beim Speichern.

WertTyp
Strom · Temperatur · Spannung · Gewicht · Geschwindigkeit · KoordinatenDouble
Batterie · Fehlercode · ZählerInteger
Alarm · Status · Zone · Richtung · FarbeString

Das tag_id, das zum Einspeisen verwendet wird, finden Sie im Tag-Liste-Bildschirm oder über die Tag-Abfrage-API.


Schritt 3 — Werte einspeisen​

curl -X POST https://<엣지 주소>/api/v1/tag/<tag_id>/value \
-H 'X-API-Key: <API 키>' \
-H 'Content-Type: application/json' \
-d '{"value":"1500"}'

Werte können auch als Zeichenfolge gesendet werden. Sie werden in den für das Tag deklarierten Typ geparst.

Authentifizierung​

Alles unterhalb von /api/ ist authentifiziert. Ohne Schlüssel wird blockiert — selbst wenn die Einstellung fehlt, öffnet es sich nicht.

MethodeForm
Header (empfohlen)X-API-Key: <key>
HeaderAuthorization: Bearer <key>
Browser-SitzungWenn angemeldet, ohne Schlüssel durchgelassen
Query-Parameter sind nicht möglich

?api_key=… wurde in v1 entfernt. Wenn verwendet, erhalten Sie 401. Übertragen Sie alte Beispiele nicht unverändert.

Rufen Sie über HTTPS auf​

Der Standard ist ausschließlich HTTPS. Bei Aufruf über http:// erhalten Sie 403.


Wenn keine Werte ankommen​

Eingrenzen in dieser Reihenfolge.

  1. Läuft die Verbindung? — Bei gestopptem Zustand werden keine Werte angenommen und abgelehnt. Starten Sie die Verbindung im Bildschirm.
  2. Ist opc_type gleich HTTP? — In andere Verbindungstypen kann nicht eingespeist werden.
  3. Haben Sie über HTTPS aufgerufen? — http:// ergibt 403.
  4. Haben Sie den Schlüssel im Header gesendet? — Query-Parameter ergeben 401.
  5. Stimmt tag_id? — Überprüfen Sie erneut in der Tag-Liste.
  6. Haben Sie das Intervall abgewartet? — Eingespielte Werte werden nicht sofort gespeichert. Warten Sie timecycle und prüfen Sie dann den Verlauf.

Was Sie wissen sollten​

Es ist jeweils einer. Es gibt keinen Endpunkt, um mehrere Tags in einer Anfrage einzuspeisen. Sie müssen jedes Tag separat aufrufen.

Auch in redundanten Konfigurationen wird empfangen. Selbst ein Edge ohne Schreibrechte empfängt weiterhin Werte, die per HTTP eingespeist werden. Dies wurde absichtlich so gestaltet, damit die externe Anbindung bei einem Redundanzwechsel nicht unterbrochen wird.

Es gibt einen alten Endpunkt. POST /api/http ist die ältere Methode, bei der das Ziel über opc_id und plc_address angegeben wird. Er entfällt am 31. Dezember 2026. Da keine Ratenbegrenzung und keine Deduplizierung angewendet werden, verwenden Sie für neue Anbindungen die obigen /api/v1/tag/{tag_id}/value.


Verwandte Dokumente​