Akuvox SmartPlus - View door camera feeds, open doors and manage temporary keys

I’m also from Poland and I also have the R20A. I didn’t have any problem inputting the number. Just put +48 for the country code, and then your phone number below that. No spaces, no dashes, nothing. It worked for me no problem with one phone number. It was giving me the same message you’re getting with another. The reason was it didn’t actually have a phone number associated with the account, just the email, and adding it fixed this. Are you sure you have a phone number associated with that account?

hi
is iit possible to get a massage only if someone rung the door?
not to get a massage when someone open the door

Hi nahumoded.

Yes, there is an example in the documentation of using the door ring event (CaptureType: Call) as a trigger for an automation.

thanks
still when someon enter the code or when the door open with the automation, i still get a massage in ha that the door was opened. is ther a way to cancel get a massage?
need to get a massage only when someone ring the door

Hi @Nimrod_Dolev
This is driving me crazy and I’d really appreciate your help.

The problem I have now is that the live camera feed shows up on the web version of HA but when I try to livestream the camera from the iOS HA app, I get an error. I don’t know why iOS won’t let me livestream the camera feed at all, there is no way for me to view the camera feed on my IPhone.

I also attached a screenshot of what happens on my iPhone when I try to play the livestream.
Thanks for your hard work on this intervention!

Hi @kevdog. This issue is not related to the Akuvox SmartPlus integration but with the Home Assistant companion app for iOS.

There is another custom component, WebRTC Camera, which can fix this issue that you might want to check out.

You’re a genius. Work like a charm!
Would add this link, which explains how to use the proxy on iPhone

Hi, i have a problem with verification. Every SMS code i get is wrong to integration proces.

Hi i have the same problem as Noble above. I have got the pass and token. However, when trying to set up the integration with App Token method it gives me the error “Sign in failed. Please check the values entered and try again”. Country code is +61, Australia

Thank you for your help

1 Like

Same here for US number.

Hi everyone. For those of you who have had issues when trying to add the integration via SMS verification - I just released a new beta, v0.2.0-beta2, which hopefully fixes the issue.

I would like to ask you to please install the beta and let me know if the issue is fixed.

To install the new beta version:

  1. Open the Akuvox SmartPlus repository in HACS
  2. Click on the button in the top right
  3. Select the ↻ Redownload option
  4. Enable the Show beta versions option (it may take a moment to update the list)
  5. Select version v0.2.0-beta2 from the updated version drop-down list
  6. Restart Home Assistant

On the latest beta from 3 days ago. Getting this error message

Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:211
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:34:08 AM (1 occurrences)
Last logged: 8:34:08 AM

❌ SMS code request unsuccessful
Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:478
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:34:08 AM (12 occurrences)
Last logged: 8:34:42 AM

❌ Unable to retrieve user's personal door log
Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:554
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:34:08 AM (1 occurrences)
Last logged: 8:34:08 AM

🤨 Response: {'result': -1, 'message': "Mobile Number doesn't exist", 'err_code': ''}

But I confirmed this is the correct phone number in the 1234567890 US format.

The integration sets the regional subdomain used to communicate with Akuvox according to the list from this repo, so it’s unclear to me why the SMS request fails.

I released a new beta, v0.2.0-beta3, which allows you to manually override the API regional subdomain used to communicate with Akuvox. You can try to use another subdomain.

To install the new beta version:

  1. Open the Akuvox SmartPlus repository in HACS
  2. Click on the button in the top right
  3. Select the ↻ Redownload option
  4. Enable the Show beta versions option (it may take a moment to update the list)
  5. Select version v0.2.0-beta3 from the updated version drop-down list
  6. Restart Home Assistant
This error originated from a custom integration.

Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:453
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:06:18 PM (400 occurrences)
Last logged: 8:13:17 PM

❌ Unable to retrieve user's personal door log
This error originated from a custom integration.

Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:190
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:06:44 PM (4 occurrences)
Last logged: 8:13:08 PM

❌ SMS code request unsuccessful. Request URL: https://ucloud.akuvox.com:8443/send_mobile_checkcode
This error originated from a custom integration.

Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:531
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 8:06:44 PM (4 occurrences)
Last logged: 8:13:08 PM

🤨 Response: {'result': -1, 'message': "Mobile Number doesn't exist", 'err_code': ''}

No luck US number using this format 1234567890

If you are using a US account you need to use the ucloud subdomain.

Make sure you have the latest beta version installed (v0.2.0-beta3) and change the subdomain to ucloud in the sign in process.

Still no luck, using the latest beta plus using ucloud.

