[APP][Pro] Zendo — Control your Homey from an interactive floorplan

Hi all,

I’m Paul from Zendo. We’re launching our Homey integration in mid-May as an official Homey partner, and we’d like some beta testers to try it before the public release.

What is Zendo

Zendo is a companion app for Homey: it turns your smart home into an interactive floorplan. You set up rooms, place accessories where they physically are, and control everything with a tap.

A floorplan gives you a sense of place: you recognise the rooms, you see where things are, and you already know what to do. It feels like home because it looks like home.

What you can do with it

  • Control your Homey: lights, thermostats, speakers, blinds, curtains, smart plugs, smart locks, fans, garage doors, robot vacuums
  • Watch your cameras: live stream in the Security view, with an option to quickly turn on the room lights for a better picture at night
  • Trigger your Homey Flows and Moods: up to 8 one-tap shortcuts directly on the floorplan (“I’m Home”, “Good Night”, “Movie Time”…)
  • Share with family and guests: invite anyone by sharing a link. You can hide specific devices per person (the cameras from guests, the smart lock from everyone except admins)
  • Geofences and notifications: per-person geofences tied to Homey’s home/away state, plus push notifications from your Flows
  • Run it as a wall tablet: kiosk mode keeps the screen awake and it works nicely on an iPad or Galaxy Tab

Setup

On an iPhone Pro or iPad Pro you can scan your rooms and the floorplan is ready in seconds. On any other device you upload a floorplan image and adjust it to your liking. Your Homey Zones map to Zendo rooms automatically, and your devices are added based on that; you just personalise it from there. It runs on iOS, iPadOS, Android, and macOS (Apple Silicon), and syncs across all your devices.

Privacy

All traffic goes directly between your device and your Homey: nothing routes through Zendo’s servers. No Zendo account needed to use the app.

Beta testers – 25 spots

We’re looking for 25 testers from this community to try it before the public launch. Testers get Zendo Pro for free as a thanks.

To join:

  1. Install Zendo (myzendo.com/download) and sign up in the app
  2. Email homey.ea@myzendo.com from the same address you used to sign up
  3. We’ll activate Pro membership

Happy to answer any questions in the thread.

Cheers,
Paul

3 Likes

Nice!

I just applied. (Magin846)

It will be interesting to try it out. Some comments:

I downloaded the app and used the generated URL to craft an initial floor plan using your wizard. So far so good. Then when it told me to return to the Homey app, it (the homey app) was stuck on download client. (Beta feedback) A quick restart of homey later everything seems to work. Will wait for my pro access to start heavy testing.

Thermostats don’t show a temperature:

It appears that logs aren’t loaded correctly:

The logs are only captured from the point where you opened the Zendo app. In Homey, you can also get previous log entries using an API command:

Homey.insights.getLogEntries({id: "homey:device:[deviceid]:alarm_motion", uri: "homey:log:homey:device:[deviceid]:alarm_motion"});

Replace the [deviceid] with the actual device ID, and you get a log like this:

{
  "values": [
    {
      "t": "2026-04-16T13:59:27.923Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T14:06:36.413Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T14:07:24.871Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T14:09:52.567Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T14:41:06.610Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T14:42:09.714Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:01:21.285Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:04:54.105Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:21:38.369Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:22:45.843Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:23:39.273Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:24:45.879Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:35:53.404Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:36:57.435Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:52:47.852Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:54:51.552Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:55:23.101Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T15:57:16.160Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:00:38.129Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:01:50.142Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:10:22.236Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:11:35.130Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:13:22.100Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:14:28.718Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:15:33.931Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:16:49.990Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:18:46.699Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:19:56.150Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:24:53.737Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:26:05.135Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:31:23.049Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:34:11.730Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:34:25.687Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:38:39.365Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:39:53.646Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:41:45.478Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:45:10.584Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T16:52:00.591Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:03:22.706Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:04:32.211Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:05:15.109Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:07:07.059Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:22:25.308Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:23:37.697Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:29:12.368Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:30:39.767Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:31:10.677Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:32:16.462Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:32:59.084Z",
      "v": true,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    },
    {
      "t": "2026-04-16T17:34:09.371Z",
      "v": false,
      "originUserId": null,
      "originUserName": null,
      "originClientId": null,
      "originClientName": null,
      "originName": "Sonoff",
      "originUri": "homey:app:se.styrahem.sonoff.zigbee"
    }
  ],
  "start": "2026-04-16T13:59:27.923Z",
  "end": "2026-04-16T17:34:09.371Z",
  "uri": "homey:device:eaa62310-b311-4fa4-b56d-2b4f1e98fe24",
  "id": "homey:device:eaa62310-b311-4fa4-b56d-2b4f1e98fe24:alarm_motion",
  "lastValue": false
}

the v parameter is the alarm on/off state.

NOTE! For this, you will need the homey.insights.readonly scope in the web API client.

There is always this dot shown at the settings icon, but I can’t see what it’s for:


Thermostat does not appear to be supported:

This is a tado v3 thermostat using the tado Homey app. Capabilities:


Dehumidifier is also not shown in the “Humidity Sensor” of the Thermostat part.


When enabling location/geofencing and clicking “Set location” in the prompt, it keeps flashing on this screen:


As far as I can see, you can only add thermostats. It might be useful to also support temperature and humidity sensors.


Hopefully my feedback helps!

Hi, I just replied to your email :blush:

Hi, I’m just replying to you over email so we can get those pesky bugs sorted.

The dot is displayed when accessories are offline or when batteries are low. We’re going to improve the UX so that’s explained in the settings when it first appears.