Announcement

Collapse
No announcement yet.

Comparison between two devices stopped working

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Comparison between two devices stopped working

    I am struggling to understand why this code stopped working:

    Click image for larger version

Name:	Screen Shot 2019-02-22 at 13.09.21.png
Views:	1
Size:	98.5 KB
ID:	1287164

    Temperature: 66 F
    Thermostat: 68°F
    Occupancy: On
    Heater: Off

    The Temperature (66) is less than the Thermostat setting (68) and the Occupancy Setting is ON and so the heater should turn on. But it remains off. (The T-Stat is just a virtual device, not an actual physical device.)

    I created a simple test event that would send an email every time the temperature changed (every 15 minutes) and the temperature is consistently less than the T-Stat setting.

    I created another test event that would only compare the Temperature with the T-Stat setting and it fails, too:
    Click image for larger version

Name:	Screen Shot 2019-02-22 at 13.14.08.png
Views:	1
Size:	56.0 KB
ID:	1287165
    So it is the EastTrigger test that is failing.

    I went into the Advanced tab for the temperature sensor and it reports the actual values as:
    Click image for larger version

Name:	Screen Shot 2019-02-22 at 13.16.55.png
Views:	1
Size:	13.3 KB
ID:	1287166

    And for the T_Stat (which is just a virtual device) as:
    Click image for larger version

Name:	Screen Shot 2019-02-22 at 13.18.28.png
Views:	1
Size:	13.2 KB
ID:	1287167

    So it sure seems that EasyTrigger is failing to perform correctly, although I understand it to be a very reliable and well maintained control.

    I have stopped and restarted the EasyTrigger plugin and then later stopped and restarted HomeSeer. This did not correct the behavior.

    I know that events are triggering when the temperature sensor changes, since I have built an event that sends me an email whenever the temperature is updated (every 15 minutes.) I am getting those.

    One last comment: This all WAS working just a few days ago. I don't think I made any changes that would have cause it to fail, but I have done a lot in the last few days, so I may have been stupid in some way.

    Any further thoughts?


  • #2
    Spud will have to confirm but I think a comparison trigger is only true the first time it becomes true.
    Randy Prade
    Aurora, CO
    Prades.net

    PHLocation - Pushover - EasyTrigger - UltraECM3 - Ultra1Wire3 - Arduino

    Comment


    • #3
      when used as a trigger the comparison value will fire only if the condition was previously false and becomes true. So you need to have tstat <= temperature and then one of the 2 device values changes and temperature < tstat becomes true

      Comment


      • #4
        OK, that is actually good. I can remove all of the logic I had to set a flag so that an event wouldn’t repeatedly fire. I didn’t realize that it was edge sensitive.

        Suggestion: add the text “becomes true” to the end of the condition. That would indicate that it was edge sensitive.

        I am sorry, I am not able to parse this sentence: “So you need to have tstat <= temperature and then one of the 2 device values changes and temperature < tstat becomes true”. Could you please explain it a bit differently or else add a few words. I am sorry, but it’s meaning isn’t clear to me.

        I’m also trying to discern why you suggest <= as the condition. I am intentionally using < and > relative to the target temperature in order to provide some hysteresis.

        Thank you for the reply.

        Comment


        • #5
          In thinking about this, it is a problem, and I am interested in any thoughts on how to correct it.

          Consider the event conditions:
          Click image for larger version

