Discussion Forum to share and further the development of home control and automation, independent of platforms.

    SmartHome Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Unsolved
    (Last Updated: 1 July 2020)
    • Console view: - No Live refreshes via :3480/console?page=devices

      parkerc

      Hi @akbooer

      Just bringing this over as suggested..

      I’ve started to use the console view a lot more, mainly for it’s look and simplicity , but I noticed it does not do any live updates compared to ALTUI, you have to do a full browser reload. Is that by design, or is mine not working?

      Also if I want to go strait to the console view, rather than into ALTUI, I recall seeing something abut altering that in the guide by for the life of me I can’t find it. Is it possible to do, if so how would I do that..

      You suggested this was something you were looking at ? Also you said You don't need a "full browser reload", just click on the display menu item to refresh the screen. - what do you mean by `display menu?

      openLuup
    • openLuup: Version Log

      akbooer

      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 modification

      What 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.

      DE2056BF-E548-4611-972B-40276F00BFEB.jpeg

      openLuup
    • openLuup and room names

      A

      Very minor issue: was messing about renaming a few rooms and ended up with a room being listed twice. One with the room's contents and the other with no room contents.

      It simply turns out one room name had a trailing space. It is possible in both AltUI and the openLuup console to create a room name with a trailing space. Once having done so chaos then ensues, as the rooms are not necessarily treated as different and become difficult to manipulate.

      Just need to trim white space off room names. Haven't tested if it's possible to add in leading spaces. That may also be possible.

      openLuup
    • Need to get rid of RulesEngine

      DesT

      Hey guys...

      Long time... 😉

      Since my first day with Vera, I'm using RulesEngine from @vosmont to handle complex rules that will do something based on multiple condition base on "true/false" and also based on time.

      Do you think I will be able to do that directly with LUA in openLuup ?

      For example..

      IF bedroom-motion1 is not detecting motion for 15 minutes
      AND
      IF bedroom-motion2 is not detecting motion for 15 minutes
      AND
      IF current-time is between 6am and 11pm
      AND
      IF binary-light1 is OFF
      AND
      IF binary-light2 is OFF
      THEN
      execute LUA code
      WAIT 2 minute
      execute LUA code

      BUT IF any "conditions" failed while in the "THEN" , It need to stop...

      I currently have around 60 rules like that 😞

      openLuup
    • ZWaveJS and MQTT

      A

      Re: openLuup: MQTT server

      @ronluna

      Hoping you could tell us a bit about your experiences with ZWaveJS and MQTT.

      ZWave JS UI in MQTT Explorer.png

      openLuup
    • Migrating Zwave & ZigBee stuff to MQTT - guidance needed.

      A

      Currently I have a Vera and Hue hub all reliably controlled by openLuup with AltUI, plus any number of plugins. Been working really well for a few years now. However would like to head for a more MQTT based set up. Eliminate the Hue hub and hopefully eliminate Vera by using ZWAVE JS UI. Noting that Zwavejs2mqtt has been renamed to Z-Wave JS UI. Probably also run the stuff using Docker. Just because. Everything would end up on the one computer for easier management. Erhhh that's the hope.

      Some of the new Zigbee Aqara stuff is very good and inexpensive plus it fits in with HomeKit. Also the Aqara battery powered stuff looks to have a good battery lifetime: ie suggested up to five years. The battery operated Hue buttons I have; have lasted for ages. Would like to use zigbee2mqtt with a SonOff dongle, which would allow access to the over two and half thousand devices zigbee2mqtt now supports:

      | Zigbee2MQTT

      AK has the MQTT stuff working in openLuup. Have played around with it and it works well, as one would expect. Love the UDP to MQTT code.

      Shellys are great and also very inexpensive and they spit out & accept MQTT but I would prefer to stay away from WiFi. Not meshed and higher power consumption. Horses for courses.

      Now here's the query:
      Got about forty or more ZWave twin light switches, plus a few other ZWave bits & pieces such as blind controllers. Then there are the Hue devices on top of that. That's a lot of virtual devices to set up in openLuup. What's an appropriate way to do this?

      It seems there is no "auto magic bridge set up". Do I need to use say @therealdb's Virtual Devices plugin that supports MQTT or is there some other approach?

      I have to confess I still don't understand the master child approach in that plugin. Seems one light switch would have all the other light switches hanging off it? Helps Vera but not a problem with openLuup - why is that? Suspect AK's good coding beats Vera's?

      GitHub - dbochicchio/vera-VirtualDevices: Virtual HTTP Devices plug-in for Vera and openLuup GitHub - dbochicchio/vera-VirtualDevices: Virtual HTTP Devices plug-in for Vera and openLuup

      Virtual HTTP Devices plug-in for Vera and openLuup - GitHub - dbochicchio/vera-VirtualDevices: Virtual HTTP Devices plug-in for Vera and openLuup

      Setting up manually say 100 virtual devices is a bit much to ask. I had a look at hacking the user_data.json file. Good approach till you see all the UIDs and the individually numbered ControlURL and EventURLs that need to be set up.

      I need some way of say of creating about 80 light switches in "No room" or in say the "ZWave upgrade" room. Or say some sort of code that could go through all my existing bridged ZWAVE devices in openLuup and create virtual devices for each one. I caould then use the openLuup console to name them and place them in their rooms:

      openLuup_IP_address:3480/console?page=devices_table

      At that point I could hack the user_data.json file to insert the MQTT topics fairly easily for each? Plus any other fine tuning needed.

      Then the old ZWave stuff could be swapped over to ZWAVE JS UI and all the virtual MQTT devices would be ready to go or am I dreaming? Then delete all the old Vera bridged stuff. I'm not too fussed about scene code and the like, as a I have all my code in one block, that is set up in the openLuup start up.

      It seems that with ZWay you can create all the ZWave device by doing some sort of interrogation of ZWay's API? Seems also to be the case with the Shelleys?

      So any ideas, suggestions or code snippets are welcome on how to move towards MQTT and in particular ZWAVE JS UI and zigbee2mqtt.

      I'm in no hurry as openLuup is performing nicely, with the old Vera handling all my ZWave devices.

      openLuup
    • DisplayLine1 & 2 - Ability to align text?

      parkerc

      Hi

      Just wondering if it’s possible when writing plugins to set if the text shown via DisplayLine1/2 can be left, right or centre aligned ?

      openLuup
    • AltUI access over VPN

      CatmanV2

      Bit of an odd one this:
      Bare metal install on Debian Bullseye (Intel NUC)

      I've noticed when travelling, I connect to my L2TP VPN and I cannot get AltUI to update. I just get 'Waiting Initial Data'

      Specifically this is in Chrome:
      Version 108.0.5359.94 (Official Build) (x86_64)
      In Chrome I can access and control everything via the Openluup console.
      In Chrome I can also access and control everything via the Z-Wave expert UI and Z-Wave UI

      In Safari I get a more complete view of AltUI but loads of errors along the lines of:
      the module or function ALTUI_PluginDisplays.drawBinaryLight does not exist, check your configuration

      Homewave on my iOS devices is fine across the same VPN config,
      I can ssh into all my servers

      Not a huge issue, just curious if anyone has any thoughts of what I might tweak to resolve it?

      (FWIW I also access my IMAP and SMTP servers across the same VPN with no issues, as well as remote desktop. Also MS Reactor on the same host as Openluup)

      TIA for any thoughts

      C

      openLuup
    • Problem with luup.call_delay nexted in luup.call_timer

      M

      Hi Ak,

      Not sure when it started as it took me a while to notice.

      I have a function on a luup.call_timer to turn on a switch and then use a luup.call_delay to turn it off a minute later. This is done by the same global function, but on the luup.call_delay i get a message in the log : "luup.call_delay:: unknown global function name: HouseDevice1_PumpCommand"

      This is in the init function:

      luup.call_timer("HouseDevice1_PumpCommand", 2, "2:15:00", hm_Heating.PumpHealthRunDay, hm_Heating.PumpCMD.HEALTH.."1", true)

      This is in the function to schedule to off command giving the global function name not found:

      luup.call_delay("HouseDevice1_PumpCommand", hm_Heating.PumpHealthOnDuration, hm_Heating.PumpCMD.HEALTH.."0")

      Is it because I use the "TRUE" parameter that is openLuup specific so the timer does not fire just once?

      Running v21.7.25, may be time to update?

      Cheers Rene

      openLuup
    • OpenLuup installation

      N

      Hi, I have been trying to install OpenLuup on MacOS but I am failing, so far.
      Is there a step-by-step instruction (for MacOS) to follow?

      After installing LuaRocks, luasec, luafilesystem and luasocket I then try to run lua5.1 openLuup_install.lua and then get the messages below.

      Any ideas and proposals are appreciated.

      Regards
      Jan

      openLuup_install 2019.02.15 @akbooer
      lua5.1: openLuup_install.lua:18: module ‘socket.http’ not found:
      no field package.preload[‘socket.http’]
      no file ‘./socket/http.lua’
      no file ‘/usr/local/share/lua/5.1/socket/http.lua’
      no file ‘/usr/local/share/lua/5.1/socket/http/init.lua’
      no file ‘/usr/local/lib/lua/5.1/socket/http.lua’
      no file ‘/usr/local/lib/lua/5.1/socket/http/init.lua’
      no file ‘./socket/http.so’
      no file ‘/usr/local/lib/lua/5.1/socket/http.so’
      no file ‘/usr/local/lib/lua/5.1/loadall.so’
      no file ‘./socket.so’
      no file ‘/usr/local/lib/lua/5.1/socket.so’
      no file ‘/usr/local/lib/lua/5.1/loadall.so’
      stack traceback:
      [C]: in function ‘require’
      openLuup_install.lua:18: in main chunk

      openLuup
    • Unexpected stop of openLuup

      Crille

      Every now and then my openLuup stops responding. This is the LuaUPnP.log when it happens:

      2021-08-20 14:59:39.827 :: openLuup LOG ROTATION :: (runtime 11.0 days) 2021-08-20 14:59:39.831 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6023b8088 2021-08-20 14:59:39.853 openLuup.server:: request completed (49215 bytes, 4 chunks, 22 ms) tcp{client}: 0x55b6023b8088 2021-08-20 14:59:39.854 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6023b8088 2021-08-20 14:59:40.826 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600f46ab8 2021-08-20 14:59:40.829 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600f46ab8 2021-08-20 14:59:40.846 openLuup.server:: request completed (49215 bytes, 4 chunks, 16 ms) tcp{client}: 0x55b600f46ab8 2021-08-20 14:59:40.847 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600f46ab8 2021-08-20 14:59:41.827 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600d1ad98 2021-08-20 14:59:41.829 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600d1ad98 2021-08-20 14:59:41.838 openLuup.server:: request completed (49215 bytes, 4 chunks, 8 ms) tcp{client}: 0x55b600d1ad98 2021-08-20 14:59:41.838 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600d1ad98 2021-08-20 14:59:42.827 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6016b9848 2021-08-20 14:59:42.829 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6016b9848 2021-08-20 14:59:42.847 openLuup.server:: request completed (49215 bytes, 4 chunks, 17 ms) tcp{client}: 0x55b6016b9848 2021-08-20 14:59:42.876 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6016b9848 2021-08-20 14:59:43.054 luup.watch_callback:: 30003.DS18B20.Temperature called [37]virtualSensorWatchCallback() function: 0x55b600c2fff0 2021-08-20 14:59:43.054 luup.variable_set:: 38.urn:toggledbits-com:serviceId:VirtualSensor1.PreviousRawValue was: 28.3 now: 28.5 #hooks:0 2021-08-20 14:59:43.054 luup.variable_set:: 38.urn:toggledbits-com:serviceId:VirtualSensor1.RawValue was: 28.5 now: 28.4 #hooks:0 2021-08-20 14:59:43.054 luup.variable_set:: 38.urn:upnp-org:serviceId:TemperatureSensor1.CurrentTemperature was: 28.5 now: 28.4 #hooks:0 2021-08-20 14:59:43.054 luup.variable_set:: 38.urn:toggledbits-com:serviceId:VirtualSensor1.PreviousValue was: 28.3 now: 28.5 #hooks:0 2021-08-20 14:59:43.054 luup.variable_set:: 38.urn:toggledbits-com:serviceId:VirtualSensor1.LastUpdate was: 1629464323 now: 1629464383 #hooks:0 2021-08-20 14:59:43.265 openLuup.server:: request completed (3193 bytes, 1 chunks, 5550 ms) tcp{client}: 0x55b60162e488 2021-08-20 14:59:43.267 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b60162e488 2021-08-20 14:59:43.278 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6023c8458 2021-08-20 14:59:43.278 openLuup.server:: GET /data_request?id=status&DataVersion=516611499&Timeout=15&MinimumDelay=100&output_format=json&_r=1629464383277 HTTP/1.1 tcp{client}: 0x55b6023c8458 2021-08-20 14:59:43.381 openLuup.server:: request completed (1091 bytes, 1 chunks, 102 ms) tcp{client}: 0x55b6023c8458 2021-08-20 14:59:43.381 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6023c8458 2021-08-20 14:59:43.392 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6013d6cc8 2021-08-20 14:59:43.393 openLuup.server:: GET /data_request?id=status&DataVersion=516611500&Timeout=15&MinimumDelay=100&output_format=json&_r=1629464383391 HTTP/1.1 tcp{client}: 0x55b6013d6cc8 2021-08-20 14:59:43.496 openLuup.server:: request completed (3196 bytes, 1 chunks, 4981 ms) tcp{client}: 0x55b601a37db8 2021-08-20 14:59:43.826 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601d05a08 2021-08-20 14:59:43.828 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b601d05a08 2021-08-20 14:59:43.844 openLuup.server:: request completed (49215 bytes, 4 chunks, 15 ms) tcp{client}: 0x55b601d05a08 2021-08-20 14:59:43.844 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b601d05a08 2021-08-20 14:59:44.524 openLuup.server:: GET /data_request?id=lu_status2&output_format=json&DataVersion=516611500&Timeout=60&MinimumDelay=1500&_=1629292536029 HTTP/1.1 tcp{client}: 0x55b601a37db8 2021-08-20 14:59:44.828 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6023a7d18 2021-08-20 14:59:44.831 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6023a7d18 2021-08-20 14:59:44.844 openLuup.server:: request completed (49215 bytes, 4 chunks, 12 ms) tcp{client}: 0x55b6023a7d18 2021-08-20 14:59:44.844 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6023a7d18 2021-08-20 14:59:45.514 openLuup.server:: GET /data_request?id=variableget&DeviceNum=0&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&Variable=Mode&_=1629292536030 HTTP/1.1 tcp{client}: 0x55b601ab8228 2021-08-20 14:59:45.617 openLuup.server:: request completed (1 bytes, 1 chunks, 102 ms) tcp{client}: 0x55b601ab8228 2021-08-20 14:59:45.827 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600b8de38 2021-08-20 14:59:45.828 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600b8de38 2021-08-20 14:59:45.834 openLuup.server:: request completed (49215 bytes, 4 chunks, 5 ms) tcp{client}: 0x55b600b8de38 2021-08-20 14:59:45.836 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600b8de38 2021-08-20 14:59:46.828 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6018a53f8 2021-08-20 14:59:46.830 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6018a53f8 2021-08-20 14:59:46.841 openLuup.server:: request completed (49215 bytes, 4 chunks, 11 ms) tcp{client}: 0x55b6018a53f8 2021-08-20 14:59:46.842 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6018a53f8 2021-08-20 14:59:47.829 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600d2d938 2021-08-20 14:59:47.832 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600d2d938 2021-08-20 14:59:47.854 openLuup.server:: request completed (49215 bytes, 4 chunks, 21 ms) tcp{client}: 0x55b600d2d938 2021-08-20 14:59:47.855 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600d2d938 2021-08-20 14:59:47.962 luup.variable_set:: 10086.urn:upnp-org:serviceId:TemperatureSensor1.CurrentTemperature was: 28.3 now: 28.5 #hooks:0 2021-08-20 14:59:48.370 openLuup.server:: request completed (1359 bytes, 1 chunks, 4977 ms) tcp{client}: 0x55b6013d6cc8 2021-08-20 14:59:48.372 openLuup.server:: request completed (1359 bytes, 1 chunks, 3847 ms) tcp{client}: 0x55b601a37db8 2021-08-20 14:59:48.373 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6013d6cc8 2021-08-20 14:59:48.384 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601e62df8 2021-08-20 14:59:48.385 openLuup.server:: GET /data_request?id=status&DataVersion=516611502&Timeout=15&MinimumDelay=100&output_format=json&_r=1629464388383 HTTP/1.1 tcp{client}: 0x55b601e62df8 2021-08-20 14:59:48.813 openLuup.server:: GET /data_request?id=lu_status2&output_format=json&DataVersion=516611502&Timeout=60&MinimumDelay=1500&_=1629292536031 HTTP/1.1 tcp{client}: 0x55b601a37db8 2021-08-20 14:59:48.829 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600c44bf8 2021-08-20 14:59:48.832 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600c44bf8 2021-08-20 14:59:48.854 openLuup.server:: request completed (49215 bytes, 4 chunks, 21 ms) tcp{client}: 0x55b600c44bf8 2021-08-20 14:59:48.856 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600c44bf8 2021-08-20 14:59:49.829 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600e1fea8 2021-08-20 14:59:49.830 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b600e1fea8 2021-08-20 14:59:49.835 openLuup.server:: request completed (49215 bytes, 4 chunks, 5 ms) tcp{client}: 0x55b600e1fea8 2021-08-20 14:59:49.835 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600e1fea8 2021-08-20 14:59:50.831 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601cfa118 2021-08-20 14:59:50.832 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b601cfa118 2021-08-20 14:59:50.837 openLuup.server:: request completed (49215 bytes, 4 chunks, 4 ms) tcp{client}: 0x55b601cfa118 2021-08-20 14:59:50.838 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b601cfa118 2021-08-20 14:59:51.833 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601462bb8 2021-08-20 14:59:51.835 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b601462bb8 2021-08-20 14:59:51.852 openLuup.server:: request completed (49215 bytes, 4 chunks, 17 ms) tcp{client}: 0x55b601462bb8 2021-08-20 14:59:51.854 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b601462bb8 2021-08-20 14:59:52.834 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6016b1c98 2021-08-20 14:59:52.836 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6016b1c98 2021-08-20 14:59:52.847 openLuup.server:: request completed (49215 bytes, 4 chunks, 11 ms) tcp{client}: 0x55b6016b1c98 2021-08-20 14:59:52.848 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6016b1c98 2021-08-20 14:59:53.193 luup.variable_set:: 10005.urn:micasaverde-com:serviceId:SceneController1.sl_SceneActivated was: 255 now: 255 #hooks:0 2021-08-20 14:59:53.193 luup.variable_set:: 10006.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.193 luup.variable_set:: 10094.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.193 luup.variable_set:: 10096.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 10 now: 10 #hooks:0 2021-08-20 14:59:53.193 luup.variable_set:: 10098.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 10 now: 10 #hooks:0 2021-08-20 14:59:53.193 luup.variable_set:: 10104.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 10 now: 10 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10106.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10109.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10112.urn:micasaverde-com:serviceId:DoorLock1.sl_UserCode was: UserID="4" UserName="Ella" now: UserID="4" UserName="Ella" #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10112.urn:micasaverde-com:serviceId:DoorLock1.sl_LockButton was: 1 now: 1 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10112.urn:micasaverde-com:serviceId:DoorLock1.sl_PinFailed was: 1 now: 1 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10112.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10131.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10132.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10133.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10165.urn:micasaverde-com:serviceId:HaDevice1.sl_Alarm was: SMOKE now: SMOKE #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10165.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 0 now: 0 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10188.urn:micasaverde-com:serviceId:HaDevice1.sl_TamperAlarm was: 1 now: 1 #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10188.urn:micasaverde-com:serviceId:HaDevice1.sl_Alarm was: TAMPER_ALARM now: TAMPER_ALARM #hooks:0 2021-08-20 14:59:53.194 luup.variable_set:: 10191.urn:micasaverde-com:serviceId:HaDevice1.sl_BatteryAlarm was: 10 now: 10 #hooks:0 2021-08-20 14:59:53.299 openLuup.server:: request completed (5449 bytes, 1 chunks, 4485 ms) tcp{client}: 0x55b601a37db8 2021-08-20 14:59:53.505 openLuup.server:: request completed (5449 bytes, 1 chunks, 5119 ms) tcp{client}: 0x55b601e62df8 2021-08-20 14:59:53.511 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b601e62df8 2021-08-20 14:59:53.513 openLuup.server:: GET /data_request?id=lu_status2&output_format=json&DataVersion=516611523&Timeout=60&MinimumDelay=1500&_=1629292536032 HTTP/1.1 tcp{client}: 0x55b601a37db8 2021-08-20 14:59:53.522 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600bc7068 2021-08-20 14:59:53.524 openLuup.server:: GET /data_request?id=status&DataVersion=516611523&Timeout=15&MinimumDelay=100&output_format=json&_r=1629464393521 HTTP/1.1 tcp{client}: 0x55b600bc7068 2021-08-20 14:59:53.834 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601b8cbe8 2021-08-20 14:59:53.835 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b601b8cbe8 2021-08-20 14:59:53.840 openLuup.server:: request completed (49215 bytes, 4 chunks, 5 ms) tcp{client}: 0x55b601b8cbe8 2021-08-20 14:59:53.841 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b601b8cbe8 2021-08-20 14:59:54.834 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6013dacd8 2021-08-20 14:59:54.836 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b6013dacd8 2021-08-20 14:59:54.849 openLuup.server:: request completed (49215 bytes, 4 chunks, 12 ms) tcp{client}: 0x55b6013dacd8 2021-08-20 14:59:54.850 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b6013dacd8 2021-08-20 14:59:55.835 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b602316198 2021-08-20 14:59:55.836 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b602316198 2021-08-20 14:59:55.841 openLuup.server:: request completed (49215 bytes, 4 chunks, 5 ms) tcp{client}: 0x55b602316198 2021-08-20 14:59:55.842 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b602316198 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601547598 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6016c7cf8 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b600b75158 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60187d188 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6011a5bf8 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60115ecd8 2021-08-20 15:00:10.955 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601018c18 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60175d068 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60224ced8 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b6017869d8 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601ab40e8 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601914178 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60100a228 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b60197a998 2021-08-20 15:00:10.956 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601103238 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600c62438 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601eaabf8 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6017c95b8 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600d6e508 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601dd2168 2021-08-20 15:00:10.956 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b60155eb68 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6016ddcd8 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b602384ca8 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b60230cc78 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6017e3338 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600965de8 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601e23608 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6018da2f8 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600c9aa08 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600bbf0f8 2021-08-20 15:00:10.957 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601334518 2021-08-20 15:00:10.958 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b60183b5f8 2021-08-20 15:00:10.958 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6015682a8 2021-08-20 15:00:10.958 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6018869e8 2021-08-20 15:00:10.958 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6008839c8 2021-08-20 15:00:10.958 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b60154ed58 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601a259e8 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b600f617c8 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6015884c8 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601c85fe8 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b602275ae8 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b60190ab88 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601692038 2021-08-20 15:00:10.959 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601fcea78 2021-08-20 15:00:10.960 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601ca7f28 2021-08-20 15:00:10.960 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b601fd37f8 2021-08-20 15:00:10.960 openLuup.io.server:: MQTT:1888 connection from 127.0.0.1 tcp{client}: 0x55b6020ec968 2021-08-20 15:00:10.961 openLuup.server:: GET /data_request?id=variableget&DeviceNum=0&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&Variable=Mode&_=1629292536033 HTTP/1.1 tcp{client}: 0x55b601ab8228 2021-08-20 15:00:10.967 luup_log:0: 32Mb, 3.3%cpu, 11.0days 2021-08-20 15:00:10.972 openLuup.server:: request completed (3361 bytes, 1 chunks, 17459 ms) tcp{client}: 0x55b601a37db8 2021-08-20 15:00:10.973 openLuup.server:: request completed (3361 bytes, 1 chunks, 17449 ms) tcp{client}: 0x55b600bc7068 2021-08-20 15:00:10.990 luup.variable_set:: 10116.urn:upnp-org:serviceId:TemperatureSensor1.CurrentTemperature was: 21.8 now: 21.9 #hooks:0 2021-08-20 15:00:10.990 luup.variable_set:: 10129.urn:micasaverde-com:serviceId:HumiditySensor1.CurrentLevel was: 58.8 now: 58.7 #hooks:0 2021-08-20 15:00:10.991 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600ba45a8 2021-08-20 15:00:10.991 openLuup.mqtt:: closed tcp{client}: 0x55b600ba45a8 2021-08-20 15:00:10.992 openLuup.mqtt:: mqttthing_Klimat kllaren_838dee2e UNSUBSCRIBE from tele/Källartemp/SENSOR tcp{client}: 0x55b600ba45a8 2021-08-20 15:00:10.992 openLuup.mqtt:: ERROR publishing application message for mqtt:tele/Källartemp/SENSOR : closed 2021-08-20 15:00:10.992 openLuup.io.server:: HTTP:3480 connection from 127.0.0.1 tcp{client}: 0x55b601c8c288 2021-08-20 15:00:10.992 openLuup.io.server:: HTTP:3480 connection closed openLuup.server.receive closed tcp{client}: 0x55b600bc7068 2021-08-20 15:00:10.992 openLuup.server:: GET /data_request?id=sdata HTTP/1.1 tcp{client}: 0x55b601547598 2021-08-20 15:00:10.993 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600a62818 2021-08-20 15:00:10.993 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600a62818 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Uttag garaget_6f4265a1 UNSUBSCRIBE from openLuup/update/10149/SwitchPower1/Status tcp{client}: 0x55b600a62818 2021-08-20 15:00:10.994 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600ba8428 2021-08-20 15:00:10.994 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600ba8428 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Takflkt hallen_6da387bf UNSUBSCRIBE from tele/TakfläktHall/LWT tcp{client}: 0x55b600ba8428 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Takflkt hallen_6da387bf UNSUBSCRIBE from stat/TakfläktHall/POWER2 tcp{client}: 0x55b600ba8428 2021-08-20 15:00:10.994 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600e59b88 2021-08-20 15:00:10.994 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600e59b88 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Klimat sovrummet_0d664e41 UNSUBSCRIBE from openLuup/update/20010/HumiditySensor1/CurrentLevel tcp{client}: 0x55b600e59b88 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Klimat sovrummet_0d664e41 UNSUBSCRIBE from openLuup/update/20021/TemperatureSensor1/CurrentTemperature tcp{client}: 0x55b600e59b88 2021-08-20 15:00:10.994 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600bd02d8 2021-08-20 15:00:10.994 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600bd02d8 2021-08-20 15:00:10.994 openLuup.mqtt:: mqttthing_Entrdrr_6acda58a UNSUBSCRIBE from openLuup/update/10095/SecuritySensor1/Tripped tcp{client}: 0x55b600bd02d8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600bb6cf8 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600bb6cf8 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Temperatur poolen_a589d192 UNSUBSCRIBE from tele/Pooltemp/SENSOR tcp{client}: 0x55b600bb6cf8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b6009ff868 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b6009ff868 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Rrelsesensor hallen_cf7c8293 UNSUBSCRIBE from openLuup/update/20013/SecuritySensor1/Tripped tcp{client}: 0x55b6009ff868 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600a23e28 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600a23e28 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Luftfuktighet badrum_d79a0ffb UNSUBSCRIBE from openLuup/update/10190/HumiditySensor1/CurrentLevel tcp{client}: 0x55b600a23e28 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600bb33b8 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600bb33b8 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Ljussensor hallen_19569c17 UNSUBSCRIBE from openLuup/update/20006/LightSensor1/CurrentLevel tcp{client}: 0x55b600bb33b8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600a136b8 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600a136b8 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Ljussensor trningsrum_ebf319c5 UNSUBSCRIBE from openLuup/update/20004/LightSensor1/CurrentLevel tcp{client}: 0x55b600a136b8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600babaa8 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600babaa8 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Solceller watt_e351a23b UNSUBSCRIBE from openLuup/update/10163/LightSensor1/CurrentLevel tcp{client}: 0x55b600babaa8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b6004a9de8 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b6004a9de8 2021-08-20 15:00:10.995 openLuup.mqtt:: mqttthing_Luftfuktighet dusch_91df9a58 UNSUBSCRIBE from openLuup/update/20008/HumiditySensor1/CurrentLevel tcp{client}: 0x55b6004a9de8 2021-08-20 15:00:10.995 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600b84628 2021-08-20 15:00:10.995 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600b84628 2021-08-20 15:00:10.996 openLuup.mqtt:: mqttthing_Altandrr kk_db6d3edd UNSUBSCRIBE from openLuup/update/10097/SecuritySensor1/Tripped tcp{client}: 0x55b600b84628 2021-08-20 15:00:10.996 openLuup.io.server:: MQTT:1888 connection closed tcp{client}: 0x55b600be6548 2021-08-20 15:00:10.996 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55b600be6548 2021-08-20 15:00:10.996 openLuup.mqtt:: mqttthing_Test datarum_adbe85e6 UNSUBSCRIBE from openLuup/update/20007/Dimming1/LoadLevelTarget tcp{client}: 0x55b600be6548 2021-08-20 15:00:10.996 openLuup.mqtt:: mqttthing_Test datarum_adbe85e6 UNSUBSCRIBE from openLuup/update/20007/SwitchPower1/Status tcp{client}: 0x55b600be6548

      And then in syslog:

      Aug 20 15:00:11 username systemd[1]: openluup.service: Control process exited, code=exited status=7 Aug 20 15:00:11 username systemd[1]: openluup.service: Failed with result 'exit-code'.
      openLuup
    • OpenLuup - problem with solar AZ and ALT variables?

      A

      Wanted to check if was day or night and figured I would use:

      local altitude = luup.variable_get(SID.SOLAR, 'ALT', ID.OPEN_LUUP)

      If altitude is positive it's day, else it's night. However when I read these variables they are incorrect for my locale. The actual values for sunset and midday are correct but do not occur at sunset or midday. I have checked the clock that openLuup uses and it's correct.

      Now the time for midday is one hour out and the time for sunset is 13 hours out.

      I checked this by getting the UNIX epoch for my location for both sunset and midday and then adding the hours of offset and then called:

      local ID = { OPEN_LUUP = 2 } local SID = { OPEN_LUUP = "openLuup", SOLAR = "solar" } --local localTime = my_epoch_for_midday + (3600*1) local localTime = my_epoch_for_sunset + (3600*13) local coords = {Epoch = localTime, '', Latitude = '', Longitude = ''} luup.call_action(SID.SOLAR, "GetSolarCoords", coords, ID.OPEN_LUUP) local altitude = luup.variable_get(SID.SOLAR, 'ALT', ID.OPEN_LUUP) local azimuth = luup.variable_get(SID.SOLAR, 'AZ', ID.OPEN_LUUP) print('New altitude: '..altitude) print('New azimuth: '..azimuth)

      and I get the right answers.

      Not sure what I'm doing wrong. Or perhaps there is some code mix up with UTC versus local time. I checked the documentation but no mention of the solar variables.

      If I look at the chart it looks like the whole thing is correct but shifted by my timezone. However I wouldn't expect the timezone to come into play in these calculations.

      Feature request: would like to see an openLuup variable that is true for day and false for night. eg IsDay

      openLuup
    • openLuup: MQTT server

      akbooer

      Feedback / issues with openLuup's built-in MQTT server

      openLuup
    • OpenLuup : Basic UI

      parkerc

      Creating a separate thread for anyone who is interested in using the basic (vera) smartphone UI with openLuup

      B834C005-6193-4954-95B0-6D020EAEEFDD.jpeg

      The actual L_sPhoneUI.lua file needed comes from the ‘ Smartphone Web Interface ’ that’s installed via the mios App Store.

      Once you’ve got the file and have uploaded it to openLuup, add the following to your Lua Startup

      dofile ("L_sPhoneUI.lua")

      FYI - all associated js, css and graphic files seem to be hosted at https://download1.mios.com/L_sPhoneUI_layout so not sure how long they will remain available there, but theoretically alternative hosting could be done..

      openLuup
    • Lua using do - end file

      parkerc

      Hi,

      I’ve got the L_sPhoneUI.lua file, which is the very basic Vera smartphone UI, and it’s just a do - end code construct. How do I make that work under OpenLuup?

      do .. then loads of code here.. end

      I’ve tried putting into the normal xml/json plugin space but it does seem to get picked up, as none of the handlers are registered?

      openLuup
    • luup.variable_watch

      B

      Hi AK,

      I can't find any info on how a variable watch actually ends.

      I have the following variable watch on an alarm panel plugin UPnP variable. The code is part of some extended startup lua:

      luup.variable_watch("waitForZoneToClose","urn:micasaverde-com:serviceId:EVL3VistaAlarmPanel1", "FaultedZoneNames", 7)

      In the same startup lua, the global function "waitForZoneToClose" is called when the "FaultedZoneNames" variable changes, but this same function is also called at the start of a routine that determines what zones are actually faulted on the alarm panel.

      openZoneCount= waitForZoneToClose(7, "urn:micasaverde-com:serviceId:EVL3VistaAlarmPanel1", "FaultedZoneNames" , "","")

      So although the luup watch variables are included in the function params, they are not used within the function:

      function waitForZoneToClose(dev_id, service, variable, old_val, new_val) openZoneCount = getOpenZones() --retrieves open zone names on panel, and zones to bypass per mode setting if openZoneCount > 0 then -- there are open zones buildReservedZonesTable() -- run routine to pop bypass and vent zones from the zonesToClose stack removeReservedZones() openZoneCount = tablelength(tZonesToClose) -- run the count again to see if any zone was popped off the stack during removeReservedZones end return openZoneCount end

      Because I run the function recursively ie. when the variable that holds the open zones changes, I rerun the function that detects open zones, and if any relevant zones are still open, the code for the same watch is ran again, to detect if any zones have changed status, this before trying to auto arm the panel. So there might be a situation where two or more zones need to be closed before the panel will arm, and it takes real time to physically close each zone, one by one, and as each closes, the callback would trigger again.

      Hope that makes sense.

      I wasn't clear if a variable watch ends when the watched variable changes and the code then proceeds. Or do you have to end the watch via code somehow? I was concerned about a possible condition where watch upon watch would be added to memory until a luup reload would clear the watches, or do the watches end and self-cleanup when the callback function is called.

      openLuup
    • openLuup : Kiosk (Touchscreen) Idea ?

      parkerc

      Hi,

      I have an old raspberry pi and 7" touchscreen gathering dust, and have started to explore how I could potentially use the openLuup feature to ‘specify my own’ index.html?

      The openLuup manual suggests it’s straightforward to set up, the challenge is going to be around how best to create a single html for just one of my plugins so i can use it in a kiosk type mode..

      As you can probably tell, html and web development are alien to me 🙂 - but I assume I can do something basic, like create buttons that just call luup.call_action - e.g. here’s one from a plugin I created.

      Luup

      luup.call_action("urn:nodecentral-net:serviceId:Matrix1","SYCall",{ action ="I3" },1083)

      Html

      <form action="https://google.com"> <input type="submit" value="Go to Google" /> </form>

      Not sure how that luup.call_action translate to a url, but I guess it’s something like this..

      http://ip_address:3480/data_request?id=action&output_format=xml&DeviceNum=1083&serviceId=urn:nodecentral-net:serviceId:SYMatrix1&SYCall={action=I3}

      Has anyone done anything like this already, and has any examples of their own html content they can share ?

      Is there maybe something out there that can translates any Vera static .json file into something presentable on a .html page. ? I had a quick look through @amg0 AltUi content on GitHub for inspiration but that is a way more comprehensive interface, compared to the single screen look I’m going for..

      Any suggestion/advice (examples ideally) would be much appreciated..

      openLuup
    • Luup reload required after server reboot

      A

      I noticed this morning something that have seen in the past but forgotten about.

      When I restart the OpenLuup server (in my case an Ubuntu PC) the Vera and Z-way bridges do not get in contact with the corresponding servers, i.e. are shown in red in AltUI. The solution for me is to make a "Relaod Luup engine" and then they are ok. I do not know if it is a general issue or only for my setup.

      To be honest it is not much of a problem since OpenLuup is so stable. If and when you restart the server the hazzle of reloading is not that big. In fact I had forgotten about it since it was so long ago I had to restart anything...

      The one use case I can think of is that the server gets restarted due to a power outage or something and if you are not at home the system does not fully recover without manual interaction. I my case I have the server on an UPS, but still a thought.

      Is this a known issue and is it something that can be addressed somehow? As I said low priority, at least for me. 🙂

      openLuup
    • luaJIT

      rafale77

      @akbooer,

      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.

      Screen Shot 2020-07-05 at 23.11.47.png

      openLuup
    • Altui file not found errors

      B

      Here is a snippet of the log:

      2021-08-22 16:57:28.106 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/jquery-ui.css 2021-08-22 16:57:28.107 openLuup.server:: request completed (150 bytes, 0 chunks, 1 ms) tcp{client}: 0x564e387b57a8 2021-08-22 16:57:28.114 openLuup.server:: GET /etc/cmh-ludl/localcdn/font-awesome.min.css HTTP/1.1 tcp{client}: 0x564e38b3af28 2021-08-22 16:57:28.116 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/font-awesome.min.css 2021-08-22 16:57:28.116 openLuup.server:: request completed (157 bytes, 0 chunks, 1 ms) tcp{client}: 0x564e38b3af28 2021-08-22 16:57:28.117 openLuup.io.server:: HTTP:3480 connection from 10.17.1.100 tcp{client}: 0x564e385a7098 2021-08-22 16:57:28.123 openLuup.server:: GET /etc/cmh-ludl/localcdn/bootstrap.min.css HTTP/1.1 tcp{client}: 0x564e385a7098 2021-08-22 16:57:28.123 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/bootstrap.min.css 2021-08-22 16:57:28.124 openLuup.server:: request completed (154 bytes, 0 chunks, 0 ms) tcp{client}: 0x564e385a7098 2021-08-22 16:57:28.124 openLuup.server:: GET /etc/cmh-ludl/localcdn/jquery.bootgrid.min.css HTTP/1.1 tcp{client}: 0x564e387b57a8 2021-08-22 16:57:28.125 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/jquery.bootgrid.min.css 2021-08-22 16:57:28.126 openLuup.server:: request completed (160 bytes, 0 chunks, 0 ms) tcp{client}: 0x564e387b57a8 2021-08-22 16:57:28.127 openLuup.io.server:: HTTP:3480 connection from 10.17.1.100 tcp{client}: 0x564e38ea35a8 2021-08-22 16:57:28.127 openLuup.io.server:: HTTP:3480 connection from 10.17.1.100 tcp{client}: 0x564e3882e378 2021-08-22 16:57:28.133 openLuup.server:: GET /etc/cmh-ludl/localcdn/joint.css HTTP/1.1 tcp{client}: 0x564e3882e378 2021-08-22 16:57:28.134 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/joint.css 2021-08-22 16:57:28.135 openLuup.server:: request completed (146 bytes, 0 chunks, 0 ms) tcp{client}: 0x564e3882e378 2021-08-22 16:57:28.136 openLuup.io.server:: HTTP:3480 connection from 10.17.1.100 tcp{client}: 0x564e36e44d08 2021-08-22 16:57:28.136 openLuup.server:: GET /etc/cmh-ludl/localcdn/spectrum.min.css HTTP/1.1 tcp{client}: 0x564e38ea35a8 2021-08-22 16:57:28.137 openLuup.servlet:: file not found:etc/cmh-ludl/localcdn/spectrum.min.css 2021-08-22 16:57:28.137 openLuup.server:: request completed (153 bytes, 0 chunks, 0 ms) tcp{client}: 0x564e38ea35a8 2021-08-22 16:57:28.141 openLuup.server:: GET /etc/cmh-ludl/localcdn/jquery.min.js HTTP/1.1 tcp{client}: 0x564e36e44d08

      And here is a screen shot showing the files exist:

      Screenshot 2021-08-22 170642.png

      Altui will not load. Using the current openLuup dev version 2021.08.16 which was updated today. There is a forward slash in front of etc for the get but not for the file not found error.

      openLuup
    For those who registered but didn't received the confirmation email, please send an email to support@smarthome.community with the email you used

    Profiling Lua Code

    openLuup
    3
    16
    192
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • akbooer
      akbooer last edited by akbooer

      @a-lurker said in openLuup: Suggestion:

      is it possible to somehow profile openLuup [code]

      Due to the amazingly parsimonious and elegant design of Lua, it's possible to write a profiler for any Lua code (openLuup, or otherwise) in just a few tens of lines.

      Here's a profiler which counts function calls (but doesn't time them.) You use it like this:

      local profile = require "miniprofiler"
      profile "on"     -- start profiling
      
      -- run whatever code you want here
      
      profile "off"      -- turn off profiling
      print (profile)    -- print the result
      
      profile "clear"      -- clear the results to start again
      

      Note that the same object is used to configure the profile, hold the data, and format the output. I just love Lua.

      ...and here's the code for the profiler module itself (miniprofiler.lua)...

      -- miniprofiler.lua
      
      -- simple profiler for function calls
      -- @akbooer  June 2020
      
      --Use:
      --  local profile = require "miniprofiler"
      --  profile "on"       -- start profiling
      --  profile "off"      -- stop  profiling
      --  profile "clear"    -- reset counts
      --  print (profile)    -- show  results
        
      local calls = 0
      local funcs = {}
      local hook = debug.sethook
      
      local function profile(event)
        if event == "call" then
          calls = calls + 1 
          local i = debug.getinfo (2, 'n')
          local n = table.concat {(i.name or '?'), '/', i.namewhat}
          funcs[n] = (funcs[n] or 0) + 1
        end
      end
      
      local function report()
        local fcts = {}
        for n,v in pairs (funcs) do fcts[#fcts+1] = {n,v} end       -- make name index
        table.sort (fcts, function (a,b) return b[2] < a[2] end)    -- alphabetize
        local result = "%12s   %-8s   %s"
        local out = {result: format (calls, "TOTAL","Function calls")}
        local split = "^([^/]+)/(.*)"
        for _, x in ipairs(fcts) do
          local f, w = x[1]: match (split)
          out[#out+1] = result: format (x[2], w, f)
        end
        out[#out+1] = ''
        return table.concat (out, '\n')
      end
      
      local function call (_, x)
        local f = {
          on    = function () hook (profile, 'c') end,
          off   = function () hook () end,
          clear = function () for x in pairs(funcs) do funcs[x] = nil end calls = 0 end}
        do (f[x] or f.clear) () end
      end
        
      return setmetatable (funcs, {__call = call, __tostring = report})
      
      -----
      
      1 Reply Last reply Reply Quote 2
      • akbooer
        akbooer last edited by

        Just by way of example, here's the profile of a single line of code (albeit, one that you can't do in Vera) which fetches the entire history of openLuup's memory usage (probably a daily average, assuming you have the Historian enabled – in my case, about two year's worth of data)

        
        local profile = require "miniprofiler"
        profile "clear"
        
        profile "on"
        local x, t = luup.variable_get ("openLuup", "Memory_Mb", 2, {0, os.time()})
        profile "off"
        
        print (profile)
        

        Resulting in the profiler output:

         ––– 31 lines ––– 35.2 ms –––
        
               18310   TOTAL      Function calls
               10960   local      (for generator)
                7300   global     tonumber
                   7   upvalue    time
                   6   method     oldest
                   3   method     read
                   2   field      unformatted_unpack
                   2   global     type
                   2              ?
                   2   local      fct
                   2   global     ipairs
                   2   field      time
                   2   upvalue    calc_offset
                   2   field      concat
                   2   method     gmatch
                   2   method     seek
                   1   local      profile
                   1   upvalue    Wfetch
                   1   field      timenow
                   1   method     close
                   1   field      variable_get
                   1   method     variable_get
                   1   upvalue    hook
                   1   field      fetch
                   1   field      clear
                   1   field      floor
                   1   field      dsv2filepath
                   1   method     ipairs
                   1   field      open
                   1   global     pcall
        
        1 Reply Last reply Reply Quote 0
        • A
          a-lurker last edited by

          That works. Here is some AES ECB 128 running. Note how often the 8 bit XOR is called! Clearly something you would want optimised (and it is).

            782620   TOTAL      Function calls
            588814   upvalue    xor8
             76050   field      insert
             33370   field      format
             12102   field      char
              7854   upvalue    shiftRowsInverse
              7293   upvalue    mixColumnsInverse
              6194   local      (for generator)
              5849   field      concat
              5328   upvalue    band
              4532   global     tostring
              3623   global     type
              2446   upvalue    rshift
              2375   global     ipairs
              2145   upvalue    p
              1680   upvalue    shiftRowsForward
              1560   upvalue    mixColumns
              1487   global     select
              1487   upvalue    print
              1223   global     unpack
              1156   field      gettime
              1107   method     match
               902   method     format
               898   field      send
               898   upvalue    write
               898   field      current_device
               898   upvalue    formatted_time
               898   field      date
               898   method     write
               898   field      floor
               894   upvalue    debug
               894   field      log
               818   upvalue    tableDump
          
          1 Reply Last reply Reply Quote 0
          • akbooer
            akbooer last edited by akbooer

            I see that xor8 is referenced as an ‘upvalue’. You may be able to access this faster by making it a local reference. Something like...

            local xor8 = bit.xor8     -- or wherever it comes from
            

            This places the reference in one of the virtual machine registers so that it doesn’t have to search up the chain of closures to find it.

            I’ve had great success with using this to increase performance of a often-called function (over a million times) on another project I am working on, cutting overall run time to about 60% of the initial value.

            YMMV.

            1 Reply Last reply Reply Quote 0
            • A
              a-lurker last edited by

              The xor8 sits in a module ie the AES ECB 128 module and it is only called within that module - not from outside the module.

              1 Reply Last reply Reply Quote 0
              • akbooer
                akbooer last edited by akbooer

                Further to this:

                @a-lurker said in openLuup: Suggestion:

                is it possible to somehow profile openLuup to see what is really holding it up.

                and this:

                @akbooer said in openLuup: Suggestion:

                the [debug] library can be slow, so timing is not really possible at the Lua level.

                ...it occurred to me that openLuup already has the tools you need, at least at the level of plugins (rather than individual functions.)

                Each plugin has a dynamic attribute called cpu(s) with cumulative CPU time to sub-millisecond resolution. Everything you need can be wrapped into a single short function:

                local function cpu ()
                  local array
                  local function sub(a,b)
                    local s, b = array {}, b or {}
                    for n,v in pairs(a) do s[n] = b[n] and v - b[n] or nil end
                    return s
                  end
                  local function str(x)
                    local con = table.concat
                    local time, info = "%8.3f", "%12s %8s %s"
                    local b = {info: format ("(s.ms)", "[#]", "device name")}
                    for n,v in pairs(x) do 
                      local name = luup.devices[n].description: match "%s*(.*)"
                      b[#b+1] = info: format (time: format(v), con{'[', n, ']'}, name)
                    end
                    return con (b, '\n')
                  end
                  function array (x) setmetatable (x, {__sub = sub, __tostring = str}) return x end
                  local t = array {}
                  for i, d in pairs (luup.devices) do t[i] = d.attributes["cpu(s)"] end
                  return t
                end
                

                This returns a table with snapshot of the current cpu(s) attribute of all plugins.

                local T = cpu()
                print (pretty(T))
                

                which shows (for my test system):

                {nil,0.029998,183.22298999998,0,
                  [13] = 14753.573033043,
                  [16] = 57.727522,
                  [17] = 3020.1334680015,
                  [18] = 3721.1430400028,
                  [20] = 2054.268114,
                  [42] = 11.429613,
                  [48] = 13080.996162966,
                  [70] = 7731.7173460024
                }
                

                ...but it's better than that, since you can simply print it and get a nice formatted output:

                print "TOTAL plugin time"
                print (T)
                

                which looks like this:

                 TOTAL plugin time
                      (s.ms)      [#] device name
                       0.030      [2] openLuup
                     183.173      [3] Alternate UI
                       0.000      [4] Alternate App Store
                   13077.346     [48] Philips hue
                    7729.377     [70] Studio hue
                      57.728     [16] BBB Sonos (Study)
                    3019.473     [17] Vera 0
                    3720.243     [18] Vera 1
                    2053.798     [20] Netatmo
                      11.430     [42] DarkSky Weather
                   14749.333     [13] Vera Edge
                

                ...but it's even better than that, because you can do math with this object, so calling it again, you can then print the incremental change between the two CPU time snapshots:

                local T2 = cpu()
                print "Time since last call"
                print (T2 - T)
                

                giving:

                 Time since last call
                      (s.ms)      [#] device name
                       0.000      [2] openLuup
                       0.030      [3] Alternate UI
                       0.000      [4] Alternate App Store
                       0.000     [20] Netatmo
                       0.640     [17] Vera 0
                       2.290     [13] Vera Edge
                       1.300     [70] Studio hue
                       0.000     [42] DarkSky Weather
                       2.370     [48] Philips hue
                       0.000     [16] BBB Sonos (Study)
                       0.790     [18] Vera 1
                

                At the moment you'll have to copy this function and use it directly, but I'll include it as part of the openLuup extensions in the next release:

                local T = luup.openLuup.cpu
                

                or something like that.

                HTH.

                1 Reply Last reply Reply Quote 1
                • akbooer
                  akbooer last edited by

                  @akbooer said in Profiling Lua Code:

                  I'll include it as part of the openLuup extensions in the next release:

                  Done!

                  1 Reply Last reply Reply Quote 0
                  • A
                    a-lurker last edited by

                    Works great - thanks for this. And the top contenders are:

                    EKM meter plugin
                    AltUI
                    AltHue Philips Hue
                    VeraBridge
                    Paradox IP150 web page scraper
                    SMA Inverter
                    DataYours

                    EKM meter plugin, which I wrote and uses the 'incoming' stuff on a byte by byte basis - only runs every 30 secs - pathetic. Needs a rewrite: down another rabbit hole. Paradox IP150 web page scraper: another of mine. Runs every second. Been doing a rewrite in the hope of speeding it up but I don't think it will make any difference. SMA Inverter; also mine: runs every 5 mins. Uses UDP with sockets - not too bad. The EKM meter takes up 16 time more time than the SMA inverter.

                    I went through the openLuup code - I looked and looked - but couldn't find the bit of code where you alter the openLuup time to always be about 1/100,000 of the top contender. 🙂

                    It might be easier to purchase a new RasPi 4 to replace the current RasPi 3- - whoops, I hope it's not listening.

                    1 Reply Last reply Reply Quote 0
                    • akbooer
                      akbooer last edited by

                      These:

                      • AltUI
                      • AltHUE
                      • VeraBridge

                      ...all poll in one way or another, and may well spend time converting to/from JSON. Usual to see larger numbers here. Installing Cjson will help VeraBridge.

                      The openLuup plugin, itself, runs very rarely. What you’re not seeing is the openLuup system itself, scheduler, Historian, etc., but that is, of course, lightning fast.

                      1 Reply Last reply Reply Quote 0
                      • A
                        a-lurker last edited by

                        I have cjson installed. Crumpets again? Polling is a real killer in all this stuff.

                        1 Reply Last reply Reply Quote 0
                        • akbooer
                          akbooer last edited by

                          No, just cereals and OJ on a weekday.

                          I’m surprised that DataYours makes the list. Although retrieving large amount of data and plotting take time, normal incremental database updates should be fast. You never moved to using the Data Historian? Not a top priority, though.

                          1 Reply Last reply Reply Quote 0
                          • A
                            a-lurker last edited by

                            Data Historian? So much stuff and so little time. I should have got a CBUS system and paid for the man to come in when it needed tweaking. Living off muesli with fruit here.

                            Seriously though, I hoping people will be able to find ways to improve their plugins, based on the info provided in this new report. If it's representative of what's actually going on, it should be useful. However, it may not represent what's causing actual traffic jams ie demand for resources all occurring simultaneously and holding up the scheduling.

                            akbooer 1 Reply Last reply Reply Quote 0
                            • rafale77
                              rafale77 last edited by rafale77

                              I never got hooked to DM myself, even when I first tried it... Data historian is a fantastic implementation!

                              1 Reply Last reply Reply Quote 0
                              • akbooer
                                akbooer @a-lurker last edited by akbooer

                                @a-lurker said in Profiling Lua Code:

                                based on the info provided in this new report. If it's representative of what's actually going on, it should be useful.

                                I’ve improved upon it (hopefully) by adding a wall-clock time (per plugin) measurement in the latest development release (v20.6.29). The measurements are as good as I can possibly make them, given the underlying tools (os.clock(), socket.gettime()) and wrapped directly in the context_switch() routine which is the heart of the scheduler.

                                In the example below, for a machine running three VeraBridges, amongst other things, you can see that two of the bridges are running at a ratio of 1.1, whereas the other is 1.5. There's a good reason for this, since that bridge is not using asynchronous HTTP, so wastes time waiting for the synchronous request response. I think that's also true for the AltHue plugin.

                                Screenshot_2020-06-29 openLuup.png

                                Indeed, the numbers are only long(ish)-term averages, and don’t necessarily represent transient hold-ups. I suspect any further diagnostic, like queue length statistics, would become too obscure to be useful.

                                1 Reply Last reply Reply Quote 0
                                • A
                                  a-lurker last edited by a-lurker

                                  Have tried out the new console Wall clock to CPU clock feature, etc. Very good addition.

                                  So I find that one plugin has a Wall clock to CPU clock ratio of 352.7 to 1.

                                  The plugin monitors the status of a AV device every 30 seconds by sending a HTTP request to the device and gets an XML response containing all the status. Now this AV device is fully powered off most of the day. So the HTTP call times out every 30 seconds (uses a one second request timeout). The plugin uses this to decide if the AV device is powered on or not.

                                  So the question is: do these ongoing and regular timeouts sap resources to any significant degree or not. Likewise will it diminish overall I/O capability. If so, what is the best approach to improving this?

                                  I looked at: http_async.lua but I don't see how it could help in this scenario.

                                  1 Reply Last reply Reply Quote 0
                                  • akbooer
                                    akbooer last edited by akbooer

                                    If the timeout is on the HTTP request when sent, then async isn’t going to help (as it currently stands.)

                                    Yes, the blocking request will steal one second in every thirty from the entire openLuup system.

                                    Try using PING to test whether the device is up?

                                    1 Reply Last reply Reply Quote 0
                                    • First post
                                      Last post

                                    Welcome. If you’d like to participate in the discussion, rather than just read, then you can join the forum. As a member, you can interact with others here to share your experience and ask the questions you need answered.

                                    Powered by NodeBB | Contributors
                                    Hosted freely by PointPub Media Communications Inc. | Contact us