Nuki Card with Callback support (supports both Lock & Opener, it replaces the official integration)

What a mess. :slight_smile:

This callback (0) is to be deleted:

[Callback Raw List: ] {‘id’: 0, ‘url’: ‘unknown’},

Use this command (change host/ip and token):

curl -X GET ‘http://nuki-bridge.axel.dom:8080/callback/remove?id=0&token=xxxxx

You will always a lot of errors if the http calls to the bridge fail, because the sensors are not initialized (‘none’).

We have to understand why those http calls fail in your case…

ok, I have removed id 0. after any action on lock (manually or by HA) the status sensor for the lock (not the bridge) become unknown for about 2 minutes then come back to state. a true mess.

Let’s see the status of the bridge:

curl -X GET ‘http://nuki-bridge.axel.dom:8080/log?token=xxxxx

here is the log
[{“timestamp”: “2021-07-23T14:04:23+00:00”, “type”: “HTTP-Log”},
{“timestamp”: “2021-07-23T14:03:27+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T14:03:27+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T14:01:27+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T14:01:27+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:59:28+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:59:28+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:57:28+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:57:28+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:55:29+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:55:29+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:53:29+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:53:29+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:51:29+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:51:29+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:49:30+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:49:30+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:47:53+00:00”, “type”: “SSE-PushNukisResponse”},
{“timestamp”: “2021-07-23T13:47:53+00:00”, “type”: “SSE-PushNukisRequest”, “count”: 1},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnect”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-UpdateTime”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetChallenge”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadConfig”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetChallenge”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadStates”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-TurnOnNotific”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetHandles”, “pairIndex”: 0, “characteristic”: 143},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetHandles”, “pairIndex”: 0, “characteristic”: 146},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “type”: “SSE-PushNukisResponse”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-DiscoverServices”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “type”: “BLE-Connect”, “macAddr”: “54D2722ABBDD”},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connect”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:50+00:00”, “type”: “SSE-TimeResponse”},
{“timestamp”: “2021-07-23T13:47:43+00:00”, “type”: “SSE-PushNukisResponse”},
{“timestamp”: “2021-07-23T13:47:43+00:00”, “type”: “SSE-PushNukisRequest”, “count”: 1},
{“timestamp”: “2021-07-23T13:47:43+00:00”, “type”: “SSE-Gettime”},
{“timestamp”: “2021-07-23T13:47:43+00:00”, “type”: “SSE-Connected”, “serverNum”: 6},
{“timestamp”: “2021-07-23T13:47:43+00:00”, “type”: “SSE-PushNukisRequest”, “count”: 1},
{“timestamp”: “2021-07-23T13:47:41+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:47:41+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:47:39+00:00”, “type”: “WLAN-Connected”, “ipAddr”: “192.168.1.47”},
{“timestamp”: “2021-07-23T13:47:34+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-StatusOnline”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:47:33+00:00”, “type”: “WLAN-Connect”},
{“timestamp”: “2021-07-23T13:47:33+00:00”, “type”: “WLAN-Init”},
{“timestamp”: “2021-07-23T13:47:32+00:00”, “type”: “WiFi-Version”, “version”: “2.2.0”},
{“timestamp”: “2021-07-23T13:47:32+00:00”, “type”: “System-Startup”, “version”: “2.9.3”, “resetCause”: “00”},
{“timestamp”: “2021-07-23T13:47:32+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:47:32+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:45:32+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:45:32+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:43:31+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:43:31+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:42:38+00:00”, “type”: “SSE-TimeResponse”},
{“timestamp”: “2021-07-23T13:42:43+00:00”, “type”: “SSE-Gettime”},
{“timestamp”: “2021-07-23T13:41:36+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:41:36+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:39:36+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:39:36+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:38:51+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:38:34+00:00”, “type”: “SSE-PushNukisResponse”},
{“timestamp”: “2021-07-23T13:38:34+00:00”, “type”: “SSE-PushNukisRequest”, “count”: 1},
{“timestamp”: “2021-07-23T13:37:36+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:37:36+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:35:43+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:35:43+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:33:35+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:33:35+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:31:35+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:31:35+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:29:35+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:29:35+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-23T13:28:24+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:28:24+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnect”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:28:24+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ConnectionTimeout”},
{“timestamp”: “2021-07-23T13:28:19+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 205},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 273},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 96},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 245},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 229},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “type”: “SSE-KeyturnerEventResp”},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “type”: “HTTP-Post”, “nukiId”: “192ABBDD”},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerEventReq”},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadStates”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-TurnOnNotific”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “type”: “BLE-Connect”, “macAddr”: “54D2722ABBDD”},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connect”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:28:18+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-StateChanged”, “pairIndex”: 0},
{“timestamp”: “2021-07-23T13:27:35+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-23T13:27:35+00:00”, “type”: “HTTP-List”}]

Hi Alessandro,

I see there is a problem with my translation integration. If I set the language to another language than English, the “Nuki Lock Action” and “Nuki Door State” become unavailable. This has probably to do with the

availability_template: >
  {{ (states('input_text.nuki_bridge_door_sensor') in ['open','closed']) or (states('sensor.nuki_door_sensor_state') in ['open','closed']) }}

