Custom Edge driver installed but Lua code never executes - no logcat output

Hi,

I have created a simple custom Z-Wave Edge driver for a Qubino ZMNHOD1 (Flush Shutter DC). The driver uploads and installs successfully, the device shows the correct driver ID, but the Lua code never executes.

Even a minimal driver with just log.info("MINIMAL DRIVER LOADED") at module level produces nothing in logcat.

The driver is on a private channel that the hub is enrolled in.

What I have tried:

  • Multiple driver versions and package keys

  • Unenroll and re-enroll hub from channel

  • Exclude and re-include the Z-Wave device

  • Power cycle the hub

  • Logcat with and without --hub-address

  • Location mode change to force auth resync

Logcat behavior:

  • Connects successfully and shows output from all other drivers (Zigbee Switch, frient Contact, Z-Wave Switch etc.)

  • Zero output from my custom driver, even during driver install or device switch

Hub: SmartThings V3, firmware 000.060.00012, hub app 1.0.49-13

Has anyone seen this before? Is there something on the SmartThings backend that needs to be reset?

Thanks

One word: fingerprints.yml

You won’t see anything before the driver is actually loaded when the fingerprint matches.

Can you please paste the important parts of your driver (fingerprints.yml, init.lua, profile, …)?

fingerprints.yaml:

zwaveManufacturer:
  - id: "Qubino_ZMNHOD1"
    deviceLabel: "Qubino Flush Shutter DC"
    manufacturerId: 0x0159
    productType: 0x0003
    productId: 0x0053
    deviceProfileName: plant-selector-v2

init.lua:

local Driver = require "st.zwave.driver"
local capabilities = require "st.capabilities"
local log = require "log"

log.info("MINIMAL DRIVER LOADED")

local driver = Driver("qubino-plant-valve", {
  supported_capabilities = { capabilities.switch }
})

driver:run()init.lua:
lualocal Driver = require "st.zwave.driver"
local capabilities = require "st.capabilities"
local log = require "log"

log.info("MINIMAL DRIVER LOADED")

local driver = Driver("qubino-plant-valve", {
  supported_capabilities = { capabilities.switch }
})

driver:run()

profiles/plant-selector.yaml:

name: plant-selector-v2
components:
  - id: main
    capabilities:
      - id: switch
        version: 1

config.yaml:

name: qubino-plant-valve
packageKey: qubino-valve-v2
version: 1

dependencies:
  - st

profiles:
  - plant-selector-v2

The device is currently assigned to the driver using edge:drivers:switch manually, and the device’s manufacturer code matches the fingerprint (0159-0003-0053).

Is this AI generated or copy & paste error?

This is the bare minimum to get a log output:

local Driver = require "st.zwave.driver"
local capabilities = require "st.capabilities"
local log = require "log"

local function device_init(driver, device)
  log.info("Device initialized: " .. device.id)
end

local driver = Driver("qubino-plant-valve", {
  supported_capabilities = { capabilities.switch },
  lifecycle_handlers = {
    init = device_init,
  },
})

driver:run()

You need permissions to config.yaml file

Instructions here:

This is how a config.yml typically looks like:

No dependencies, no profiles.

files are stripped down in order to isolate the problem. However, I have used AI in an attempt to find a solution.