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

  • 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

    Comment


    • 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
      HS3 3.0.0.500 &HSTouch Designer 3.0.71 with 782 Devices, 479 Events
      Plugin's:
      BLBackup, BLOccupied, BLShutdown, EasyTrigger, Ecobee,
      EnvisaLink DSC, PHLocation, Pushover, SONOS, Blue Iris, UltraRachio3,
      weatherXML, Jon00 Alexa Helper, Network Monitor, Z-Wave 3.0.1.252

      Comment


      • 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.

        Comment


        • 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.

          Comment


          • 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

            Comment


            • 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.

              Comment


              • 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

                Comment


                • 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

                  Comment


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

                    Comment


                    • 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.

                      Comment


                      • 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

                        Comment


                        • 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.

                          Comment


                          • 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:	24
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:	21
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.

                            Comment


                            • Hello Spud,
                              Is it possible to change the type of an existing Device Group from Static to Dynamic or is it best to delete the existing Static device group and recreate it from scratch?


                              Sent from my iPad using Tapatalk
                              HS3 3.0.0.500 &HSTouch Designer 3.0.71 with 782 Devices, 479 Events
                              Plugin's:
                              BLBackup, BLOccupied, BLShutdown, EasyTrigger, Ecobee,
                              EnvisaLink DSC, PHLocation, Pushover, SONOS, Blue Iris, UltraRachio3,
                              weatherXML, Jon00 Alexa Helper, Network Monitor, Z-Wave 3.0.1.252

                              Comment


                              • Originally posted by The Profit View Post
                                Hello Spud,
                                Is it possible to change the type of an existing Device Group from Static to Dynamic or is it best to delete the existing Static device group and recreate it from scratch?


                                Sent from my iPad using Tapatalk
                                yes it's possible to change the type of an existing group from static to dynamic, internally it will delete the static group and recreate a dynamic one with the same name.

                                Comment

                                Working...
                                X