[Edge] Matter Playground

That one only has Initial Press I believe, no long press or double-tap, that’s why it’s instant.

Buttons with more events always have to wait, either to the release to check if it’s short or long or for more taps, and then it’s a latency feast.

I know. I just wanted to show that there are ways to switch with fast response times and that the hub isn’t the bottleneck:

Yeah, for toggling it’s not a problem, let alone if it’s just one light or you use SmartThings groups which have native handlers and send the commands fast to all the lights. Buttons like SOMRIG or BILRESA using the initial press or even the short release like RODRET are blazing fast in the V3 too.

Dimming is another story though, if a driver handles that the popcorn effect is there and that’s the hub struggling, even more if the lights “flood” the hub while dimming like Nanoleaf does that makes everything slower and introduces latency. Would be nice to test with a V4, my V3 turns into a turtle while dimming Nanoleaf lights :turtle:

Tapo has updated the firmware of the Tapo P110M to 1.4.1 Build 251020. The power on state now is supported via Matter but I haven’t tested it so can’t tell if it will obey it or not. In fact, the option in Tapo app and the option in Matter are not in sync so who knows which one the plug uses :smiley:

They didn’t include support for On with Timed Off though.

Edit: Feb 27th 2026 (this was its own comment but I had too many comments in a row…):

The new Shelly Plug M Gen3 (Matter over WiFi) has been tested by @TapioX so I’ve added it to the list of known devices that work fine with the driver, thanks!

While it reports power, energy, current and voltage, it does not support setting the Power-on state or the On with Timed Off action.

Edit: March 11th 2026. Got myself a IKEA GRILLPLATS, so far it’s great! Every feature is supported, including power-on state and On with Timed Off. The power reporting is smart too, it’s quick to report changes when they happen but doesn’t flood the network.

@mocelet Thank you very much for your excellent work! It’s been a huge help, I believe for all of us! I need your help, I bought some Shelly 1PM Mini Gen4 and I’m having a hard time using them with SmartThings, either via Matter or via Shelly Cloud. They are connected to a switch that controls smart bulbs (Ikea kajplats). The bulbs should always remain with power, and for that I use Shelly in detached mode. So when I toggle my wall switch, the Shelly detects a change of input (physical input) but does not cut the power to the bulbs. The plan was to use that input state change in an automation in smartthings to turn on/off the smart bulbs. And control the intensity and temperature of the lights according to the time of day they are switched on. But my plan didn’t work, because the state of the input is not exposed in SmartThings, either via Cloud Shelly or via Matter, it only exposes the main power (relay) button. I installed your Matter Playground controller, and it exposes power metering values very well, but does not expose the input state for me to use it in an automation, just the main state (witch cuts the power or powers the bulbs). Do you think it’s possible to also expose the input state in your matter playground controller? Thanks again.

I believe Shelly does not expose that state to Matter, at least according to the Matter compliance document there’s only one on/off endpoint and that must be the one controlling the relay.

If there were two on/off endpoints, one for the relay and another for the input state, my guess is that stock drivers would display them.

Thank you so much for your reply.

I understand, but the state of the input would not be editable or clickable in the app, it would only be used in automations that control the bulbs. This state is only changed when the physically wall switch is toggled and the shelly registers that change.

I tried to use the @TAustin shelly edge drivers (v1.7 e v1.9) but they didn’t work, I created a Shelly Relay 1 with it (with the v1.9), and it exposes de main and the input states, but I could not link that created Shelly to my real Shelly 1PM Mini Gen4 (or don’t know how to do it :blush:).

Any ideias to help?

Thank you so much once again.

Thank you so much for your reply. I have also tried TAustin Edge Drivers, but I had no success. I’ve created a Shelly 1 Relay with v1.9 witch exposes the main button and the input state, but I couldn’t link it to my real shelly (or didn’t know how to do it). Thank you once again.

I reached out to Shelly support team and it seams the input state in detached mode is planned for a future firmware update. I posted their reply here:

I found a workaround! :grin:

I posted the Solution I implemented here:

Updated Solution:

Super greatfull what you guys are doing. Took me some time to let the “Bilresa” do the dimming, but I learned it.

Overall quite happy with the Ikea stuff on my way to get rid of Zwave.

Question: The Alpstuga, when brought to Google Home, has an Off/On switch to dim the light. Now I automate that via Google Home (during the night / when away etc etc) but can you bring it to Smartthings?

Glad you’re enjoying the driver, the problem isn’t bringing the on/off switch but everything else :sweat_smile: This custom driver is made from scratch, mostly for lighting, and has no support at all for sensors.

The ALPSTUGA switch is something SmartThings should incorporate to stock drivers, after all they have this partnership with IKEA so their products work great in ST.

The SmartThings Matter Sensor driver doesn’t support the on/off cluster. What needs to be done is pretty much the same as this PR for the Matter Thermostat driver:

Just a question of time until each Matter driver supports every Matter cluster…

Clear. I understand. Not much use for you doing it from scratch as the rest of alpstuga driver works really perfect.

I just want to share my new addition to my smart home. I’m rocking the new Grillplats Ikea smart plugs, and they work great with matter playground driver! :grin: Thanks once again for the great work @mocelet .

The only downside is the quite low 300W max. motor load (despite the 3860W resistive load limit), so it’s not adequate to use with big appliances like my washing machine (on/off). But for the price (7,99€) it’s a great buy.

