openLuup: MQTT server
-
Based out L_ShellyBridge.lua I've created initial L_ZWaveBridge.lua made changes in virtualfilesystem.lua to create D_ZWaveBridge.xml, D_ZWaveBridge.json and subcribed to zwave topic. which is how the MQTT messages are sent from ZWaveJS2MQTT by default.
my startup lua looks like:
luup.attr_set ("openLuup.MQTT.Username", "*********") luup.attr_set ("openLuup.MQTT.Password", "*********") luup.attr_set ("openLuup.MQTT.Port", 1811) luup.attr_set ("openLuup.MQTT.PublishVariableUpdates", true) luup.attr_set ("openLuup.MQTT.DEBUG", true)
With my short mqtt understanding ZWaveJS is connecting and authenticating just fine to openluup although I've been unable to properly modify L_ZWaveBridge.lua to capture and parse the messages that ZWaveJS is sending.
-
No idea what’s involved in that, since I haven’t played with it at all (and JS is not my expertise.)
Ideas anyone?
-
Based out L_ShellyBridge.lua I've created initial L_ZWaveBridge.lua made changes in virtualfilesystem.lua to create D_ZWaveBridge.xml, D_ZWaveBridge.json and subcribed to zwave topic. which is how the MQTT messages are sent from ZWaveJS2MQTT by default.
my startup lua looks like:
luup.attr_set ("openLuup.MQTT.Username", "*********") luup.attr_set ("openLuup.MQTT.Password", "*********") luup.attr_set ("openLuup.MQTT.Port", 1811) luup.attr_set ("openLuup.MQTT.PublishVariableUpdates", true) luup.attr_set ("openLuup.MQTT.DEBUG", true)
With my short mqtt understanding ZWaveJS is connecting and authenticating just fine to openluup although I've been unable to properly modify L_ZWaveBridge.lua to capture and parse the messages that ZWaveJS is sending.
@ronluna said in openLuup: MQTT server:
With my short mqtt understanding ZWaveJS is connecting and authenticating just fine to openluup although I've been unable to properly modify L_ZWaveBridge.lua to capture and parse the messages that ZWaveJS is sending.
OK, well that's good.
I wouldn't necessarily start from L_ShellyBridge.lua, since it has a few features (like creating the bridge device itself) which you may not need. It's written that way because it's part of the system, unlike other add-on plugins. Similarly, if you write it as a standard plugin then there's no need to modify virtualfilesystem.lua.
If the standard approach to subscribing to the zwave/# works just fine, I'd start from there. Not sure what problem you're finding with parsing the messages. I haven't yet looked at the docs mentioned by @therealdb above.
-
I'm currently having a problem where the only way to get openluup to start processing messages from subscribed topics is by restarting the ZWaveJS service. When the ZWaveJS MQTT service is restarted the ZWaveJS Clients send the subscribe messages to openluup and only then is when messages start to get processed.
Testing with the following inserted in the startup:
local json = require "openLuup.json" function MyMQTThandler (topic, message) local info = json.decode (message) local currentLevel = info.value luup.variable_set ("urn:upnp-org:serviceId:Dimming1", "LoadLevelStatus", currentLevel, 68) luup.log("Processed") end luup.register_handler ("MyMQTThandler", "mqtt:zwave/Hallway_2/DImmer_1/38/0/currentValue")
I Couldn't find anything on ZWaveJS nor in openluup that might explain this behavior and my short mqtt knowledge is not helpful either.
Any ideas?
-
You can get more information about what’s going on by enabling debug logging for MQTT in Lua Startup.
luup.attr_set ("openLuup.MQTT.DEBUG", true)
@akbooer with DEBUG enabled the logs show:
2022-03-20 15:54:54.501 openLuup.mqtt:: CONNECT tcp{client}: 0x55ae0e8b8318 2022-03-20 15:54:54.501 openLuup.mqtt:: ClientId: ZWAVE_GATEWAY-Zwavejs2Mqtt 2022-03-20 15:54:54.501 openLuup.mqtt:: WillTopic: zwave/_CLIENTS/ZWAVE_GATEWAY-Zwavejs2Mqtt/status 2022-03-20 15:54:54.501 openLuup.mqtt:: WillMessage: {"value":false} 2022-03-20 15:54:54.502 openLuup.mqtt:: UserName: ******** 2022-03-20 15:54:54.502 openLuup.mqtt:: Password: ******** 2022-03-20 15:54:54.502 openLuup.io.server:: MQTT:1829 connection closed tcp{client}: 0x55ae0a5f7e78 2022-03-20 15:54:54.502 openLuup.mqtt:: RECEIVE ERROR: closed tcp{client}: 0x55ae0a5f7e78 2022-03-20 15:54:54.519 openLuup.server:: request completed (16415 bytes, 2 chunks, 1068 ms) tcp{client}: 0x55ae0c39f788 2022-03-20 15:54:54.587 openLuup.server:: error 'closed' sending 6 bytes to tcp{client}: 0x55ae0dfce198 2022-03-20 15:54:54.587 openLuup.server:: ...only 0 bytes sent 2022-03-20 15:54:54.587 openLuup.server:: error 'closed' sending 94946 bytes to tcp{client}: 0x55ae0dfce198 2022-03-20 15:54:54.587 openLuup.server:: ...only 0 bytes sent 2022-03-20 15:54:54.587 openLuup.server:: error 'closed' sending 2 bytes to tcp{client}: 0x55ae0dfce198
Seems like is related to what @toggledbits has shared a couple weeks ago. clues?
-
I think this (the restart issue) may be due to wildcard subscriptions not receiving retained messages… although that’s nothing to do with the TCP errors in your log. I’ll try to fix that soon, although, I should point out that this is not inconsistent with the specification for a level 0 server:
“If the Server receives a QoS 0 message with the RETAIN flag set to 1 it MUST discard any message previously retained for that topic. It SHOULD store the new QoS 0 message as the new retained message for that topic, but MAY choose to discard it at any time - if this happens there will be no retained message for that topic.
[MQTT-3.3.1-7].