New sonoff zigbee

Today I received the two new device Sonoff I ordered one month ago, temp sensor SNZB-02 and door/window sensor SNZB-04.

I didn’t buy the hub Sonoff and I knew that it was a risk but I had faith …

Well, door/window sensor work fine, without problem, but the temp sensor is seen as motion sensor …

Do you have any idea to fix the problem ?

1 Like

I think I replied to you on FaceBook, but try the SmartSense Temp/Humidity DTH to see if it works.

I try but don’t work …

I have a motion sensor and temp sensor coming. Excited to see how they work and how song they last!

Try the “eZEX Temp & Humidity Sensor” next. it’s also a zigbee sensor.

With eZEX now I see the temp … only integer but that’s something … :blush:

1 Like

you can try breathing on the sensor to make it report a humidity change and see if it works, too.

3 Likes

Or just put it into your fridge for 5 minutes.

1 Like

I got the temp sensor just for the fridge … now is 11° maybe not very precise …

Where have you placed it in the fridge?

Inside, upper compartment, at the end, on the right … :smiley:

Try to place it a bit lower. And more forward.

If you stick it to the top, that would definitely show higher value, basic thermodynamics. But the temperature fluctuates in the fridge as well.

I have Aqara sensors in two fridges, and freezer. The freezer fluctuated from -20.3 to - 27 C, one of the fridge showed 7.5 to 0.2 C, currently at 4.9 C. Meanwhile the fridge is set to 3 C.

2 Likes

Ok, I thought it was some degree lowest …
I try to move the sensor …

@Giamma is humidity working with the ezex DTH?

Yes, humidity works; the only “problem” for me is don’t have decimal in temp …

1 Like

Try this DH, a bit modified for decimals, I am not sure that will it work, because I don’t know how the device reports, what is actually parsed. Give it a try. And look at the live logging for any errors.

   /*
     *  eZEX Temp & Humidity Sensor (AC Type)
     *
     *  Copyright 2019 SmartThings
     *
     *  Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
     *  in compliance with the License. You may obtain a copy of the License at:
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     *  Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
     *  on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
     *  for the specific language governing permissions and limitations under the License.
     *
     */
    import physicalgraph.zigbee.zcl.DataType

metadata {
    definition(name: "eZEX Temp & Humidity Sensor", namespace: "smartthings", author: "SmartThings", mnmn:"SmartThings", vid:"generic-humidity-3") {
        capability "Configuration"
        capability "Temperature Measurement"
        capability "Relative Humidity Measurement"
        capability "Sensor"
        capability "Health Check"
        
        fingerprint profileId: "0104", inClusters: "0000,0003,0402,0405,0500", outClusters: "0019", model: "E282-KR0B0Z1-HA", deviceJoinName: "eZEX Multipurpose Sensor" //Smart Temperature/Humidity Sensor (AC Type)
    }


    preferences {
        input "tempOffset", "number", title: "Temperature offset", description: "Select how many degrees to adjust the temperature.", range: "*..*", displayDuringSetup: false
        input "humidityOffset", "number", title: "Humidity offset", description: "Enter a percentage to adjust the humidity.", range: "*..*", displayDuringSetup: false
    }

    tiles(scale: 2) {
        multiAttributeTile(name: "temperature", type: "generic", width: 6, height: 4, canChangeIcon: true) {
            tileAttribute("device.temperature", key: "PRIMARY_CONTROL") {
                attributeState "temperature", label: '${currentValue}°',
                        backgroundColors: [
                                [value: 31, color: "#153591"],
                                [value: 44, color: "#1e9cbb"],
                                [value: 59, color: "#90d2a7"],
                                [value: 74, color: "#44b621"],
                                [value: 84, color: "#f1d801"],
                                [value: 95, color: "#d04e00"],
                                [value: 96, color: "#bc2323"]
                        ]
            }
        }
        valueTile("humidity", "device.humidity", inactiveLabel: false, width: 2, height: 2) {
            state "humidity", label: '${currentValue}% humidity', unit: ""
        }
        standardTile("refresh", "device.refresh", inactiveLabel: false, decoration: "flat", width: 2, height: 2) {
            state "default", action: "refresh.refresh", icon: "st.secondary.refresh"
        }

        main "temperature", "humidity"
        details(["temperature", "humidity", "refresh"])
    }
}

def parse(String description) {
    log.debug "description: $description"

    // getEvent will handle temperature and humidity
    Map map = zigbee.getEvent(description)
    if (!map) {
        Map descMap = zigbee.parseDescriptionAsMap(description)
        if (descMap?.clusterInt == zigbee.TEMPERATURE_MEASUREMENT_CLUSTER && descMap.commandInt == 0x07) {
            if (descMap.data[0] == "00") {
                log.debug "TEMP REPORTING CONFIG RESPONSE: $descMap"
                sendEvent(name: "checkInterval", value: 60 * 12, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])
            } else {
                log.warn "TEMP REPORTING CONFIG FAILED- error code: ${descMap.data[0]}"
            }
        }
    } else if (map.name == "temperature") { 
        map.value = (float) Math.round( (map.value as Float) * 10.0 ) / 10
        if (tempOffset) {
            map.value = (float) map.value + (float) tempOffset
        }
        map.descriptionText = temperatureScale == 'C' ? '{{ device.displayName }} was {{ value }}°C' : '{{ device.displayName }} was {{ value }}°F'
        map.translatable = true
    } else if (map.name == "humidity") {
        if (humidityOffset) {
            map.value = (int) map.value + (int) humidityOffset
        }
    }

    log.debug "Parse returned $map"
    return map ? createEvent(map) : [:]
}

/**
 * PING is used by Device-Watch in attempt to reach the Device
 * */
def ping() {
    return refresh()
}

def refresh() {
    log.debug "refresh temperature, humidity"
    return zigbee.readAttribute(zigbee.RELATIVE_HUMIDITY_CLUSTER, 0x0000) +
           zigbee.readAttribute(zigbee.TEMPERATURE_MEASUREMENT_CLUSTER, 0x0000)
}

def configure() {
    // Device-Watch allows 2 check-in misses from device + ping (plus 1 min lag time)
    sendEvent(name: "checkInterval", value: 2 * 60 * 60 + 1 * 60, displayed: false, data: [protocol: "zigbee", hubHardwareId: device.hub.hardwareID])

    log.debug "Configuring Reporting and Bindings."

    // temperature minReportTime 30 seconds, maxReportTime 1 hour. Reporting interval if no activity
    return refresh() +
           zigbee.configureReporting(zigbee.RELATIVE_HUMIDITY_CLUSTER, 0x0000, DataType.UINT16, 30, 3600, 100) +
           zigbee.configureReporting(zigbee.TEMPERATURE_MEASUREMENT_CLUSTER, 0x0000, DataType.UINT16, 30, 3600, 10)
}

Otherwise @BroderickCarlin, are these new Sonoff Zigbee devices going to be supported by stock DHs?

1 Like

The SNZB-03 Motion and SNZB-04 contact already are under the eWeLink brand. I think this SNZB-02 temp/humidity and the SNZB-01 button/switch are the only two missing fingerprint assignments.

1 Like

I tried but the temp in always integer …
Tomorrow I’m going a few days for the holidays, when I got back I just keep reading your valuable advice. Thank you for the assistance, see you soon …

There is a way to get the decimal values, but I am not sure how is the parsing working in this DH, and by the device. The SmartThings ones report up to two decimals, but they turned to be an integer. The description contains the reported value and that has to be read to be able to use it. I don’t really know how is with these devices. There must be a way…