Ejemplo n.º 1
1
def conn_opc():
    # OPCサーバに接続
    cl = Client("opc.tcp://192.168.10.5:51110/CogentDataHub/DataAccess")
    # クライアント証明書のapplication_uri
    cl.application_uri = "urn:desktop-i50i89m:Cogent DataHub"
    # policy設定
    print("secPolicy: " + str(secPolicy))
    if secPolicy != policies[0]:  # None以外の場合SecurityPolicyを設定
        mode = ua.MessageSecurityMode.SignAndEncrypt
        pc = getattr(security_policies, 'SecurityPolicy' + secPolicy)
        # 第二引数:クライアント証明書
        cl.set_security(
            pc, "/Users/watarium/PycharmProjects/opcua/OPCUA_CL.der",
            "/Users/watarium/PycharmProjects/opcua/OPCUAClient.pem",
            "/Users/watarium/PycharmProjects/opcua/OPCUAServer.der", mode)

    # 認証設定
    if setCert == certs[1]:  # user/pass
        cl.set_user("admin")
        cl.set_password("1234")
    elif setCert == certs[2]:  # certificate
        cl.load_private_key(
            "/Users/watarium/PycharmProjects/opcua/OPCUAClient.pem")
        cl.load_client_certificate(
            "/Users/watarium/PycharmProjects/opcua/OPCUA_CL.der")
    try:
        # 接続
        print("Policy: {0}, Certificate: {1}".format(secPolicy, setCert))
        print("---------------------Connection start-----------------------")
        cl.connect()
        sleep(5)
        # 情報取得
        ep = cl.get_endpoints()
        print(ep[0].Server.ApplicationUri)

        root = cl.get_root_node()
        print("Objects node is: ", root)

        print(cl.get_namespace_array())
        print(cl.get_namespace_index('urn:win-9hi38ajrojd:Cogent DataHub'))

        #これがうまくいかなかった(2019/06/27)
        #node = cl.get_node('ns=1;s=xxxxx')
        #print(node.get_value())

        #node.set_attribute(ua.AttributeIds.Value, 1)

        # 切断
        cl.disconnect()
        print("-------------------Connection Success!!!--------------------")

    except Exception as e:
        print("---------------------Connection Faild!!---------------------")
        print(e)
        cl.disconnect()
Ejemplo n.º 2
0
 def test_get_endpointr(self):
     client = Client("opc.tcp://" + os.environ['TEST_IP'] + ":" +
                     os.environ['TEST_PORT'])
     client.connect()
     endpoints = client.get_endpoints()
     print(endpoints)
     client.disconnect()
Ejemplo n.º 3
0
import time
import os

ip_port = input('enter "ip:port">')
try:
    protocol = "opc.tcp://"
    url = str(protocol + ip_port)  # server address

    client = Client(url)  # customer creation
    client.connect_socket()
    client.send_hello()
    client.open_secure_channel()
    client.create_session()

    parameters = [
        client.get_endpoints()[0].Server.ProductUri,
        client.get_endpoints()[0].Server.ApplicationUri,
        client.get_endpoints()[0].Server.ApplicationName,
        client.get_endpoints()[0].Server.ApplicationType,
        client.get_endpoints()[0].Server.GatewayServerUri,
        client.get_endpoints()[0].Server.DiscoveryProfileUri,
        client.get_endpoints()[0].Server.DiscoveryUrls
    ]

    keys = [
        "ProductUri",
        "ApplicationUri",
        "ApplicationName",
        "ApplicationType",
        "GatewayServerUri",
        "DiscoveryProfileUri",
Ejemplo n.º 4
0
 def test_get_endpointr(self):
     client = Client("opc.tcp://" + os.environ['TEST_IP'] + ":" + os.environ['TEST_PORT'])
     client.connect()
     endpoints = client.get_endpoints()
     self.assertEqual(len(endpoints), 4)
     client.disconnect()