[APP][Pro] SONOFF Zigbee

Well, I get why they are doing this.
If it’s one man just developping this for fun, I understand they need to get some funds to do it.

However, if there is a succesfull business behind it… it’s a bit sketchy.

@Doekse I can get you the email, if you want the detail of their communication.

They also said they’d be helped a lot if they could get the full zigbee interview. I don’t know if this would cancel the crowdfunding or not.

It’s an official app! Those are paid for by the brands already, it’s even required for brands to provide test devices according to the App Store Guidelines. Official apps are built in collaboration with brands, so an official app developer shouldn’t ask for crowdfunding, they are already provided with test devices by the brands and paid by Athom for building the app.

And if they really wanted to add the devices, they could have just kept the app open source and let others build it for them. But they have removed the source code from the Github

Also, €750 is a lot, especially for the Sonoff devices which are very cheap. I think you can buy every Sonoff Zigbee device 2 times for that money

Hello everyone,

I have recently transitioned to Homey Pro and am currently migrating my smart home infrastructure. While I have successfully paired my 1-gang switches and set up 2-way flows, I have encountered a few hurdles with my multi-gang devices.

1. ZBM5 multi-gang switch behavior I am having trouble configuring 2-way functionality for my 2-gang and 3-gang ZBM5 switches. For my 2-gang units, for example, the first channel is wired to a load (bathroom), and the second channel is intended to act as a remote for a hallway 2-way setup.

While the pairing was successful and both channels are visible in the “WHEN” card, when I attempt to add a “THEN” card, only the main device name appears. I cannot find an option to select or address individual channels for my 2-gang or 3-gang switches. Am I missing a configuration step, or is this a known limitation of the current driver?

2. Sonoff Water Valve (SWV-ZNE) support Additionally, my Sonoff Water Valve (SWV-ZNE) is being identified as a generic device, and none of its specific functions are available for use in flows.

Closing thoughts I must admit, the inability to treat each gang as a separate device (which is how my previous SmartThings setup operated) is a significant shift for my current workflow. As the majority of my home infrastructure relies on these ZBM5 switches, I am struggling to achieve parity with my previous configuration.

Could you please advise if there are plans to update the drivers to allow for “separate device per channel” for the ZBM5, and if there is a timeline for full support for the SWV-ZNE water valve?

As I only received my Homey Pro yesterday, I am still learning the ecosystem—please let me know if these inquiries should be directed to a specific developer or a different support channel.

Thank you for your time and guidance.

Best regards,

Michael

@smarthomesven is absolute right!


