28 |
28 |
29 class ServicePublisher(): |
29 class ServicePublisher(): |
30 def __init__(self): |
30 def __init__(self): |
31 # type: fully qualified service type name |
31 # type: fully qualified service type name |
32 self.serviceproperties = {'description':'Beremiz remote PLC'} |
32 self.serviceproperties = {'description':'Beremiz remote PLC'} |
33 |
33 |
34 self.name = None |
34 self.name = None |
35 self.ip_32b = None |
35 self.ip_32b = None |
36 self.port = None |
36 self.port = None |
37 self.server = None |
37 self.server = None |
38 self.service_name = None |
38 self.service_name = None |
39 self.retrytimer = None |
39 self.retrytimer = None |
40 |
40 |
41 def RegisterService(self, name, ip, port): |
41 def RegisterService(self, name, ip, port): |
42 try: |
42 try: |
43 self._RegisterService(name, ip, port) |
43 self._RegisterService(name, ip, port) |
44 except Exception,e: |
44 except Exception,e: |
45 self.retrytimer = threading.Timer(2,self.RegisterService,[name, ip, port]) |
45 self.retrytimer = threading.Timer(2,self.RegisterService,[name, ip, port]) |
46 self.retrytimer.start() |
46 self.retrytimer.start() |
47 |
47 |
48 def _RegisterService(self, name, ip, port): |
48 def _RegisterService(self, name, ip, port): |
49 # name: fully qualified service name |
49 # name: fully qualified service name |
50 self.service_name = 'Beremiz_%s.%s'%(name,service_type) |
50 self.service_name = 'Beremiz_%s.%s'%(name,service_type) |
51 self.name = name |
51 self.name = name |
64 self.service_name, |
64 self.service_name, |
65 self.ip_32b, |
65 self.ip_32b, |
66 self.port, |
66 self.port, |
67 properties = self.serviceproperties)) |
67 properties = self.serviceproperties)) |
68 self.retrytimer=None |
68 self.retrytimer=None |
69 |
69 |
70 def UnRegisterService(self): |
70 def UnRegisterService(self): |
71 if self.retrytimer is not None: |
71 if self.retrytimer is not None: |
72 self.retrytimer.cancel() |
72 self.retrytimer.cancel() |
73 |
73 |
74 self.server.unregisterService( |
74 self.server.unregisterService( |
75 Zeroconf.ServiceInfo(service_type, |
75 Zeroconf.ServiceInfo(service_type, |
76 self.service_name, |
76 self.service_name, |
77 self.ip_32b, |
77 self.ip_32b, |
78 self.port, |
78 self.port, |
79 properties = self.serviceproperties)) |
79 properties = self.serviceproperties)) |
80 self.server.close() |
80 self.server.close() |
81 self.server = None |
81 self.server = None |
82 |
82 |
83 def gethostaddr(self, dst = '224.0.1.41'): |
83 def gethostaddr(self, dst = '224.0.1.41'): |
84 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
84 s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) |
85 try: |
85 try: |
86 s.connect((dst, 7)) |
86 s.connect((dst, 7)) |
87 (host, port) = s.getsockname() |
87 (host, port) = s.getsockname() |