Online channel not working after upgrading UniFi Controller to 5.12.35

Tags: #<Tag:0x00007fc1fb6a4bf8>

Hi,

Saturday evening I upgraded UniFi Controller from 5.10.24 to 5.12.35. Since then my two items linked to the Online channel of two different UniFi Wireless Client things haven’t been updated - they have been ON ever since.

Problem is related to the upgrade, but I don’t know if:

  • Ubiquiti introduced a bug in this new version.
  • Something went wrong when upgrading the Docker container with the Controller.
  • Something being corrupted in my openHAB installation because of the upgrade.
  • Or if there could be a bug in the UniFi binding.

I’m running openHAB 2.5.1 and UniFi Controller 5.12.35. I tried to enable debug logging with “openhab> log:set TRACE org.openhab.binding.unifi” in karaf console, and saw this:

(filtered two only the two devices in question and masked MAC addresses)
2020-01-14 20:56:34.109 [DEBUG] [i.internal.api.model.UniFiController] - Found 18 UniFi Insights(s):

  • UniFiClient{mac: ‘xx:xx:xx:xx:xx:xx’, ip: ‘null’, hostname: ‘oneplus5’, alias: ‘null’, wired: false, blocked: false, device: null}
  • UniFiClient{mac: ‘xx:xx:xx:xx:xx:xx’, ip: ‘null’, hostname: ‘anness-iphone’, alias: ‘null’, wired: false, blocked: false, device: null}
    […]

I don’t know if I’m looking at the right thing, but one thing sticking out is the lack of IP address in this list? Of course, hostname could be used, either configured for the things, or resolved and matched with configured IP address. But I assume binding will expect IP address to be there?

Also found this, which seems perhaps more relevant:

2020-01-14 21:31:18.679 [TRACE] [nal.api.model.UniFiControllerRequest] - >> GET https://diskstation.local:8443/api/s/oc9023uo/stat/alluser?within=168
2020-01-14 21:31:18.694 [TRACE] [nal.api.model.UniFiControllerRequest] - << 200 OK
{
“meta”: {
“rc”: “ok”
},
“data”: [
{
“_id”: “5cc8962d46e0fb0016dc485d”,
“mac”: “xx:xx:xx:xx:xx:xx”,
“oui”: “OneplusT”,
“is_guest”: false,
“first_seen”: 1555875741,
“last_seen”: 1579033469,
“is_wired”: false,
“hostname”: “oneplus5”,
“site_id”: “5cc8962c46e0fb0016dc4732”,
“duration”: 14753388,
“tx_bytes”: 67502167826,
“tx_packets”: 68857214,
“rx_bytes”: 56669118157,
“rx_packets”: 67773833,
“wifi_tx_attempts”: 63570429,
“tx_retries”: 0
},
[…]

I don’t know if this would be the response where IP address is supposed to be? I can also add that I tried adding an item for “Last Seen”, and it worked correctly. I also tried creating things and items from scratch, and it didn’t solve the problem.

Should I dig up more information - and has anyone else experienced this kind of problem with version 5.12.35 of the controller?

One more thing: I tried to manually update my item to OFF. After that, the binding was able to change it back to ON when I reconnected my phone. So maybe problem is related to some client data missing in responses when client is not connected?

Thanks in advance for any help sorting this problem out.

Best regards,
Jacob Laursen

As work-around I created a rule using LastSeen to mimic the needed logic. LastSeen is updated frequently:

var Timer timerUniFiJacob = null

rule "UniFi work-around Jacob"
when
    Item UniFi_OnePlus5_LastSeen changed
then
    if (Jacob_Home.state == OFF)
    {
        Jacob_Home.sendCommand(ON)
    }

    if (timerUniFiJacob === null)
    {
        timerUniFiJacob = createTimer(now.plusSeconds(180), [ |
            Jacob_Home.sendCommand(OFF)
        ])
    }
    else
    {
        timerUniFiJacob.reschedule(now.plusSeconds(180))
    }
end

Best regards,
Jacob Laursen