Automate device "reconnect" in Unifi Network

I am using the Unifi Network integration, and I have one device (my car charger), that sometimes becomes unresponsive in Home Assistant (probably because it’s on the other side of a brick wall).

I’ve noticed that if I go into the Unifi App, choose the device (car charger), and force a “reconnect”, that usually fixes this immediately.

Is there a way to do this from Home Assistant? I.e., whenever that device is unavailable, automatically ask Unifi to reconnect it?

Yes there is - here is my example :slight_smile:

alias: Restart Outdoor Lamp
description: ""
trigger:
  - platform: homeassistant
    event: start
condition: []
action:
  - service: unifi.reconnect_client
    data:
      device_id: fec6a37a28c512dcdf793494bb6cdb38
mode: single

If you use the GUI the device ID is auto populated from the friendly name. In your instance you’d trigger it when the state of the charger goes to “unavailable”.

2 Likes

Sweet, I’ll take a stab at this tonight.

Thanks a lot!

1 Like

I posted the detail here but only a SMALL number of my entities have a matching device.

Is there a way to update the list of devices?

https://community.home-assistant.io/t/unifi-new-device-tracking/469486/6?u=pureetofu

I have the same issue, I try to reconnect an IoT device which is MQTT based. It is an entity in HA but not a device.

I ended up just making a script from: https://community.ui.com/questions/Reconnect-automatically-IoT-device-What-is-the-easiest-way-to-achieve-that-task/13dafc1d-d441-4787-9443-277b74d89c0d
This script is then called by HA when there is no longer data being received.

edit: above doesn’t work: that script apparently doesn’t work with the latest UAP firmwares.

edit: finally got it working using the following butchered bash script which does a json api call

#!/bin/bash
#based on https://dl.ubnt.com/unifi/6.0.43/unifi_sh_api

username=
password=
baseurl=https://ip:8443
site=default
mac=

cookie=file

curl_cmd="curl --tlsv1 --silent --cookie ${cookie} --cookie-jar ${cookie} --insecure "

${curl_cmd} --data "{\"username\":\"$username\", \"password\":\"$password\"}" $baseurl/api/login

${curl_cmd} --data "{\"cmd\":\"kick-sta\", \"mac\":\"${mac}\"}" $baseurl/api/s/$site/cmd/stamgr

${curl_cmd} $baseurl/logout
exit