Monoprice Door Sensors & Motion Sensors Available again

For capabilities why does it list sensor and motion sensor?

    capability "Battery"
    capability "Motion Sensor"
    capability "Temperature Measurement"
    capability "Sensor"

Sensor is because its a generic sensor. That’s all I know though. Not really an expert.

Thanks for the reply, that’s a good enough response/reason for me, lol. :smile:

I’m considering buying a couple of these, is it still the case that battery level is being initially reported but may not be updating as time goes on?

Yes 1234556789101112

Door Sensors are on sale today for under $20.

http://www.monoprice.com/Product?c_id=122&cp_id=12212&cs_id=1221201&p_id=10795&seq=1&format=2

1 Like

@kranasian @florianz I’m using @kranasian’s latest version of this device type and have a couple questions.

  1. How often is temp updated?
  2. How can I go about changing the temp readout to be celsius?

Thanks.

@huydnguyen

Check out this post, Celsius code changes are in the first post.

Cheers,
David

That snippet of code doesn’t seem change it so celsius is outputted, When I apply that code all it does is keep the temp in F but add the C label and adjust the colour scheme.

It looks as though the device type originally send temp in celsius and @florianz added code to handle F.

For example I see the following code in his device type

def c2f(value) {
// Given a value in degrees centigrade, return degrees Fahrenheit

(value * 9/5 + 32) as Integer
}

and…

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv2.SensorMultilevelReport cmd) {
def map = [:]
if (cmd.sensorType == 1) {
    map.name = "temperature"

    // If the sensor returns the temperature value in degrees centigrade,
    // convert to degrees Fahrenheit. Also, apply a basic low-pass filter
    // to the scaled sensor value input.
    def filteredSensorValue = filterSensorValue(cmd.scaledSensorValue)
    if (cmd.scale == 1) {
        map.value = filteredSensorValue as String
        map.unit = "F"
    } else {
        map.value = c2f(filteredSensorValue) as String
        map.unit = "F"
    }
    map.descriptionText = "${device.displayName} temperature is ${map.value} ${map.unit}."
}
return map
}

I was able to get it to output to Celsius by changing the code of the temp event to:

def zwaveEvent(physicalgraph.zwave.commands.sensormultilevelv2.SensorMultilevelReport cmd)
{
def map = [:]
if (cmd.sensorType == 1) {
		// temperature
		def cmdScale = cmd.scale == 1 ? "F" : "C"
		map.value = convertTemperatureIfNeeded(cmd.scaledSensorValue, cmdScale, cmd.precision)
		map.unit = getTemperatureScale()
		map.name = "temperature"
        map.descriptionText = "${device.displayName} temperature is ${map.value} ${map.unit}."
}
map
}

So far I think it’s working, only Temp doesn’t update frequently in the activities section of the deviceType so I don’t know if it works 100%. When I run the simulator I get C readings. Also changed the colour scale and label in the tile definition as well.

@kranasian Question I have now is how often is temp updated in these devices? So if I used it for a virtual thermostat will it update frequently enough to turn on a heater plugged into a smart plug and turn it off at a set temp. I’m concerned that it doesn’t update frequently enough so it would take too long to turn on the heater or it would turn it on and take to long to turn it off.

For any of those in Canada using the monoprice zwave motion/temperature devices I’ve updated @florianz monoprice motion device type and added temperature offset and C/F unit changes to the preferences. I’m not a super coder by any means but I got it to work for me and tested to the best I can :smile:

It defaults to F when you add a new device, just go to preferences in the device tile and type ā€œCā€ no quotes in the unit settings.

Also seems that temp tile is only updated if temp changes by a couple degrees, if you want want to make the preference take place immediately simply change the preferences then open the device, pullout the battery and then replace the battery. This should wakeup the device and the temp tile will get updated. The zigbee smartthings multi sensors seem to update temperature a lot more frequently than these wave devices.

3 Likes

Hello need some help, please pardon my ignorance. I am trying to add this into my add-on however I keep getting the following error:

No signature of method: script1443384018793637088962.metadata() is applicable for argument types: (script1443384018793637088962$_run_closure2) values: [script1443384018793637088962$_run_closure2@6ac30642] Possible solutions: getMetadata(), getState(), setState(java.lang.Object), metaClass(groovy.lang.Closure

First I goto My SmartApps → New Smart App → From Code. I then copy the code from 2015-03-17 to the code box and hit create. I get the error message above.

I have three of the monoprice 10796 motion sensor. They are showing up as Aeon Multisensor. Any help would be greatly appreciated (step by step would be awsome). BTW I am on Hub V2 with latest IOS app of smartthings.

This is for a device type. I would suggest trying this one anyway - I just found it today.

https://github.com/constjs/SmartThings-Devices/blob/master/monoprice_motion_sensor.device.groovy

Thanks Greg, I will try it out and let the team know.

Anybody know of a way to force the sensor to send the temp in certain intervals {10 minutes maybe?}? I bought a couple just to try for cheap temp sensors for HVAC control kind of like Ecobee. I really don’t care much about the motion and don’t mind batteries only lasting a couple months.

I have 4 of the motion sensors and they seem to be pretty delayed in regards to detecting motion. I also have a 1st Gen aeon multi sensor and that sensor is overly sensitive, even with the sensitivity turned all the way down.

Is there a good zwave motion sensor? Not a battery hog, pet friendly and actually able to detect human motion rather quickly? If I move fast enough past the monoprice sensors, I’m undetected. I wonder if I mounted these things to high, causing the delay in detection?

Celsius. Not Celcius.