Running Lua Code ? And watching device properties?
-
Hi
In some of my PLEG actions I run Lua code.
I guess I can't do that now with MSR. Assume I have to create a Vera scene with that same LUA code and have the MSR action call that scene etc.
What about the people who were using Reactor plugin for Vera? I assume they can run Lua code.
But won't be able to when using MSR on a separate box to Vera.
I am also seeing other things I am doing in PLEG but don't think I will be able to on MSR? Like monitoring devices for certain things.
For example I use PLEG with Fibaro Dimmer 2 modules to enable me to use the Scene Activation for double and triple clicks on the actual wall switches, PLEG sees this happening and then my action can run a Vera scene or whatever else I want.
I have three "Device Properties" setup in PLEG to monitor those aspects of the Fibaro Dimmer 2 device.
Then this condition in PLEG:
(LoungeSceneActivated;LoungeLastSceneTime) and (LoungeLastSceneID == 14)
Runs an action when I double click the Lounge Light wall switch.
Thanks
-
I have a similar in scope system and I run dynamic code via RunLua action. So, I have a function on a lib imported at startup and I’m sending values this way. Another route is to use RunScene and write the code in your scene. So, plenty of choices.
-
Another example of something I am doing in PLEG and not sure if I can do this in MSR?
I have two side table lamps in my lounge.
I have a virtual device dimmer switch in Vera.
In PLEG I have a "Device Property" to monitor the current Dimming Level of the virtual device dimmer switch
My PLEG condition just references the device property "LoungeLampsMaster"
And in my PLEG action I added the two real lamp devices
And set their loadleveltarget to be whatever the virtual device "Master" dimmer is, by using this in the newLoadLevelTarget
{(LoungeLampsMaster)}
Can something like this be setup in MSR ?
-
@therealdb said in Running Lua Code ? And watching device properties?:
Another route is to use RunScene and write the code in your scene
That I understand
@therealdb said in Running Lua Code ? And watching device properties?:
I run dynamic code via RunLua action. So, I have a function on a lib imported at startup and I’m sending values this way
This I don't understand, you might as well be talking in Greek.
Where are these "RunScene" and "RunLua" actions ?
I only see these in the Set Reaction area.
-
You need to select 'Entity Action' in the first drop down and then from --choose device-- in the dropdown that appears, select the script you want to run from the 'Scripts' section.
-
Thanks Ian I can see that now its listing all my Vera scenes so that's easy enough to have your Reaction run a Vera scene and then in turn any Lua Code that scene may contain.
I'm interested to hear more about what TheRealDB mentioned regarding a RunLua action.
-
To RunLua you would need reactor on the vera. you could then call it from MSR
Also the {variable or luaxp} works in reactor and will be working in MSR in the near future
-
cw-kidreplied to Elcid on Feb 21, 2021, 2:30 PM last edited by cw-kid Feb 21, 2021, 9:32 AM
@elcid said in Running Lua Code ? And watching device properties?:
To RunLua you would need reactor on the vera. you could then call it from MSR
Yep that also make sense. Is that what TheRealDB was referring too ?
@elcid said in Running Lua Code ? And watching device properties?:
Also the {{variable or luaxp}} works in reactor
I don't know what this means.
-
{variable} - refers to expression variable.
you can set dynamic names in input fields and you can also use luaxpThis reactor page explains more https://www.toggledbits.com/static/reactor/docs/3.6/Expressions-%26-Variables/#luaxp-built-in-functions
This will probably be available in MSR to.
-
You can monitor the dimming level of a dimmer using an Entity Attribute condition and checking
dimming.level
for the dimmable entity. You can easily do a "master-slave" (or Submasters !) style of dimming mirroring in MSR.I'm still working on the scene controller device mapping. Please remember that this is a developer preview, first time this code has run outside of my hands, and is expected to be incomplete. It's not a finished product at this point and isn't intended to be. If you're using it with that eye, you may want to wait a couple of months.
You can run scenes from MSR on the Vera using an Entity Action. Each scene has a corresponding
script
entity in MSR, with ascript.run
action available.And of course, the XY-Problem aspect of this... if you tell us what you think you need to run in Lua, there's a chance there may actually be a way to do it without Lua, or its something reasonable to consider as a regular feature addition to MSR, Vera Reactor, or both.
-
@cw-kid you can run lua code via http call. Just compose a call like this
Ie, if you have a function named doSomething in your startup code, accepting two values, just call this endpoint
I’m using it to concatenate multiple actions in one http call, while still maintaining flexibility.
-
Thanks guys for the information.
Yes I admit I need to keep remembering things might not be implemented yet.
But as I have never used Reactor plugin for Vera, I have nothing to compare MSR against other than PLEG.
I don't know what is currently possible in the Reactor plugin for Vera etc which isn't helping me when looking at MSR.
I am moving my more simple PLEG actions over to MSR now and have already disabled several PLEG conditions on the Vera box.
Schedules in MSR I am still testing and struggling with a bit, so I only have two moved over to MSR currently and one isn't running at all and one ran this morning but later than I expected it to do so.
I have some pretty long LUA scrips in PLEG for some stuff, I don't think I could do it easily without using LUA code.
Are there any examples of a Master Slave dimmer setup which I can follow ?
Cheers.
-
@therealdb said in Running Lua Code ? And watching device properties?:
you can run lua code via http call
OK that's a clever idea.
So the LUA code is stored where? In a function in the Vera startup right. And then you are just calling it to run via a HTTP request from MSR.
-
-
toggledbitsreplied to cw-kid on Feb 21, 2021, 3:45 PM last edited by toggledbits Feb 21, 2021, 10:47 AM
This is how it will go:
That said, this won't work today, because I haven't yet connected the expressions to the action parameters (the
{master_level}
value in the dimming action won't work yet). That's coming, but not yet. You can, however, do exactly this in Vera Reactor to see how it works. It will work the same way in MSR.Edit... let me explain how it works (on both Vera Reactor and MSR):
The expression keeps the current value of the master dimmer. So on my system,
vera>device_105
is named "Virtual Dimmer 18". The trigger condition looks for any change in the dimming level of that dimmer. When it changes, the set reaction sets the current value (from the expressionmaster_level
) on the slave dimmer "Virtual Dimmer 20". Bob's your uncle. -
@toggledbits What you just explained makes perfect sense.
However I would not have had a clue how to correctly construct that expression with the correct syntax.
I think I have mine setup correctly now.
I understand it wont actually work yet though.
-
@cw-kid said in Running Lua Code ? And watching device properties?:
However I would not have had a clue how to correctly construct that expression with the correct syntax.
Right, so I think this is a big issue in your case. My intent with this developer preview was to have experienced Reactor users help me test MSR. You're in the tough spot of coming from PLEG, with no prior Reactor experience, so not only do you not know the current product, but you also don't know if what you're looking at in the new product is right or wrong, same or different. That makes it palpably frustrating for you, and frankly for me as well, because you are not at the level I set for this test. I suspect you're also a bit irritated at having to do this at all, since Richard seems to have abandoned his product years ago (as evidenced by his near-total absence in the forums, the maturity of his product notwithstanding), and the prospect that no PLEG for eZLO seems to be in the works that I've heard.
None of that matters, at least to me, and I appreciate the effort you're putting in, and you're finding bugs and helping, so all is cool in my book, but for the fact that I feel like you're sometimes losing your perspective and treating this as if it's finished and shipped. This is a developer preview, and again, it's known to be incomplete, and its intended audience was existing Reactor users. Those users would know how to build the expression. If you're going to continue to participate, and I hope that you do, please keep this in mind. Making contact with the product this early, you are not only positioning yourself to be a master of it in future, but you're in a position to shape its future, and you have my attention.
You might take a read of the docs for Vera Reactor, to get a better lay of the land, including expressions. Things are different between the two systems, for sure, but the strong flavor is nonetheless there. You can also experiment with Vera Reactor on your Vera directly, and this may actually be very useful in helping identify other differences or gaps that should be at least documented if not closed. Either way, as the more mature product and very stable, it should help remove some of the questions and the trips in your learning curve caused by my errors in the new product. That said, I think I've shown that I will work as quickly as possible to get things shored up so that you can be productive on MSR.
Vera Reactor Docs: https://www.toggledbits.com/static/reactor/docs/
-
All fair comments and observations Patrick. I certainly don't want to cause frustration to anyone.
In PLEG there was no need to of even written an expression just to monitor the value of a devices Dimming level for example. I'd just create a device property.
PLEG device properties are similar to how you build triggers in MSR, in the respect that you just select things from drop down lists. So monitoring a devices Dimming level in PLEG is trivial to setup.
Conditions in PLEG are not so trivial however and are more like writing expressions.
If MSR could build device properties or watch variables as PLEG does I think you'd be making it super easy for any user to pick up and run with MSR.
-
In vera reactor to watch a device state you just set a variable and there is a button to pick what you want to get/watch, this creates the expression for you. The button exists in MSR, but as Patrick says expressions are not fully implemented yet. When it is you will see how simple it is. Install Vera reactor just to have a play.
2/69