import asyncio
from opcua import ua, Server
async def main():
# Создаём сервер
server = Server()
# Задаём URL (порт 4840 стандартный)
server.set_endpoint("opc.tcp://0.0.0.0:4840/freeopcua/server/")
# Устанавливаем имя сервера
server.set_server_name("My Test OPC UA Server")
# Отключаем безопасность для простоты (None)
# В OPC UA Expert при подключении выберите "None" в Security Policy
server.set_security_policy([ua.SecurityPolicyType.NoSecurity])
# Регистрируем пространство имён
uri = "http://my.opcua.server"
idx = server.register_namespace(uri)
# Получаем объекты узлов
objects = server.get_objects_node()
# Добавляем новый объект в папку Objects
myobj = objects.add_object(idx, "MyObject")
# Добавляем переменную с типом Double
myvar = myobj.add_variable(idx, "MyVariable", 3.1415)
# Делаем её доступной для записи
myvar.set_writable(True)
# Запускаем сервер
await server.init()
print("Сервер запущен на opc.tcp://localhost:4840")
print("Добавлена переменная: MyObject.MyVariable = 3.1415")
# Бесконечный цикл, чтобы сервер работал
try:
while True:
await asyncio.sleep(1)
finally:
# Остановка сервера при завершении
await server.stop()
if __name__ == "__main__":
asyncio.run(main())