Dieser Eingangsagent ermöglicht Kommunikation via OPC/UA. Lobster Integration agiert dabei wahlweise als OPC/UA-Client (Subscription-Modell) oder als OPC/UA-Server.
Services aktivieren
Tragen Sie in ./etc/factory.xml je nach Rolle den Client- und/oder Server-Service ein:
...
<Call name="addService">
<Arg>com.ebd.hub.services.iot.IoTServerService</Arg>
<Arg>etc/iotserver.xml</Arg>
</Call>
<Call name="addService">
<Arg>com.ebd.hub.services.iot.IoTClientService</Arg>
<Arg>etc/iotclient.xml</Arg>
</Call>
...Subscription-Modell (Client)
Lobster Integration agiert als IoT-Client (OPC/UA) und abonniert Werte von einem Server.
Konfigurationsdatei anlegen
Legen Sie ./etc/iotclient.xml an. Jeder Alias beschreibt eine Verbindung zu einem OPC/UA-Server:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Lobster//DTD Configure 1.0//EN" "http://www.lobster.de/dtd/configure_1_1.dtd">
<Configure class="com.ebd.hub.services.iot.IoTClientService">
<Set name="verbose">false</Set>
<Call name="addAlias">
<Arg>
<New class="com.ebd.hub.services.iot.opcua.OpcUaClientSettings">
<Set name="alias">boiler</Set>
<Set name="endpointURL">opc.tcp://opcua.demo-this.com:51210/UA/SampleServer</Set>
<Set name="minSize">4</Set>
<Set name="maxSize">4</Set>
<Set name="allowGrowing">true</Set>
<!-- Optional: Basic Authentication -->
<!--
<Set name="username">some_user</Set>
<Set name="password">some_password</Set>
-->
<!-- Optional: Security Policy (Kryptosuite) -->
<!-- <Set name="opcSecurityPolicy">Basic256Sha256</Set> -->
<!-- Optional: Security Mode (None / Sign / SignAndEncrypt) -->
<!-- <Set name="opcSecurityMode">SignAndEncrypt</Set> -->
<!-- Optional: Zertifikatssuche (Common Name) -->
<!-- <Set name="certificateSearchTerm">*CertificateName*</Set> -->
</New>
</Arg>
</Call>
</Configure>GUI