Name:	Screen Shot 2019-02-22 at 16.49.38.png
Views:	1
Size:	73.7 KB
ID:	1287217

          The objective is that whenever BOTH conditions become true the heat turns on. That is, the temperature must be low Occupancy flag must be on.

          The glitch is that if the temperature becomes low while the occupancy flag is off then turning on the occupancy flag will not start the heater. That is, the owner coming home will not cause a cold house to start heating. That's because the Sensor<Thermostat condition is apparently true just one time and will thereafter return false.

          I'm not quite certain how to overcome this, or what logic may work.

          I'll think about it, but it is an interesting case where edge sensitivity on a test isn't always a good thing.

          What is really needed is for the event to not re-execute for as long as the entire test remains true...not one specific line-item in the test.

          Comment


          • #6
            I may be missing your point, but wouldn't this work?


            IF Great Room Sensor < Great Room Setting
            AND IF Great Room Occupancy = On

            OR IF Great Room Occupancy changes and becomes On
            AND IF Great Room Sensor < Great Room Setting

            THEN start the heater



            Originally posted by SeattleDavid View Post
            In thinking about this, it is a problem, and I am interested in any thoughts on how to correct it.

            Consider the event conditions:
            Click image for larger version

Name:	Screen Shot 2019-02-22 at 16.49.38.png
Views:	1
Size:	73.7 KB
ID:	1287217

            The objective is that whenever BOTH conditions become true the heat turns on. That is, the temperature must be low Occupancy flag must be on.

            The glitch is that if the temperature becomes low while the occupancy flag is off then turning on the occupancy flag will not start the heater. That is, the owner coming home will not cause a cold house to start heating. That's because the Sensor<Thermostat condition is apparently true just one time and will thereafter return false.

            I'm not quite certain how to overcome this, or what logic may work.

            I'll think about it, but it is an interesting case where edge sensitivity on a test isn't always a good thing.

            What is really needed is for the event to not re-execute for as long as the entire test remains true...not one specific line-item in the test.
            -Wade

            Comment


            • #7
              Originally posted by SeattleDavid View Post
              In thinking about this, it is a problem, and I am interested in any thoughts on how to correct it.

              Consider the event conditions:
              Click image for larger version

Name:	Screen Shot 2019-02-22 at 16.49.38.png
Views:	1
Size:	73.7 KB
ID:	1287217

              The objective is that whenever BOTH conditions become true the heat turns on. That is, the temperature must be low Occupancy flag must be on.

              The glitch is that if the temperature becomes low while the occupancy flag is off then turning on the occupancy flag will not start the heater. That is, the owner coming home will not cause a cold house to start heating. That's because the Sensor<Thermostat condition is apparently true just one time and will thereafter return false.

              I'm not quite certain how to overcome this, or what logic may work.

              I'll think about it, but it is an interesting case where edge sensitivity on a test isn't always a good thing.

              What is really needed is for the event to not re-execute for as long as the entire test remains true...not one specific line-item in the test.
              You need to duplicate your trigger and condition, then invert them as a secondary set like this:

              Click image for larger version

Name:	Capture.PNG
Views:	1
Size:	60.7 KB
ID:	1287223

              As far as your other question above, Spud made a typo, it should have read: “So you need to have tstat >= temperature and then one of the 2 device values changes and temperature < tstat becomes true”. Then it would read: The comparison needs to be greater than or equal, then become less than in order for the trigger to be true.

              Randy Prade
              Aurora, CO
              Prades.net

              PHLocation - Pushover - EasyTrigger - UltraECM3 - Ultra1Wire3 - Arduino

              Comment


              • #8
                Originally posted by cc4005 View Post
                I may be missing your point, but wouldn't this work?


                IF Great Room Sensor < Great Room Setting
                AND IF Great Room Occupancy = On

                OR IF Great Room Occupancy changes and becomes On
                AND IF Great Room Sensor < Great Room Setting

                THEN start the heater




                That is correct. You posted your answer as I was building the demo event above.

                Randy Prade
                Aurora, CO
                Prades.net

                PHLocation - Pushover - EasyTrigger - UltraECM3 - Ultra1Wire3 - Arduino

                Comment


                • #9
                  Great. I understand. It's obscure to be sure, but it lets me solve this problem and be aware in the future for similar things. I think I may have a few of them in this installation.

                  Thank you so much for helping!

                  Comment

                  Working...
                  X