Hi @mocelet

Is there any way to keep two lights (IKEA Kajplats) synchronised to the same dimming level?

I am using a Bilresa button for on + brighten and off + dimming, with the same action applying to two bulbs at once. However sometimes they seem to brighten/dim at different speeds (presumably because of some lag in the network).

I have tried to make them into a lighting group, but Matter Playground doesn’t let you create actions for lighting groups.

Any thoughts gratefully received.

Hi, that comes with the territory.

Full dimming time settings

First check that in the bulb settings the Full dimming time is the same for both bulbs, the default is 5 seconds. A longer time will reduce the brightness difference while a lower one will make it even more noticeable.

Inherent start / stop smooth dimming issues

Smooth dimming has that problem anyway with multiple lights since SmartThings does not support multicast to send the same command to multiple lights and it has to be sent one by one. It’s impossible that the start and the stop sent to each bulb have the exact time difference for both bulbs and that translates to different brightness.

Dimming by relative steps

I would suggest using steps to dim instead of the start/stop smooth dimming. If you’re using Matter Playground for the button there’s a Auto-Repeat Held that will repeat the Held event while you have the button pressed.

You can assign the Adjust brightness +10 or -10 to the Held, you don’t even need Matter Playground for the light since SmartThings is adding that action to multiple stock drivers. Maybe even in the future they add it to groups, drivers cannot control SmartThings groups.

It’s not that smooth but you can achieve a good effect and, since they’re individual steps, it’s virtually impossible the number of steps is different for both.

With Matter Playground you can change the transition time for each step in settings, in stock drivers it’s 0.3 seconds and cannot be modified.

About synchronizing lights

Your original question about synchronizing the same dimming level had another answer, you can make one light mirror the brightness of another one, with a rule or even with the Smart Lighting feature if available.

However, that won’t look good when smooth dimming with a remote, it would be like if you were dimming one bulb and then the other copied the final brightness.

Thanks so much for this - step dimming works well and keeps in sync.

I can automate on + brighten by combining turn on and step dimmer level. Is there any way to automate dim + off when using step dimmer?

Sure!

For lights with stock drivers

You’ll need two routines for the button held event that steps down. One that checks if the brightness is equal or lower than the minimum to turn it off and another to step it down if it’s higher.

Actually, you probably can keep your current routines and just add an extra one that turns off the light if the button is held and the brightness is equal or lower than the minimum. This seems to work, both for smooth dimming (you’ll have to long press again to switch off) and for step dimming (the repeated held after putting the light at 1% will turn it off):

For lights with Matter Playground driver

Instead of Adjust brightness or Step dimmer level as action use the Advanced input and write this:

stepLevel -10 seconds 0.3

That will reduce the brightness a 10% with a transition time of 0.3 seconds and will also turn off the light if you go to the lowest. You can play with the transition times too so it’s smoother, just keep it lower than the repetition interval or you’ll have the same out of sync issues between the lights.

New update 2026-04-27. Advanced input meets math.

The Advanced input is mostly used for Matter transitions like level 100 temp 6500 minutes 30, the wake-up routine or features that don’t have user interface (auto-step, onlevel enforcer, setting brightness without turning the light on, etc.).

It got new tricks! You can pass numeric attributes to the input string and transform them, either through Rules API in general or through the SmartThings app when possible. Some basic math is probably something that should come out of the box in SmartThings rules engine but, well…

Dim to Warm example

This routine will set the colour temperature warmer if you reduce the brightness and cooler if you increase it. More especifically, it sets the temperature from 2200 K to 4200 K proportionally to the brightness level. Commonly known as Dim to Warm mode.

$level, $temp, $switch and $power are placeholders replaced by the driver with the actual attribute of the device that runs the input. Then ${} means it is an expression with basic math inside. So temp ${2200 + 20 * $level} at max brightness (100%) is evaluated as temp 4200.

Having fun with rules

Using the Rules API you can use the new panelorange55982.advancedControlNumbers capability: you write the input as always but you can add optional placeholders from $num1 to $num5 that match the arguments passed from num1 to num5. The arguments can be any numeric attribute from any device.

With this you can do funny things:

  • All sorts of mirroring with transformation, for instance, when the colour hue of a light changes (a light that doesn’t even need to use Matter Playground driver), mirror the colour to other lights using Matter Playground but adding an offset for a more dynamic look. That would be a simple hue ${$num1 + 20}. :warning: Make sure they are different lights or you’ll end in an infinite loop!
  • Customize the effect of rotary devices in attributes by scaling or offsetting. Some rotary devices do not implement the knob interface and use a level centered in 50 (so 60 actually means a step of 10 and 40 a step of -10). You can pass as num1 the rotary level and substract 50 in the input so the brightness step is correct with stepLevel ${$num1 - 50}.
  • Make a smart light follow the brightness of a dumb dimmable light connected to a smart plug with power monitor. In this case, you can transform the watts range from, let’s say, 0 to 8 W, to 0 to 100 % brightness level with level ${$num1 / 8 * 100}
  • When used with Virtual Scene Switcher driver to create colour loops you can synchronize the transition time with the delay override of the switcher. That way, instead of just looping, let’s say, randomHue 50-80 seconds 5 , you can pass the interval like randomHue 50-80 seconds $num1 so transitions match the switching intervals.