"Zoney": New device from Homey?

UPDATE

I was able to clone the Bluetooth signal with an ESP32, allowing the Homey app to discover it as a Zoney device. Here are some screenshots:

To me, this seems more like a prototype/test that accidentally got into a production build. The request timed out when it needed to scan for networks, since my ESP32 sketch doesn’t have that implemented. Not that there’s much more to look at anyway, since to me it seems mostly just like the regular Homey Bridge setup. And even if it wasn’t, it would not link to the Homey Cloud instance anyway, I’ve already tried doing that by installing the OTA for the Energy Dongle onto another ESP32, but it says that the serial number (MAC address) is incorrect. It can’t link to Homey Pro, since I have a Pro 2019 which doesn’t support Satellite mode or energy dongle.

#############################

Hello there,

I downloaded the Homey app APK from APKPure, and I ran the index.android.bundle React Native file in the assets folder through a decompiler. I saw something very interesting in there:

        r1['homeyBridgeDriverId'] = r4;
        r4 = 'BLUFI_HOMEY_BRIDGE';
        r1['homeyBridgeBluFiName'] = r4;
        r4 = 'BLUFI_ZONEY';
        r1['zoneyBluFiName'] = r4;
        r4 = 'homeycloud.net';
        r1['homeyCloudUri'] = r4;
        r4 = 'homeycloud.dev';
        r1['homeyCloudUriDev'] = r4;
        r4 = 'BLUFI_HOMEY_PRO';
        r1['homeyProBluFiName'] = r4;
        r4 = 'MINI_ETHERNET_HOMEY_PRO';
        r1['homeyProMiniMiniEthernetName'] = r4;
        r4 = 'homey:virtualdriverenergydongle:driver';
        r1['homeyEnergyDongleDriverId'] = r4;
        r4 = 'BLUFI_ENERGY_DONGLE';
        r1['homeyEnergyDongleBluFiName'] = r4;

These are the Bluetooth names for the devices. But what is Zoney? I did some further digging, and while most were not very interesting, I saw this:

        var _closure1_slot5 = r3;
        r3 = {};
        r9 = 'ZoneyInitial';
        r3['ZoneyInitial'] = r9;
        r9 = 'ZoneyStandInstallation';
        r3['ZoneyStandInstallation'] = r9;
        r9 = 'ZoneyWallInstallation';
        r3['ZoneyWallInstallation'] = r9;
        r10 = {};
        r9 = r3.ZoneyInitial;
        r10['key'] = r9;
        r9 = '';
        r10['title'] = r9;
        r9 = new Array(3);
        r9[0] = r10;
        r10 = {};
        r11 = r3.ZoneyStandInstallation;
        r10['key'] = r11;
        r11 = 'zoneySetup.installation.options.stand';
        r10['title'] = r11;
        r9[1] = r10;
        r10 = {};
        r11 = r3.ZoneyWallInstallation;
        r10['key'] = r11;
        r11 = 'zoneySetup.installation.options.wall';
        r10['title'] = r11;
        r9[2] = r10;
        var _closure1_slot6 = r9;
        r10 = r5.default;
        r12 = r5.default;
        r11 = r3.ZoneyStandInstallation;
        r5 = 6;
        r5 = r8[r5];
        r5 = r7.bind(r0)(r5);
        r9 = r5.SceneZoneyInstallationStandMemoized;
        r5 = {};
        r9 = r12.bind(r0)(r5, r11, r9);
        r5 = r3.ZoneyWallInstallation;
        r3 = 7;
        r3 = r8[r3];
        r3 = r7.bind(r0)(r3);
        r3 = r3.SceneZoneyInstallationWallMemoized;
        r3 = r10.bind(r0)(r9, r5, r3);

So stand and wall installation? Is it some kind of dashboard? Since it seems to detect the device type based on the Bluetooth name, I can attempt to name one of my devices with the same name to see if it does anything.

But has anyone ever heard of the “Zoney“ device? Or is it maybe a codename?

2 Likes

“Slide Zoney on to the base“

            r6 = {'title': 'Step 1', 'descripion': 'Slide Zoney onto the base'};
            r12 = r7.default;
            r5 = r12.getVideoForBridge;
            r13 = 'spectrum';
            r5 = r5.bind(r12)(r13);
            r6['video'] = r5;
            r5 = new Array(3);
            r5[0] = r6;
            r6 = {'title': 'Step 2', 'descripion': 'Slide Zoney onto the base'};
            r14 = r7.default;
            r12 = r14.getVideoForBridge;
            r12 = r12.bind(r14)(r13);
            r6['video'] = r12;
            r5[1] = r6;
            r6 = {'title': 'Step 3', 'descripion': 'Slide Zoney onto the base'};
            r12 = r7.default;
            r7 = r12.getVideoForBridge;

Seems like it will use the regular video from the Bridge in this case, so probably no special image or video files in the app assets.

The name is actually Zoney

    r2['HomeyDevice'] = r0;
    r1 = {};
    r3 = 'Homey Pro';
    r1['Pro'] = r3;
    r3 = 'Homey Pro mini';
    r1['ProMini'] = r3;
    r3 = 'Homey Bridge';
    r1['Bridge'] = r3;
    r3 = 'Homey Energy Dongle';
    r1['EnergyDongle'] = r3;
    r3 = 'Zoney';
    r1['Zoney'] = r3;
    r2['HomeyDevice'] = r1;

And there’s a ManagerZoney on Homey?

                        r15 = r17.call;
                        r5 = {'method': 'post', 'path': '/api/manager/zoney/pair'};
                        r18 = {};
                        r19 = r8.\_deviceSerial;
                        r18\['serial'\] = r19;
                        r5\['body'\] = r18;
                        r5 = r15.bind(r17)(r5);
                        SaveGenerator(address=380);

It appears like it should be in some kind of development version, since the endpoint returns a 404 in both Homey Cloud and my Homey Pro Early 2019

Oops, looks like they made a typo in the function name:

            r0['showZonyDialog'] = r1;

It really appears to be just a concept, not any real product right now (except for maybe 1 prototype). When I look at the code, it seems like it would show a Homey Bridge image during pairing, so we will never know what it looks like. It might have not even had an enclosure in the first place, because this seems more like a prototype/concept to me.

Yep, exactly what I thought

These are some screenshots. It appears to be mostly a copy of the Homey Bridge pair process.

I got these screenshots by creating an ESP32 sketch that copies all advertisement data from the Homey Energy Dongle (since they work kinda the same) and then just changed the name to “BLUFI_ZONEY“, so the Homey app will see it as a Zoney device. Of course it can’t connect, because my ESP32C6 of course doesn’t respond to any commands sent from the Homey app, so it gives a timeout message. I don’t think there’s anything else anyway, the only references I could find in the app code was to the setup process

I can also check older app versions, to see when it was added to the app