I’ve been building an App and a set of device drivers that let Hubitat talk directly to the YoLink Local Hub, with no cloud dependency. Events come in over MQTT from your local hub; periodic “reconcile” calls use YoLink’s local HTTP API. It’s fast, private, and keeps working even if the internet is down.
I officially have the drivers in Hubitat Package Manager. YAY.
What you get
- Local-only integration (no YoLink Cloud Needed)
- Real-time events via the Local Hub’s MQTT broker
- Optional periodic reconcile (local HTTP
getState) to ensure nothing was missed - Customizable date/time format (shown in events), and F/°C selection
- Clean device pages (hide internal “driver”/format attributes from Current States)
Supported (initial) devices
- THSensor (Temp / Humidity)
- Leak Sensor / Leak Sensor 3
- Door Sensor
- Power Failure Alarm
- MQTT Listener “device” (handles the message bus)
Update: Supported devices
- Motion Sensor (Indoor / Outdoor) - 2025 1221
More YoLink devices can be added over time, if I get my hands on them.
Why local?
- Latency: MQTT events arrive in milliseconds on your LAN
- Resilience: Works even if your internet is down
- Privacy: Your automations stay on your network
How it works (high level)
- Parent App
- You enter the Local Hub’s IP, Subnet (Net ID), Client ID, and Client Secret.
- The app fetches a local access token, discovers devices, and lets you select which devices to expose to Hubitat.
- It creates one MQTT Listener device that connects to the hub’s broker (port 18080) and routes messages by
deviceId.
- Drivers
- Each device driver receives MQTT reports directly from the parent app.
- Drivers also support a local HTTP
getStatecall (used for “reconcile”). - Drivers format timestamps according to your preference set in the parent app.
- Polling strategy
- Primary: MQTT push for near real-time updates.
- Secondary (optional): a “Periodic reconcile” that pings devices via HTTP to refresh state on a schedule (Off / Hourly / 6h / 12h / Daily).
Requirements
- YoLink Local Hub with Local API enabled
- Static/reserved IP for your YoLink hub on your router
- Your Client ID and Client Secret from the YoLink app (Integrations → Local API)
- Hubitat Elevation running current firmware
This integration is only for the Local Hub. It does not use or require YoLink Cloud.
Installation (quick start)
- Install the App & Drivers
- In Hubitat, go to Apps Code → paste the parent app code from the repo, Save.
- Go to Drivers Code → install the drivers you need, Save.
- Create the App instance
- Apps → Add User App → select YoLink™ Device Local Service.
- Enter credentials
- Local Hub IP (reserved), Subnet (Net ID), Client ID, Client Secret.
- Other settings
- Choose Temperature Scale and Date/Time format.
- Pick a Periodic reconcile cadence (recommended: Hourly or 6 hours).
- Select devices
- Choose which YoLink devices you want created in Hubitat.
- The app will also create an MQTT Listener device automatically.
- Done
- Open a created device and watch events come in.
- Optional: enable debug logging in the app/drivers while testing.
Troubleshooting
- MQTT connected?
Open the MQTT Listener device; checkMQTT: connectedand logs. - No child device for a message?
The app silently ignores MQTT for devices you didn’t select.
(No scary errors—only a debug line if app debugging is on.) - Nothing updating?
- Verify Local Hub IP & that the hub is reachable on your LAN.
- Re-enter credentials; confirm the token request succeeds.
- Make sure “Periodic reconcile” isn’t set to Off while testing.
- Timestamps / units look off?
Adjust Date/Time format and Temperature Scale in the parent app; drivers pick it up automatically.
Notes & Limitations
- Uses the deviceId as the child DNI to route MQTT reliably. If you’re migrating from older builds, the app will recreate devices using the new DNI.
- Some YoLink models share the same “type” name—drivers handle common payload shapes, but edge models may need small tweaks. Report anything odd.
- Local API is plain HTTP on the LAN; ensure you trust your local network.
Credits
- Big thanks to Steven Barcus for foundational work on the cloud side.
- Built with a lot of late nights and a lot (and I mean a lot) of AI assistance.

License / Disclaimer
This project is not affiliated with YoLink/YoSmart, Inc.
Provided “AS IS” without warranties. Please review the license in the repo before redistribution or commercial use.
GitHub: https://github.com/almulder/hubitat/tree/main/YoLink
If you try it, I’d love your feedback, logs, and device models so we can keep tightening things up.
I would call these devices as BETA devices as only I have tested them on my setup. These were created with the help of perplexity.ai and more recently ChatGPT5 (Works better for coding)
Here is a link to the repo I created for them.
