[RELEASE - BETA] - "YoLink™ Device Service" app and drivers to connect Hubitat™ to YoLink™ devices

Hi Steve!

Thank you for you quick response!

  • I have checked the historic graphs in the YoLink app, there is no missing information (and the YoLink app is always correct and working)

  • Device firmware on both temp sensors says "This is the newest version." when selected and are at 0392.

  • YoLink Hub says it also is the newest with version 0323.

  • No errors in the logs, even tho the device has the wrong temp (last known temp i am thinking when it stops updating, it appears 100% normal. Just wrong. and it will be wrong for days until I just open that device and sit on it in HE and then it updates after a min and is good for another couple days. So I am basically just periodically checking YoLink and then Hubitat to see if the same. Neither sensor has errors, but one of them does have a single Warn instance. [dev:11]2023-06-01 06:08:16.092 PM[warn] Polling interval of once every 10 seconds exceeded, device was not polled.

  • There was an update for YoLink Device Service - Handle new error code: 010104:Header Error!The token expired
    I also did notice that at some point, the same 010104 (I feel like an idiot for not noticing the new software update)

I have updated, and will monitor. Hopefully this solves it!

  • My hub was also out of date, and have now updated.

Currently running version: 2.3.5.135

New version available: 2.3.5.146

  • I was originally rebooting the hub to 'kick' the devices and get them to respond, but then i found out after I could just open the device and give it a min and it would come to life.

Weird, I will monitor and fingers crossed!

Thanks,
Dan

You're welcome. :slightly_smiling_face:

Didn’t take long, lost one of the sensors.
YoLink shows it as -20.6 and I verified on its LCD display.
The other freezer sensor is still working.
And when I look in the logs for this one I don’t see it in the list too select.
The working one says Success for *lastResponse and after looking at device stats for a couple min the non working sensor updated, though it still has the 010104 error.

With the updated yolink software do I need to recreate the device to use the latest?

Current States

  • alarm : off
  • alertInterval : 0
  • battery : 100
  • devId : d88b4c020005a28e
  • driver : 2.0.6
  • firmware : 0392
  • highHumidity : false
  • highTemp : false
  • humidity : 77.9
  • humidityCorrection : 0
  • humidityLimitMax : 100
  • humidityLimitMin : 0
  • lastResponse : Polling error: 010104 - 010104 is an undefined return code
  • lowBattery : false
  • lowHumidity : false
  • lowTemp : false
  • online : true
  • rssi : -83
  • signal : -83 dBm
  • state : normal
  • tempCorrection : 0
  • tempLimitMax : -10.2
  • tempLimitMin : -1000
  • temperature : -15.8
  • temperatureScale : C

No, you don't need to do anything after an app or driver update to start using the new code.

Strange, that error was corrected some time ago. That error is returned/handled in the YoLink Device Service app. I would suggest doing a Repair on the Service and Drivers using the HPM "Repair" function. That will download the current Service app and all the drivers you have installed. I would suggest rebooting the Hub after the repair is complete.

I did the repair from HPM and rebooted the hub.

Weird thing is it worked fine all night, and despite the repair it still has that last response. But it is accurate and working at the moment!!

  • lastResponse : Polling error: 010104 - 010104 is an undefined return code

Go to the device on the HE and click on the "Reset" button.

:man_facepalming: I was looking for a reset earlier and couldn't find. I see it now as the larger buttons, I am new??? Haha

I reset it and both temp sensors are showing success for last response and correctly pulling the temp and humidity.

Hopefully that did it, thanks for the lessons, you taught me a bunch of things to try for next time!!

Hi Steve,

Everything is still working 100%, longest I have gone without a hiccup and the devices.

Thanks again!

Thank you for the update!

I’m having the issue that my temp sensor is not updating inside hubitat. I did the reset on the device but still not updating. I can manually poll and it will update. Any thoughts?

Some things to check:

  • Open the YoLink Mobile app, click on the troublesome sensor and verify that the historical graphs show that the device is reporting the temps.

  • Click on the device's settings in the app (... in the upper right-hand corner) and verify that there is not a device firmware update pending. If there is, an "Update" link will appear next to the "Firmware" value.

  • Click on the YoLink Hub in the app and go into its settings and verify that there is not a device firmware update pending.

  • Look in the "Past" Hubitat logs, filter on "Error" level messages and look for any unexpected errors.

  • Go into the Hubitat HPM app's "Update" function and check for any updates to the YoLink Service and/or drivers.

  • Insure your Hubitat firmware is up to date.

  • Reboot the Hub.

  • Open the YoLink Mobile app, click on the troublesome sensor and verify that the historical graphs show that the device is reporting the temps.
    Plenty of historical data.

  • Click on the device's settings in the app (... in the upper right-hand corner) and verify that there is not a device firmware update pending. If there is, an "Update" link will appear next to the "Firmware" value.
    This was done Prior to my first post. No pending firmware

  • Click on the YoLink Hub in the app and go into its settings and verify that there is not a device firmware update pending.
    This was done Prior to my first post. No pending firmware

  • Look in the "Past" Hubitat logs, filter on "Error" level messages and look for any unexpected errors.
    [YoLink™ Device Service]
    2023-06-25 10:56:35.425 PMerrororg.codehaus.groovy.runtime.metaclass.MissingMethodExceptionNoStack: No signature of method: java.lang.String.call() is applicable for argument types: (com.hubitat.hub.domain.Event) values: [com.hubitat.hub.domain.Event@16685ae]
    Possible solutions: wait(), chars(), any(), wait(long), each(groovy.lang.Closure), any(groovy.lang.Closure) (initialize)vice Service]

