-
Do you think it could be possible to have a custom device for "dimmer" that instead of having the slider from 0 to 99 will give us Off/Low/Medium/High and will send 0,30,60,90 ?
-
I'm a fan of the SendConfig call action in a couple of scene...
Did you implement something like GetConfig ?
I have a couple of scene that I would need to do a GetConfig to do something based on the value...
-
I was trying to change the ID of a couple of scenes and came to the conclusion you can't do this without stopping openLuup, hacking user_data.json and restarting openLuup, which is a pain. (May be this could be added to openLuup ie be able change any scene ID to a non used one.)
So I figured I would try and clone some of the scenes with the idea that I could then manually swap their contents around. Why would I want to do this? Just to make my scene management a bit more simple as all my scenes call the one pile of Lua code. I also wanted to make use of unused scene IDs sprinkled through the scene ID list.
My understanding was the clone would occupy the first unused scene ID. Using AltUI, it just adds the clone on to the end of the list of scene IDs. In openLuup using the console page it failed to create the clone. Hits the URL OK:
http://openLuup:3480/console?action=clone&scene=14Says this in the log:
GET /console?action=clone&scene=14 HTTP/1.1 tcp{client}: 0x2c05008Searched high and low and no clones to be found.
I see that AltUI does a create when it clones:
openLuup.server:: GET /data_request?id=scene&action=create&json=WITH_ALL_THE_SCENE_INFO_HEREAny ideas?
-
I woke up to one of the lights in the hallway dimming up and down constantly.. when i tried to open reactor logic summary, there was something weird with the GUI?
The "Tools" tab resizes so i can't reach the logic summary button:
24f6b3f7-cfca-45ba-b568-7c6f5a31ddd7-image.pngThe Reactor instance in Altui pages was also empty, no buttons or text on them, only the icon..
I have a virtual switch to turn on all lights using reactor, and that one worked from the tablet in the kitchen, so reactor was functioning OK..
I reloaded luup and hard refreshed the browser, and all but the "Tools" page is now back to normal.. @toggledbits ?
EDIT: Theres supposed to be some text in the headers on this page, isn't it?
70159d9d-85fc-4606-b38b-49f2909dce72-image.png -
Have you ever considered running openLuup under LuaJIT instead of Lua5.1 interpreter?
The LuaJIT Project
For kicks, I switched my installation to the latest LuaJIT2.1 beta3 dating from 2017 and being a lua5.1 interpreter it is a drop in replacement. I had to move the lfs library from one folder to another likely because of an include path difference but I am seeing a further speed/efficiency improvement vs. lua5.1.
My CPU load has dropped another 25% to now hover around 2.2% down from 2.8%. I have yet to make sure that everything else works but so far everything appears to be the same.
The luajit site claims up to 5x speed increase through the interpreter and 120x improvement through the compiler vs the standard lua5.1.Screen Shot 2020-07-05 at 23.10.02.png
My initial interest was from being able to access some ffi libraries to handle video streams...
PS: Wow it is pretty impressive under load... browsing through ALTUI which used to cause spikes of CPU utilization from 2.8% to 4.8% now only go from 2.3% to 2.6%. It almost looks like noise. I am running it on a pretty fast x64 thread so it may not be that significant but this could make a big difference on ARM.
-
Windows Subsystem for Linux (WSL) is a compatibility layer for running Linux binary executables natively on Windows 10.
This is one way to run openLuup under Windows without having to worry whether any of your plugins require a Unix/Linux environment – this way, they actually get one.
Many flavours of Linux are available for WSL from the Microsoft Store – my favourite, to date, is Alpine WSL, which is a tiny (~8 Mb) and lightweight WSL distro based on musl, uses busybox, and just contains the most important things to be functional.
Here's a rough guide to getting openLuup going under Alpine WSL
Enable WSL on via the Windows control panel Install the Alpine WSL app from the Microsoft Store Start the Alpine application Install Lua and some libraries:Alpine comes with a really full set of Lua libraries available for install. You need to be su to install them:
# apk add curl # apk add lua5.1 # apk add lua5.1-md5 # apk add lua5.1-cjson # apk add lua5.1-filesystem # apk add lua5.1-bitop # apk add lua5.1-sec You need to make the file system permanent: $ cd /mnt/c/ $ mkdir cmh-ludl $ cd cmh-ludl Now get and install openLuup and AltUI: $ wget https://github.com/akbooer/openLuup/raw/master/Utilities/openLuup_install.lua $ lua5.1 openLuup_install.luaWhen finished (it won't yet return to the command prompt)
access openLuup via the URL: IP:3480/openLuup Update to latest version (Plugins page, type development in Update box) Install VeraBridge (Device Table > Create D_VeraBridge.xml / I_VeraBridge.xml) Add IP of Vera to VeraBridge attributes Reload VeraBridge device > Actions > GetVeraFiles (wait ~2 minutes) ReloadSimple!
-
A long while ago (May, 2015) I wrote my 2000-th post on another forum: openLuup - running unmodified plugins on any machine. Here’s the gist of it:
...I want to work in a more open and stable [Vera] environment...
...All would be solved if Luup was open source and could be run on the plethora of cheap and reliable hardware available today. But it’s not. But we could get something like that effect if we engineered a sufficient subset of Luup to run on such a platform. Could it be done? What would we need?
1. UI
2. scheduler
3. web server
4. Luup compatible API
5. Device and Implementation xml file reader
6. Zwave bridge to Vera
7. runs most plugins without modificationWhat we wouldn’t need is UPnP.
What have we (nearly) got already?
We have, courtesy of @amg0, the most excellent AltUI: Alternate UI to UI7, and that, I think, is probably the hardest one to do in the above list. Items 2 - 5, and 7, I’ve prototyped, in pure Lua, and posted elsewhere: DataYours on Raspberry Pi, running selected plugins unmodified, including: DataYours, EventWatcher, Netatmo, RBLuaTest, altUI. See screenshot attached.Is it worth the effort? Probably not. Will I pursue this quest? Yes.
openLuup was the result.
-
Evening, all. Hope you're all well.
Did the logging line count / rotation challenge ever get sorted? I'm needing to look back at some historical events and my oldest log is barely 3 hours ago. (Not that I can recall how to try and change the line numbers etc)
Cheers!
C
-
I've been fiddling with the zigate plugin, as the dongle arrived.. I installed the app from appstore, and saw that the plugin files were not installed properly.
Downloaded the zip files and put all luup files in the cmh_ludl folder. Reloaded luup, and it was in and looking ok
I then entered the IP for it to communicate with the dongle, and reloaded luup.Now the openluup service is running, but i can't get into either altUI or openluup console.
I tried rebooting, stopping and starting the service, no effect.
the logs doesnt seem to be updated either. Now what?
-
I'm trying to do this now that I have migrated the siren to Zway. Here's the thread from the Vera forums on how to do it with a Vera: https://community.getvera.com/t/playing-sounds-on-the-zooz-siren-zse19/211318
I'm guessing something needs to change in the code since previously it was calling out the vera specifically.
Here's what shows up in the logs when I tried to use Reactor for the SendData. Zway plugin is device 18. And my siren is device number 95 in my Zway network.
2020-12-01 15:37:27.052 openLuup.server:: POST /data_request HTTP/1.1 tcp{client}: 0x56194138c448 2020-12-01 15:37:27.052 luup.call_action:: 18.urn:micasaverde-com:serviceId:ZWaveNetwork1.SendData 2020-12-01 15:37:27.053 openLuup.server:: request completed (151 bytes, 1 chunks, 0 ms) tcp{client}: 0x56194138c448 2020-12-01 15:37:27.079 luup_log:18: ZWay: http://127.0.0.1:8083/ZWaveAPI/Run/SendData(95,x79 8 35) 2020-12-01 15:37:27.079 luup_log:18: ZWay: SyntaxError: Unexpected number 2020-12-01 15:37:27.184 openLuup.server:: request completed (8606 bytes, 1 chunks, 5939 ms) tcp{client}: 0x561941d02fe8 -
While i wait for a replacement app for my local UI devices, i want to use imperihome as long as I can.. But i'm missing a lot of devices!
All Z-Way bridge devices, all security/smoke and motion sensors (local RFXtrx child devices)..
Found the "include vera bridge" in imperihome.lua, what else could cause this?
-
I downloaded ZeroBrane Studio to see if I could make sense of this lua language. @akbooer mentioned that this is what he uses for development, and i thought i could learn alot from seeing how openluup runs.
How do I proceed in order to run openluup in zerobrane? I guess i need to do that to see how scripts like the imperihome ISS script works?
I installed on a windows machine, will I have to run it in linux for it to work?
-
Hi @mrFarmer,
I also have a question about ImperiHome:
I'm trying to configure imperihome with openluup.
Imperihome recognizes the new system, with all devices, status feedback is perfect.
If I turn on something on imperihome, it will seem to be temporarily turned on and then turn off. Device does not actually change.
Can you help me with what could be the problem?
Thanks.
Krisztian -
Hi,
I have a couple of luup request, one is a request to VeraAlexa pluging to make alexa speak, the other updating a variable in reactor. They all seem to have a 10-20 second delay
example request
http://192.168.1.134:3480/data_request?id=action&DeviceNum=44&serviceId=urn:toggledbits-com:serviceId:ReactorSensor&action=SetVariable&VariableName=A_home&NewValue=1I can not figure out what is causing the delay, does anyone have any ideas?
-
-
Hi guys,
I was wondering what you guys use for push notifications on openluup. I still use VeraAlerts on my vera, but am searching for an alternative that runs on openluup.
Thanks!
-
I'm using RulesEngine plugin for a while, couple of years, and of course, the plugin is not getting any update as @vosmont stop to update/upgrade this plugin!
I attached one rule, if, by any chance, I would like to convert all my rules to something "native" in openLuup...
is it something possible ?
In the PDF you can see what a rule looks...ALTUI.pdf -
I have some code failing on Vera from time to time. All I got is:
attempt to call a string valueand usually a luup.reload will fix it. It should be something related to startup and scene collision.
Is there a way to really trace lua calls? I'm a DIY regarding LUA and I'm sure there should be a better way to trace and debug errors.
I'll try to code something in order to detect this situation and reload luup, because it's blocking my scenes.
Yes, I know I should migrate all my logic to openLuup, but I can't at the moment.
-
Hi guys,
I’m researching the move away from Vera and z-way has the most chance at this point. However, I came across the geolocation aspect of my setup.
I now use Vera Proximity. It works, but is not the most ideal solution. This won’t be an option anymore after I’ve migrated, so I was wondering what you guys use for geolocation.
-
so, @rigpapa did it: https://github.com/toggledbits/Vera-Decouple
It's completely decoupling Vera from the cloud. Very cool stuff. /cc @rafale77 @akbooer
openLuup: Version Log
-
A long while ago (May, 2015) I wrote my 2000-th post on another forum: openLuup - running unmodified plugins on any machine. Here’s the gist of it:
...I want to work in a more open and stable [Vera] environment...
...All would be solved if Luup was open source and could be run on the plethora of cheap and reliable hardware available today. But it’s not. But we could get something like that effect if we engineered a sufficient subset of Luup to run on such a platform. Could it be done? What would we need?
1. UI
2. scheduler
3. web server
4. Luup compatible API
5. Device and Implementation xml file reader
6. Zwave bridge to Vera
7. runs most plugins without modificationWhat we wouldn’t need is UPnP.
What have we (nearly) got already?
- We have, courtesy of @amg0, the most excellent AltUI: Alternate UI to UI7, and that, I think, is probably the hardest one to do in the above list.
- Items 2 - 5, and 7, I’ve prototyped, in pure Lua, and posted elsewhere: DataYours on Raspberry Pi, running selected plugins unmodified, including: DataYours, EventWatcher, Netatmo, RBLuaTest, altUI. See screenshot attached.
Is it worth the effort? Probably not. Will I pursue this quest? Yes.
openLuup was the result.
-
Development Branch: 2020 Release 5.1
- Startup log shows JSON module version information (thanks @a-lurker)
If you have installed Cjson then the startup log should include:
2020-05-01 13:00:56.780 openLuup.json:: version 2020.04.16 @akbooer
2020-05-01 13:00:56.780 openLuup.init:: using Cjson 2.1.0 for fast decodingIf not, then:
2020-05-01 12:54:47.675 openLuup.json:: version 2020.04.16 @akbooer
2020-05-01 12:54:47.675 openLuup.init:: Cjson not installed - using openLuup.json.Lua.decode() instead -
Development Branch: 2020 Release 5.6
I_openLuupCamera1
mods:- add
username
attribute - add
password
attribute - add
URL
variable - add
DirectStreamingURL
variable - thanks @prophead
-
Development Branch: 2020 Release 5.10
- native image panel for openLuupCamera1 device
- category 6 for ditto
- file counts in Luup files page menu
The openLuup console Luup Files page offers a very fast way to browse and view all the Luup device files that the system knows about. A click on the file name opens a Viewer on the file itself. The file filter menu now shows a count of each file type. I seem to have a total of 772 such files on my development system...
-
Development Branch: 2020 Release 5.20
- fix for cjson.null in decoded structures
- thanks @reneboer (and @mrFarmer !)
As usual, an earlier update breaks something. This probably wouldn't have been spotted for a while, since it doesn't impact VeraBridge or the ZWave bridge, but thanks to @reneboer's vigilance, it's found and fixed.
A little more detail. The Cjson module decodes Json
null
as the private data structurecjson.null
. The following code snippet shows the problem:local json = require "openLuup.json" local J = json.encode {1, nil, 3} local L = json.Lua.decode(J) local C = json.C.decode(J) print("JSON", J) print("Lua", pretty(L)) print("C", pretty(C))
writes the output:
JSON [1,null,3] Lua {1,nil,3} C {1,userdata: (nil),3}
However, the default openLuup
json.decode()
function has now been fixed, when it's using the Cjson module:local D = json.decode(J) print ("json.decode [using Cjson]", pretty(D))
now gives:
json.decode [using Cjson] {1,nil,3}
Kudos again to @reneboer and @mrFarmer !
-
Master Branch: 2020 Release 5.22
5th Aniiversary edition!!
Yes, it's five years since openLuup was unveiled to the world in this post:
...so I thought that today I'd roll up all the changes to date into the master branch.
I suppose I should also be setting out a roadmap. At the risk of it becoming a commitment, let's just say that, for the moment, it's just a list of incremental development ideas and some blue sky thinking:
- ZWay plugin integrated in openLuup distribution (as are AltAppStore and VeraBridge)
- native scene triggers – not the same as Vera, not the same as AltUI variable watches, but definable in the openLuup console.
- utilities for managing Data Historian archives
- better task & job messages
and then...
- fully asynchronous I/O
- enhanced HTTP server with data compression (perhaps using third-party web server?)
- Ajax calls for asynchronous updates of some console pages (Devices, Scenes, ...)
- ...
Ideas always welcomed!
-
Development Branch: 2020 Release 6.28
Implemented some recent suggestions to assist code/plugin development in the openLuup environment.
- the console
System > All Globals
page now starts with an entry for the shared environment (Startup / Shutdown / Test / Scenes...) - there is a link from the above item to the
Lua Globals
page within theLua Code
page group, which expands the content of non-standard (ie. user-created) global Lua tables in the shared environment. - a new system variable
luup.openLuup.cpu_table
contains the running total of CPU times (with sub-millisecond resolution) for all plugins.
The last item above may be used to profile run times for all the plugins:
local T = luup.openLuup.cpu_table -- yes, this is a table, not a function call print (T)
produces an output like:
(s.ms) [#] device name 0.010 [2] openLuup 0.650 [3] Alternate UI 0.010 [4] Alternate App Store 8.300 [13] Vera Edge 0.040 [16] BBB Sonos (Study) 2.690 [17] Vera 0 3.100 [18] Vera 1 1.470 [20] Netatmo 0.040 [42] DarkSky Weather 7.140 [48] Philips hue 4.140 [70] Studio hue
but it's also an object which you may use to calculate run-time deltas. Hence:
local T0 = luup.openLuup.cpu_table -- wait a bit local T1 = luup.openLuup.cpu_table print (T1 - T0)
will show you the elapsed CPU time for all the plugins.
(s.ms) [#] device name 0.000 [2] openLuup 0.020 [3] Alternate UI 0.000 [4] Alternate App Store 1.440 [13] Vera Edge 0.000 [16] BBB Sonos (Study) 0.080 [17] Vera 0 0.070 [18] Vera 1 0.560 [20] Netatmo 0.000 [42] DarkSky Weather 1.460 [48] Philips hue 0.770 [70] Studio hue
My thanks to @a-lurker for being a catalyst for these changes.
- the console
-
Development Branch: 2020 Release 6.29
Following yesterday's changes in v20.6.28, "wall-clock" time is now added to the system profiling instrumentation:
- new plugin device attribute
wall(s)
contains the running total of wall-clock time (with sub-millisecond resolution) - new system variable
luup.openLuup.wall_table
contains the wall-clock times (with sub-millisecond resolution) for all plugins - openLuup console
Scheduler > Plugins
page shows cpu and wall-clock times and their ratio.
The final item above should be a good indicator of when ( >> 1) a plugin is taking much more elapsed time than the CPU that it is actually using – diagnostic of blocking socket I/O or wanton use of
luup.sleep()
. - new plugin device attribute
-
Development Branch: 2020 Release 7.4
INDEPENDENCE DAY Edition
...nothing to do with the USA, but the day in the UK when Covid-19 restrictions are reduced, and more shops and businesses can open!
- added Required Files sub-page to the Plugins page group, showing which files/modules are
required
by plugins (and how many times.)
This is in preparation for being able to specify replacement modules without altering the plugin code itself. Applications include replacing
dkjson
withRapidJSON
, and the like.Not fixed:
- the log file customisation in Lua Startup (sorry @CatmanV2, next time.)
- added Required Files sub-page to the Plugins page group, showing which files/modules are
-
Development Branch: 2020 Release 10.1
Thanks to today's influx of Shelly devices here, I've implemented a shorter data request for running scenes.
So instead of:
http://openLuupIP:3480/data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=RunScene&SceneNum=1
or even:
http://openLuupIP:3480/data_request?id=action&DeviceNum=2&serviceId=openLuup&action=RunScene&SceneNum=1
You can simply write:
http://openLuupIP:3480/data_request?id=run_scene&SceneNum=1
...much easier to program into all those new switched and relays!
-
Development Branch: 2020 Release 10.2
Shelly-itis has hit hard... here is the beginnings of a Shelly-like API for all openLuup devices:
Switches:
Turn on / off / toggle with:
http://openLuupIP:3480/relay/NNN?turn=on http://openLuupIP:3480/relay/NNN?turn=off http://openLuupIP:3480/relay/NNN?turn=toggle
where NNN is the device number.
Scenes:
Run scenes with:
http://openLuupIP:3480/scene/NNN
where NNN is the scene id.
This makes programming Shelly i3 switches for actioning any openLuup device particularly easy, and consistent with controlling Shelly devices from openLuup (or any HTTP command.)
-
Development Branch: 2020 Release 12.10
Fix long-standing error with retrieving icon files from Vera using VeraBridge
GetVeraFiles
action.