--- a/runtime/ServicePublisher.py Fri Aug 22 15:27:37 2008 +0200
+++ b/runtime/ServicePublisher.py Fri Aug 22 15:30:09 2008 +0200
@@ -22,20 +22,48 @@
#License along with this library; if not, write to the Free Software
#Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-import Zeroconf
+import Zeroconf, socket
-class PublishService():
- def __init__(self):
- self.server = Zeroconf.Zeroconf()
+# type: fully qualified service type name
+service_type = '_PYRO._tcp.local.'
- def ConfigureService(self, type, name, address, port, description):
- self.newservice = Zeroconf.ServiceInfo(type,
- name,
- address,
+# properties: dictionary of properties (or a string holding the bytes for the text field)
+serviceproperties = {'description':'Beremiz remote PLC'}
+
+def gethostaddr(dst = '224.0.1.41'):
+ s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
+ try:
+ s.connect((dst, 7))
+ (host, port) = s.getsockname()
+ s.close()
+ if host != '0.0.0.0':
+ return host
+ except error:
+ pass
+ return socket.gethostbyname(socket.gethostname())
+
+
+def ServicePublisher(name, ip, port):
+
+ # name: fully qualified service name
+ service_name = 'Beremiz_%s.%s'%(name,service_type)
+
+ # No ip params -> get host ip
+ if ip == "":
+ ip = gethostaddr()
+
+ print "Mon IP est :"+ip
+
+ server = Zeroconf.Zeroconf(ip)
+
+ # address: IP address as unsigned short, network byte order
+ ip_32b = socket.inet_aton(ip)
+
+ server.registerService(
+ Zeroconf.ServiceInfo(service_type,
+ service_name,
+ ip_32b,
port,
- weight = 0, # weight: weight of the service
- priority= 0, # priority: priority of the service
- properties = description)
-
- def PublishService(self):
- self.server.registerService(self.newservice)
\ No newline at end of file
+ properties = serviceproperties))
+
+ return server
\ No newline at end of file