[YoLink MQTT Listener - YoLink Cloud Listener]
2023-06-25 11:41:18.854 PM Disconnecting from MQTT

dev:972023-06-25 11:41:18.850 PMerrorMQTT Error: Error: Connection lost: Timed out waiting for a response from the server

dev:972023-06-25 10:56:13.976 PMtraceDevice initializing. Establishing MQTT connection to YoLink API

  • Go into the Hubitat HPM app's "Update" function and check for any updates to the YoLink Service and/or drivers.
    This was done Prior to my first post. No pending updates
  • Insure your Hubitat firmware is up to date.
    Updated up last night
  • Reboot the Hub.
    Rebooted last night

I think the errors are around the time I did the update on the hub. I don't see any logs for the temp device itself.

Whoa, that's a new one - I've never seen that error before. Here's a few more suggestions:

  • Go into HPM and perform a "Repair" on the YoLink Device Service app. This will download the app and all the drivers again.
  • Run the YoLink Device Service app from start to finish - there's no need to change anything.

Done I will keep an eye and let you know.

Hi there,
First, I want to say how much I appreciate this integration. YoLink is a big part of my smart home, and provides devices that do not have equivalents (in particular, the outdoor temperature sensor with probe, which I use for the pool).

However, it appears that the integration is using quite a lot of resources on my hub. Overall, my Hub probably spends about 15% of all time in YoLink routines.

I have the app configured to polls devices every minute. I know 5 minutes is recommended, but I want the temperature to update faster than every 5 minutes.

However, I would not care if the YoLink Manipulator or Leak sensors updated only every 10 minutes (YoLink's hub is already shutting down the valve if a leak is detected).

Would it be possible to have per-device, or at least per-device-type poll frequencies ?

Hello,
Reducing the polling interval doesn't gain you anything in regards to the temperature sensors and most devices in general. The poll is just reading the device's YoLink cloud server values, not the actual device. The devices automatically update the cloud servers via the YoLink Hub, which in turn sends a notification to my service which updates the Hubitat device immediately. As with most any battery operated device, it has its own predefined update interval and/or parameters (in this case a certain change in temperature) dictating when it will update the cloud. This prolongs its battery life.

During my early app development, I noticed that there were some types of devices that were updating the YoLink cloud, but weren't always sending out the notification. The polling catches those updates for which no notification was sent and also determines whether or not the device is still online.

I don't know if the lack of certain notifications is still an issue as YoLink is constantly improving their services and device firmware. I haven't heard of anyone not being satisfied with the 5 minute default and some have actually increase it.

I see. I guess I will try just increasing it then, and see if it works just as well for temperature sensors.

Any chance support would be added for the YoLink FlexFob? When I select device to be controlled a YoLink Fob is one of the choices, but it doesn't build any devices in the device list. There must be something in the API about the FlexFob because I can reach it through IFTTT.

The FlexFobs kinda work, but they need improvement. I've been working on improving them, but summertime has been hectic and I haven't had much time for development.

Did you select the driver in the HPM app when you install the Service? Use the HPM "View Apps and Drivers" function and make sure the "YoLink SmartRemoter Device" driver is installed.

If not, use the HPM Modify function and select the driver. Run the Service app, deselect the Fob and run the app to completion. Run the Service again and select the Fob and run the app to completion. Check the Hubitat log for any errors.

Thanks, Steve, for showing me how to load this. I now have the FlexFob as a device in my hub.