[Release] Generic Zigbee Drivers with Presence and Recovery

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")
switch(remoteModel){
case "TS0215A":
sendEvent(name: "numberOfButtons", value: 4, isStateChange: true)
break
}
}

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

def updated() {
sendButtonNumber()
}

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() {
sendButtonNumber()

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"
            break
        case "[01, 00, FF]": 
           //button = "A"
           //WebCore friendly
            button = "3"
        break
        case "[03, 00, FF]": 
            button = "1"
            break
        case "[]": 
            button = "0" 
            break

}

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

}

3 Likes

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.

2 Likes

@markus

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"

@Jerry.Deux

As stated earlier:

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

4 Likes

@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:

2 Likes

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

2 Likes

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed.