OPC UA mit Python
Der schnellste Weg, OPC UA zu begreifen, ist, im Code mit einem Server zu sprechen. Dieses Tutorial nutzt asyncua (die freie, quelloffene Bibliothek opcua-asynciolibrary) zum Verbinden, Browsen, Lesen, Schreiben und Abonnieren, die vier Dinge, die Sie in 90 % der Fälle tun werden.
1. Installieren
pip install asyncua
2. Verbinden und einen Wert lesen
import asyncio
from asyncua import Client
URL = "opc.tcp://localhost:4840/freeopcua/server/"
async def main():
async with Client(url=URL) as client:
# Read a node by its NodeId (namespace index + identifier)
node = client.get_node("ns=2;i=2")
value = await node.read_value()
print("Value:", value)
asyncio.run(main())
3. Den Adressraum browsen
async with Client(url=URL) as client:
objects = client.nodes.objects
for child in await objects.get_children():
name = await child.read_browse_name()
print(name)
4. Einen Wert schreiben
from asyncua import ua
async with Client(url=URL) as client:
node = client.get_node("ns=2;i=3")
await node.write_value(ua.DataValue(ua.Variant(42.0, ua.VariantType.Double)))
5. Datenänderungen abonnieren
Subscriptions schieben Ihnen Aktualisierungen zu, statt zu pollen, der richtige Weg, einen Wert zu beobachten.
class Handler:
def datachange_notification(self, node, val, data):
print("Change:", node, val)
async with Client(url=URL) as client:
handler = Handler()
sub = await client.create_subscription(500, handler) # 500 ms
node = client.get_node("ns=2;i=2")
await sub.subscribe_data_change(node)
await asyncio.sleep(30) # keep running to receive changes
Sicher verbinden
Für Sign & Encrypt laden Sie Zertifikat und Schlüssel vor dem Verbinden:
await client.set_security_string(
"Basic256Sha256,SignAndEncrypt,client-cert.der,client-key.pem")
Der Server muss Ihrem Zertifikat vertrauen (verschieben Sie es von rejected nach trusted). Details: OPC UA Security & Zertifikate.
Knoten in Python zu lesen ist Schritt eins. Aus diesem Strom priorisierte, mit Kosten bewertete Maßnahmen in der Fertigung zu machen, ist das, was Jemba tut.
Jemba ansehen →FAQ
Welche Python-OPC-UA-Bibliothek soll ich nehmen?
asyncua(opcua-asyncio) ist die aktiv gepflegte, asynchrone Bibliothek und die übliche Wahl. Die ältere synchronepython-opcuagilt ihm zugunsten als veraltet.Kann ich einen OPC-UA-Server in Python bauen?
Was ist eine NodeId?
ns=2;i=2(Namespace-Index 2, Integer-Identifier 2) oderns=3;s=Temperature(String-Identifier).Zuletzt aktualisiert am 4. September 2026 · Lehrressource. Bibliotheksnamen sind Marken ihrer Inhaber.