Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Unsolved
Collapse
Discussion Forum to share and further the development of home control and automation, independent of platforms.
  1. Home
  2. openLuup
  3. Plugins
  4. MQTT Plugin
openweather plugin ?
DesTD

Hey guys....

long time 😉

Since Dark weather is no more active, thanks Apple. Anyone switch to openweather to get weather data ?

Plugins
Openluup: Datayours
D

Hi akbooer,

I've an installation with a centralized openluup/DY on Debian 11 where're archived and consolidated several remote openluup/DY on RPI. I'm also using a user-defined (defined with your support) "DataUser.lua" to process metrics and creating different metric names. I've a schema of this configuration but I can't upload on forum.
I'd like to manage outage network connections between remote and centralized system while the remote DY is running and archives data locally.
I see the whisper-fill.py python routine (https://github.com/graphite-project/whisper/blob/master/bin/whisper-fill.py) from Graphite tool. I know that DY/whisper format is different from Graphite/whisper (CSV vs. binary packing), but based on your deep knowledge and experience is it hard to adapt the fill routine to DY/whisper format ?

tnks

donato

Plugins
openLuup: Shelly Bridge plugin
akbooerA

Feedback / solutions with openLuup's built-in Shelly bridge.

Plugins
zigbee2mqtt and openLuup
A

Been using zigbee2mqtt and openLuup for sometime now and it is working well.

I attempted to add another Hue switch to-day. It's a newer version of the other ones I have been using so far. They are pretty much identical.

The older ones installed no problem (which is weird), but the new one won't. Looking at the code, it looks this function in L_Zigbee2MQTTBridge.lua:

configure_scene_controller(dno)

is not being passed the parameter "dno" when the function is called. The device is created but is incomplete.

Just out of interest how do you pretty print to the log from within say L_Zigbee2MQTTBridge.lua? I tried a few incarnations such a:

local pretty = openLuup.loader.shared_environment.pretty

but they all failed.

Plugins
UPnP event proxy plugin using systemd service file
A

Originally I was using Futzle's UPnP event proxy plugin on Vera with the Sonos plugin. Worked very well.

On making the move to openLuup, one finds that the proxy can't be used because the proxy daemon start and stop, etc uses a script installed by the plugin that only works on openWRT, as used by Vera.

The Sonos plugin still works without the proxy but it reverts to polling. It becomes a bit on the sluggish side and sometimes doesn't function quite as intended.

I've modified the proxy plugin to install a script that runs as a systemd service. systemd can be found on a lot of contemporary Linux installs, including Raspberry Pis. To make use of; just install the plugin from the AltUI app store and restart the Luup engine a couple of times. The dashboard should indicate "Status: Proxy running".

Note that the service file expects "L_UPnPProxyDaemon.lua" to be located at the typical plugin files location:

/etc/cmh-ludl/

After the plugin is installed, the service file should be found in:

/etc/systemd/system/

as UPnPProxy.service.

If you use the Sonos plugin, you need to change the variable "UseProxy" to "1" and restart the LuupEngine. In the Sonos parent device, you should see: "Running x zones; proxy detected".

Updated doco here.

Hope it works - YMMV.

Plugins
Sonos system alerts truncated
A

Well pretty sure I didn't change or touch anything! I've turned everything on and off again as one might hope. Excepting a total reboot of the Pi3 that's running all my stuff very reliably in openLuup.

It's all been working well for years and now all of sudden 6 second alerts are truncated to about 4 seconds. Occasionally it works as it should. I see this in the log - does it help?

2023-02-20 09:39:06.662 luup_log:0: My Lua ver 0.50 debug: executing scene 63: "Check windows doors" in room: "Watchers" 2023-02-20 09:39:06.663 luup.call_action:: 217.urn:micasaverde-com:serviceId:Sonos1.Alert 2023-02-20 09:39:06.663 luup.call_action:: action will be handled by parent: 214 2023-02-20 09:39:06.663 luup_log:0: My Lua ver 0.50 debug: rest of scene 63 was executed 2023-02-20 09:39:06.663 luup.scenes:: scene 63, Check windows doors, initiated by AltUI 2023-02-20 09:39:06.665 luup_log:214: Sonos: Alert action on device 217 URI "http://redacted:3480/www/sounds/AllClosed.mp3" duration "6" 2023-02-20 09:39:06.758 luup_log:214: Sonos: UPnP_request (Pause, urn:schemas-upnp-org:service:AVTransport:1): status=1 statusMsg=500 result=[<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><s:Fault><faultcode>s:Client</faultcode><faultstring>UPnPError</faultstring><detail><UPnPError xmlns="urn:schemas-upnp-org:control-1-0"><errorCode>701</errorCode></UPnPError></detail></s:Fault></s:Body></s:Envelope>] 2023-02-20 09:39:06.759 luup_log:214: stack traceback: ./L_SonosSystem1.lua:265: in function 'error' ./L_SonosUPnP.lua:289: in function <./L_SonosUPnP.lua:169> (tail call): ? ./L_SonosSystem1.lua:3390: in function 'sayOrAlert' ./L_SonosSystem1.lua:3452: in function 'queueAlert' ./L_SonosSystem1.lua:3843: in function <./L_SonosSystem1.lua:3839> (tail call): ? [C]: in function 'pcall' ./openLuup/scheduler.lua:204: in function 'context_switch' ./openLuup/scheduler.lua:366: in function 'dispatch' ./openLuup/scheduler.lua:588: in function 'task_callbacks' ./openLuup/scheduler.lua:699: in function 'start' openLuup/init.lua:354: in main chunk [C]: ? 2023-02-20 09:39:06.888 luup.variable_set:: 214.urn:toggledbits-com:serviceId:SonosSystem1.zoneInfo was: {"zones":{"RINCON_000E58DC7BBE01400":{"Location":"http://redacted3:1400/xml/device_description.xml","Group":"RIN... now: {"zones":{"RINCON_000E58DC7BBE01400":{"Location":"http://redacted3:1400/xml/device_description.xml","Group":"RIN... #hooks:0 2023-02-20 09:39:06.895 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.TransportState was: STOPPED now: TRANSITIONING #hooks:0 2023-02-20 09:39:06.901 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentPlayMode was: SHUFFLE_NOREPEAT now: NORMAL #hooks:0 2023-02-20 09:39:06.913 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentTransportActions was: Set, Stop, Pause, Play, X_DLNA_SeekTime, Next, X_DLNA_SeekTrackNr now: Set, Stop, Pause, Play, X_DLNA_SeekTime, X_DLNA_SeekTrackNr #hooks:0 2023-02-20 09:39:06.921 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.NumberOfTracks was: 10 now: 1 #hooks:0 2023-02-20 09:39:06.922 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.AVTransportURI was: x-rincon-queue:RINCON_000E58DC7BBE01400#0 now: http://redacted:3480/www/sounds/AllClosed.mp3 #hooks:0 2023-02-20 09:39:11.929 luup_log:214: Sonos: UPnP_request() "urn:schemas-upnp-org:service:AVTransport:1"#"GetPositionInfo" action took 5.0073010921478s (long) 2023-02-20 09:39:11.932 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentTrackDuration was: 0:02:22 now: 0:00:00 #hooks:0 2023-02-20 09:39:11.933 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentTrackURI was: x-file-cifs://ELEPHANT1/Multimedia/My%20Music/Music%20JP/The%20Smiths/The%20Queen%20Is%20Dead/08%20Vicar%20in%20a%2... now: http://redacted:3480/www/sounds/AllClosed.mp3 #hooks:0 2023-02-20 09:39:11.934 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentTrackMetaData was: <DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r... now: <DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r... #hooks:0 2023-02-20 09:39:11.936 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentStatus was: Vicar in a Tutu: (The Smiths, The Queen Is Dead) now: AllClosed.mp3 #hooks:0 2023-02-20 09:39:11.937 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentTitle was: Vicar in a Tutu now: AllClosed.mp3 #hooks:0 2023-02-20 09:39:11.937 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentArtist was: The Smiths now: #hooks:0 2023-02-20 09:39:11.938 luup.variable_set:: 217.urn:upnp-org:serviceId:AVTransport.CurrentAlbum was: The Queen Is Dead now: #hooks:0

Also see these:

2023-02-24 16:12:13.576 openLuup.server:: GET /www/sounds/YouRang.mp3 HTTP/1.1 tcp{client}: 0x17e96f0 2023-02-24 16:12:13.579 openLuup.server:: error 'closed' sending 43102 bytes to tcp{client}: 0x17e96f0

So any clues?

Plugins
Generic support for vacuums
therealdbT

I've got myself a nice Ecovacs Deebot 950, because one of the Roombas is getting really old (12 years and still going strong). It's my first one connected to WiFi, since the others are legacy. I've found a nice mqtt library and it's already pushing to my broker in real time, but I'm wondering if there's a generic device template and/or service, otherwise I'll start building one and I'll try to keep it as much generic as possible.

Plugins
Switchboard plugin
D

Hi,
I've installed switchboard plugin from openluup app store but I'm not sure which action to use to create a binary switch. I try "addswitch" action but I see the device only after using the "addchild" action too. is it correct ?

Attached the openluup device screen, the control switchboard and the actions i see.

tnks donato

switchboard_openluup_console.png

Plugins
Cannot publish new version in ALTAPP Store
M

Hi @akbooer,

I have an updated version of one of my plugins but I cannot publish it in the ALTApp Store. When I click publish it gets in a sort of loop of Refreshing Token.../Token refreshed. However, I never get to page to refresh the token.

Looking at the browser debug window I see this as the response to http://192.168.178.101:3480/data_request?id=lr_ALTUI_Handler&command=refresh_auth_token
{"error":{"code":400,"message":"Bad Request - invalid_grant","step":"Get access token from refresh token"}}

Running openLuup v21.7.25. Any suggestion?

Cheers Rene

Plugins
openLuup: UI Device / Tile Text
parkercP

Hi,

Sorry if I missed it but how do I update the .json file of my plugins so that I can make the text/content visible on the tile itself, via openLuup/ALTui dashboard ?

The same plugins on Vera show the content ?

BF995483-F9E0-4FCE-8EE6-AE56AFDEEA00.jpeg

Plugins
Reactor scope issues
B

Hi Patrick/AK Booer

I am able to see Reactor expressions in the AltUI UI per the below and the expressions work as they should in my reactor sensors. When an expression changes, the reactor sensor responds accordingly.

javascript.png

However, I cannot see the expressions in luup state variables or the luup logs:

Luup.png

Log.png

I tried reinstalling openLuup (latest development) and when that failed to change the noted behavior, I reinstalled lua5.1. There was also no change. Rebooting the machine also produced no change.
I suspect this is an openLuup issue as I also see nil values for some plugins:

plugin.png

And other plugins are fine:

2022-01-12 20:47:12.027 luup.variable_set:: 63.urn:upnp-micasaverde-com:serviceId:Weather1.CurrentDewPoint was: 32 now: 29.7 #hooks:0 2022-01-12 20:47:12.028 luup.variable_set:: 63.urn:upnp-micasaverde-com:serviceId:Weather1.WindSpeed was: 1.76 now: 2.8 #hooks:0 2022-01-12 20:47:12.028 luup.variable_set:: 63.urn:micasaverde-com:serviceId:HumiditySensor1.CurrentLevel was: 30 now: 27 #hooks:0 2022-01-12 20:47:12.028 luup.variable_set:: 65.urn:micasaverde-com:serviceId:HumiditySensor1.CurrentLevel was: 30 now: 27 #hooks:0 2022-01-12 20:47:12.028 luup.variable_set:: 63.urn:upnp-micasaverde-com:serviceId:Weather1.LastUpdate was: 1642047430 now: 1642049231 #hooks:0

Any ideas on how to troubleshoot this.....

Plugins
Virtual Devices Plug-in update (with async HTTP support)
therealdbT

I just published an update to my Virtual Devices Plug-in.

What's new in version 1.5:

support for async HTTP (out of the box on openluup, just download https://github.com/akbooer/openLuup/blob/master/openLuup/http_async.lua and copy with the plug-in files on Vera) experimental support for setpoints management in Virtual Heaters (you know, the device will turn itself off if temperature is reached, and automatically on when temperature is not beyond the setpoint) external device for temperature in Virtual Heaters (just set urn:bochicchio-com:serviceId:VirtualHeater1/TemperatureDevice variable) small fixes, stabilization

Grab your copy from https://github.com/dbochicchio/vera/tree/master/VirtualDevices

As always, 100% local, 100% apps friendly, 100% supported by Alexa (and Google Home, I guess).

Plugins
AltUI will not update under openLuup (Vera: not sure what it does)
A

This topic has come up before but I haven't seen an answer. Symptom: AltuUI says there is a new update available, so you tell it to do the update but the update does not happen. AltUI remains stuck on it's old version. On other occasions it works OK. So my version is:

AltUI v2.49.2546, © 2019

AltUI says this:

a newer version #2551 of ALTUI is available, do you want to upgrade ? add scrollable dialog for long boxes bugfix: clock display on safari remote url update ( @olov ) update jquery and bootstrap versions credential to camera device url ( @rafale77 ) ignore Ezlo hub ( @reneboer)

Track through the JavaScript and find that this issues the update command:

function _triggerAltUIUpgrade(newversion,newtracnum) { var url = '?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=CreatePlugin&PluginNum=8246&Version={1}&TracRev={0}'.format(newversion,newtracnum); return _httpGet(url,{}).always( function() { PageMessage.message(_T("Upgrade Request succeeded, a Luup reload will happen"),"success"); }); };

And the url variable equals:

url: "?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=CreatePlugin&PluginNum=8246&Version=40628&TracRev=2551"

All looks good so far. I manually issue the same url complete with my openLuup ip_address in a local browser. Update fails - looks like AltUI is doing as it should:

http://ip_address:3480/data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=CreatePlugin&PluginNum=8246&Version=40628&TracRev=2551

In openLuup I see:

2021-12-06 13:56:14.821 luup_log:3: ALTUI: startupDeferred, called on behalf of device:3 2021-12-06 13:56:14.838 luup.variable_set:: 3.urn:upnp-org:serviceId:altui1.Version was: v2.49 now: v2.49 #hooks:0

And then later:

2021-12-06 13:55:58.256 openLuup.server:: GET /data_request?id=action&serviceId=urn:micasaverde-com:serviceId:HomeAutomationGateway1&action=CreatePlugin&PluginNum=8246&Version=40628&TracRev=2551 HTTP/1.1 tcp{client}: 0x25712a8 2021-12-06 13:55:58.257 luup.call_action:: 0.urn:micasaverde-com:serviceId:HomeAutomationGateway1.CreatePlugin 2021-12-06 13:55:58.259 luup.call_action:: 4.urn:upnp-org:serviceId:AltAppStore1.update_plugin 2021-12-06 13:55:58.260 luup_log:4: AltAppStore : starting <run> phase... 2021-12-06 13:55:58.262 luup_log:4: AltAppStore : downloading amg0/ALTUI [2551] to trash/AltAppStore/ 2021-12-06 13:55:58.262 luup_log:4: AltAppStore : GitHub request: https://api.github.com/repos/amg0/ALTUI/contents?ref=2551 2021-12-06 13:55:58.760 luup_log:4: AltAppStore : GitHub request: https://api.github.com/repos/amg0/ALTUI/contents/blockly?ref=2551 2021-12-06 13:55:59.543 luup_log:4: AltAppStore : getting contents of version: 2551 2021-12-06 13:55:59.544 luup.variable_set:: 4.urn:upnp-org:serviceId:altui1.DisplayLine1 was: AltAppStore now: Downloading... #hooks:0 2021-12-06 13:55:59.544 luup.variable_set:: 4.urn:upnp-org:serviceId:altui1.DisplayLine2 was: now: Alternate UI #hooks:0 2021-12-06 13:55:59.544 luup_log:4: AltAppStore : scheduling <job> phase... 2021-12-06 13:55:59.544 openLuup.requests:: 2021-12-06 13:55:59.545 openLuup.server:: request completed (148 bytes, 1 chunks, 1288 ms) tcp{client}: 0x25712a8 2021-12-06 13:55:59.554 openLuup.server:: request completed (6233 bytes, 1 chunks, 16442 ms) tcp{client}: 0x255e680 2021-12-06 13:55:59.555 luup_log:4: AltAppStore : ...final <job> phase 2021-12-06 13:55:59.555 luup_log:4: AltAppStore : Total size 0.000 (kB) 2021-12-06 13:55:59.555 luup.variable_set:: 4.urn:upnp-org:serviceId:altui1.DisplayLine2 was: Alternate UI now: Alternate UI 100% #hooks:0 2021-12-06 13:55:59.555 luup_log:4: AltAppStore : updating icons in icons/ ... 2021-12-06 13:55:59.555 luup_log:4: AltAppStore : updating device files in ./ ... 2021-12-06 13:55:59.556 luup_log:4: AltAppStore : ... 0 icon files 2021-12-06 13:55:59.556 luup_log:4: AltAppStore : ... 0 device files 2021-12-06 13:55:59.556 luup_log:4: AltAppStore : Alternate UI update completed 2021-12-06 13:55:59.556 openLuup.luup:: device 4 'Alternate App Store' requesting reload 2021-12-06 13:55:59.556 luup.reload:: saving user_data 2021-12-06 13:56:00.262 openLuup.luup:: exiting with code 42 - after 0.3 hours

All looks OK. Then I check GitHub. It shows the latest changes to the version 2551. However this page says the latest version is 2550.

So I wondering what's going on. Seems the latest version number is not being picked by the installer? (not sure how it works.) Is it possible for openLuup to log a bit more about the version it's trying to install. As this call returns.

https://api.github.com/repos/amg0/ALTUI/contents?ref=2551 message "No commit found for the ref 2551" documentation_url "https://docs.github.com/v3/repos/contents/"

But this works fine:

https://api.github.com/repos/amg0/ALTUI/contents?ref=2550

So it looks like AMG0 doesn't always update the repository with whatever is needed to get this to work (I imagine that's easy to forget). But could openLuup send back a fail result to AltUI and AltUI pick that up? Currently it looks like AltUI always assumes everything went OK. Or somehow; could openLuup log and/or notify the user what went wrong?

Plugins
Reactor: double click action
R

Hi @toggledbits and others,

Could you help me out with the following use case? I have a z-wave module that doesn't have scene functionality, but I want to trigger a double click action on the switch.

What is the easiest way to do this in reactor? I'm struggling with this and I think I'm thinking too complex at this point.

Plugins
Virtual Pronto Remote plugin
A

Well, I disappeared down a rabbit hole on a different mission and resurfaced with this monstrosity.

What does it do?

It translates button functions for various (certainly not all) IRP protocols to Pronto codes. These can then be sent by a plugin that sends Pronto Codes to IR transmitters - such as the BroadLink Plugin or the GC100 Plugin (or similar).

The IRP protocol "Device", "Subdevice" and "Function" numbers are stored in a json file as buttons for "virtual remotes".

So you could have say three physical IR transmitters and want to command different AV devices (ie TVs, AVR, Xmas tree, etc) in the vicinity of those various IR emitters.

The button codes are far less cumbersome than heaps of pronto codes. You can set up a virtual remote for each AV device in the json file. Each physical emitter can be assigned to any virtual remote. And away you go!

Well - you already have a pile of pronto codes already running just fine? However, as the plugin "manufacturers" pronto codes, you could also use it to scan/search for functions for any AV device you may have. GitHub has an example for Pioneer: SearchForButtonCodes.lua

Read about the IRP protocol

Find "Device", "Subdevice" and "Function" codes:

IR database

Plugin details in:

GitHub

Install via AltUI:

Plugins available via AltUI

Version 0.51
Initial release.

Version 0.52
Add RC6 format: includes Windows Media Center based items eg Intel NUCs, Xboxes, Kodi, etc

Panasonic plasma TV json.jpg

Panasonic plasma TV web page.jpg

Plugins
openLuup: SmartSwitch plugin
akbooerA

This plugin was updated by @vosmont to run under openLuup (and possibly UI7.)

@DesT recently asked for a slight addition to its functionality, so I'm adding this thread to discuss the changes.

Plugins
Reactor icons for local lan
B

@toggledbits Hi Patrick. I had my internet go down for about 12 hours the other day, and that experience encouraged me to work on getting my HA off the cloud to the extent that I can. I have not converted my Veras to local devices yet, though after the next VeraPlus stable firmware release, I will probably run your scripts to localize the device as I don't see Ezlo surviving to maintain Vera firmware.

My question concerns the icons in your plugins. While attempting to mod a reactor sensor during the outage, I could not really do anything (without a sense of risk anyway) as the icons used are pulled from your website. Many Vera plugins operate this way--no doubt to save space on the vera, and my inclination was to manually start downloading what I needed when the outage was over. I run everything on openLuup and space is not an issue. It occurred to me that localizing a plugin could be a button push somewhere in the plugin UI where one could auto download any needed icons and the plugin would recognize the local copy first, before trying the cloud.

Could this be a possible enhancement to your plugins? I don't really have a technical grasp of whether this would be workable or not.

Plugins
openLuup: Tasmota MQTT Bridge
akbooerA

Feedback / solutions for openLuup's built-in Tasmota MQTT bridge.

Plugins
AltUi
C

I reinstalled the AltUi plugin on OpenLuup and I no longer access its web interface
I have the following error:
error in callback [lr_ALTUI_Handler]: ./dkjson.lua:397: bad argument # 1 to 'strfind' (string expected, got nil)
Can someone help me?
OpenLuup version 2021.05.08

Plugins
AltUI sort?
CatmanV2C

Am I losing it or did there used to be a sort either alphabetically or numerically option on devices in AltUI?

Seems to not be there there?

TIA

C

Plugins

MQTT Plugin

Scheduled Pinned Locked Moved Plugins
72 Posts 8 Posters 9.8k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • therealdbT Offline
    therealdbT Offline
    therealdb
    wrote on last edited by
    #21

    Slightly OT. Overall I like lua, but I miss the simple approach to non-blocking code offered by c# and even JavaScript. That’s particularly bad when doing network/http call, because it’s very difficult to write async code.

    --
    On a mission to automate everything.

    My MS Reactor contrib
    My Luup Plug-ins

    1 Reply Last reply
    0
    • akbooerA Offline
      akbooerA Offline
      akbooer
      wrote on last edited by
      #22

      There’s no fundamental difficulty in writing non-blocking I/O. The openLuup server module and scheduler allow callbacks on incoming. The HTTP async code has a separate module simply because of its entanglement within the LuaSocket HTTP module.

      therealdbT 1 Reply Last reply
      0
      • therealdbT Offline
        therealdbT Offline
        therealdb
        replied to akbooer on last edited by
        #23

        @akbooer said in MQTT Plugin:

        There’s no fundamental difficulty in writing non-blocking I/O.

        well, I was speaking about an async/await first approach, with lambdas/promises. co-routines are just OK.
        maybe I'm too biased because I'm used to the other approach and I still spend most of my time writing C#/Javascript instead of LUA. I wish it was simpler - let's say - to execute 3 HTTP calls under Vera in parallel, each having its own response handler inline.

        --
        On a mission to automate everything.

        My MS Reactor contrib
        My Luup Plug-ins

        akbooerA 1 Reply Last reply
        0
        • akbooerA Offline
          akbooerA Offline
          akbooer
          replied to therealdb on last edited by
          #24

          @therealdb said in MQTT Plugin:

          I wish it was simpler - let's say - to execute 3 HTTP calls under Vera in parallel, each having its own response handler inline.

          So this isn't good enough...?

          local async = require "http_async"
          
          async.request ("http://request1",
            function  (response, code, headers, statusline)
              -- response code 1 here
            end)
          
          async.request ("http://request2",
            function  (response, code, headers, statusline)
              -- response code 2 here
            end)
          
          async.request ("http://request3",
            function  (response, code, headers, statusline)
              -- response code 3 here
            end)
          
          1 Reply Last reply
          0
          • therealdbT Offline
            therealdbT Offline
            therealdb
            wrote on last edited by
            #25

            Oh, I missed this.
            It could greatly benefit to my own HTTP plug-in. Any plan to release as a plug-in on Vera itself?

            --
            On a mission to automate everything.

            My MS Reactor contrib
            My Luup Plug-ins

            1 Reply Last reply
            0
            • akbooerA Offline
              akbooerA Offline
              akbooer
              wrote on last edited by akbooer
              #26

              Yes, it already works on Vera.

              1 Reply Last reply
              0
              • akbooerA Offline
                akbooerA Offline
                akbooer
                wrote on last edited by
                #27

                ...if you excuse a link to the other place:

                May 11, 2019

                openLuup: Asynchronous I/O

                openLuup: Asynchronous I/O

                The latest openLuup development release has a new file in the openLuup/ folder: http_async.lua. This now implements asynchronous HTTP and HTTPS requests (depending on which scheme is provided in the requested URL.) If you want to use it, you simply require it in your code like this: local async...

                1 Reply Last reply
                1
                • rafale77R Offline
                  rafale77R Offline
                  rafale77
                  wrote on last edited by rafale77
                  #28

                  Well my frustration is not so much with http, though I did have my run ins with it and ended up using libcurl due to... digest not working somehow on luajit with luasocket but at this moment, I am finding that:

                  1. the luarocks version of the MQTT library uses the luasocket in a blocking fashion. It does connect fine to the MQTT broker though.
                  2. the vera-mqtt plugin is full of little bugs causing it to not work as a subscription client. For example the library fails to declare the socket variable, It crashes with an empty socket call to SSL when SSL is not needed etc... I have not been able to make it connect to the mosquitto broker even after fixing all the problems I found...

                  Sadly, I may have to move back to python and have home-assistant being the MQTT bridge.

                  K 1 Reply Last reply
                  0
                  • therealdbT Offline
                    therealdbT Offline
                    therealdb
                    wrote on last edited by
                    #29

                    As I already said, I wrote my own bridge in c#. I might make it more general purpose and release it. It’s a process running inside .net core and as ha-bridge could be installed separately, but pointing to openluup.
                    Let’s see if I find some motivation. It’s very lightweight, since it’s just one library running in a console app, and .NET Core 3.1 is very performant.

                    --
                    On a mission to automate everything.

                    My MS Reactor contrib
                    My Luup Plug-ins

                    1 Reply Last reply
                    1
                    • K Offline
                      K Offline
                      kfxo
                      replied to rafale77 on last edited by
                      #30

                      @rafale77 said in MQTT Plugin:

                      1. the vera-mqtt plugin is full of little bugs causing it to not work as a subscription client. For example the library fails to declare the socket variable, It crashes with an empty socket call to SSL when SSL is not needed etc... I have not been able to make it connect to the mosquitto broker even after fixing all the problems I found...

                      Sadly, I may have to move back to python and have home-assistant being the MQTT bridge.

                      I have had good success with the plugin I linked to above. Currently I have 9 different child devices subscribing to at least 15 different topics. I did modify the plugin slightly, not to get it to work, but to allow for child devices to have any designated number of subscriptions, include availability, state, and command topic subscriptions, and I added actions/functions for reconnecting to the mqtt server and reconnecting subscriptions.

                      1 Reply Last reply
                      0
                      • rafale77R Offline
                        rafale77R Offline
                        rafale77
                        wrote on last edited by
                        #31

                        Well I made some progress and got it to connect to the broker but it is extremely fragile. Digging into it deeper, it actually relies on a periodic call of a "handler" function in the library to check for messages from the broker. The call fails regularly and is not very well written in the sense that it defeats the purpose of MQTT by doing a poll.
                        There are a number of forks of this library which attempted various fixes and they have had various degree of success.
                        Not judging the plugin itself but rather the MQTT library. I actually took quite a bit from the plugin for these tests. Still work in progress but I am pretty pessimistic.

                        1 Reply Last reply
                        0
                        • rafale77R Offline
                          rafale77R Offline
                          rafale77
                          wrote on last edited by rafale77
                          #32

                          Update: I now have a kind of a working solution and it is interesting...
                          The fundamental problem is that setting up an MQTT client to listen to the broker blocks the luasocket and therefore openLuup.
                          The two libraries use different approaches to the problem.
                          The older library used by the vera MQTT plugin uses a handler function which polls the broker and gets and closes immediately regardless of getting a message or not. It therefore won't block the luasocket but it comes back empty 99% of the time and really relies on luck to catch a message as it can miss them. Basically unusable.
                          The newer lua library does the same but waits for a message back and blocks the luasocket while waiting. If one sets a high polling frequency without getting a message back, openLuup hangs. My solution to this has been to significantly increase the frequency of messages from the publishing client to unblock the socket. It really is no longer event based and this generates a lot of traffic.

                          If anyone has better suggestions (@therealdb I look forward to your bridge). I am also thinking that openLuup could use moving all its http traffic from luasocket to libcurl...

                          Edit:

                          I ended up giving up on trying to make it work with luasocket and spent 2min setting up 4 MQTT subscriptions on Home Assistant and another 10 to build the bridges back into openLuup. I really hoped to be able to do have a direct pipe into openLuup...

                          akbooerA B 2 Replies Last reply
                          0
                          • therealdbT Offline
                            therealdbT Offline
                            therealdb
                            wrote on last edited by
                            #33

                            @rafale77 right now I'm using it to process incoming messages and update variables on Vera/Openluup. Do you want to call service endpoints as well? I can make it really generic and call HTTP endpoints, if needed. So you can
                            I don't use it so much to send messages, but I think we could add this later, if needed.
                            I can also try to put a relay feature, to receive incoming messages and then publish them back to another broker.

                            It's based on a JSON config file and you have to map it manually, but then it's transparent. Give me a couple of days to polish and I'll publish it on GitHub, with instructions on how to build, and install it.

                            --
                            On a mission to automate everything.

                            My MS Reactor contrib
                            My Luup Plug-ins

                            1 Reply Last reply
                            0
                            • akbooerA Offline
                              akbooerA Offline
                              akbooer
                              replied to rafale77 on last edited by
                              #34

                              @rafale77 said in MQTT Plugin:

                              The fundamental problem is that setting up an MQTT client to listen to the broker blocks the luasocket and therefore openLuup.
                              The two libraries use different approaches to the problem.

                              This just sounds like a lack of understanding on behalf of the module authors, ...or possibly me. I can’t believe that it could possibly be so difficult.

                              These are the two libraries you referenced st the start?

                              1 Reply Last reply
                              0
                              • rafale77R Offline
                                rafale77R Offline
                                rafale77
                                wrote on last edited by
                                #35

                                @akbooer
                                Or it could very well be that I missed something but looking at reports from github, I am not the only one observing it. These library work very well for publishing to the broker. They don't work unless you want to dedicate an instance of lua to be the listener...
                                @therealdb
                                This could potentially be the base for a bridge to so many things for openLuup!!

                                1 Reply Last reply
                                0
                                • therealdbT Offline
                                  therealdbT Offline
                                  therealdb
                                  wrote on last edited by
                                  #36

                                  @rafale77 I have a simple version almost ready. I'll debug later today or tomorrow, and put on GitHub. Here's an excerpt of the config:

                                  {
                                  	"MQTT": {
                                  		"Username": "vera",
                                  		"Password": "openluup",
                                  		"Port": 1883
                                  	},
                                  
                                  	"Devices": [
                                  		{
                                  			"Name": "Pool",
                                  			"ClientID": "sonoff-pool",
                                  
                                  			"TopicName": "tele/tasmota/SENSOR",
                                  			"TopicPath": "AM2301.Temperature",
                                  
                                  			"DeviceID": 12,
                                  			"Service": "urn:upnp-org:serviceId:TemperatureSensor1",
                                  			"Variable": "CurrentTemperature"
                                  		},
                                  
                                  		{
                                  			"Name": "DeHumidifier",
                                  			"ClientID": "tasmota-dehum",
                                  
                                  			"TopicName": "stat/sonoff/POWER",
                                  			"TopicValue": "ON",
                                  
                                  			"DeviceID": 12,
                                  			"Service": "urn:upnp-org:serviceId:HVAC_UserOperatingMode1",
                                  			"Variable": "ModeTarget",
                                  			"Value": "HeatOn"
                                  		},
                                  
                                  		{
                                  			"Name": "DeHumidifier",
                                  			"ClientID": "tasmota-dehum",
                                  
                                  			"TopicName": "stat/sonoff/POWER",
                                  			"TopicValue": "OFF",
                                  
                                  			"DeviceID": 12,
                                  			"Service": "urn:upnp-org:serviceId:HVAC_UserOperatingMode1",
                                  			"Variable": "ModeTarget",
                                  			"Value": "Off"
                                  		}
                                  	]
                                  }
                                  

                                  I think it's more than enough to understand how the things will gonna work 😄

                                  --
                                  On a mission to automate everything.

                                  My MS Reactor contrib
                                  My Luup Plug-ins

                                  1 Reply Last reply
                                  1
                                  • B Offline
                                    B Offline
                                    Buxton
                                    replied to rafale77 on last edited by
                                    #37

                                    @rafale77 hey Rafale,

                                    I went down the very same road a while back and threw in towel because the polling by the MQTT plugin created CPU drags that stopped openLuup from functioning "reliably". The instability was also in part because I use two other must-have plugins that rely on polling, and I imagine that the combination of the three was creating a scenario that caused intermittent failures. And I too ended up implementing MQTT in Home Assistant and then using RealDB's virtual HTTP plugin to send commands to my WiFi devices--albeit not knowing the status of the devices in openLuup after the send.

                                    I'm looking at RigPapa's socket proxy and WebSocket plugins to see if I can transform my polling plugins to Async. The MQTT plugin is too complex for me to convert though, so if you take a crack at it, and are successful, I would very much appreciate you publishing your results, as MQTT is becoming a must for me.

                                    GitHub - toggledbits/sockproxyd: A socket proxy for Vera/openLuup systems

                                    GitHub - toggledbits/sockproxyd: A socket proxy for Vera/openLuup systems

                                    A socket proxy for Vera/openLuup systems. Contribute to toggledbits/sockproxyd development by creating an account on GitHub.

                                    GitHub - toggledbits/LuWS: A WebSocket client implementation for Luup (Vera and openLuup) systems, with optional async receive (responsive)

                                    GitHub - toggledbits/LuWS: A WebSocket client implementation for Luup (Vera and openLuup) systems, with optional async receive (responsive)

                                    A WebSocket client implementation for Luup (Vera and openLuup) systems, with optional async receive (responsive) - toggledbits/LuWS

                                    rafale77R 1 Reply Last reply
                                    1
                                    • rafale77R Offline
                                      rafale77R Offline
                                      rafale77
                                      replied to Buxton on last edited by
                                      #38

                                      I was also thinking about using a proxy for this but it is really adding a layer of complication. For MQTT it might be work it though, I think @therealdb 's solution is likely a better approach... basically also kind of a proxy written in C to act as the client and seems to be very lightweight.

                                      1 Reply Last reply
                                      0
                                      • therealdbT Offline
                                        therealdbT Offline
                                        therealdb
                                        wrote on last edited by
                                        #39

                                        I had a brief health problem in the latest days that put me completely KO, but I'm recovering. Code is almost done, I just need some time to test it under load and write some doc. I hope to finish it later today.

                                        --
                                        On a mission to automate everything.

                                        My MS Reactor contrib
                                        My Luup Plug-ins

                                        1 Reply Last reply
                                        0
                                        • therealdbT Offline
                                          therealdbT Offline
                                          therealdb
                                          wrote on last edited by
                                          #40

                                          here we are: https://github.com/dbochicchio/luup-mqtt

                                          Try it and let me know. It should be easy to acquire .NET Core SDK and build the app. It's very minimal, fast and should be easy to understand. Right now it's only updating variables (with virtual device I think it's more tha enough), but I could add other actions if needed.

                                          --
                                          On a mission to automate everything.

                                          My MS Reactor contrib
                                          My Luup Plug-ins

                                          rafale77R A 2 Replies Last reply
                                          2

                                          Recent Topics

                                          • Disaster recovery and virtualisation
                                            CatmanV2C
                                            CatmanV2
                                            0
                                            5
                                            539

                                          • Remote access of Zwave stick from Z-wave server
                                            CatmanV2C
                                            CatmanV2
                                            0
                                            3
                                            244

                                          • Organizing/ structuring rule sets and rules
                                            G
                                            gwp1
                                            0
                                            5
                                            316

                                          • Moving MSR from a QNAP container to RP 5 - some issues
                                            G
                                            gwp1
                                            0
                                            5
                                            277

                                          • Widget deletion does not work and landing page (status) is empy
                                            G
                                            gwp1
                                            0
                                            4
                                            251

                                          • Need help reducing false positive notifications
                                            T
                                            tamorgen
                                            0
                                            7
                                            437

                                          • Reactor (Multi-System/Multi-Hub) Announcements
                                            toggledbitsT
                                            toggledbits
                                            5
                                            120
                                            35.1k

                                          • Deleting widgets
                                            toggledbitsT
                                            toggledbits
                                            0
                                            4
                                            426

                                          • MQTT configuration question
                                            tunnusT
                                            tunnus
                                            0
                                            11
                                            574

                                          • System Configuration Check - time is offset
                                            G
                                            gwp1
                                            0
                                            8
                                            549
                                          Powered by NodeBB | Contributors
                                          Hosted freely by 10RUPTiV - Solutions Technologiques | Contact us
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Unsolved