HVAC Econ Program not cycling blower motor


#1

1) Give a description of the problem
Line 52 to line 82 not working correctly. Seem they will not change states as temperature changes compared to cooling set points.

2) What is the expected behavior?
To cycle fan in regards to “CoolingSetpointOffest” keeping the Compressors off on the HVAC system and only running the Blower motor.

3) What is happening/not happening?
Fan will not cycle from auto to on.

**4) Post a Green Snapshot of the piston!

**5) Log

12‎/‎26‎/‎2018‎ ‎12‎:‎10‎:‎01‎ ‎PM +24ms
+2ms ╔Received event [AC Econ].switch = on with a delay of 796ms
+135ms ║RunTime Analysis CS > 24ms > PS > 62ms > PE > 49ms > CE
+138ms ║Runtime (49025 bytes) successfully initialized in 62ms (v0.3.108.20180906) (135ms)
+139ms ║╔Execution stage started
+158ms ║║Comparison (integer) 0 is_less_than (integer) 73 = true (2ms)
+160ms ║║Condition #2 evaluated true (15ms)
+167ms ║║Comparison (integer) 0 is_greater_than (integer) 45 = false (2ms)
+169ms ║║Condition #6 evaluated false (8ms)
+171ms ║║Condition group #1 evaluated false (state did not change) (25ms)
+184ms ║║Comparison (integer) 0 is_greater_than (integer) 73 = false (2ms)
+186ms ║║Condition #11 evaluated false (12ms)
+194ms ║║Comparison (integer) 0 is_less_than (integer) 45 = true (2ms)
+196ms ║║Condition #12 evaluated true (8ms)
+197ms ║║Condition group #10 evaluated true (state did not change) (24ms)
+210ms ║║Comparison (enum) present is (string) present = true (2ms)
+212ms ║║Condition #27 evaluated true (11ms)
+213ms ║║Condition group #25 evaluated true (state did not change) (13ms)
+214ms ║║Cancelling statement #25’s schedules…
+236ms ║║Error executing virtual command [].sendSMSNotification: (11ms) com.datastax.driver.core.exceptions.InvalidQueryException: Invalid null value for partition key part tonumber
+261ms ║║Calculating (integer) 73 - (integer) 2 >> (integer) 71
+266ms ║║Comparison (dynamic) 71.0 is_less_than (dynamic) 71 = false (2ms)
+268ms ║║Condition #42 evaluated false (25ms)
+270ms ║║Condition group #41 evaluated false (state did not change) (27ms)
+292ms ║║Calculating (integer) 73 - (integer) 2 >> (integer) 71
+297ms ║║Comparison (dynamic) 71.0 is_greater_than_or_equal_to (dynamic) 71 = true (1ms)
+299ms ║║Condition #50 evaluated true (26ms)
+307ms ║║Comparison (enum) on is (string) on = true (3ms)
+309ms ║║Cancelling condition #56’s schedules…
+311ms ║║Condition #56 evaluated true (10ms)
+312ms ║║Cancelling condition #49’s schedules…
+313ms ║║Condition group #49 evaluated true (state changed) (40ms)
+317ms ║║Cancelling statement #52’s schedules…
+630ms ║║Executed physical command [Thermostat].setThermostatFanMode([on]) (306ms)
+631ms ║║Executed [Thermostat].setThermostatFanMode (310ms)
+636ms ║║Condition group #54 evaluated true (state did not change) (0ms)
+638ms ║║Condition group #39 evaluated true (state did not change) (4ms)
+642ms ║╚Execution stage complete. (503ms)
+643ms ╚Event processed successfully (643ms)


#2

Your problem is this piston will never get out of the first repeat until the switch is turned off so the second one never executes. Even though the first if may be false, the repeat is telling it to keep checking so it just stays in the first loop. I suggest you put both if’s in a single loop (if-then-else) to check for either condition.


#3

@guxdude

Hey! Looks like this fixed the issue. I will monitor and see if it keeps working thanks for the help man!


#4

