bosch-thermostat / home-assistant-bosch-custom-component

HA custom component for Bosch thermostats
Apache License 2.0
234 stars 45 forks source link

Adding Junkers CT100 integration fails #363

Closed jeremieroland closed 10 months ago

jeremieroland commented 10 months ago

Describe the bug Adding Junkers CT100 integration fails

To Reproduce Steps to reproduce the behavior:

  1. Click "Add integration" in Home Assistant
  2. Select "Bosch Thermostat" and "NEFIT" (as instructed for a Junkers CT100 thermostat)
  3. Enter serial number, access token and password, then click "Submit"
  4. Get error message "Unknown error occurred"

Expected behavior The integration should be added

Version

Debug SCAN bosch.debug_scan cannot be run since it requires at least one added device, and I cannot add my thermostat.

"The Linux approach", using bosch-thermostat-client-python with the following command bosch_cli scan --host=[serialnumber] --token=[accesstoken] --password=[password] --protocol=XMPP --device=NEFIT returns the following error

2024-01-04 15:42:05 WARNING (MainThread) [aioxmpp.node.PresenceManagedClient] out of connection attempts 2024-01-04 15:42:05 ERROR (MainThread) [aioxmpp.node.PresenceManagedClient] main failed Traceback (most recent call last): File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 256, in repeated_query answer = await loop.run_in_executor( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:127.0.0.53@53 answered SERVFAIL

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 837, in _on_main_done task.result() File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 1005, in _main await self._main_impl() File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 951, in _main_impl tls_transport, xmlstream, features = await connect_xmlstream( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 384, in connect_xmlstream options = list(await discover_connectors( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 185, in discover_connectors raise starttls_srv_exc File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 145, in discover_connectors starttls_srv_records = await network.lookup_srv( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 331, in lookup_srv answer = await repeated_query( ^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 281, in repeated_query await loop.run_in_executor( File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, *self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:127.0.0.53@53 answered SERVFAIL Traceback (most recent call last): File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 256, in repeated_query answer = await loop.run_in_executor( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:127.0.0.53@53 answered SERVFAIL

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/home/student/bosch/venv/bin/bosch_cli", line 8, in sys.exit(cli()) ^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/core.py", line 1157, in call return self.main(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/core.py", line 1078, in main rv = self.invoke(ctx) ^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/core.py", line 1688, in invoke return _process_result(sub_ctx.command.invoke(sub_ctx)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/core.py", line 1434, in invoke return ctx.invoke(self.callback, ctx.params) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/core.py", line 783, in invoke return __callback(args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/click/decorators.py", line 33, in new_func return f(get_current_context(), *args, *kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/bosch_cli.py", line 103, in wrapper return asyncio.run(f(args, kwargs)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/bosch_cli.py", line 268, in scan connected = True if ignore_unknown else await gateway.check_connection() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/gateway/base.py", line 331, in check_connection await self.initialize() File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/gateway/base.py", line 73, in initialize await self._update_info(initial_db.get(GATEWAY)) File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/gateway/nefit.py", line 76, in _update_info response = await self._connector.get(uri) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/connectors/xmpp.py", line 94, in get data = await self._request(method=GET, path=path) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/connectors/xmpp.py", line 124, in _request await self.start() File "/home/student/bosch/venv/lib/python3.11/site-packages/bosch_thermostat_client/connectors/xmpp.py", line 113, in start self._xmppstream = await self._st.enter_async_context( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.11/contextlib.py", line 650, in enter_async_context result = await _enter(cm) ^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 1660, in aenter await conn_future File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 837, in _on_main_done task.result() File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 1005, in _main await self._main_impl() File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 951, in _main_impl tls_transport, xmlstream, features = await connect_xmlstream( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 384, in connect_xmlstream options = list(await discover_connectors( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 185, in discover_connectors raise starttls_srv_exc File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/node.py", line 145, in discover_connectors starttls_srv_records = await network.lookup_srv( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 331, in lookup_srv answer = await repeated_query( ^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/aioxmpp/network.py", line 281, in repeated_query await loop.run_in_executor( File "/usr/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/student/bosch/venv/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:127.0.0.53@53 answered SERVFAIL

Detailed error log The Home Assistant debugging log shows similar error messages as the bosch-thermostat-client-python Log details (ERROR) Logger: aioxmpp.node.PresenceManagedClient Source: /usr/local/lib/python3.11/site-packages/aioxmpp/node.py:842 First occurred: 4:04:45 PM (3 occurrences) Last logged: 4:20:16 PM

main failed Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/aioxmpp/network.py", line 256, in repeated_query answer = await loop.run_in_executor( ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:192.168.1.1@53 answered SERVFAIL; Server Do53:192.168.1.1@53 answered SERVFAIL

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 837, in _on_main_done task.result() File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 1005, in _main await self._main_impl() File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 951, in _main_impl tls_transport, xmlstream, features = await connect_xmlstream( ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 384, in connect_xmlstream options = list(await discover_connectors( ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 185, in discover_connectors raise starttls_srv_exc File "/usr/local/lib/python3.11/site-packages/aioxmpp/node.py", line 145, in discover_connectors starttls_srv_records = await network.lookup_srv( ^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aioxmpp/network.py", line 331, in lookup_srv answer = await repeated_query( ^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/aioxmpp/network.py", line 281, in repeated_query await loop.run_in_executor( File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 1364, in query return self.resolve( ^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 1318, in resolve (nameserver, tcp, backoff) = resolution.next_nameserver() ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/dns/resolver.py", line 763, in next_nameserver raise NoNameservers(request=self.request, errors=self.errors) dns.resolver.NoNameservers: All nameservers failed to answer the query _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de. IN SRV: Server Do53:192.168.1.1@53 answered SERVFAIL; Server Do53:192.168.1.1@53 answered SERVFAIL

pszafer commented 10 months ago

Your DNS doesn't respond properly. Fix it somehow.

jeremieroland commented 10 months ago

Thanks for the fast answer, I tried modifying my DNS configuration without success (even though it works properly for all other purposes). In particular I manually configured my router to use a public DNS (rather than the DNS that was automatically confgured by my ISP) and I get exactly the same error.

I also tried to make a manual DNS lookup from my laptop with nslookup _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de but no matter what I try (including using my 5G connection, so independently of my LAN configuration), I get the error ** server can't find _xmpp-client._tcp.wa2-mz36-qrmzh6.bosch.de: SERVFAIL