OPC UA met Python
De snelste manier om OPC UA te snappen is met een server praten in code. Deze tutorial gebruikt asyncua (de gratis, opensource opcua-asyncio-bibliotheek) om te verbinden, browsen, lezen, schrijven en abonneren: de vier dingen die u 90% van de tijd doet.
1. Installeren
pip install asyncua
2. Verbinden en een waarde lezen
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. Browse de adresruimte
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. Een waarde schrijven
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. Abonneren op datawijzigingen
Subscriptions pushen updates naar u in plaats van te pollen: de juiste manier om een waarde te volgen.
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
Veilig verbinden
Voor Sign & Encrypt laadt u uw certificaat en sleutel vóór het verbinden:
await client.set_security_string(
"Basic256Sha256,SignAndEncrypt,client-cert.der,client-key.pem")
De server moet uw certificaat vertrouwen (verplaats het van rejected naar trusted). Details: OPC UA-security & certificaten.
Nodes lezen in Python is stap één. Die stroom omzetten in gerangschikte, doorgerekende acties op de werkvloer is wat Jemba doet.
Bekijk Jemba →FAQ
Welke Python OPC UA-library moet ik gebruiken?
asyncua(opcua-asyncio) is de actief onderhouden, asynchrone bibliotheek en de gebruikelijke keuze. De oudere synchronepython-opcuais ten gunste daarvan afgeschaft.Kan ik een OPC UA-server in Python bouwen?
Wat is een NodeId?
ns=2;i=2(namespace-index 2, integer-identifier 2) ofns=3;s=Temperature(string-identifier).Laatst bijgewerkt 4 september 2026 · Educatieve bron. Bibliotheeknamen zijn handelsmerken van hun eigenaren.