[Release] Generic Zigbee Drivers with Presence and Recovery

Just tried this driver for my Osram Smart+ Outdoor Plugs. Works really fine! Have 5 plugs out of which only two has worked painlessly before, now only one is still giving me headaches. (Think it's because of placement without any good repeater, but that will have to be an issue for another day!) Big thanks!

1 Like

Hi, Thanks for the drivers. Using them for a number of my devices :+1:.

Here's the fingerprint for a Samotech MS-104BZ dual switch:
fingerprint model:"TS011F", manufacturer:"_TZ3000_pmz6mjyu", profileId:"0104", endpointId:"01", inClusters:"0000,0004,0005,0006", outClusters:"0019,000A", application:"41"

And a Samotech MS-104Z switch:
fingerprint model:"TS0121", manufacturer:"_TYZB01_iuepbmpv", profileId:"0104", endpointId:"01", inClusters:"0000,0003,0004,0005,0006,0702,0B04", outClusters:"0019", application:"43"

And a Samotech SM314 dimmer:
fingerprint model:"Dimmer-Switch-ZB3.0", manufacturer:"Samotech", profileId:"0104", endpointId:"01", inClusters:"0000,0003,0004,0005,0006,0008,0B05,1000", outClusters:"0019", application:"03"

Thanks again!

Hi, to confirm, your driver for Generic Zigbee Outlet was a God Send!
I bought 2 ZBMini to replace a stupid fibaro dual relay to control my simple central heating (Heat/Water)
I though you may want the fingerprint from your Toolbox Driver:

dev:2262021-01-24 11:17:40.439 infoCOPY AND PASTE THIS ROW TO THE DEVELOPER: fingerprint model:"01MINIZB", manufacturer:"SONOFF", profileId:"0104", endpointId:"01", inClusters:"0000,0003,0004,0005,0006,1000", outClusters:"1000"
Many Thanks

can you make a driver for this

the log is:

COPY AND PASTE THIS ROW TO THE DEVELOPER: fingerprint model:"TS0215A", manufacturer:"_TZ3000_fsiepnrh", profileId:"0104", endpointId:"01", inClusters:"0000,0001,0500,0501", outClusters:"0019,000A", application:"43"

  • endpointId: 01
  • application: 43
  • manufacturer: _TZ3000_fsiepnrh
  • model: TS0215A
  • softwareBuild:
  • inClusters: 0000,0001,0500,0501
  • outClusters: 0019,000A
  • endpointId: 01
  • profileId: 0104

The author of this driver is no longer active on this forum so I'm afraid your request will not get heard here.

1 Like

too bad... anyone knows how to perhaps rewrite an existing 4 button driver with the above informations?

1 Like

Nevermind, i forked a driver myself for it :slight_smile:

import hubitat.zigbee.zcl.DataType

metadata {
definition (name: "Nedis Zigbee 4 Button Fob", namespace: "Diondp", author: "Diondp") {
capability "PushableButton"
capability "Configuration"

    fingerprint inClusters: "0000,0001,0500,0501", outClusters: "0019,000A", manufacturer: "_TZ3000_fsiepnrh", model: "TS0215A"

preferences {
input name: "debugEnable", type: "bool", title: "Enable debug logging", defaultValue: false


private sendButtonNumber() {
def remoteModel = device.getDataValue("model")
case "TS0215A":
sendEvent(name: "numberOfButtons", value: 4, isStateChange: true)

def installed() {
state.start = now()

def updated() {

def refresh() {
// read battery level attributes
return zigbee.readAttribute(0x0001, 0x0020) + zigbee.configureReporting(0x0001, 0x0020, 0x20, 3600, 21600, 0x01)
// this device doesn't support 0021
zigbee.readAttribute(0x0001, 0x0021)

def configure() {

def configCmds = []

for (int endpoint=1; endpoint<=3; endpoint++) {
def list = ["0006", "0001", "0000","0500","0501"]
// the config to the switch
for (cluster in list) {
configCmds.add("zdo bind 0x${device.deviceNetworkId} 0x0${endpoint} 0x01 0x${cluster} {${device.zigbeeId}} {}")
return configCmds

def parse(String description) {

if ((description?.startsWith("catchall:")) || (description?.startsWith("read attr -"))) {
    def parsedMap = zigbee.parseDescriptionAsMap(description)
    if (debugEnable){
        log.debug("Message Map: '$parsedMap'")
     name = "pushed"
    switch(parsedMap.data) {
        case "[00, 00, FF]": 
            //button = "B"
            //WebCore friendly
            button = "4"
        case "[01, 00, FF]": 
           //button = "A"
           //WebCore friendly
            button = "3"
        case "[03, 00, FF]": 
            button = "1"
        case "[]": 
            button = "0" 


    sendEvent(name: name, value: button, descriptionText: "Button $button was $name",isStateChange:true)



Did you ever look at adding the power reporting thing? I have a double Zigbee 3.0 power point as follows:

fingerprint model:"TS011F", manufacturer:"_TZ3210_raqjcxo5", profileId:"0104", endpointId:"01", inClusters:"0000,0004,0005,0006,0702,0B04,EF00,0003", outClusters:"0019,000A", application:"4A"

This works fine with your "Zigbee - Generic Switch (with Presence)" driver, but lacks power reporting. When used with the standard "Generic Zigbee Outlet", I get what looks to be accurate power reporting, but of course that does not enumerate child devices at all.

I actually got parent power reporting by using that device driver combined with individual control by installing the "Generic Zigbee Multi-Endpoint Switch", initialising the children and then switching the root device to the "Generic Zigbee Outlet". Bit of a pain to go through that all the time though :slight_smile:

If you have not got any time to work on it then do you mind me modifying your driver, adding the fingerprint for my device and power reporting and then contributing it back to your source?

The author of these drivers is no longer active on this forum.



Zigbee device fingerprints

Driver: Zigbee - Generic Outlet (with Presence)
Company: innr
Model :SP 224
Country :USA

fingerprint model:"SP 224", manufacturer:"innr", profileId:"0104", endpointId:"01", inClusters:"0000,0003,0004,0005,0006,0008,0B05,1000,FC82", outClusters:"000A,0019", application:"10"

Driver: Zigbee - Generic Switch (with Presence)
Company: Leviton
Model :DG15S
Country :USA

fingerprint model:"DG15S", manufacturer:"Leviton", profileId:"0104", endpointId:"01", inClusters:"0000,0003,0004,0005,0006,0B05", outClusters:"0019", application:"01"


As stated earlier:

And, for what it’s worth, those Innr plugs work very well with the built-in Generic Zigbee Outlet driver.


@coldfuture did you ever get anywhere with the Moes Zigbee Thermostat? I'm hoping to use the White ZigBee Smart Thermostat Programmable Temperature Controller 2MQT – Moes.

Hi. Unfortunately no. I just added tuya hub to my installation only for this thermostats.

1 Like

Have you been able to integrate it with HE through the Tuya Hub?

Thankyou for the great work here - any chance you can add power metering and cumulative consumption for a Hue outlet?

  • endpointId: 01
  • application: 01
  • softwareBuild: 21276230
  • driver: v1.0.1.1123
  • endpointId: 01
  • profileId: 0104
  • inClusters: 0000,0003,0004,0005,0006,0702,0B04,FC82
  • outClusters: 0003,000A,0019
  • model: ZB-ONOFFPlug-D0005
  • powerCluster: 0B04
  • firmwareMT: 1168-A136-21276230
  • manufacturer: LDS

Unfortunately, the author of this driver is no longer with Hubitat.

@luke2 you can try using the inbuilt 'Generic Zigbee Outlet' driver for your Hue outlet.
@sean.t.gibson @coldfuture Tuya thermostats are supported by this driver,

He won’t be back…

1 Like

Markus started his own company or similar.. I am not into the details.

For most of the Xiaomi / Aqara devices I can recommend this driver, which is actively supported:


Sad to hear that. Then I’ll guess this driver is dead (in the future at least) unless sombody else wants to, and are allowed to by the creator, take over maintanance and future development.

Most probably Xiaomi / Aqara devices will never be officially supported in Hubitat @bcopeland , but I don't see a problem Markus drivers being handled by the community https://github.com/HubitatCommunity
@ardichoke @csteele


Download the Hubitat app