Example #1
0
    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()
Example #3
0
    # 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()