OPC UA avec Python
Le moyen le plus rapide de comprendre OPC UA est de dialoguer avec un serveur en code. Ce tutoriel utilise asyncua (la bibliothèque libre et open source opcua-asyncio) pour se connecter, parcourir, lire, écrire et s'abonner: les quatre choses que vous ferez 90 % du temps.
1. Installer
pip install asyncua
2. Se connecter et lire une valeur
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. Parcourir l'espace d'adressage
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. Écrire une valeur
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. S'abonner aux changements de valeur
Les abonnements vous poussent les mises à jour au lieu de scruter: la bonne façon de surveiller une valeur.
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
Se connecter en sécurité
Pour Sign & Encrypt, chargez votre certificat et votre clé avant de vous connecter :
await client.set_security_string(
"Basic256Sha256,SignAndEncrypt,client-cert.der,client-key.pem")
Le serveur doit approuver votre certificat (le déplacer de rejected vers trusted). Détails : Sécurité & certificats OPC UA.
Lire des nœuds en Python n'est que la première étape. Transformer ce flux en actions hiérarchisées et chiffrées à l'atelier, c'est ce que fait Jemba.
Voir Jemba →FAQ
Quelle bibliothèque OPC UA Python utiliser ?
asyncua(opcua-asyncio) est la bibliothèque asynchrone activement maintenue et le choix habituel. L'ancienne, synchrone,python-opcuaest déprécié à son profit.Puis-je créer un serveur OPC UA en Python ?
Qu'est-ce qu'un NodeId ?
ns=2;i=2(indice de namespace 2, identifiant entier 2) ouns=3;s=Temperature(identifiant de type chaîne).Dernière mise à jour le 4 septembre 2026 · Ressource pédagogique. Les noms de bibliothèques sont des marques de leurs titulaires.