Pre-release of Fibaro Motion Sensor

OK now I see the assistance you need.
Here are the steps assuming your device has not yet been included.

Install device code in ide

  1. login to ide
  2. Select “My Device Types”
  3. Select “+New SmartDevice” green button on right
  4. Switch to “From Code Tab”
  5. Copy/Paste code into this page (assuming you found the code on this page and have modified the config method as you wish
  6. Click Create

Include your device

  1. In ST app select + from dashboard
  2. Select + Connect New Device
  3. Put Fibaro in include mode (button inside, tripple click, it should turn blue)
  4. Select the device type you just created in the ide
    If you used my code it will be named “RRG Enhanced - Fibaro Motion Sensor” if you used other look for this line in the code, you can alter the name to what you like so you can easily find it.
    definition (name: “RRG Enhanced - Fibaro Motion Sensor”, namespace: “gouldner”, author: “SmartThings”)

If you use my code you then open the “Preferences” for ths fibaro in the ST app, change to your settings and then close the preferences. Then triple click the ST button to turn it blue again and select “Configure” tile in the ST app for the device so it sends the settings. You need to triple click the fibaro so it listens for the sent settings otherwise it will not work.

If you used the standard code and modified the settings then you should already be set.

If you included the device already with the standard settings then you need to edit the device type in your ide to change to your settings, select “Save”, “Publish”->For Me and then do the configure steps (triple click, configure tile…)

If in the future you want to change the settings

  1. for my version , edit prefs, triple click, config
  2. for standard version, edit config in ide, save, publish, triple click, config

I hope that is enough detail. Feel free to ask questions. I am writing this off the top of my head so I may miss some details. But I think it should be enough to get you going.

2 Likes

You wrote that off the top of your head?? Thank you by the way. Thank you very much. Yes that is basically what I needed. No way that was happening without such guidance. I’m just not that ST smart!

I followed your directions to a T, and used your code from here: https://github.com/gouldner/ST-Projects/blob/master/SmartThings/src/FibaroMotion/Device/FibaroMotion.groovy

Hopefully that was correct. Question - I see that you have 4 settings that are configurable right from the app (80, 89, 40, & 42). What is the deal with the remainder of the settings? Are they not configurable?

Thanks again Ron. You were a huge help for me.

LOL, mostly… I was online and looked at a page or two but mostly I do this so often I have it mostly memorized :smile:

They were the settings I cared to change. I could add others if you need any particular setting. Or you can just change the “Hard Coded” values in the config method for the others.

OK I understand. Thank you. But when I search for the other settings in the code, I come up with nothing. Just as an example: 20. TAMPER SENSITIVITY

I don’t find this anywhere in the code. Am I just missing something?

Told you I was working from memory :smile: You are correct it isn’t there. It is in the method below called resetParams2StDefaults but you need to move them to config, make your change, then save, publish, config…

Your example “Tamper Sensitivity #20” would be this line.
cmds << zwave.configurationV1.configurationSet(configurationValue: [15], parameterNumber: 20, size: 1).format()
Notice the default is 15 as documented in the Manual and the parameter is 20. Size is 1 byte. So you can change to 0 for inactive or 1-121 for sensitivity.

I can add that one to my preference if you like. Or you can copy the line into config.
I would put it just after my setting of parameter 60 which is not a preference but is hard coded to a value of 5.
just add the line like this

// temperature change report threshold (0-255 = 0.1 to 25.5C) default is 1.0 Celcius, setting to .5 Celcius
cmds << zwave.configurationV1.configurationSet(configurationValue: [5], parameterNumber: 60, size: 1).format()
cmds << zwave.configurationV1.configurationGet(parameterNumber: 60).format() 

// NEW STUFF START 
//  Add Tamper Sensitivity (Change 15 in  [15] to your preference
cmds << zwave.configurationV1.configurationSet(configurationValue: [15], parameterNumber: 20, size: 1).format()
// Optionally Send command to get the value just set to make sure it worked (you can watch the live logs)
cmds << zwave.configurationV1.configurationGet(parameterNumber: 20).format() 
 // NEW STUFF END

I don’t mind adding any of these params if you like. I figure that is how I will grow the device code. I am adding them as needed.

I hope this is clear, this post if formatting really weird, I can’t figure out how to fix it to make it nice.

OK Thanks Tom. Let me get more familiar with all the additional settings. That one was just an example as I searched out how I might one day change additional settings.

Do you know if the sensor can be set to not activate lights even if motion is detected between certain times? This would be particularly useful in a bedroom.

It’s easy to do this through one of the various scheduling options in smart things. You don’t do this with a device setting on the motion sensor itself. So if you use a Z wave device to device Association between the sensor and the light, you can’t set time limitations. But as long as you are using any of the scheduler options available through the hub (some are built into the official app, some take custom code), it will be easy.

I don’t see how I could do this. At first I thought it would be a good idea and that I could add a feature to the device code to turn the lights ON/OFF. and then write a smart app to set on schedule. However then I realized that you can’t do this because the device (being battery operated) isn’t listening for settings. Remember how you have to triple click the include button to have it start listening for commands. So I don’t see how this could be done.

@JDRoberts correct me if I am wrong because as I am typing this I see your post says this is easy to do. I don’t think this device is has the capability. The led lights fire when motion occurs. Personally I found it annoying and my DOGS went nuts when it went off. So I added my preference settings to turn it off. I would only turn it on if I was placing in a Garage or someplace where I might like a criminal to know he’s been spotted. Inside I likely want it disabled all the time so it doesn’t bother me.

Correction: @JDRoberts intrepreted the request correctly. Easy to control your lights only during certain times with a smart app, not easy to control the led’s on the sensor during certain hours so I keep my post here for others reading the thread and just post this correction :slight_smile:

@YEM

Perhaps these parameters could get you close to what you want. At night when the room is dark the LED would be set to 1%. If that is low enough perhaps it could work. But I tend to think any light in bedroom at night when you move will be annoying.

  1. AMBIENT ILLUMINATION LEVEL BELOW WHICH LED
    BRIGHTNESS IS SET TO 1%
    The parameter is relevant only when the parameter 81 is set to 0.
    Available settings: 0 to parameter 83 value
    Default setting: 100 (100 lux)
    Parameter size: 2 [bytes]
  2. AMBIENT ILLUMINATION LEVEL ABOVE WHICH LED
    BRIGHTNESS IS SET TO 100%
    The parameter is relevant only when the parameter 81 is set to 0.
    Available settings: parameter 82 value to 65535
    Default setting: 1 000 (1 000 lux)
    Parameter size: 2 [bytes]

Would love to get one of these but I am in Australia and dont won’t to start buying zwave devices on the wrong frequency. Hoping smart things v2 will support all z wave bands.

Can anyone recommend any zigbee motion sensors that have light sensor built in that works with smart things?

Simple use case I want is to set the motion sensor to Turn on lights only when light levels are at a certain level. Surely this is possible ?

Started a new topic for you on zigbee sensors:

Why is it suddenly insensitive to motion? Have my fibaro motion sensor installed for several weeks. It used to detect me about 15 - 20 feet away. Now i have to be less than 6 feet. Using fibaro.groovy latest version (4.28) from github. The problem existed before the latest update to ide in my device types
-Changed the sensitivity from default 10 to 9 (more sensitive) without change.
-uninstalled / reinstalled the sensor
-uninstalled /reinstalled the iOS app
-removed the senor cover

No better. Suggestions please.

Did you triple click the inclusion button before sending the new config settings ?
The Fibaro being battery operated doesn’t listen for zwave messages unless told to with a triple click.

Since it used to work sounds like a device failure.

Yes , I triple clicked. All functions are working. The updated app is present as i got control of 4 things in preferences instead of two . The range is just reduced. Maybe it is failure on the chip. Would like it to be something else, so trying to check all possibilities.

Have you tried different location. Just wondering if it is getting affected by change in lighting or something. Perhaps more sun in current months interfering ?

I know mine currently goes crazy with false reports from 3:30-4:40 because of the way the sun hits the main area it is watching. So I assume it is just seeing shadows.

JD / Ron - thanks for both of your replies. I’m going to incorporate both once I figure out how. I was probably confusing in my question but JD you were correct in assuming that what I wanted was for the sensor to not activate the fixture, even though it senses motion, but only between certain times.

But Ron I hadn’t even thought about turning the sensor light way down. It is in fact too bright and I like this idea.

Let me know if you have issue setting the lower sensor light. I can add this as a parameter. I personally just turn mine off but a very low setting might be nice.

UPDATE: I decided to add some parameters to my device code
I improved “LED Mode On/Off”
it is now three settings

  1. LED On or Off
  2. LED Mode (Once, Long-Short, Long-Two Short)
    Once = modes 1-9 flash once on motion
    Long-Short = modes 10-18 single long blink at motion, one short blink each subsequent motion
    Long-Two Short = modes 19-26 single long blink at motion, two short blinks subsequent motion
  3. LED Color (Includes flashlight mode, Temp color, and all fixed colors)
    The three combined figures out the setting for param 80 so you have full control over param 80 now

I also added the LED level (81) (0=ambient 1-100=percentage) I can’t really tell the difference between 5% and 100% but maybe if I tested in a dark room.
Note: 0 ambient only works with default settings for 82 and 83 parameters. I should probably add them but it’s midnight and I should really get some sleep.

Code is here if you like to try. If you are using my code already just save->Publish. Then restart the ST app (of already running the new preference will not display) then set the new preferences->done->triple click b-button on fibaro->configure from ST app configure tile.

I am liking flashlight mode. Lets me have a motion sense based night light. Will likely drain my battery but I am giving it a try for a while.

I ended up reducing the PIR blind time from 8 seconds to 4. Mine are much more sensitive now.

Would you mind displaying the line of code configuration from IDE for it. I know sometimes, like for the lux value reporting, there is a formula of sorts. Thank you!

The following is my configure section:

def configure() {
	log.debug "Configuring Device For SmartThings Use"
    def cmds = []
    
    // send associate to group 3 to get sensor data reported only to hub
    cmds << zwave.associationV2.associationSet(groupingIdentifier:3, nodeId:[zwaveHubNodeId]).format()

	// turn on tamper sensor with active/inactive reports (use it as an acceleration sensor) default is 0, or off
	cmds << zwave.configurationV1.configurationSet(configurationValue: [4], parameterNumber: 24, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 24).format()
        
    // temperature change report threshold (0-255 = 0.1 to 25.5C) default is 1.0 Celcius, setting to .5 Celcius
    cmds << zwave.configurationV1.configurationSet(configurationValue: [5], parameterNumber: 60, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 60).format()
    
    //change lux minimum reporting value
    cmds << zwave.configurationV1.configurationSet(configurationValue: [0,0], parameterNumber: 40, size: 2).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 40).format()

	//set lux minimum reporting time
    cmds << zwave.configurationV1.configurationSet(configurationValue: [2,88], parameterNumber: 42, size: 2).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 42).format()
    
	//change tamper sensor sensitivity value
    cmds << zwave.configurationV1.configurationSet(configurationValue: [62], parameterNumber: 20, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 20).format()
    
    //change motion sensor sensitivity
    cmds << zwave.configurationV1.configurationSet(configurationValue: [8], parameterNumber: 1, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 1).format()
    
    //change motion sensor pulses
    cmds << zwave.configurationV1.configurationSet(configurationValue: [1], parameterNumber: 3, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 3).format()
    
    //change motion sensor blind time
    cmds << zwave.configurationV1.configurationSet(configurationValue: [7], parameterNumber: 2, size: 1).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 2).format()
    
    //change motion sensor resetting time
    cmds << zwave.configurationV1.configurationSet(configurationValue: [0,120], parameterNumber: 6, size: 2).format()
    cmds << zwave.configurationV1.configurationGet(parameterNumber: 6).format()
    
    
    cmds << response(zwave.batteryV1.batteryGet())
    cmds << response(zwave.versionV1.versionGet().format())
    cmds << response(zwave.manufacturerSpecificV2.manufacturerSpecificGet().format())
    cmds << response(zwave.firmwareUpdateMdV2.firmwareMdGet().format())

	delayBetween(cmds, 500)
}

I simply wake up the sensor and hit configure in the app to send the values to the sensor.
Some of the changes are there because it was me experimenting. I reduced the number of pulses, but this made the system so sensitive that it was turning my lights on and off all night. I also increased the reset time to two minutes so that I wouldn’t overpopulate my log with motion detected/stopped events.My experience has been that the blind time is the most effective lever. It does effect the battery life of the sensor so you want to only decrease it to the point needed. I’ve toyed with the idea of reducing the number of pulses and decreasing the sensitivity til there are no more false triggers.