Announcement

Collapse
No announcement yet.

Easy Trigger plug-in - Feature Requests

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

  • spud
    replied
    In version 3.0.0.57 available in the beta section of the updater, I have added "dynamic groups". A dynamic group is a group of devices based on rules. You can define new dynamic groups from the config page.

    For example the group on the screenshot below will include all the devices that match the following conditions
    name contains "Light" AND room is "Living Room" AND type starts with "UPB"
    OR
    name contains "Light" AND room is "Kitchen"
    Click image for larger version

Name:	dyngroup.png
Views:	91
Size:	45.0 KB
ID:	1288180

    To know which devices are currently included in a dynamic group you can hover your mouse pointer over the icon next to the Edit button, and you will see a tooltip with the list of devices.

    Click image for larger version

Name:	dyngroup2.png
Views:	84
Size:	22.6 KB
ID:	1288181

    Once a dynamic group is defined you can use it in Triggers/Conditions/Actions exactly like with static groups.

    Warning: The old way of defining groups based on name/location/type within triggers is now deprecated and will be removed in a future version.

    Leave a comment:


  • jvm
    replied
    Originally posted by spud View Post

    1. It could be tricky because from the plugin point of view when an action is called there is no reliable way to know which trigger is the origin. So such a feature would have to be based on the ETDeviceRef global variable or similar, which could to lead to incorrect behavior if 2 triggers are fired at almost the same time.
    I think I will pass on this one for now

    2-3. I'm considering this, and if/when I do it, this would be from the config page.

    4. I will do it, but I'm quite busy currently so it may take some time
    spud There are two more items I'd like to add to the list I posted at #454, above, for your consideration. As a matter of personal preference, of the items I've suggested, I'd rank #5 and #4 as my "top two" items.

    5. For the "EasyTrigger: Set Group of Devices to Expression" action, I'd like the ability to do some simple conditional logic processing where you can evaluate some simple "If" logic and do something unique for each group member. To implement this, I propose two enhancements to the "EasyTrigger: Set Group of Devices to Expression" action: (a) for the expression part to be evaluated individually for each device in the group -- perhaps as an option; and (b) add variables which would hold the key values for the current device in the group as the expression part is evaluated for that device.
    • These variables would parallel the global variables you use when an Easy Trigger trigger occurs. For sake of example, let's call them: ThisDeviceValue, ThisDeviceStatus, ThisDeviceRef, ThisDeviceName, ThisDeviceLocation1, ThisDeviceLocation2. The key here is that these variables change for each device in the group as the group expression part of the action is evaluated for that device. I can also envision some cases where a "Device Type" variable would be useful (both here and as part of the Global variables).
    • An example use case would be to set a group of devices, but to be able to use each device's current value in an "IF" expression. For example, 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) ".

    6. For the existing global trigger variables etDeviceLocation1, etDeviceLocation2, etDeviceName, etDeviceRef, etDeviceStatus, and etDeviceValue it occurs to me that a race condition might occur if (1) an event triggers that uses these variables and in the action part you have a "wait" action or other delay before these variables are acted on., and (2) during that delay, another event triggers that changes the variables before they are acted on by the first event. With this in mind, I propose that these variables have a unique instance for each event -- i.e., when the event triggers, a copy of the value of these variables is made for the current event instance and that copy is used for any of that event's actions. Thus, if a second event triggered while the first event was still processing its actions, the first event would still use the values that existed at its moment of triggering.

    Leave a comment:


  • MattL0
    replied
    Hi Spud,

    Would it be possible to add this as a condition too?

    But just add the condition: ''This condition [ ] is true'' ( without specifying any device, and without the old/new variable )

    thanks

    Attached Files

    Leave a comment:


  • ZoRaC
    replied
    Any chance to expand the “any device in this group”-triggers to have a “value not changed for exactly x min”?

    Use case: get an alert if any of my temperature sensors stops reporting for some reason. I use them for heat-control, so it’s important to know if any of them stops reporting.

    Leave a comment:


  • mikee123
    replied
    Somehow I missed that one., Perfect. No idea why I didn't see it

    Leave a comment:


  • spud
    replied
    Originally posted by mikee123 View Post
    We have 'a device has changed in the last... and a selection of devices'. I would need a device has NOT changed in the last x minutes

    I want to trigger if a device has changed. Then check if another device has not changed after 5 seconds


    Another request would be to compare device a to device b - If device a equals device b also if device a does not equal device b
    EasyTrigger already has all of that.
    In the "EasyTrigger: A device's Value is" category there are the following conditions:
    • This device's value has NOT changed for at least...
    • Comparison between 2 device values is true

    Leave a comment:


  • mikee123
    replied
    We have 'a device has changed in the last... and a selection of devices'. I would need a device has NOT changed in the last x minutes

    I want to trigger if a device has changed. Then check if another device has not changed after 5 seconds


    Another request would be to compare device a to device b - If device a equals device b also if device a does not equal device b

    Leave a comment:


  • jvm
    replied
    Originally posted by spud View Post

    1. It could be tricky because from the plugin point of view when an action is called there is no reliable way to know which trigger is the origin. So such a feature would have to be based on the ETDeviceRef global variable or similar, which could to lead to incorrect behavior if 2 triggers are fired at almost the same time.
    I think I will pass on this one for now

    2-3. I'm considering this, and if/when I do it, this would be from the config page.

    4. I will do it, but I'm quite busy currently so it may take some time
    Thank you. For #1, it sounds like you would need something like "ETDeviceRef" but which would have local instance that only last for a specific event so that each event could have its own instance. I guess that would be a bit complex so your passing for now is understood. Thanks for the consideration though and thanks for looking into 2-4.

    Leave a comment:


  • spud
    replied
    Originally posted by jvm View Post
    spud I wanted to summarize / repost a number of feature enhancements that I or others previously posted but for which I didn’t see a response and assume they’re lost in the many pages of this thread.

    If would be helpful to get your feedback to indicate whether you are considering each, or whether you’ve ruled them out (so that I / others don’t nag you on things you have already determined aren’t workable.).

    In each case, I am suggesting what I think are widely useable refinements to the existing functionality, rather than entirely new functionality. I’ve also tried to limit these to things that I think are generally usable by many rather than special-use cases.

    1. For events that begin with an Easy Trigger “Any device’s value in this group” trigger (i.e., a trigger that sets the ETDeviceRef value), I would like to enhance the “EasyTrigger: Set Device to …” actions such that, when a user clicks on the “(Select A Device” drop-down, the first listed device would be “Easy Trigger – Group Triggered Device” (or similar name). The idea here is to have an easy way to act on the triggered device that got the event going without having to use scripting.

    2. The ability to define Groups based a combination of specified Name, Location1, Location2, and Type values where for each field you can select “Any” or a specific value. The group members would then update dynamically as new devices meeting these characteristics are added to Homeseer. This is an extension of the current group Trigger functionality which allows you to define a group based on one of these 4 characteristics. I would like to be able to simultaneously use all 4 to get finer control. There are two places where this functionality could be added. The first is in the Trigger itself, kind of like what is one with the current ET Group trigger functionality. As an alternate way to implement, it could be added in the Easy Trigger config page so a user could define a group based on these 4 characteristics. The CPS Tags plugin has a good implementation of this type of group defining functionality.

    3. Similar to #2, but for also allow the user to define a Group based on Name, Location1, Location2, and Type values in ET Event Actions, rather than just triggers. If #2 were implemented such that the group were defined based on Name, Location1, Location2, and Type values on the Easy Trigger config page, it seems this would also follow automatically from that implementation.

    4. Group Push. Similar to the “new” Push Device Value action, but applied to Groups. I think I saw you were already considering this.
    1. It could be tricky because from the plugin point of view when an action is called there is no reliable way to know which trigger is the origin. So such a feature would have to be based on the ETDeviceRef global variable or similar, which could to lead to incorrect behavior if 2 triggers are fired at almost the same time.
    I think I will pass on this one for now

    2-3. I'm considering this, and if/when I do it, this would be from the config page.

    4. I will do it, but I'm quite busy currently so it may take some time

    Leave a comment:


  • jvm
    replied
    spud I wanted to summarize / repost a number of feature enhancements that I or others previously posted but for which I didn’t see a response and assume they’re lost in the many pages of this thread.

    If would be helpful to get your feedback to indicate whether you are considering each, or whether you’ve ruled them out (so that I / others don’t nag you on things you have already determined aren’t workable.).

    In each case, I am suggesting what I think are widely useable refinements to the existing functionality, rather than entirely new functionality. I’ve also tried to limit these to things that I think are generally usable by many rather than special-use cases.

    1. For events that begin with an Easy Trigger “Any device’s value in this group” trigger (i.e., a trigger that sets the ETDeviceRef value), I would like to enhance the “EasyTrigger: Set Device to …” actions such that, when a user clicks on the “(Select A Device” drop-down, the first listed device would be “Easy Trigger – Group Triggered Device” (or similar name). The idea here is to have an easy way to act on the triggered device that got the event going without having to use scripting.

    2. The ability to define Groups based a combination of specified Name, Location1, Location2, and Type values where for each field you can select “Any” or a specific value. The group members would then update dynamically as new devices meeting these characteristics are added to Homeseer. This is an extension of the current group Trigger functionality which allows you to define a group based on one of these 4 characteristics. I would like to be able to simultaneously use all 4 to get finer control. There are two places where this functionality could be added. The first is in the Trigger itself, kind of like what is one with the current ET Group trigger functionality. As an alternate way to implement, it could be added in the Easy Trigger config page so a user could define a group based on these 4 characteristics. The CPS Tags plugin has a good implementation of this type of group defining functionality. UPDATE - This was implemented in 3.0.0.57 with the addition of dynamically defined groups on the Easy Trigger Config page. Thanks!

    3. Similar to #2, but for also allow the user to define a Group based on Name, Location1, Location2, and Type values in ET Event Actions, rather than just triggers. If #2 were implemented such that the group were defined based on Name, Location1, Location2, and Type values on the Easy Trigger config page, it seems this would also follow automatically from that implementation. UPDATE - This was implemented in 3.0.0.57 with the addition of dynamically defined groups on the Easy Trigger Config page. Thanks!

    4. Group Push. Similar to the “new” Push Device Value action, but applied to Groups. I think I saw you were already considering this.UPDATE - This was implemented in 3.0.0.58 with the addition of group push. Thanks!


    UPDATE: See post # 462 for requests #5, #6. Idea #6 may be part of a "stepping stone" toward implementing #1 and solving the problem you mention in post #455.

    Leave a comment:


  • ScottRennie
    replied
    jvm and The Profit - thank you for the ideas - I'll have a play with those and see how I get on. I agree with Ltek that a dedicated event would be useful.

    Leave a comment:


  • The Profit
    replied
    jvm I like your idea to halt a triggered action if someone interacts with the light during the time range. I haven’t used that action yet in any of my events so far....


    Sent from my iPad using Tapatalk

    Leave a comment:


  • jvm
    replied
    ScottRennie, In addition to the approach from The Profit , another approach is to use a recurring trigger, say triggering every minute, and to have that trigger occur between your start and stop times. You then use the Easy Trigger "Set Device to Another Device" to set your device to itself plus 1. See event "Slow Dim", below.

    There are time when you might want to "stop" this slow ramping cycle - e.g., if a user manually operated the switch during the cycle -- so I've also added an event "Slow Dim - Halt" which looks for the central scene key to be changed and, if there is a change, disables the event for 2 hours (thus, moving outside the 6 pm to 7 pm window). I've set this up to look for any central scene key change. You might just want to limit this to either the Scene 001 Key Pressed 1 time or Scene 002 Key Pressed 1 time.

    I think it would be relatively straightforward to extend this to a group of lights using the Easy Trigger "Set Group to Expression", but in that case, instead of setting a device to another device, you'd pick a "lead" device and use its $$DVR: value in the expression to set all devices in the group to a common value of the lead device +1. You may also want to set up an Easy Trigger group for all of the related central scene devices to use in the "Halt" event so that if any were manually changed, the ramping event would stop for all of the devices.

    So I think this gives you at least 2 reasonable ways to accomplish what you're looking for. Good luck!


    Click image for larger version  Name:	Capture.PNG Views:	1 Size:	292.5 KB ID:	1283527

    Leave a comment:


  • The Profit
    replied
    Originally posted by Ltek View Post
    ... I think I follow. Your event would increment the dim level 2% every minute. Correct?

    Looks like that would work. Still would be cool to have the functionality built in as an Action

    Sent from my SM-G950U using Tapatalk
    Yes, it increments the dim level 2% every minute and sets a limit so that it doesn’t increase above that limit in the event that someone sets the light to another value.

    I’m not a plugin developer but it seems like it would be possible to set up an action to do this. With all the different possibilities that people could come up with however, it’s great that Spud has at least opened up a lot more options with ET.


    Sent from my iPad using Tapatalk

    Leave a comment:


  • Ltek
    replied
    Originally posted by The Profit View Post

    You should be able to do this with the existing EasyTrigger plugin. Question first, once the light has reached the 60% do you want to leave it on until the time where you will start to decrease the light level or will it need to turn off after its reached 60%?

    -Setup a schedule in ET with the two 30 minute intervals when you would like the light to gradually increase and decrease.

    -Create event for morning time
    If time enters (xyzschedule) time range
    And if the time is before 12:00pm
    And If The Device was Set and is not greater than 62
    Or If The device had its value set and is less than 62
    And If EasyTrigger:Time is within (xyzschedule) time range
    And If the time is before 12:00pm
    Then EastTrigger:Set Device to Expression, choose your dimmer, set it to $$DVRinsert device ref#) + 2
    **In the Options for the event, make sure you set the can not rerun for one minute.

    -Create event for evening
    If time enters (xyzschedule) time range
    And if the time is after 12:00pm
    And If The Device was Set and is not greater than 62
    Or If The device had its value set and is less than 62
    And If EasyTrigger:Time is within (xyzschedule) time range
    And If the time is after 12:00pm
    Then EastTrigger:Set Device to Expression, choose your dimmer, set it to $$DVR: insert device ref#) - 2
    **In the Options for the event, make sure you set the can not rerun for one minute.

    Let me know how this works for you, hope it helps!


    Sent from my iPad using Tapatalk
    ... I think I follow. Your event would increment the dim level 2% every minute. Correct?

    Looks like that would work. Still would be cool to have the functionality built in as an Action

    Sent from my SM-G950U using Tapatalk

    Leave a comment:

Working...
X