Anyone have the Aeotec AerQ?

I like Aeotec because in my experience their quality is top notch however it comes with the price to boot. May invest in these but since I already have some in most rooms the urge to upgrade is low.

FYI - I had to modify your app + Driver to get it to work, as your namespaces were clashing (or perhaps I grabbed the wrong versions of these from other posts).

Here's the final code that actually worked for me. Let me know if you have an updated version somewhere and I'll remove these.
Thank you once again for this app, this is fantastic, specially paired with Hubigraphs.

App:

/*
Dew Point App V003

2020-07-05
    Think we don't need to store the lastTEMP and lastHUMID.  We can just read them when we need to make a calc.
2020-07-20 (open) added Virtual DewPoint Calc device to display the below results.

*/

definition(
    name: "DEW Point Calculator",
    namespace: "JohnRob",
    author: "JohnRob",
    description: "DEW Point Calculator",
    category: "Convenience",
    iconUrl: "",
    iconX2Url: "")

preferences {
    page(name: "mainPage")
}

def mainPage() {
    dynamicPage(name: "mainPage", title: " ", install: true, uninstall: true) {
        section {
            //log.debug ("   25   beginning of section")
            input "thisName", "text", title: "Name this DEW Point Calculator", submitOnChange: true
            if(thisName) app.updateLabel("$thisName")
            input "tempSensor", "capability.temperatureMeasurement", title: "Select Temperature Sensor", submitOnChange: true, required: true,     multiple: false
            input "humidSensor", "capability.relativeHumidityMeasurement", title: "Select Humidity Sensor", submitOnChange: true, required:     true, multiple: false
            //log.debug ("  30   end of section")
        } // section
    }   // dymanicPage
}   // mainPage

def installed() {
    initialize()
}

def updated() {
    unsubscribe()
    initialize()
}

def initialize() {
    //log.debug ("  45   begin initialize")

    def dewpointDev = getChildDevice("DEWPoint_${app.id}")
    if(!dewpointDev) dewpointDev = addChildDevice("JohnRob", "Virtual DewPoint", "DEWPoint_${app.id}", null, [label: thisName, name: thisName])
    dewpointDev.setDewPoint(0)
    subscribe(tempSensor, "temperature", handlerTEMP)
    subscribe(humidSensor, "humidity", handlerHUMID)

    state.lastHUMID = 50        // these are in the app and will not display in the child
    state.lastTEMP = 50     //  50/50 DEWPoint = 32
}

def calcDEW() {
    def dewpointDev = getChildDevice("DEWPoint_${app.id}")
    //log.debug "  56 state.lastTEMP ${state.lastTEMP}"
    //log.debug "  57 state.lastHUMID ${state.lastHUMID}"
    operandHUMID = state.lastHUMID.toDouble()
    operandTEMP = state.lastTEMP.toDouble()
    
    def dewPoint = (operandTEMP - (9 / 25) * (100 - operandHUMID))
    //log.debug "   62  dewPoint =     ${dewPoint}"
    dewpointDev.setDewPoint(dewPoint.toInteger())
    //return
}

def handlerHUMID(evt) {
    state.lastHUMID = evt.value
    //log.debug " 65 last Humidity = ${evt.value}"
   calcDEW()
}

def handlerTEMP(evt) {
    state.lastTEMP = evt.value
    //log.debug " 71 last Temperature = ${evt.value}"
   calcDEW()
}

//  --- eof ---

Virtual Device:

// V0.01  Virtual Dew Point Device

metadata {
    definition (name: "Virtual DewPoint", namespace: "JohnRob", author: "several") {
        capability  "Sensor"
        command     "setDewPoint", ["NUMBER"]   // this will be a method.  [] may cause an input box to be created must test.
        attribute   "DewPoint", "Number"      // this will go into the Hub database

    }
    preferences {       // These become entries in the "device" page to ask us for our preferences!
        input name: "txtEnable", type: "bool", title: "Enable descriptionText logging", defaultValue: true
    }
}

def installed() {
    log.warn "installed..."
    setDewPoint(0)
}

def updated() {
    log.info "updated..."
    log.warn "description logging is: ${txtEnable == true}"
}

def parse(String description) {
}       // basically useless.  Included because it is included in the template.

def setDewPoint(dewpoint) {
    // log.debug "   29  dewpoint =   ${dewpoint}"
    def descriptionText = "${device.displayName} was set to $dewpoint"
    if (txtEnable) log.info "${descriptionText}"
    sendEvent(name: "DewPoint", value: dewpoint, unit: "°F", descriptionText: descriptionText)
}

Also, using Hubi-graph I'm now charting the Dew Point next to the Temp and Humidity for the room under my garage I worry about.

image

Very cool!

2 Likes

As requested here is a photo of one installed... For frame of reference that's a quarter next to it.. They are larger than the Aqara Temperature and Humidity Sensors, which are the smallest sensors I own, these are the second smallest.

2 Likes

Running into the same issue with battery monitoring. After running more than a few forced reports, I managed to burn my battery down from 1 to 0, so it would seem it’s less than 100 now.

Also tried smart start but that really didn’t work at all.

I can confirm 2 of my 5 had the battery level bug. Seeing if I can return them. Attempted multiple resets, and exclude/includes.

I have this device, but am having difficulty with it updating when humidity or temperature change. It reports on a 15 minute interval as expected, but shouldn't it report a change earlier if there is one? I have it set to 3% humidity and 1 degree for temp reporting. Is there some other parameter I would need to change?

I'm having the exact same issue. Have you found a solution?

Unfortunately not, still not sure if user error on my part somehow or bug.

I've got 2 coming, so I'll report back

1 Like

Added both of mine and the battery is at 90%. Had to force them to use the right driver so I'm guessing the fringer print is not setup for EU versions.

I think I've managed to get the reporting by % working by disabling periodic reporting

Can you send the finger print?.. I’ll update the driver

  • deviceId: 9
  • deviceType: 2
  • manufacturer: 881
  • inClusters: 0x5E,0x85,0x8E,0x59,0x55,0x86,0x72,0x5A,0x87,0x73,0x80,0x9F,0x30,0x70,0x71,0x31,0x84,0x6C,0x7A
  • firmwareVersion: 1.01
  • protocolVersion: 7.12
  • hardwareVersion: 1

Turns out, the device only checks the humidity every fifteen minutes, so this is the fastest it can update. If you have the regular reporting set to something else, then it will update if the other parameters have changed after it's 15 minute check. This is according to aeotec support.

1 Like

LOL. I really don't know who is making the technical decisions at aeotec....

Their devices are always SO CLOSE to being good (even if the price always sucks)... But then they have some weird arse quirk that makes them less attractive.

1 Like

More testing done. That's me and the misses having a shower. Reference device is the cheap Tuya zigbee device with the display. Batteries now reporting 80% for both, which is worrying. Sent the humidity report to 1% for testing only.

1 Like

70% battery now for both. 0.5degrees change for temp & 5% for humidity

How are you charting the results?

It is probably grafana with influxDB database backend. There are a few methods to get the data in influxDB.

  1. Smartapp Influxdb Logger
  2. Node red to Influx DB