because open and closed aren’t in the translations of the “input_text.nuki_bridge_door_sensor”. Can you explain why you have chosen to use the names of the states instead of the numeric states?

A solution could be adding 2 input texts:

  • nuki_bridge_door_sensor_state:
    name: “Nuki Card (door sensor state)”
  • nuki_bridge_lock_sensor_state:
    name: “Nuki Card (lock sensor state)”

add them as attributes to the “nuki_door_sensor_state” and “nuki_lock_sensor_state”:

attribute_templates:
  numeric_state: >
    {{ states('input_text.nuki_bridge_door_sensor_state') | int }}

attribute_templates:
  numeric_state: >
    {{ states('input_text.nuki_bridge_lock_sensor_state') | int }}

and set them in the automation.

To my opinion, it is better to use numerical states when possible because then a change of the name doesn’t affect the code.

Hi Alessandro,

Please forget my previous reply, changing the “availability_template” of both “nuki_lock_action” and “nuki_door_state” to:

availability_template: >
  {{ state_attr('sensor.nuki_bridge_endpoint_list', 'lastKnownState')['doorsensorState'] in [2,3] }}

will do the trick. Now the lock and binary sensor are depending op numerical states instead of names. If you think this is less readable, you can always add comments to explain the numerical states.

PS: I changed it in my version with the translations and updated it in the file share location of which I did send you the url. So you can download it from there.

Hi Alessandro,
wow - in meanwhile a lot of things happend here :wink: seems I missed some versions…

Thanks for all the work - so far V8.1 seems to work fine, but I got some log entries as well.


I only have one registered callback at the moment.

curl -X GET -H "Content-Type: application/json" 'http://192.168.0.*:8081/callback/list?token=??????'            {"callbacks": [{"id": 0, "url": "http://192.168.0.*:8123/api/webhook/eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJkM2M1NGRlZDRiZWQ0MWQ3YWUwNTU5NWI1NjA4YTliMSIsImlhdCI6MTYyMTg0OTgwMiwiZXhwIjoxOTM3MjA5ODAyfQ.Dy8Mjtq2a2m8mRpXsOplKewyxKdQt6C-t4pcv9eX68o"}]}l

ps
four minutes later it changed:

Hi Alessandro,

reviewing the code, I saw I missed a thing implementing the translations, in the automation I removed the settings of the “my_state” variable and changed into directly setting the value of the json response. So there are no more changes of values of input_text entities in the code other than by the translation functionality

I’ve update the source again on the file share location.

I noticed the same thing during the last 2 days: the bridge often reboots…that’s why often some commands don’t complete and we see errors in the logs…I will ask Nuki devs about this problem, it impacts the integration obviously.

These are the two rest sensors polling the bridge every 2 minutes, this is good. So we’re not overloading the bridge, that’s not the cause of the reboots. Need to investigate on that…

Thanks for reporting the log.

Hi Joerg. :slight_smile:

I was fixing a couple of bugs, just published v8.2, can you please retry with this one? Thanks.

I’ll add the translation system once v8 is stable. Just released v8.2, changed some settings in automation and I also removed some forced refreshes of sensors that could cause issues.

Let me know how it works for you, if it’s better than v8.1, check how many times it triggers, should be better now. :slight_smile:

Thanks

Please try v8.2, I just released it, let me know if it works better for you. Check HA logs after restart and let me know. Thanks for your help.

8.2 just installed. No errors in HA log, all sensors are in state. looks like a full success. You are the man! Update of sensors after action is about 30sec. Thank you for all your work and effort.

I’m sorry for the issues, and thanks for your kind words.

The update of the lock/door should be 10-15 secs max. So something is still not working properly if it takes 30 sec. Let me know if it improves. :slight_smile:

Nuki Card v8.3 released: optimized automation settings and added checks everywhere a sensor was referenced in the code to avoid as much as possible errors in HA log, mainly in init/restart phase.

I’ll wait for your feedbacks. Thank you.

Alessandro

1 Like

unfortunately the errors are back.
2021-07-24 08:30:24 ERROR (MainThread) [homeassistant.components.rest.data] Error fetching data: http://192.168.1.47:8080/callback/list?&token=ucqbkj failed with illegal status line: bytearray(b’175’)

2021-07-24 08:30:24 WARNING (MainThread) [homeassistant.components.rest.sensor] Empty reply found when expecting JSON data

2021-07-24 08:30:24 ERROR (MainThread) [homeassistant.components.automation.nuki_card_callback] Nuki Card Callback: Choose at step 1: choice 2: Error executing script. Error for call_service at pos 1: Error rendering data template: JSONDecodeError: Expecting value: line 1 column 1 (char 0)

2021-07-24 08:30:24 ERROR (MainThread) [homeassistant.components.automation.nuki_card_callback] Nuki Card Callback: Error executing script. Error for choose at pos 1: Error rendering data template: JSONDecodeError: Expecting value: line 1 column 1 (char 0)
every 2 minutes at every script call. every once in a while the following
2021-07-24 09:12:24 ERROR (MainThread) [homeassistant.components.rest.data] Error fetching data: http://192.168.1.47:8080/info?&token=ucqbkj failed with Server disconnected without sending a response.