(1) Verbindungs-Alias: Mindestens ein Alias muss in der Konfigurationsdatei (s. o.) definiert sein. Nur dann ist das Subscription-Modell auswählbar.
(2) Subscription Values: Im OPC/UA-Browser per Kontextmenü auswählbar. Eine Änderung eines dieser Werte löst das Profil aus (siehe auch (4)). Lobster Integration fragt dabei auch die Read Values (3) ab.
(3) Read Values: Im OPC/UA-Browser per Kontextmenü auswählbar. HINWEIS Über das Kontextmenü fügen Sie manuell Einträge ein und strukturieren diese hierarchisch. Per Drag-and-Drop verschieben Sie Read Values dann dorthin (siehe auch (7)).
(4) Subscription Type: DataChange löst das Profil bei jeder Wertänderung aus. Direct fragt die Werte in regelmäßigen Abständen ab.
(5) Ignore Retrieval Error Status: Jeder empfangene Datensatz hat einen Status. Ist die Checkbox gesetzt, ignoriert das System den Status bad. Andernfalls bricht das Profil mit einem Fehler ab.
(6) Subscription Initial Notification: Wenn gesetzt, fragt Lobster Integration beim Aktivieren des Profils einmalig alle Werte ab.
(7) Struktur erzeugen: Erzeugt eine passende Quell-Struktur für Phase 3.
Client Security
Für die Zugriffsabsicherung stehen drei Mechanismen zur Verfügung, die sich kombinieren lassen:
Basic Authentication über die Parameter username und password.
Kryptosuite über opcSecurityPolicy (z. B.
Basic256Sha256) und Zertifikat via certificateSearchTerm (Common Name).Security Mode über opcSecurityMode. Dieser Parameter legt fest, ob der Datenverkehr signiert und/oder verschlüsselt wird.
Security Mode festlegen (opcSecurityMode)
Verfügbar ab: Patch/Release 25.1.8, 26.1.2, 26.2.0
Mit opcSecurityMode legen Sie pro Alias einen bestimmten OPC/UA-Security-Mode beim Verbindungsaufbau fest. Das ist relevant, wenn ein Server mehrere Endpoints meldet, aber nur bestimmte Modes akzeptiert. Das gilt auch, wenn Sie interne Security-Vorgaben (z. B. zwingende Verschlüsselung) durchsetzen müssen.
Erlaubte Werte:
Wert | Bedeutung | Einsatz |
|---|---|---|
| Keine Signatur, keine Verschlüsselung | Test / geschlossene Netze |
| Signatur, keine Verschlüsselung | Integrität ohne Vertraulichkeit |
| Signatur und Verschlüsselung | Empfohlener Standard für produktive Umgebungen |
Standardverhalten: Ist opcSecurityMode nicht gesetzt, wählt der Client wie bisher den ersten vom Server gemeldeten Endpoint, der zu den übrigen Einstellungen passt. Die Auswahl hängt dann von der Endpoint-Reihenfolge des Servers ab. Das Ergebnis ist nicht immer vorhersehbar.
Beispiel:
<New class="com.ebd.hub.services.iot.opcua.OpcUaClientSettings">
<Set name="alias">boiler</Set>
<Set name="endpointURL">opc.tcp://opcua.demo-this.com:51210/UA/SampleServer</Set>
<Set name="opcSecurityPolicy">Basic256Sha256</Set>
<Set name="opcSecurityMode">SignAndEncrypt</Set>
<Set name="certificateSearchTerm">*CertificateName*</Set>
</New>Policy vs. Mode – Abgrenzung
opcSecurityPolicybestimmt, welche Kryptosuite genutzt wird (z. B.Basic256Sha256,Aes256_Sha256_RsaPss).opcSecurityModebestimmt, ob signiert und/oder verschlüsselt wird (None,Sign,SignAndEncrypt).
Beide Einstellungen zusammen entscheiden, welcher Server-Endpoint verwendbar ist.
Troubleshooting
Schlägt die Verbindung fehl, obwohl Richtlinie und Zertifikat korrekt erscheinen?
Prüfen Sie, welche Security Modes der Server an seinen Endpoints tatsächlich anbietet und akzeptiert.
Setzen Sie
opcSecurityModeexplizit (üblicherweiseSignAndEncrypt).Stellen Sie sicher, dass
opcSecurityPolicyzum gewählten Modus passt. DieNone-Policy lässt sich z. B. nicht mitSignAndEncryptkombinieren.Testen Sie erneut.
Parameter-Referenz (Client)
Parameter | Pflicht | Beschreibung |
|---|---|---|
| ja | Eindeutiger Name der Verbindung (Referenz im Profil). |
| ja | OPC/UA-Endpoint des Zielservers. |
| nein | Pool-Sizing der Client-Verbindungen. |
| nein | Basic Authentication am Server. |
| nein | Kryptosuite: |
| nein | Security Mode: |
| nein | Common Name des Client-Zertifikats (Wildcards erlaubt). |
Server-Modell
Lobster Integration agiert als OPC/UA-Server und stellt Daten für externe Clients bereit.
Konfigurationsdatei anlegen
Legen Sie ./etc/iotserver.xml an. Der OPC/UA-Server ist standardmäßig unter opc.tcp://<URL/IP Integration Server>:4840/opcua_server erreichbar. Den Port passen Sie über listenPort an.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Lobster//DTD Configure 1.0//EN" "http://www.lobster.de/dtd/configure_1_1.dtd">
<Configure class="com.ebd.hub.services.iot.IoTServerService">
<Set name="verbose">false</Set>
<Call name="addDevice">
<Arg>
<New class="com.ebd.hub.datawizard.iot.IoTDashboardDevice"/>
</Arg>
</Call>
<Call name="addServer">
<Arg>
<New class="com.ebd.hub.services.iot.opcua.IoTOpcUAServer">
<!-- <Set name="tlsSubjectName">*IoT Testserver*</Set> -->
<!-- <Set name="anonymousLoginAllowed">false</Set> -->
<!-- Nur setzen, wenn vom Default-Port 4840 abgewichen werden soll -->
<!-- <Set name="listenPort">Port</Set> -->
</New>
</Arg>
</Call>
</Configure>GUI

(1) Generische Rückmeldung senden: Wenn gesetzt, erhält der Client nach dem Profildurchlauf eine einfache OK/Fehler-Antwort. Andernfalls erstellen Sie über die Zielstruktur eine Antwort mit dynamischen Rückgabewerten. Alle Felder unter dem Root-Knoten IOT_Result werden Teil der Antwort.
(2) Auswahlfeld unter (1): Auswahl des Partners.
(3) Pfeile in der Mitte: Es muss mindestens ein Kanal ausgewählt werden.
Server Security
Um den Endpunkt über Basic Authentication abzusichern, setzen Sie anonymousLoginAllowed auf false. Verwenden Sie im Profil dann einen IoT-Kanal. Hinterlegen Sie dort unter Partner-Zugang die Partner-Kennung und das Partner-Kennwort.