Running Lua Code ? And watching device properties?
-
If that's the case, it probably goes haywire when the scene are run from the Vera UI as well, since MSR and the Vera UI use the same mechanism to start the scene. In fact, pretty much everything MSR does with Vera is enabled by the same mechanisms that the Vera UI (and Imperihome, etc.) use. There's nothing MSR can do to mess up those scenes. It just asks that they run.
I would start at the Vera UI scenes tab for troubleshooting. Lua code on Vera can be very particular, as you know. Long delays will cause deadlocks and reloads. If you're opening sockets or making HTTP requests without appropriate timeouts and error handling, you're going to get into trouble. If you open sockets or files and are not taking steps to close them properly in all conditions, even when errors occur, you're going to exhaust limited resource handles and cause a reload or even a reboot. You really need to understand and know what you're doing, and unfortunately, there's just a lot of bad Lua copy-pasta on the forums.
-
@cw-kid said in Running Lua Code ? And watching device properties?:
I can't even seem to get that far on MSR build 0.1.21062 my Vera scene isn't being run when the reaction happens
How are you running the scene?
@toggledbits said in Running Lua Code ? And watching device properties?:
How are you running the scene?
I opened a PR with screen shot.
-
Well least you can run the Vera scenes I cannot at the moment.
I see these in the MSR log:
VeraController:ERR [VeraController:performOnEntity] action request failed
VeraController:CRIT Error: Request failed: 401 Error -
I understand and I will try to test keeping MSR out of the equation. Having said that the same lua in Vera reactor did not cause any issues. What i will do is take a segmented approach and not try to finish the complete MSR project at once. If I hit trouble i will try to remedy as well as I can. I am not a coder, not great at understanding code syntax. I am good at the logical part or reactor just not lua and coding in general. I have no idea whether my code is up to par or not. It was created by copying and pasting peoples samples from the forums with some modification that I picked up from online tutorials etc. All i know is is seems to work in Vera Reactor. My Vera reactor setup is quite complex and there is a lot going on. Is running a scene outside of reactor a true test absent of the other things reactor is doing concurrent to running a scene via Vera reactor or MSR? I will try with whatever skills I can muster up but when it comes down to it and speaking of Vera Reactor and my conditional logic needs if it isn't broken dont' fix it or at least dont go crazy trying to.
-
I have been running Lua within my Vera reactor pretty successfully. In some cases the reason was to have some conditional logic on the activity side. I found that this enabled me to keep the condition side a bit simpler and clean. I was also running lua to send Global Cache IR codes to my older Tv's. I now am trying the CG plugin that Patrick sorted out for me. The small issue with that is I need to convert all my Global Cache codes to pronto hex. I only mention so others know it does not support CG codes. There is also some lua that I use to turn off my computer. In preliminary testing the big issue I see with lua in Vera scenes is stability. I tried moving some of my lua into scenes and invoking the scenes thru MSR and everything just became real unstable with Luup restarts. I understand that this may be issues with my Vera, etc... . I also had lua in Vera reactor activities that preceded delays or other devices commands and by moving the lua into a Vera scene will that mess with the timing? Will there be a lag on the Vera side in invoking the scene while MSR continues with the reaction? The bottom line for me is I will try to make this work and eliminates much of the lua that I can. Having some legacy devices with IR contol does not help the situation I still have a lot of work to do so I can't say if everything will work out. It will be a matter of functionality and stability for me otherwise I will just stick with Vera reactor until I can't anymore. I will say that I do wish there was lua support in MSR.
@tarkus said in Running Lua Code ? And watching device properties?:
In preliminary testing the big issue I see with lua in Vera scenes is stability. I tried moving some of my lua into scenes and invoking the scenes thru MSR and everything just became real unstable with Luup restarts.
I think you already discovered the problem. Running the lua through scenes is probably not a good idea. Have you attempted what was suggested by @therealdb in this thread defining a library at startup and calling your lua through that? IMO this is the correct way to do it.
-
Well least you can run the Vera scenes I cannot at the moment.
I see these in the MSR log:
VeraController:ERR [VeraController:performOnEntity] action request failed
VeraController:CRIT Error: Request failed: 401 Error@cw-kid said in Running Lua Code ? And watching device properties?:
VeraController:ERR [VeraController:performOnEntity] action request failed
VeraController:CRIT Error: Request failed: 401 ErrorHave you looked at the Vera log corresponding to the time to see what it's logging? Also what happens when you run it via the Vera UI?
-
@tarkus said in Running Lua Code ? And watching device properties?:
In preliminary testing the big issue I see with lua in Vera scenes is stability. I tried moving some of my lua into scenes and invoking the scenes thru MSR and everything just became real unstable with Luup restarts.
I think you already discovered the problem. Running the lua through scenes is probably not a good idea. Have you attempted what was suggested by @therealdb in this thread defining a library at startup and calling your lua through that? IMO this is the correct way to do it.
-
@cw-kid said in Running Lua Code ? And watching device properties?:
VeraController:ERR [VeraController:performOnEntity] action request failed
VeraController:CRIT Error: Request failed: 401 ErrorHave you looked at the Vera log corresponding to the time to see what it's logging? Also what happens when you run it via the Vera UI?
luvd_get_info_data_request starting /data_request?SceneNum=null&DeviceNum=86&id=action&serviceId=urn%3Amicasaverde-com%3AserviceId%3AHomeAutomationGateway1&action=RunScene&output_format=json&_r=1614868227818 pMem 0x3473000/54996992 diff: 39190528 <0x6cd27520> 08 03/04/21 14:30:27.829 JobHandler_LuaUPnP::HandleActionRequest device: 0 service: urn:micasaverde-com:serviceId:HomeAutomationGateway1 action: RunScene <0x6cd27520> 08 03/04/21 14:30:27.829 JobHandler_LuaUPnP::HandleActionRequest argument SceneNum=null <0x6cd27520> 08 03/04/21 14:30:27.829 JobHandler_LuaUPnP::HandleActionRequest argument DeviceNum=86 <0x6cd27520> 08 03/04/21 14:30:27.830 JobHandler_LuaUPnP::HandleActionRequest argument serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1 <0x6cd27520> 08 03/04/21 14:30:27.830 JobHandler_LuaUPnP::HandleActionRequest argument action=RunScene <0x6cd27520> 08 03/04/21 14:30:27.831 JobHandler_LuaUPnP::HandleActionRequest argument _r=1614868227818 <0x6cd27520> 02 03/04/21 14:30:27.831 JobHandler_LuaUPnP::RunAction device -1 action urn:micasaverde-com:serviceId:HomeAutomationGateway1/RunScene failed with 401/Invalid Scene <0x6cd27520>
Strange it says its an invalid scene.
"Fan On" is scene number 86 in Vera and that is the scene I selected to run in my "Set Reaction" run script.
If I run the "Fan On" scene actually in Vera on the UI7 web GUI it works the scene runs OK.
Why does it have a device number and scene number is null ?
SceneNum=null&DeviceNum=86
-
@tarkus That helps. Open a PR. The scene ID isn't being passed correctly. That's a quick fix you can do in place in a minute. I'll post what you need on the PR.
-
@tarkus That helps. Open a PR. The scene ID isn't being passed correctly. That's a quick fix you can do in place in a minute. I'll post what you need on the PR.
@toggledbits said in Running Lua Code ? And watching device properties?:
The scene ID isn't being passed correctly
You talking to me ?
There is a PR open already.
-
@cw-kid yes 0.1.21062 but it seems that my scenes are not getting invoked by MSR today as well. I did test when I initially installed the other day and they did work.
-
Both, and yes, I see the PR. I hadn't looked at my email or Mantis yet this morning, still getting off the ground here, so I didn't see it get opened. All good and thank you. Discussion on that thread shortly.
-
FYI, I'm also trying to implement the "run lua" action for the (vera-specific) system device. That does not mean Lua will run in MSR -- it does not, can not, and will not. But Vera does give me the ability to pass it Lua and have it execute it. That fills me with dread, frankly, but if it's what you need, it can be done. It will also need a UI change to support it, since typing Lua into a small entry field won't due. If it works, it should make invoking functions in a Lua module (built as @therealdb has shown you to do) pretty easy.
-
Update, if you haven't already been notified by Mantis: patch is up on PR#80.
-
FYI, I'm also trying to implement the "run lua" action for the (vera-specific) system device. That does not mean Lua will run in MSR -- it does not, can not, and will not. But Vera does give me the ability to pass it Lua and have it execute it. That fills me with dread, frankly, but if it's what you need, it can be done. It will also need a UI change to support it, since typing Lua into a small entry field won't due. If it works, it should make invoking functions in a Lua module (built as @therealdb has shown you to do) pretty easy.
@toggledbits said in Running Lua Code ? And watching device properties?:
FYI, I'm also trying to implement the "run lua" action for the (vera-specific) system device. That does not mean Lua will run in MSR -- it does not, can not, and will not. But Vera does give me the ability to pass it Lua and have it execute it. That fills me with dread, frankly, but if it's what you need, it can be done. It will also need a UI change to support it, since typing Lua into a small entry field won't due. If it works, it should make invoking functions in a Lua module (built as @therealdb has shown you to do) pretty easy.
I'm sure this will be very handy for some users.
I am good at the moment however, using the method therealdb showed me. Its working currently.
-
Update, if you haven't already been notified by Mantis: patch is up on PR#80.
@toggledbits said in Running Lua Code ? And watching device properties?:
Update, if you haven't already been notified by Mantis: patch is up on PR#80.
Confirmed as working again thanks.
-
I have been running Lua within my Vera reactor pretty successfully. In some cases the reason was to have some conditional logic on the activity side. I found that this enabled me to keep the condition side a bit simpler and clean. I was also running lua to send Global Cache IR codes to my older Tv's. I now am trying the CG plugin that Patrick sorted out for me. The small issue with that is I need to convert all my Global Cache codes to pronto hex. I only mention so others know it does not support CG codes. There is also some lua that I use to turn off my computer. In preliminary testing the big issue I see with lua in Vera scenes is stability. I tried moving some of my lua into scenes and invoking the scenes thru MSR and everything just became real unstable with Luup restarts. I understand that this may be issues with my Vera, etc... . I also had lua in Vera reactor activities that preceded delays or other devices commands and by moving the lua into a Vera scene will that mess with the timing? Will there be a lag on the Vera side in invoking the scene while MSR continues with the reaction? The bottom line for me is I will try to make this work and eliminates much of the lua that I can. Having some legacy devices with IR contol does not help the situation I still have a lot of work to do so I can't say if everything will work out. It will be a matter of functionality and stability for me otherwise I will just stick with Vera reactor until I can't anymore. I will say that I do wish there was lua support in MSR.
@tarkus said in Running Lua Code ? And watching device properties?:
I now am trying the CG plugin that Patrick sorted out for me. The small issue with that is I need to convert all my Global Cache codes to pronto hex. I only mention so others know it does not support CG codes.
Were you not using the GC100 plugin before? Because if you were, it should not work any differently through MSR. MSR only passes the string in whatever format. If GC100 understood other code types before (even though the action has "Pronto" in the name), it would still now. MSR doesn't modify or interpret that data.
-
@tarkus said in Running Lua Code ? And watching device properties?:
I now am trying the CG plugin that Patrick sorted out for me. The small issue with that is I need to convert all my Global Cache codes to pronto hex. I only mention so others know it does not support CG codes.
Were you not using the GC100 plugin before? Because if you were, it should not work any differently through MSR. MSR only passes the string in whatever format. If GC100 understood other code types before (even though the action has "Pronto" in the name), it would still now. MSR doesn't modify or interpret that data.
@toggledbits No I was using Lua in Vera Reactor to pass the Global Cache codes. I have played around with the GC Plugin in the past but I have not used it in years up until MSR.