def mDNS(): #zerconf info infomqtt = ServiceInfo( "_mqtt._tcp.local.", "hwmon._mqtt._tcp.local.", addresses=[ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ], port=1883, server="hwmon.local.", ) infocoap = ServiceInfo( "_coap._udp.local.", "hwmon._coap._udp.local.", addresses=[ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ], port=5683, server="hwmon.local.", ) zeroconf = Zeroconf(ip_version=IPVersion.All) while (stop_threads == False): try: zeroconf.unregister_service(infomqtt) zeroconf.unregister_service(infocoap) zeroconf.close() zeroconf.close() zeroconf = Zeroconf(ip_version=IPVersion.All) infomqtt.addresses = [ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ] infocoap.addresses = [ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ] zeroconf.register_service(infomqtt) zeroconf.register_service(infocoap) except: pass while (infocoap.addresses == [ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ] and stop_threads == False): try: client.publish("display/hwmon", json.dumps(data)) time.sleep(0.2) except: pass zeroconf.unregister_service(infomqtt) zeroconf.unregister_service(infocoap) zeroconf.close()
def test_multiple_addresses(): type_ = "_http._tcp.local." registration_name = "xxxyyy.%s" % type_ desc = {'path': '/~paulsm/'} address_parsed = "10.0.1.2" address = socket.inet_aton(address_parsed) # Old way info = ServiceInfo(type_, registration_name, address, 80, 0, 0, desc, "ash-2.local.") assert info.address == address assert info.addresses == [address] # Updating works address2 = socket.inet_aton("10.0.1.3") info.address = address2 assert info.address == address2 assert info.addresses == [address2] info.address = None assert info.address is None assert info.addresses == [] info.addresses = [address2] assert info.address == address2 assert info.addresses == [address2] # Compatibility way info = ServiceInfo(type_, registration_name, [address, address], 80, 0, 0, desc, "ash-2.local.") assert info.addresses == [address, address] # New kwarg way info = ServiceInfo( type_, registration_name, None, 80, 0, 0, desc, "ash-2.local.", addresses=[address, address] ) assert info.addresses == [address, address] if socket.has_ipv6: address_v6_parsed = "2001:db8::1" address_v6 = socket.inet_pton(socket.AF_INET6, address_v6_parsed) info = ServiceInfo(type_, registration_name, [address, address_v6], 80, 0, 0, desc, "ash-2.local.") assert info.addresses == [address] assert info.addresses_by_version(r.IPVersion.All) == [address, address_v6] assert info.addresses_by_version(r.IPVersion.V4Only) == [address] assert info.addresses_by_version(r.IPVersion.V6Only) == [address_v6] assert info.parsed_addresses() == [address_parsed, address_v6_parsed] assert info.parsed_addresses(r.IPVersion.V4Only) == [address_parsed] assert info.parsed_addresses(r.IPVersion.V6Only) == [address_v6_parsed]
"_mqtt._tcp.local.", "hwmon._mqtt._tcp.local.", addresses=[socket.inet_aton(socket.gethostbyname(socket.gethostname()))], port=1883, server="hwmon.local.", ) zeroconf = Zeroconf(ip_version=IPVersion.All) HardwareHandle = initialize_openhardwaremonitor() while True: try: zeroconf.unregister_service(info) zeroconf.close() zeroconf = Zeroconf(ip_version=IPVersion.All) info.addresses = [ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ] zeroconf.register_service(info) except: pass while (info.addresses == [ socket.inet_aton(socket.gethostbyname(socket.gethostname())) ]): try: fetch_stats(HardwareHandle) client.publish("display/hwmon", json.dumps(data)) time.sleep(0.2) except KeyboardInterrupt: zeroconf.unregister_service(info) zeroconf.close() exit()