Announcement

Collapse

Contacting HomeSeer This Week

HomeSeer is open and operational this week. All orders are being processed and shipped as usual. However, some staff are working from home. If you need to contact HomeSeer for support or customer service, please use our Email or Chat options. https://homeseer.com/contact-us/
See more
See less

Easy Trigger plug-in - Feature Requests

Collapse
This is a sticky topic.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hans
    replied
    Originally posted by spud View Post

    this is a bug I have introduced in version 3.0.0.62. I will fix it ASAP

    however, note that your action "Set all devices in Group to $DEVICEVALUE" will have almost no effects because it means each device in the group will bet set to its current value. Maybe what you wanted to do is use the global variable $$GLOBALVAR:ETDeviceValue: which contains the current value of the triggering device

    see end of this post: https://forums.homeseer.com/forum/ul...175#post864175
    OK then. Actually I was using an IF statement as the expression, but as this didn´t work after some tries, I just used the simplest form to see if it would work. Thanks for the quick reply.

    Leave a comment:


  • spud
    replied
    Originally posted by Hans View Post
    I´m trying to use $DEVICEVALUE and $DEVICEREF with 'Set Group of Devices to Expression' but I always get an error in the log: " ERROR Parameter was not defined Nome do parâmetro: DEVICEVALUE .The same error happens if I use $DEVICEREF. The event below for example throws the error:

    IF Any device in group Luzes_Quartos_Terreo was set and has a value that is not equal to 0
    Then Set all Devices in Luzes_Quartos_Terreo to $DEVICEVALUE

    Any advice on what am I doing wrong ? I´m on EasyTrigger Beta 3.0.0.62.
    this is a bug I have introduced in version 3.0.0.62. I will fix it ASAP

    however, note that your action "Set all devices in Group to $DEVICEVALUE" will have almost no effects because it means each device in the group will bet set to its current value. Maybe what you wanted to do is use the global variable $$GLOBALVAR:ETDeviceValue: which contains the current value of the triggering device

    see end of this post: https://forums.homeseer.com/forum/ul...175#post864175

    Leave a comment:


  • Hans
    replied
    I´m trying to use $DEVICEVALUE and $DEVICEREF with 'Set Group of Devices to Expression' but I always get an error in the log: " ERROR Parameter was not defined Nome do parâmetro: DEVICEVALUE .The same error happens if I use $DEVICEREF. The event below for example throws the error:

    IF Any device in group Luzes_Quartos_Terreo was set and has a value that is not equal to 0
    Then Set all Devices in Luzes_Quartos_Terreo to $DEVICEVALUE

    Any advice on what am I doing wrong ? I´m on EasyTrigger Beta 3.0.0.62.

    Leave a comment:


  • jvm
    replied
    Originally posted by spud View Post

    My bad, it's a typo in the forum post, .61 is the correct version.

    By the way, in case you're interested in some simple examples to add to the instructions, here are a few that I'm already using . . .



    To turn on all dimmers to 25% if they are off, but leave them at their current value if a user has already turned them on, use the expression:
    if( $DEVICEVALUE == 0, 25, $DEVICEVALUE)

    To increase each dimmers by 10% of its current value if the device is already 5% or greater, or set to 5% if the device is currently less than 5%, use the expression:
    if ($DEVICEVALUE < 5, 5, Min(Ceiling($DEVICEVALUE * 1.10), 99) )

    * Note that the expression
    Min(Ceiling($DEVICEVALUE * 1.10), 99) will increase a dimmer value by 10%, but limit the maximum to 99 which is the maximum Z-Wave dimmer value that is allowed. The "Ceiling" command ensures that there be at least a 1-point increase if the multiplication by 1.10 would, otherwise, result in a calculated increase of less than 1.


    Leave a comment:


  • spud
    replied
    Originally posted by logman View Post

    Is version .65 correct? I'm showing .61 as the latest available in the updater. My updater has been acting screwy lately, so want to make sure I'm not missing something...

    --Barry
    My bad, it's a typo in the forum post, .61 is the correct version.

    Leave a comment:


  • logman
    replied
    Originally posted by spud View Post

    I added $DEVICEVALUE and $DEVICEREF as possible variables for the "Set Group of Devices to Expression" action in version 3.0.0.65 (available in beta section of the updater)
    I cannot add things like name, location, etc... because the library that evaluate the expression can only work with numerical values, not with strings.
    Is version .65 correct? I'm showing .61 as the latest available in the updater. My updater has been acting screwy lately, so want to make sure I'm not missing something...

    --Barry

    Leave a comment:


  • spud
    replied
    Originally posted by jvm View Post
    By the way, I assumed that if I used $$DVR:$DEVICEREF: it would give the same result as using $DEVICEVALUE, but from my quick test, using $$DVR:$DEVICEREF: will generate an error. Again, thanks for this addition.
    This is because, global variables are evaluated before $DEVICEREF and $DEVICEVALUE, I guess I should do the opposite. It will be fixed in the next version.

    Leave a comment:


  • jvm
    replied
    Originally posted by spud View Post

    I added $DEVICEVALUE and $DEVICEREF as possible variables for the "Set Group of Devices to Expression" action in version 3.0.0.65 (available in beta section of the updater)
    I cannot add things like name, location, etc... because the library that evaluate the expression can only work with numerical values, not with strings.

    Regarding stacks, I will add some more advanced options to the push/pop/clear actions later.
    Awesome. This works great. I'm amazed you got this implemented so fast!

    By the way, I assumed that if I used $$DVR:$DEVICEREF: it would give the same result as using $DEVICEVALUE, but from my quick test, using $$DVR:$DEVICEREF: will generate an error. Again, thanks for this addition.

    Leave a comment:


  • spud
    replied
    Originally posted by jvm View Post
    spud Thank you for the many recently added features that I and other had requested. I've already found them quite helpful in implementing some new feature that I was trying to get working (I find the stack operations incredibly useful for a use case I had of adjusting and then restoring volume levels for Chromecast devices using your Chromecast plugin - in particular, using stacks to adjust volume to play an announcement but then being able to restore the original volumes).

    There are two remaining changes that I'm interested in. One that seems simple, and one that seems more complex. Each of these are intended to have wide applicability, rather than being narrow use-case focused.

    I realize you've been busy on adding features and so you may have limited time to work on these ideas now, but your thoughts on whether you can add these at some point would be appreciated.

    1. Probably Simple - For the "clear stack" operations, a check box whereby the device is set back to its original value -- i.e., the final value to be popped off the stack. Use case: restore an item or group of items to its/their original value, regardless of pending intermediate changes that have been stored on the stack. I was thinking of using this for a HomeSeer shutdown routine to make sure things are stored to their original values before a shutdown. I'm sure there are other use cases.

    2. More Complex (but a lot of power) - For the "EasyTrigger: Set Group of Devices to Expression" action, the ability to evaluate the expression individually for each item in the group, combined with (a) a new global variable etDeviceType which has the type of the triggering device; and (b) a set of variables that you can use in the expression that are analogous to the "et" global variables but which would hold the values for the current device in the group as the expression part is evaluated for that device.

    This proposal was explained a bit more in post #462. The basic idea is to allow some individualized processing for each member in the group using an "If" statement in the expression to individually calculate a value for each device to be set based on its individualized current values and the triggering device's values.

    Example use cases:
    • If I wanted to turn on all lights in Group "MyGroup" to 50%, but only if they are not already on, I could then do a "Set Group of Devices to Expression, Select the group "MyGroup" and then use an expression like: "IF($ThisDeviceValue == 0, 50, $ThisDeviceValue)" to set the device to 50 if it isn't on, but to leave it at the same value (i.e., set it to its already existing value $ThisDeviceValue) if it is already on (maybe even including a "do nothing if action would set to same value" option).
    • Similarly, if I wanted to turn on all lights in a group, but only if they are in the same floor / room as the triggering device and not already on, I would use and expression like: "IF($ThisDeviceLocation1 == $ETDeviceLocation1 && $ThisDeviceLocation2 == $ETDeviceLocation2 && $ThisDeviceValue == 0, 50, $ThisDeviceValue)". The idea here is that if I have a number of similar events each of which triggers off of something in the room and acts on other devices in the room, I could reduce my event could by writing a single event that can use the location information of the triggering device to filter out which devices to act on. For example, I have motions sensors in 10 rooms and want to turn on lights in the rooms with the motion sensor, rather than 10 events, I could have one group with all my motion sensors and another with all the lights and use a single event that considers the Location1 / Location2 in the expression evaluation.

    I could give a number of additional use cases for #2 if that's helpful for your consideration. Your thoughts on these would be appreciated. Best regards, JVM.
    I added $DEVICEVALUE and $DEVICEREF as possible variables for the "Set Group of Devices to Expression" action in version 3.0.0.61 (available in beta section of the updater)
    I cannot add things like name, location, etc... because the library that evaluate the expression can only work with numerical values, not with strings.

    Regarding stacks, I will add some more advanced options to the push/pop/clear actions later.

    Leave a comment:


  • kriz83
    replied
    What is the behaviour when the stack is 'full' (50 items). Will the oldest one be removed ?
    If not, could we add a pop without assigning it to a device ?

    Leave a comment:


  • Ltek
    replied
    Originally posted by jvm View Post
    However, if you use the "changed" trigger, it must be a changed value.
    ... maybe not, according to spud View Post

    I think I remember this is a bug in the "changes and becomes" trigger, when used with "Any value" it does not check if the value has actually changed.
    Did you try "This device has a value that just changed" instead ?

    Leave a comment:


  • alexbk66
    replied
    Originally posted by teladog01 View Post
    Like triggering when the value is set, even though the value does not change.
    As MattL0 said - it's only used for display, so doesn't affect anything.

    Leave a comment:


  • MattL0
    replied
    I think this is just a visual thing

    Leave a comment:


  • teladog01
    replied
    Originally posted by alexbk66 View Post
    Like what?
    Like triggering when the value is set, even though the value does not change.

    Leave a comment:


  • jvm
    replied
    spud Thank you for the many recently added features that I and other had requested. I've already found them quite helpful in implementing some new feature that I was trying to get working (I find the stack operations incredibly useful for a use case I had of adjusting and then restoring volume levels for Chromecast devices using your Chromecast plugin - in particular, using stacks to adjust volume to play an announcement but then being able to restore the original volumes).

    There are two remaining changes that I'm interested in. One that seems simple, and one that seems more complex. Each of these are intended to have wide applicability, rather than being narrow use-case focused.

    I realize you've been busy on adding features and so you may have limited time to work on these ideas now, but your thoughts on whether you can add these at some point would be appreciated.

    1. Probably Simple - For the "clear stack" operations, a check box whereby the device is set back to its original value -- i.e., the final value to be popped off the stack. Use case: restore an item or group of items to its/their original value, regardless of pending intermediate changes that have been stored on the stack. I was thinking of using this for a HomeSeer shutdown routine to make sure things are stored to their original values before a shutdown. I'm sure there are other use cases.

    2. More Complex (but a lot of power) - For the "EasyTrigger: Set Group of Devices to Expression" action, the ability to evaluate the expression individually for each item in the group, combined with (a) a new global variable etDeviceType which has the type of the triggering device; and (b) a set of variables that you can use in the expression that are analogous to the "et" global variables but which would hold the values for the current device in the group as the expression part is evaluated for that device. UPDATE: Release 3.0.0.61 adds the functionality of this #2. See post #511 for details / limitations of the implementation. Thanks!

    This proposal was explained a bit more in post #462. The basic idea is to allow some individualized processing for each member in the group using an "If" statement in the expression to individually calculate a value for each device to be set based on its individualized current values and the triggering device's values.

    Example use cases:
    • If I wanted to turn on all lights in Group "MyGroup" to 50%, but only if they are not already on, I could then do a "Set Group of Devices to Expression, Select the group "MyGroup" and then use an expression like: "IF($ThisDeviceValue == 0, 50, $ThisDeviceValue)" to set the device to 50 if it isn't on, but to leave it at the same value (i.e., set it to its already existing value $ThisDeviceValue) if it is already on (maybe even including a "do nothing if action would set to same value" option).
    • Similarly, if I wanted to turn on all lights in a group, but only if they are in the same floor / room as the triggering device and not already on, I would use and expression like: "IF($ThisDeviceLocation1 == $ETDeviceLocation1 && $ThisDeviceLocation2 == $ETDeviceLocation2 && $ThisDeviceValue == 0, 50, $ThisDeviceValue)". The idea here is that if I have a number of similar events each of which triggers off of something in the room and acts on other devices in the room, I could reduce my event could by writing a single event that can use the location information of the triggering device to filter out which devices to act on. For example, I have motions sensors in 10 rooms and want to turn on lights in the rooms with the motion sensor, rather than 10 events, I could have one group with all my motion sensors and another with all the lights and use a single event that considers the Location1 / Location2 in the expression evaluation.UPDATE: Release 3.0.0.61 adds the functionality of this #2 but could not include string processing (so comparisons must be of numeric data - no location field comparison is possible). But still very useful! See post #511 for details / limitations of the implementation.

    I could give a number of additional use cases for #2 if that's helpful for your consideration. Your thoughts on these would be appreciated. Best regards, JVM.

    Leave a comment:

Working...
X