You’re welcome. Glad I could help. If this indeed fixes the problem, be sure to mark you problem as solved.


#5

Still having the same issues and here is what I have done.


#6

Not sure why it is not working. As a test, try instead of ‘turn fan on’ change to ‘set fan mode on’. I think it should be the same but give it a try.


#7

Still no luck. Not sure why its not working… Its almost like it runs through the piston once and kicks the fan on and then after that it will not check conditions or “repeat” from lines 52 to 77.

EDIT: From line 52 to 77 is definitely not repeating the script. Not sure how to resolve this issue.


#8

Turn logging to maximum and run the script and post the log. maybe we’ll get insight to what is happening.


#9

Here is the log:

‎12‎/‎26‎/‎2018‎ ‎12‎:‎10‎:‎01‎ ‎PM +24ms
+2ms ╔Received event [AC Econ].switch = on with a delay of 796ms
+135ms ║RunTime Analysis CS > 24ms > PS > 62ms > PE > 49ms > CE
+138ms ║Runtime (49025 bytes) successfully initialized in 62ms (v0.3.108.20180906) (135ms)
+139ms ║╔Execution stage started
+158ms ║║Comparison (integer) 0 is_less_than (integer) 73 = true (2ms)
+160ms ║║Condition #2 evaluated true (15ms)
+167ms ║║Comparison (integer) 0 is_greater_than (integer) 45 = false (2ms)
+169ms ║║Condition #6 evaluated false (8ms)
+171ms ║║Condition group #1 evaluated false (state did not change) (25ms)
+184ms ║║Comparison (integer) 0 is_greater_than (integer) 73 = false (2ms)
+186ms ║║Condition #11 evaluated false (12ms)
+194ms ║║Comparison (integer) 0 is_less_than (integer) 45 = true (2ms)
+196ms ║║Condition #12 evaluated true (8ms)
+197ms ║║Condition group #10 evaluated true (state did not change) (24ms)
+210ms ║║Comparison (enum) present is (string) present = true (2ms)
+212ms ║║Condition #27 evaluated true (11ms)
+213ms ║║Condition group #25 evaluated true (state did not change) (13ms)
+214ms ║║Cancelling statement #25’s schedules…
+236ms ║║Error executing virtual command [].sendSMSNotification: (11ms) com.datastax.driver.core.exceptions.InvalidQueryException: Invalid null value for partition key part tonumber
+261ms ║║Calculating (integer) 73 - (integer) 2 >> (integer) 71
+266ms ║║Comparison (dynamic) 71.0 is_less_than (dynamic) 71 = false (2ms)
+268ms ║║Condition #42 evaluated false (25ms)
+270ms ║║Condition group #41 evaluated false (state did not change) (27ms)
+292ms ║║Calculating (integer) 73 - (integer) 2 >> (integer) 71
+297ms ║║Comparison (dynamic) 71.0 is_greater_than_or_equal_to (dynamic) 71 = true (1ms)
+299ms ║║Condition #50 evaluated true (26ms)
+307ms ║║Comparison (enum) on is (string) on = true (3ms)
+309ms ║║Cancelling condition #56’s schedules…
+311ms ║║Condition #56 evaluated true (10ms)
+312ms ║║Cancelling condition #49’s schedules…
+313ms ║║Condition group #49 evaluated true (state changed) (40ms)
+317ms ║║Cancelling statement #52’s schedules…
+630ms ║║Executed physical command [Thermostat].setThermostatFanMode([on]) (306ms)
+631ms ║║Executed [Thermostat].setThermostatFanMode (310ms)
+636ms ║║Condition group #54 evaluated true (state did not change) (0ms)
+638ms ║║Condition group #39 evaluated true (state did not change) (4ms)
+642ms ║╚Execution stage complete. (503ms)
+643ms ╚Event processed successfully (643ms)


#10

Well, still not sure why it isn’t working unless it has a problem with the fact there is no wait in the path it is executing so it is basically seeing you will infinitely execute the on command when nothing changed. Perhaps try adding a 120 second wait to the on path?