l0rien schreef op zondag 27 november 2016 @ 19:34:
Valt me op dat er in dit topic nog geen enkele mention is van
https://github.com/dannybloe/dzVents Een prettiger manier van werken in Domoticz dan met puur Lua scripting. Bij deze maar even hier gedropt, ben benieuwd wat mensen er hiervan vinden.
Persoonlijk ben ik nog niet zo lang bezig met Domoticz, maar het valt me op dat met wat complexiteit het al snel een brei wordt aan user variables, dummy switches en andere constructies om eigenlijk gewoon wat state bij te houden en daarop te kunnen reageren. Als java/python coder blijft de bijsmaak hangen dat dat een stuk cleaner zou moeten kunnen, maargoed dzVents lijkt een stap in de goede richting.
Klopt, heb er ooit ook naar gekeken.
dzVents is een leuk alternatief en uitgebreid.
Al voordat hij er mee op de proppen kwam was er toen der tijd een discussie gaande omdat de cpu usage wel erg opliep op de Pi2 ivm de vele hoeveelheid Lua scripts.
Dit was voordat de Pi3 er was, oorzaak wat we toen bedachten waren van de vele "commandArray = {}" die geopend werden.
Ben het nog niet tegen gekomen of het is gewoon niet de moeite waard meer omdat de Pi3 er minder last van heeft aangezien deze sterker is.
Maar ben toen der tijd een andere manier gaan gebruiken van Lua scripting.
In plaats van tig scripts in de lua folder heb ik nu maar 1 script_device_container.lua in de Lua folder.
In dit script staan heel simpel alle devices die aan een bepaalde event gekoppeld zijn.
Mocht z'n device getriggerd worden dan word er via dit Lua script_device een andere desbetreffende Lua aangeroepen die in een andere folder buiten Domoticz staan.
En daarmee het event uitgevoerd, en zo kan je meerdere events aanroepen per device zonder extra belasting
Voordeel is minder belasting, overzichtelijk en reactie snelheid van bijvoorbeeld een lamp werd toen extreem verbeterd.
Ik werkte toen en nu nog met KaKu spullen en zoals bekend was dat een ellende om snelle scenes te creëren ivm sommige devices een burst signaal uitzenden.
Zodoende konden we dit gedeeltelijk tackelen.
Zie mijn video hieronder:
Waarin twee event worden getriggerd (w.c en gang)
Sindsdien nooit meer terug gegaan naar het ouderwetse systeem.
Heb dus nu in de /domoticz/scripts/lua folder 1 Lua genaamd script_device_container.lua
Met hierin alle devices die een scene moeten triggeren.
Heb onder /domoticz/scripts een nieuwe folder genaamd lua_container aangemaakt.
Hierin staan alle script_device_.lua files die je normaal in de Lua folder zet.
Deze Lua scripts bevatten geen "commandArray = {}" & "return commandArray"
Dit word geregeld door de script_device_container.lua.
En hiermee word er ongeacht de hoeveelheid scripts die er in een seconde word aanroepen maar 1 keer "commandArray = {}" & "return commandArray" word aangeroepen.
Scheelt response tijd en resources.
Alsmede dat elke seconde alle scripts bij langs worden gelopen door Domoticz als deze in je Lua folder staan.
Hieronder mijn script_device_container.lua
En 1 event Lua script.
En het spreekt voorzich dat je ziet/snapt welke lua script er word aangeroepen als je een bepaalde device triggerd.
/home/pi/domoticz/lua/script_device_container.lua
code:
1
| http://pastebin.com/z4CTFUr7 |
/home/pi/domoticz/lua_container/script_device_activity_doorbell.lua
scripts zijn dus zonder "commandArray = {}" & "return commandArray"
code:
1
| http://pastebin.com/HLZGSMVB |
[
Voor 83% gewijzigd door
Siewert op 27-11-2016 21:57
]