([Source](https://apps.developer.homey.app/app-store/verified-developer))

That’s actually the standard procedure when the app developer doesn’t own the device personally.

You missed the part “…or by Athom.”
Maybe StyraHem develops and maintains the official app on behalf of Athom.

But still, you would expect support from Athom on obtaining devices/device specs.

Here is the forum post that @Inno is refering to.

It’s strange that a company (agency) asks for funding, since it’s a commercial business. I’m sure they were paid by Athom and the brand to build and maintain the app, otherwise they wouldn’t have even built it in the first place, so it’s strange to ask for more money from the app users as well.

And like I said earlier: if they wanted to add support for all devices but don’t have the money to buy them, then they could have just kept the app open source and let other devs add support for them. But recently (a few weeks ago) they closed sourced the app (removing the code from Github), and now they ask for funding from users and since only StyraHem can add support now, they’re basically forced to pay. It feels like the only thing they care about is earning as much money as possible.

I suggest @Doekse to find another developer for the Sonoff app.

Also, if any developer needs the source: I still have a fork of it from when I created a PR to fix many typos that were in the app:

On purpose.
If Styram were to develop the app for Athom, wouldn’t Athom be listed as the app developer? :thinking:

The code is still “Public”. If you click “Report an issue” in the Homey App Store, you’ll be redirected to the corresponding page on GitHub → GitHub - StyraHem/Homey.Sonoff.Zigbee: Sonoff Zigbee Devices · GitHub

According to Abe, there are already plans to develop a new Sonoff app based on the “official” Sonoff app by Styrem. This has already been discussed in the following thread → Sonoff SNZB-01P appearing as a battery in Homey Pro 2023 - #17 by macmonty

I’ve reached out to Styrahem about this.

It’s worth mentioning that we don’t pay Styrahem to develop this app, and neither does SONOFF. Styrahem is a reseller and distributor of both our products, and they created the app in consultation with us after seeing demand from their customers.

For official apps, however, we generally prefer not to allow donations, as there are usually other commercial benefits involved that support the continued development and maintenance of the app.

There’s still something on Github, but the actual code is gone

But the app is still developed in collaboration with the Sonoff, right? That’s one of the guidelines for official developers

Also, if they’re a reseller of Sonoff, wouldn’t they already have enough products to test? Why don’t they just use one of the devices that they have on sale to test the app, and when it’s done, just sell it as an “open box deal” for a few euro’s cheaper? They certainly wouldn’t need €700 when they would just use one of the devices they already have

The app is built on behalf of SONOFF and with their permission;

A verified developer badge signals to the user that the app was created by or on behalf of the brand itself or by Athom.

You’re right. The code is gone, but you can still report bugs.

I’m following this discussion about StyraHem with interest, but this is the thread for Johan’s “Sonoff Zigbee” app, not for StyraHem’s “Sonoff” app.

Isn’t there a separate thread for the ‘Sonoff’ app?
That would make it easier to keep track of the posts for the two apps.

You’re absolutely right, Peter.

@OH2TH, could you maybe create a new thread for the “official” Sonoff app by StyraHem and move all the relevant threads there?

Hi all,

I’m using a SONOFF MINI DUO‑L Zigbee relay (model MINI‑ZB2GS‑L) with the SONOFF Zigbee app on Homey Pro. The device shows up as a single switch with a channel selector (Channel 1 / Channel 2) in the device UI.

My setup:

  • Relay: SONOFF MINI DUO‑L (no neutral), added via SONOFF Zigbee app

  • Wall switch: Ecodim, added as a separate Homey device

  • Flow:

    • When: “Any button has been pressed” on the Ecodim switch

    • Then: “Toggle on or off” on the SONOFF MINI DUO‑L device

What happens:

  • In the device UI and Quick Actions, I can select Channel 2.

  • But both Quick Actions and the Flow only toggle channel 1. Channel 2 never responds to the Homey action, even though it works electrically and via the device’s own logic.

  • I don’t see separate Flow cards like “Channel 1 on/off” vs “Channel 2 on/off”, and there is only one Homey device tile for the relay.

Questions:

  1. Does the current SONOFF Zigbee driver for MINI‑ZB2GS‑L actually support independent control of both channels in Flows?

  2. If not, is it possible to:

    • Expose two child devices (one per relay channel), or

    • Add per‑channel Flow cards (e.g. “Turn channel 1 on/off”, “Turn channel 2 on/off”),
      so I can bind my Ecodim switch specifically to channel 2?

If there are advanced settings like “detach relay” per channel that need to be set for this to work, I’d appreciate a short explanation of the correct configuration for MINI DUO‑L in a 2‑gang setup.

Thanks in advance for any pointers or driver updates!

Hi, If you go to Homey Developer Tools and find your device there, you will se what it supports. If there is no direct flow-card to trigger the options/Capabilities you find in the developer tool, you can make a script to trigger the stuff you are missing.
I made script for the Hydro Duo. The script requires 3 inputs from an advanced flow, separeted by semicolumn. Hope this can help you on the way :slight_smile:
Note this part of the script, and remove the // in front of the await for the script to execute an on/off on your device/targetport
// Remove the comment slashes below when you are ready to enable control
// await device.setCapabilityValue(TARGET_PORT, targetStatus);

The parameters in the script: DEV_NAME is the name of your device. TARGET_PORT ID and the TARGET_Status is the Set Value. The last two you find in the developer tool for your device.(se the picture below showing the capabilities for Hydro Duo.

My script:
// 1. Check if arguments were passed from the Flow
if (!args[0]) {
throw new Error(“Missing arguments from Flow!”);
}

// 2. Split the text by semicolon and extract the values
const parametere = args[0].split(‘;’);
const DEV_NAME = parametere[0]?.trim();
const TARGET_PORT = parametere[1]?.trim();
const TARGET_Status = parametere[2]?.trim().toLowerCase();

// Check that all three parameters are actually present
if (!DEV_NAME || !TARGET_PORT || !TARGET_Status) {
throw new Error(“The argument must contain three parts separated by semicolon: ‘DeviceName;port;status’”);
}

// 3. Handle input status (On, true, 1, Off, false, 0)
const shouldTurnOn = [‘on’, ‘true’, ‘1’, ‘yes’].includes(TARGET_Status);
const shouldTurnOff = [‘off’, ‘false’, ‘0’, ‘no’].includes(TARGET_Status);

if (!shouldTurnOn && !shouldTurnOff) {
throw new Error(Invalid status received: "${TARGET_Status}". Expected On/Off, True/False, or 1/0.);
}

// 4. Fetch all devices and find the specific one
const devices = await Homey.devices.getDevices();
const device = Object.values(devices).find(d => d.name === DEV_NAME);

if (!device) {
throw new Error(Device "${DEV_NAME}" was not found in Homey.);
}

// 5. Check if the device supports the requested capability
if (!device.capabilities.includes(TARGET_PORT)) {
throw new Error(Device does not support the capability "${TARGET_PORT}".);
}

// 6. Check current state to avoid duplicate commands (protects the mesh network)
const currentStatus = device.capabilitiesObj[TARGET_PORT]?.value;
const targetStatus = shouldTurnOn; // true for ON, false for OFF

if (currentStatus === targetStatus) {
log(Device "${DEV_NAME}" is already ${targetStatus ? 'ON' : 'OFF'}. No action needed.);
} else {
log(Changing state on "${DEV_NAME}" (${TARGET_PORT}) to: ${targetStatus ? 'ON' : 'OFF'});

// Remove the comment slashes below when you are ready to enable control:
// await device.setCapabilityValue(TARGET_PORT, targetStatus);

}

// 7. Create HomeyScript tags for use in the Flow
await tag(“0”, DEV_NAME);
await tag(“1”, TARGET_PORT);
await tag(“2”, targetStatus ? ‘ON’ : ‘OFF’);

return true;

Thanks Atle_Opsahl!
I’ll give it a try.