system capability zwave_scene_controller
-
toggledbitswrote on Mar 6, 2021, 4:43 PM last edited by toggledbits Mar 6, 2021, 11:43 AM
This is what I needed to know:
"pnp": "5101",
This device is great example of bad device support implementation on Vera's part. The device is using variables in a service that isn't declared on the device type. They're handling it as a plain dimmable light, which has a limited set of services that does not include the variables you see them using in SceneController1. What they should have done is created a new device type, because dimmers/switches with scene activation capability are not unique in the ZWave world (see Cooper, HomeSeer, etc). Hopefully they do a better job at this in the new firmware.
-
OK that makes sense and Vera's fault again !
Yes makes you wonder how such a device like this will be catered for on the new Ezlo firmware.
EDIT
That also likely explains why you could not set this up natively in Vera and use its scene activation. Least I don't think you can.
Richard must of known this and made PLEG so it would see these scene activation properties properly.
-
May I ask what pnp is ?
Thanks
-
@cw-kid said in system capability zwave_scene_controller:
Richard must of known this and made PLEG so it would see these scene activation properties properly
No, PLEG uses the scene activation data from the static JSON file, which is the same data that the Vera scene builder uses. This is one reason why PLEG was always limited to what the scene builder would see, and you had to take another approach to getting at states that weren't related to scene events.
Reactor for Vera uses a different model entirely. It simply reacts to any state variable that is present on the device (which sounds like what you think PLEG does, but it actually is not what it does). Reactor for Vera actually doesn't care what the device type is; it is only looking at states. In that sense, Reactor was far more capable than PLEG in its most basic form, because you didn't have to jump through hoops to make a condition based on some event that wasn't otherwise supported by the scene data, which is often incomplete.
Unfortunately, looking at states cannot tell you what the device type is. There are too many instances in the Vera world of states being present on a device when the state's service is not supported, or only parts of the service are supported. And since users can set a state variable on any device they want, it would too easy for a user to errantly create a state variable on the wrong device. If you look at states for type and to determine behavior, the behavior of that device would/could suddenly change (and you may have no idea why), and that would be no good. Vera is really loose with states. That adds a lot of flexibility, but it kills looking at states for any intelligence as to what the device is. And MSR does need to know. Hence the entirely different mechanism.
The good news for MSR is that the universe of device types is relatively small, and further reduced by what people are actually using today. I don't have to support everything Vera ever supported, only what's in use now. And once I have the per-user device configuration stuff exposed and documented, you'll easily be able to tell MSR "no, this device isn't a dimmer, it's a scene controller with dimming capability". Ultimately, you will fix this problem yourself in less than a minute. For now, though, making me look at every unsupported device helps ensure that the most generic support, the exceptions everyone would to make, are included in the product and therefore function out of the box and not exceptions at all.
-
@toggledbits said in system capability zwave_scene_controller:
PLEG uses the scene activation data from the static JSON file, which is the same data that the Vera scene builder uses
OK.
But you can't just use the Vera scene builder and have a trigger on the sl_SceneActivated state variable of this Fibaro Dimmer 2 device though. Which is why I never knew how to do this natively in Vera. Without PLEG I wouldn't of been able to set this up at all. Unless there is some LUA code examples on the Vera forum somewhere that may of done it.
@toggledbits said in system capability zwave_scene_controller:
Reactor for Vera uses a different model entirely. It simply reacts to any state variable that is present on the device (which sounds like what you think PLEG does, but it actually is not what it does).
Yes I thought PLEG was doing that I think, just reacting to the sl_SceneActivated state variable changes. But you know how all this stuff really works behind the scenes, no pun intended.
These double and triple clicks on the wall switches are quite useful.
I use them for turning on / off (toggle) side table lamps in the room for example, the Fibaro Dimmer 2 module only being physically connected to the ceiling light.
But you could make them do anything, maybe a triple click down to put the house in to Night mode as you are passing that switch at the bottom of the stairs or whatever you want really.
-
As an added bonus, the Fibaro doesn't declare the scene controller or central scene ZWave capabilities, apparently. That's not relevant to getting the device supported in MSR, but it makes me curious what they're using to communicate the activations. They do advertise as having multi-level switch capability, so maybe that? Odd...
-
toggledbitsreplied to cw-kid on Mar 6, 2021, 5:28 PM last edited by toggledbits Mar 6, 2021, 12:29 PM
@cw-kid said in system capability zwave_scene_controller:
But you could make them do anything,
I'm a big user of scene controllers myself actually. There are many on each level of my house, mostly the old Leviton four-button units, but also ZRC-90 and Hank four-button. Support on Vera for the Levitons was useless, so I wrote my own plugin to handle them and light the LEDs the way I wanted them to work, and added some features like the ability to undo up to 8 of the last scene changes, etc.
But, I digress... I have enough info now to get this mapping done, no problem. Sit tight. Thanks for the data dump. If any other device comes up like this, just go ahead and go for the data dump immediately, because I'll need it and be asking for it.
-
OK. I just dropped an updated mapping file on the PR. Go grab that and try it out.
-
Thanks, I've added some notes on the PR.
its kind of working. It works the first time I do the clicks on the wall switch.
But if I do the clicks again it doesn't run the reaction action again.
-
You need to check both the response value and the timestamp (the changes operator is all you need for the timestamp check).
-
Ohh!
I will try this out as I have several of this fibaro dimmer.This dimmer was actually one of the first devices I bought to my Vera Edge.
I was so disappointed when I realized it wasn't supported in Vera and the zwave standard not as compatible as it first seems.
To further annoy me my brother bought a Homey a couple of years later and it immediately supported all fibaro stuff with an easy to use gui for all the parameters.I also think I have a qubino dimmer that have 2 input ports were the second that doesn't control the dimmer isn't recognized by Vera.
Anyone know if that also is a scene controller that Reactor could see and use? -
cw-kidreplied to toggledbits on Mar 6, 2021, 8:50 PM last edited by cw-kid Mar 6, 2021, 4:05 PM
@toggledbits said in system capability zwave_scene_controller:
the changes operator is all you need for the timestamp check
I already tried that earlier, that does work sort of.
If I add a second trigger for the time stamp and changes from anything to anything.
I can then double click the wall switch and the Reaction runs. I can then double click it again and the Reaction runs again a second time OK.
However when I reload the Luup engine on Vera the rules reaction fires two or three times whist Vera is reloading. So that time stamp must be changing somehow during a reload.
Not sure what's going on but it's a problem somewhere.
-
@andr said in system capability zwave_scene_controller:
Anyone know if that also is a scene controller that Reactor could see and use?
Never used Qubino dimmers.
Qubino are not my favourite brand at the moment but that's another story.
What does the user manual say? Look for scene activation.
-
toggledbitsreplied to cw-kid on Mar 6, 2021, 11:13 PM last edited by toggledbits Mar 6, 2021, 6:17 PM
@cw-kid said in system capability zwave_scene_controller:
Not sure what's going on but it's a problem somewhere.
No, it's a Vera thing. There are three things going on that make their implementation choices for scene controllers really sticky...
- When Vera reloads/reboots, it sets a timestamp on every state variable on every device to the startup timestamp. Timestamps are not stored in the persistent user_data, so any previous timestamp is lost. Every time Vera starts, every state variable get a new timestamp.
- Not only do the timestamps not appear in user_data for the states, they are not exported with the user_data or status queries. In other words, the timestamps are locked inside Vera's head and not available outside.
- When you set a state variable on Vera, if and only if the value changes is the new value set and the timestamp updated. And in turn, for any plugins that are running on Vera and have watches on those state variables, their callbacks get called. If you attempt to set a state variable to the same value it already has, the timestamp and value and not modified, and the watch callbacks are not called. But there's an exception. Probably to support their crazy way to handling scene controllers, any state variable that starts with
sl_
will update its timestamp even if you rewrite it with the same value it already has.
On the Vera, it works out that any plugins that handle the scene controller state variables, like Reactor or PLEG, or my SceneSlayer plugin, or the other scene controller plugin whose name escapes me at the moment, handle all this OK because, principally, the watch callback doesn't get called at system boot, and does get called otherwise. So it's pretty easy to detect repeat activations of the same scene, although it still takes some effort, as seen in the approaches one must use in both Reactor for Vera and PLEG.
Off the Vera, however, the combination of the above three choices are just a near-fatal limitation. Without a stable timestamp that comes from the Vera itself, there's just no way to tell if you're looking at an original value or a repeated value.
Anyway, there's still one good alternative, and it's simple: after you act on the scene activation (i.e. in the Set reaction), set the source state variable to 0 or some other value outside the range of normal (-1 or -999 or whatever). I've referred to this in the notes for your PR, so check there for more specifics.
I've tested it with my scene controllers in MSR and it works fine.
-
It works in Reactor on Vera and Openluup
maybe this is the solution -
I think its working OK now:
Trigger:
Reaction:
I can double click the wall switch and each time the Reaction runs and my HTTP request is sent to Node-Red which in turn sends a TTS announcement to a Google Home speaker saying "This is a Test".
If I reload the Luup engine on Vera the rule no longer fires.
I then configured this rules Set Reaction to its actual purpose of turning on or off another light using the toggle.toggle.
This also works and now when I double click the Lounge light switch it turns on the kitchen ceiling light.
I will transfer all my rules for this from PLEG to MSR.
One thing I need to check however, I also use Fibaro Roller Shutter 2 modules for this same purpose as well. So they might need mapping. I will create a device dump for one of these modules.
Thank you very much.
EDIT: I've setup all the MSR rules now for the various Fibaro Dimmer 2 modules. Everything is working. However it does seem a little slow to run the action than what PLEG was.
I guess this is the price to pay for having MSR not running locally on Vera and on the Raspberry Pi instead.
-
I've just tried a Fibaro Roller Shutter 2 module and as suspected it says: zwave_scene_controller.scene_activated? (missing)
So cannot setup these wall switches for double and triple click events till its mapped.
Thanks
For future reference, this is the Scene Activation information for the Fibaro Roller Shutter 2 module.
-
Something strange with these Fibaro Roller Shutter 2 modules.
I've updated the vera_devices.json file for the mapping and restarted MSR.
When I Double Click UP (S1) the sl_SceneActivated changes to 4, so that is OK and works.
However when I double click DOWN (S2) sl_SceneActivated remains at 0 its value doesn't change to anything. (Note I am setting them to 0 as part of the Set Reaction)
Same when I triple click DOWN (S2) sl_SceneActivated remains at 0.
PLEG is really using LastSceneID instead of sl_SceneActivated and they are the numbers above in that screen shot 14, 24 and 25 etc They are the numbers in PLEG I monitor for.
However we cannot see LastSceneID in MSR so I cannot use those numbers in my rules.
I have tried two different wall switches that are Roller Shutter 2 modules and they both behave exactly the same as I just described.
Which is somewhat confusing. So as it stands I can't use these Fibaro Roller Shutter 2 modules in MSR with scene activation.
I will test some more and maybe check their user manual and parameter settings or something.
The Fibaro Dimmer 2 modules on the other hand they are all working great with MSR no issues with any different types of clicks.
EDIT:
It says 0 in Vera GUI as well after just doing a double click down.
-
Can you confirm that the value of
sl_SceneActivated
behaves the same way on the Vera alone, without looking at MSR? Look at the state variables in Advanced > Variables for the device. Turn off your MSR rules or stop MSR to keep it from doing anything while you're testing, so the test is clean. To see changes accurately on Vera, you'll need to hard-refresh your browser after every test attempt, or alternately, click the "Edit" link on the state variables (you don't need to change them, just bring them into the editor, as this populates the correct current value when it opens; confirm the value and then just close the editor and move on to the next variable). -
toggledbitswrote on Mar 8, 2021, 4:51 PM last edited by toggledbits Mar 8, 2021, 11:55 AM
FYI, I threw in the towel last night and admitted defeat. Fibaro has once again claimed a victim. There's a new extended capability that has the
last_scene_id
andlast_scene_time
values.I have a dozen scene controllers in my house. Leviton, EnerWave, ZRC-90s, and Hank. Not a one of them defines those two variables, and they're not declared in the service (and as I said, the service isn't even declared on the device type -- Fibaro support is kludged, apparently). I hope the new dev team over there, for everyone's sanity, takes a strict approach to consistency in handling devices. Between scene controllers and thermostats, this is a horrible legacy in current Vera firmware.
20/46