Commit 26e0a8d7 authored by yogesh.m's avatar yogesh.m

update

parent 0c317886
...@@ -3,6 +3,7 @@ import pickle ...@@ -3,6 +3,7 @@ import pickle
from asyncua import ua, Server from asyncua import ua, Server
import socket import socket
import threading import threading
from time import sleep
localIP = "2.2.2.5" localIP = "2.2.2.5"
localPort = 20002 localPort = 20002
...@@ -15,9 +16,19 @@ class asyncua_server(): ...@@ -15,9 +16,19 @@ class asyncua_server():
self.server=None self.server=None
self.idx=None self.idx=None
async def add_object(self,obj): async def add_object(self,obj,hierarchy):
print(self.idx,obj) print(hierarchy[obj])
return await self.server.nodes.objects.add_object(self.idx,obj ) if(hierarchy[obj]["name"]=="String"):
var_obj= await self.server.nodes.objects.add_folder(self.idx,obj )
val_array=pickle.loads(hierarchy[obj]["obj"])
if(val_array["datatype"]==11):
var = await var_obj.add_variable(ua.NodeId(val_array["identifier"],3),val_array["node_name"], ua.NodeId(ua.ObjectIds.Double))
await var.set_writable()
if (val_array["datatype"] == 6):
var = await var_obj.add_variable(ua.NodeId(val_array["identifier"],3), val_array["node_name"], ua.NodeId(ua.ObjectIds.Int32))
await var.set_writable()
else:
await self.server.nodes.objects.add_folder(self.idx, obj)
async def add_variable(self,obj,var): async def add_variable(self,obj,var):
var= await obj.add_variable(self.idx,var, 11) var= await obj.add_variable(self.idx,var, 11)
...@@ -50,16 +61,20 @@ asr = asyncua_server() ...@@ -50,16 +61,20 @@ asr = asyncua_server()
def hash_receive(): def hash_receive():
prev_hash = 0 prev_hash = 0
sleep(5)
while (True): while (True):
bytesAddressPair = UDPServerSocket.recvfrom(bufferSize) bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
message = bytesAddressPair[0] message = bytesAddressPair[0]
hierarchy=pickle.loads(message) hierarchy=pickle.loads(message)
print(hierarchy["hash"]) print(hierarchy["hash"])
if(prev_hash!=hierarchy["hash"]): if(prev_hash!=hierarchy["hash"]):
print("changed") for object in hierarchy:
if(object!="hash"):
display_name=object
asyncio.run(asr.add_object(object,hierarchy))
prev_hash=hierarchy["hash"] prev_hash=hierarchy["hash"]
def st(): def st():
t1=threading.Thread(target=hash_receive) t1=threading.Thread(target=hash_receive)
t1.start() t1.start()
asyncio.run(asr.start_server("opc.tcp://localhost:4840/myopc/free","http://klopc.com")) asyncio.run(asr.start_server("opc.tcp://2.2.2.5:53531/myopc/free","http://klopc.com"))
...@@ -26,9 +26,10 @@ UDPServerSocket.bind((localIP, localPort)) ...@@ -26,9 +26,10 @@ UDPServerSocket.bind((localIP, localPort))
print("UDP server up and listening") print("UDP server up and listening")
t1=threading.Thread(target=st,args=()) t1=threading.Thread(target=st,args=())
t1.start() t1.start()
sleep(10)
print("here") print("here")
opua=opcua_pack() opua=opcua_pack()
sock = opua.connect("opc.tcp://2.2.2.5:53530/OPCUA/SimulationServer") sock = opua.connect("opc.tcp://2.2.2.5:53531/myopc/free")
while (True): while (True):
bytesAddressPair = UDPServerSocket.recvfrom(bufferSize) bytesAddressPair = UDPServerSocket.recvfrom(bufferSize)
......
...@@ -141,7 +141,7 @@ class opcua_pack(): ...@@ -141,7 +141,7 @@ class opcua_pack():
DiscoveryProfileUri = binascii.unhexlify("ffffffff") DiscoveryProfileUri = binascii.unhexlify("ffffffff")
ArraySize = 0 ArraySize = 0
ServerUri= binascii.unhexlify("ffffffff") ServerUri= binascii.unhexlify("ffffffff")
EndpointUrl= "opc.tcp://2.2.2.7:53530/OPCUA/SimulationServer" EndpointUrl= "opc.tcp://2.2.2.5:53531/myopc/free"
EndpointUrllen= len(EndpointUrl.encode()).to_bytes(4,byteorder="little") EndpointUrllen= len(EndpointUrl.encode()).to_bytes(4,byteorder="little")
SessionName= "Pure Python Client Session1" SessionName= "Pure Python Client Session1"
SessionNamelen=len(SessionName.encode()).to_bytes(4,byteorder="little") SessionNamelen=len(SessionName.encode()).to_bytes(4,byteorder="little")
...@@ -421,7 +421,7 @@ class opcua_pack(): ...@@ -421,7 +421,7 @@ class opcua_pack():
return session return session
def connect(self,address): def connect(self,address):
server_address = ('2.2.2.5', 53530) server_address = ('2.2.2.5', 53531)
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(server_address) sock.connect(server_address)
message = self.helf(address) message = self.helf(address)
...@@ -456,6 +456,6 @@ class opcua_pack(): ...@@ -456,6 +456,6 @@ class opcua_pack():
if(datatype=="<class 'float'>"): if(datatype=="<class 'float'>"):
sock.sendall(self.write_request(self.SecureChannelId, self.TokenId, self.identifier_string, self.cs, int(ns), int(nodeid), float(val), datatype)) sock.sendall(self.write_request(self.SecureChannelId, self.TokenId, self.identifier_string, self.cs, int(ns), int(nodeid), float(val), datatype))
self.cs=self.cs+1 self.cs=self.cs+1
else: elif(datatype=="<class 'int'>"):
sock.sendall(self.write_request(self.SecureChannelId, self.TokenId, self.identifier_string, self.cs, int(ns),int(nodeid),float(val), datatype)) sock.sendall(self.write_request(self.SecureChannelId, self.TokenId, self.identifier_string, self.cs, int(ns),int(nodeid),float(val), datatype))
self.cs=self.cs+1 self.cs=self.cs+1
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment