idx = server.register_namespace(uri) # get Objects node, this is where we should put our nodes objects = server.get_objects_node() # populating our address space myobj = objects.add_object(idx, "MyObject") myvar = myobj.add_variable(idx, "MyVariable", 6.7) myvar.set_writable() # Set MyVariable to be writable by clients temp_sensor = objects.add_object(nodeid=idx, bname='Temperature') temp_sensor_interval = temp_sensor.add_variable(idx, "TempInterval", 5) temp_sensor_data = temp_sensor.add_variable(idx, "TempData", mock_data.get_temp()) temp_sensor_interval.set_writable() # starting! server.start() server.historize_node_data_change(myvar, period=None, count=100) try: count = 0 while True: nextInterval = float(temp_sensor_interval.get_value()) time.sleep(nextInterval) count += 0.1 myvar.set_value(count) temp_sensor_data.set_value(mock_data.get_temp()) finally: # close connection, remove subcsriptions, etc server.stop()
uri = "http://examples.freeopcua.github.io" idx = server.register_namespace(uri) # get Objects node, this is where we should put our custom stuff objects = server.get_objects_node() # populating our address space myobj = objects.add_object(idx, "MyObject") myvar = myobj.add_variable(idx, "MyVariable", ua.Variant(0, ua.VariantType.Double)) myvar.set_writable() # Set MyVariable to be writable by clients # Configure server to use sqlite as history database (default is a simple memory dict) server.iserver.history_manager.set_storage(HistorySQLite("my_datavalue_history.sql")) # starting! server.start() # enable data change history for this particular node, must be called after start since it uses subscription server.historize_node_data_change(myvar, period=None, count=100) try: count = 0 while True: time.sleep(1) count += 0.1 myvar.set_value(math.sin(count)) finally: # close connection, remove subscriptions, etc server.stop()
# setup namespace uri = "http://examples.io"# 创建名称空间(这不是必须的,但是这是一种规范) idx = server.register_namespace(uri) #注册名称空间 objs = server.get_objects_node() #获取服务器节点对象。 myobj = objs.add_object(idx, "Devices") # 向节点对象填充地址节点 myobj2 = myobj.add_variable(idx,"iii",ua.Variant(20,ua.VariantType.Int32)) #向Devices对象添加tag myvar = myobj.add_variable(idx,"humidity",ua.Variant(0,ua.VariantType.Int32)) #向Devices对象添加tag myvar2 = myvar.add_variable(idx,"[hhhh]",10) myvar.set_writable() #将myvar设置为客户端可写的 myvar2.set_writable() #客户端可写的 server.start() #启动服务 server.historize_node_data_change(myvar, period=None, count=100) #将myvar标签设置为可变的历史数据 server.subscribe_server_callback(CallbackType.ItemSubscriptionCreated, create_monitored_items) #客户端连接成功后的回调 server.subscribe_server_callback(CallbackType.ItemSubscriptionModified, modify_monitored_items) #修改订阅时回调 server.subscribe_server_callback(CallbackType.ItemSubscriptionDeleted, delete_monitored_items) #删除订阅的时候回调 try: import time count=0 while True: time.sleep(3) value=random.randint(100,1000) myvar.set_value(value) count += 1 finally: server.stop()