2021-07-24 09:12:24 WARNING (MainThread) [homeassistant.components.rest.sensor] Empty reply found when expecting JSON data

here the log from nuki which looks good to mee
[{“timestamp”: “2021-07-24T07:24:11+00:00”, “type”: “HTTP-Log”},
{“timestamp”: “2021-07-24T07:24:10+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:23:31+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T07:23:14+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:22:49+00:00”, “type”: “HTTP-Log”},
{“timestamp”: “2021-07-24T07:22:10+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:20:11+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:18:11+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:16:12+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:14:12+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:12:13+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:10:13+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:08:13+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:06:14+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:05:08+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:05:08+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnect”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:05:08+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ConnectionTimeout”},
{“timestamp”: “2021-07-24T07:05:03+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:03+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 205},
{“timestamp”: “2021-07-24T07:05:03+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 273},
{“timestamp”: “2021-07-24T07:05:03+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:03+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 96},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 245},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 229},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “type”: “SSE-KeyturnerEventResp”},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “type”: “HTTP-Post”, “nukiId”: “192ABBDD”},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerEventReq”},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadStates”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-TurnOnNotific”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “type”: “BLE-Connect”, “macAddr”: “54D2722ABBDD”},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connect”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:05:02+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-StateChanged”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:51+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:04:51+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnect”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:04:51+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ConnectionTimeout”},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 205},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 273},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 96},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 245},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-CommandComplete”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:46+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerResponse”, “pairIndex”: 0, “bytes”: 229},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-AlreadyConnected”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerRequest”, “pairIndex”: 0, “bytes”: 56},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “type”: “SSE-KeyturnerEventResp”},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “type”: “HTTP-Post”, “nukiId”: “192ABBDD”},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “SSE-KeyturnerEventReq”},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadStates”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-TurnOnNotific”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “type”: “BLE-Connect”, “macAddr”: “54D2722ABBDD”},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Connect”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:45+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-StateChanged”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T07:04:14+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:02:15+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T07:00:15+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:58:16+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:56:16+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:54:16+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:52:17+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:50:17+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:48:18+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:46:18+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:44:19+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:42:19+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:40:20+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:40:19+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:38:20+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:38:20+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:36:20+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:36:20+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:34:21+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:34:21+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:32:21+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:32:21+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:30:22+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:30:22+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:28:22+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:28:22+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:26:23+00:00”, “type”: “HTTP-Info”},
{“timestamp”: “2021-07-24T06:26:23+00:00”, “type”: “HTTP-List”},
{“timestamp”: “2021-07-24T06:24:47+00:00”, “type”: “SSE-PushNukisResponse”},
{“timestamp”: “2021-07-24T06:24:47+00:00”, “type”: “SSE-PushNukisRequest”, “count”: 1},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnected”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-Disconnect”, “pairIndex”: 0, “bleHandle”: “0001”},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-UpdateTime”},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetChallenge”, “pairIndex”: 0},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-ReadConfig”},
{“timestamp”: “2021-07-24T06:24:44+00:00”, “nukiId”: “192ABBDD”, “type”: “BLE-GetChallenge”, “pairIndex”: 0}]

Just updated to v8.3 and it’s all gone smoothly. Log looks good:

2021-07-24 09:01:24 WARNING (MainThread) [homeassistant.components.sensor] Platform rest not ready yet: Unsupported URL protocol ''; Retrying in background in 30 seconds
2021-07-24 09:01:24 WARNING (MainThread) [homeassistant.components.sensor] Platform rest not ready yet: Unsupported URL protocol ''; Retrying in background in 30 seconds
2021-07-24 09:01:24 WARNING (MainThread) [homeassistant.components.sensor] Platform rest not ready yet: Unsupported URL protocol ''; Retrying in background in 30 seconds
2021-07-24 09:01:37 ERROR (MainThread) [homeassistant] Error doing job: Task was destroyed but it is pending!

I’m not sure if that error is actually anything to do with this custom integration, but thought I’d include it just in case.

Thanks again for your ongoing work on this. :slight_smile:

having the following every 2 minutes
2021-07-24 11:48:24 ERROR (MainThread) [homeassistant.components.rest.data] Error fetching data: http://192.168.1.47:8080/info?&token=ucqbkj failed with Server disconnected without sending a response.

2021-07-24 11:48:24 WARNING (MainThread) [homeassistant.components.rest.sensor] Empty reply found when expecting JSON data

when I send the call manually via browser I receive the expected return without error
{“bridgeType”: 1, “ids”: {“hardwareId”: 592989914, “serverId”: 1468984279}, “versions”: {“firmwareVersion”: “2.9.3”, “wifiFirmwareVersion”: “2.2.0”}, “uptime”: 12444, “currentTime”: “2021-07-24T09:52:36+00:00”, “wlanConnected”: true, “serverConnected”: true, “scanResults”: [{“deviceType”: 0, “nukiId”: 422231005, “name”: “Nuki_192ABBDD”, “rssi”: -48, “paired”: true}]}