Logger: aiohttp.server
Source: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421
First occurred: 11:20:44 AM (1 occurrences)
Last logged: 11:20:44 AM

Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 174, in _new_conn
    conn = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/util/connection.py", line 72, in create_connection
    for res in socket.getaddrinfo(host, port, family, socket.SOCK_STREAM):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/socket.py", line 964, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
socket.gaierror: [Errno -5] Name has no usable address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 715, in urlopen
    httplib_response = self._make_request(
                       ^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 404, in _make_request
    self._validate_conn(conn)
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 1060, in _validate_conn
    conn.connect()
  File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 363, in connect
    self.sock = conn = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/connection.py", line 186, in _new_conn
    raise NewConnectionError(
urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnection object at 0x7fd606715670>: Failed to establish a new connection: [Errno -5] Name has no usable address

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 667, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/connectionpool.py", line 801, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/urllib3/util/retry.py", line 594, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='none', port=443): Max retries exceeded with url: /send_mobile_checkcode (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fd606715670>: Failed to establish a new connection: [Errno -5] Name has no usable address'))

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/config/custom_components/akuvox/api.py", line 475, in _async_api_wrapper
    response = await self.hass.async_add_executor_job(func, url, headers, data, 10)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/akuvox/api.py", line 571, in post_request
    response: requests.Response = requests.post(url,
                                  ^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 115, in post
    return request("post", url, data=data, json=json, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/api.py", line 59, in request
    return session.request(method=method, url=url, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 589, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/sessions.py", line 703, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/requests/adapters.py", line 700, in send
    raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='none', port=443): Max retries exceeded with url: /send_mobile_checkcode (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fd606715670>: Failed to establish a new connection: [Errno -5] Name has no usable address'))

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 452, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_app.py", line 543, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/site-packages/aiohttp/web_middlewares.py", line 114, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 92, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 210, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 26, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 85, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 242, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/headers.py", line 32, in headers_middleware
    response = await handler(request)
               ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/http.py", line 73, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/decorators.py", line 81, in with_admin
    return await func(self, request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 222, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 74, in wrapper
    return await method(view, request, data, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 122, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 368, in async_configure
    result = await self._async_configure(flow_id, user_input)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 415, in _async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 518, in _async_handle_step
    result: _FlowResultT = await getattr(flow, method)(user_input)
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/akuvox/config_flow.py", line 138, in async_step_sms_sign_in
    request_sms_code = await self.akuvox_api_client.async_send_sms(self.hass, country_code, phone_number, subdomain)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/akuvox/api.py", line 179, in async_send_sms
    response = await self._async_api_wrapper(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/akuvox/api.py", line 505, in _async_api_wrapper
    raise AkuvoxApiClientError(
custom_components.akuvox.api.AkuvoxApiClientError: Something really wrong happened! HTTPSConnectionPool(host='none', port=443): Max retries exceeded with url: /send_mobile_checkcode (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fd606715670>: Failed to establish a new connection: [Errno -5] Name has no usable address')). URL = https://None/send_mobile_checkcode
This error originated from a custom integration.

Logger: custom_components.akuvox
Source: custom_components/akuvox/api.py:453
integration: Akuvox SmartPlus (documentation, issues)
First occurred: 11:20:41 AM (4 occurrences)
Last logged: 11:20:50 AM

❌ Unable to retrieve user's personal door log

I want to be able to use the SmartPlus app as a back up option and for members of the family who have not yet fully embraced the vision of Home Assistant.

So, I understand that means going down the App Tokens route in order to avoid having issues with logging into the App and having things stop working. (pls correct me if this is wrong).

When I use the Mitmproxy method described in the readme file (I think I’m doing it the way described), the relevant line ending in /servers_list is a GET and not a POST. And the JSON content does not exist.

I realise this is a Home Assistant forum, not a Mitmproxy forum, but I’m really at a loss to know how to proceed here. It feels like the login process may have somehow changed or I’m logging in wrong.

Is anyone else experiencing the same thing or does anyone have an idea what I’m doing wrong?

I think that if you search through the different url “paths” and the tabs “response”, you will find it eventually. You can see that some of the paths contains the token for example.

I see the token= in some of the paths so could try that value as the Token field. It is/was not obvious to me if there might be more than one token at play so did not want to assume since it was not displaying in the way recommended by @Nimrod_Dolev .

What I can’t find anywhere is auth_token. I see x-auth-token: in the Request window, however x-auth-token and auth_token are not the same according to @Nimrod_Dolev in the screenshot provided in the instructions.

They are not the same and you will need them both while setting the integration