iostream212 Posted March 18, 2012 Posted March 18, 2012 Maybe I am overthinking this but I hit a wall in my program. Can someone give a program example on how to cycle FanLinc speeds on a KPL? Thanks in advance.
LeeG Posted March 18, 2012 Posted March 18, 2012 Are 4 buttons being used for Off, Low. Med, High or trying to move through each of the 4 possible settings with a single KeypadLinc button. If the later a variable reflecting the last setting so a different Program can be triggered by the single KeypadLinc button to move to the next setting. A single button requires 4 Programs (maybe three if creative with True/False condition). Each Program triggers with a button press and a different variable value to move to the next Fan speed. Also updates the variable value so next button press invokes the next Program.
dzarn Posted March 18, 2012 Posted March 18, 2012 Here's what I am using. Only had it going for a couple days (since 3.2.0) but so far no problems. The only thing I haven't got in place yet is a scene to control the keypad LEDs, as right now the LED can be off when the fan is on and vice versa. Total of 5 programs - 4 to cycle between speeds, and 1 to turn off on a double-click (this one isn't required, just for convenience). The cycle programs are all identical except for respective speeds. I have one using a KPL button, and one using a RL2 button. Living Room Fan Off If Control 'Living Room KPL - B' is switched Fast On Or Control 'Living Room KPL - B' is switched Fast Off Then Set 'Living Room FanLinc-Fan' Off Else - No Actions - (To add one, press 'Action') Living Room Fan Cycle Off-Low If ( Control 'Living Room KPL - B' is switched On Or Control 'Living Room KPL - B' is switched Off ) And Status 'Living Room FanLinc-Fan' is Off Then Set 'Living Room FanLinc-Fan' Low Else - No Actions - (To add one, press 'Action') Living Room Fan Cycle Low-Med If ( Control 'Living Room KPL - B' is switched On Or Control 'Living Room KPL - B' is switched Off ) And Status 'Living Room FanLinc-Fan' is Low Then Set 'Living Room FanLinc-Fan' Med Else - No Actions - (To add one, press 'Action') Living Room Fan Cycle Med-Hi If ( Control 'Living Room KPL - B' is switched On Or Control 'Living Room KPL - B' is switched Off ) And Status 'Living Room FanLinc-Fan' is Med Then Set 'Living Room FanLinc-Fan' High Else - No Actions - (To add one, press 'Action') Living Room Fan Cycle Hi-Off If ( Control 'Living Room KPL - B' is switched On Or Control 'Living Room KPL - B' is switched Off ) And Status 'Living Room FanLinc-Fan' is High Then Set 'Living Room FanLinc-Fan' Off Else - No Actions - (To add one, press 'Action')
iostream212 Posted March 18, 2012 Author Posted March 18, 2012 Thank you LeeG! That got the ball rolling again. I forgot about state variables. Also to check the variable with different programs was the piece that I was missing. So this is what I did (for single KPL button to cycle fan modes): 1.) Create a state variable for fan speed Program 1: Adds 1 to the state variable when KPL button is turned on. If Control 'Office Fan Light / Office - D - Fan' is switched On Then $OfficeFanSpeed += 1 Else - No Actions - (To add one, press 'Action') Program 2, 3, and 4 respond based on the state variable's value. (Showing only one program that sets fan speed). If $OfficeFanSpeed is 1 Then Set 'Office Fan-Fan' Low Else - No Actions - (To add one, press 'Action') Program 5 acts when the KPL is turned off and the fan speed is on high. It turns off the fan and resets the variable. If Control 'Office Fan Light / Office - D - Fan' is switched Off And $OfficeFanSpeed is 3 Then $OfficeFanSpeed = 0 Set 'Office Fan-Fan' Off Else - No Actions - (To add one, press 'Action') Edit: dzarn - We must have been posting at the same time! I like your idea on the fast off. I'm editing my program now to add that. Thanks guys you are awesome.
Teken Posted March 22, 2012 Posted March 22, 2012 Thank you LeeG! That got the ball rolling again. I forgot about state variables. Also to check the variable with different programs was the piece that I was missing. So this is what I did (for single KPL button to cycle fan modes):1.) Create a state variable for fan speed Program 1: Adds 1 to the state variable when KPL button is turned on. If Control 'Office Fan Light / Office - D - Fan' is switched On Then $OfficeFanSpeed += 1 Else - No Actions - (To add one, press 'Action') Program 2, 3, and 4 respond based on the state variable's value. (Showing only one program that sets fan speed). If $OfficeFanSpeed is 1 Then Set 'Office Fan-Fan' Low Else - No Actions - (To add one, press 'Action') Program 5 acts when the KPL is turned off and the fan speed is on high. It turns off the fan and resets the variable. If Control 'Office Fan Light / Office - D - Fan' is switched Off And $OfficeFanSpeed is 3 Then $OfficeFanSpeed = 0 Set 'Office Fan-Fan' Off Else - No Actions - (To add one, press 'Action') Edit: dzarn - We must have been posting at the same time! I like your idea on the fast off. I'm editing my program now to add that. Thanks guys you are awesome. Thank you all for the programs. They will come in handy when I am ready to deploy all of the fans in my home later this summer. Teken . . .
oberkc Posted March 23, 2012 Posted March 23, 2012 The only thing I haven't got in place yet is a scene to control the keypad LEDs, as right now the LED can be off when the fan is on and vice versa. I wonder if changing your KPL button mode to non-toggle ON would be one part of the solution. The second part would be to crate the mentioned keypad-controlling scene, then add a program step to the "fan off" and "hi-off" programs to turn the keypad scene off when the fan is off.
Martinefski Posted March 24, 2012 Posted March 24, 2012 Hi, I have tried both the examples above , but in both instances the result was the same the fan only makes it to medium speed and the next botton press results in returning to low speed. For some reason the medium to high speed action never takes place. Any Ideas what I might be doing wrong?
LeeG Posted March 24, 2012 Posted March 24, 2012 Using the Admin Consolel does the Fan go to high speed when the slider is moved to High?
Martinefski Posted March 24, 2012 Posted March 24, 2012 Yes it does. One other thing to note, when trying the version with the variable. I dont see any device to select, so in the program it just states [varible 0.0]
LeeG Posted March 24, 2012 Posted March 24, 2012 Then something in the Programs is not working right. Post the Programs.
Martinefski Posted March 24, 2012 Posted March 24, 2012 Then something in the Programs is not working right. Post the Programs. I have to leave right now but could you tell me how to post it and I will later tonight? Thank you for your help.
LeeG Posted March 24, 2012 Posted March 24, 2012 Right click on the Program name in the left pane and select Copy to Clipboard. Then paste in the post. All the Programs will be needed.
Martinefski Posted March 24, 2012 Posted March 24, 2012 Right click on the Program name in the left pane and select Copy to Clipboard. Then paste in the post. All the Programs will be needed. Thanks here they are. FIREPLACE FAN HIGH If Control 'Downstairs KPL / Downstairs KPL- D' is switched On And Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Med Then Set 'Fireplace-Fan' High Else - No Actions - (To add one, press 'Action') FIREPLACE FAN HIGH-OFF If Control 'Downstairs KPL / Downstairs KPL- D' is switched On Or Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is High Then Set 'Fireplace-Fan' Off Else - No Actions - (To add one, press 'Action') FIREPLACE FAN LOW If Control 'Downstairs KPL / Downstairs KPL- D' is switched On Or Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Off Then Set 'Fireplace-Fan' Low Else - No Actions - (To add one, press 'Action') FIREPLACE FAN MED If Control 'Downstairs KPL / Downstairs KPL- D' is switched On Or Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Low Then Set 'Fireplace-Fan' Med Else - No Actions - (To add one, press 'Action') FIREPLACE FAN OFF If Control 'Downstairs KPL / Downstairs KPL- D' is switched Fast On Or Control 'Downstairs KPL / Downstairs KPL- D' is switched Fast Off Then Set 'Fireplace-Fan' Off Else - No Actions - (To add one, press 'Action')
LeeG Posted March 25, 2012 Posted March 25, 2012 The two Control statements should be ORed together, not Anded. As in the other Programs. If Control 'Downstairs KPL / Downstairs KPL- D' is switched On And Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Med
Martinefski Posted March 25, 2012 Posted March 25, 2012 The two Control statements should be ORed together, not Anded. As in the other Programs. If Control 'Downstairs KPL / Downstairs KPL- D' is switched On And Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Med Sorry for my ignorance, could you explain a bit more. Is what you posted an example of the control statments being or'ed?
Martinefski Posted March 25, 2012 Posted March 25, 2012 Also I dont think I actually ever had the program with the variable working I have a feeling I was still using the first example program when I thought I was. Maybe I am totally tring to do the varible version the wrong way, but I am not givin the chance to select what I am choosing to use for a variable, the dropdown box stays blank.
LeeG Posted March 25, 2012 Posted March 25, 2012 In the “FIREPLACE FAN LOW†Program the two If Control statements are ORed together. See the red Or below. This says if either an On command is received OR an Off command is received. FIREPLACE FAN LOW If Control 'Downstairs KPL / Downstairs KPL- D' is switched On Or Control 'Downstairs KPL / Downstairs KPL- D' is switched Off And Status 'Fireplace-Fan' is Off Then Set 'Fireplace-Fan' Low In the “FIREPLACE FAN HIGH†Program the two If Control statement are ANDed together. See the red And below. This says if an On command is received AND an Off command is received at the same time. It is IMPROSSIBLE to receive an On command AND an Off command at the same time. The And should be changed to an Or. In addition to changing the And to an Or, parens need to be added as shown. This needs to be done in all the Programs. It has to do with the Order of Precedence which is described in detail in the UDI Wiki if you want to know why this is needed. FIREPLACE FAN HIGH If ( Control 'Downstairs KPL / Downstairs KPL- D' is switched On And Control 'Downstairs KPL / Downstairs KPL- D' is switched Off ) And Status 'Fireplace-Fan' is Med Then Set 'Fireplace-Fan' High
Martinefski Posted March 25, 2012 Posted March 25, 2012 Sorry for the confusion on my part that was a bad cut and past error. My program actually never was like that. I think what might be going on is the parens, I don't see how to add parens to the IF statement. Sorry for being such a noob.
LeeG Posted March 25, 2012 Posted March 25, 2012 Click on one of the If Control lines in the If section. The bottom of the pane that contains the Program detail will contain two buttons at the lower right side "Add And (..)" "Add Or (..)". Click the "Add Or (..) button. Two lines will be added to If Section. Use the Move Line Up button along the lower left section to move the parens to the desired location.
Martinefski Posted March 25, 2012 Posted March 25, 2012 Click on one of the If Control lines in the If section. The bottom of the pane that contains the Program detail will contain two buttons at the lower right side "Add And (..)" "Add Or (..)". Click the "Add Or (..) button. Two lines will be added to If Section. Use the Move Line Up button along the lower left section to move the parens to the desired location. Awesome that was it! I was so close, I even once used the arrow up botton once, but I was not sure of what I was doing so I deleted it. Thank you so much for all your help! The only issue now is and I could live with it is the light on the keypad does not always reflect if the fan is on or off now.
LeeG Posted March 25, 2012 Posted March 25, 2012 Put the KeypadLinc button in non-toggle On mode. Each time the button is pressed the button LED will be On after two flashes indicating non toggle mode. Define an ISY Scene with the KeypadLinc button as a Responder. In any Program that turns the Fan Off, add a Set Scene xxxxx Off for the Scene with the KeypadLinc button as a Responder. The KeypadLinc button will be On anytime the Fan is running at any speed and Off when the Fan is Off.
LeeG Posted March 25, 2012 Posted March 25, 2012 Here is a screen capture of the display changing the KPL button to non-toggle On mode. Did not know how to include in the PM
remedy1234 Posted March 26, 2012 Posted March 26, 2012 Hi Lee I tryed to use the fanlinc in a scene but it does not seem to want to work.I have four scenes,for example for low speed the controller button lets say Button "A" is set to 100% and the fanlinc speed is set to low. All others buttons are responders set to off.When I turn any button on KPD the button that is lit is the state of the fan.This worked when I programed the fanlinc manualy and the keypad through the ISY.Now that I update still have it working like that but it does not update the status on the console?? Will it only work by programs and not by a scene? Thanks Tim
LeeG Posted March 26, 2012 Posted March 26, 2012 remedy1234 There are a number of things I'm not following. When the KeypadLinc button A name listed under the ISY Scene name is selected as the Controller of the Scene there is no Button A On Level slider setting as it is the Controller. There are no sliders for other Secondary buttons in the Scene as they cannot be turned Off with an On command. The very newest KPL v.40 firmware does have the ability to turn a Secondary button LED Off with an On command but the ISY has not picked up support for that yet. What Status is not updated on the Admin Console?
andrewm Posted March 26, 2012 Posted March 26, 2012 Following is part of a set of 9 programs to handle cycling the fan speed. The ELSE conditions are unused so removed for brevity First set of programs controls the modifications to a state variable based on user actions from 2 RemoteLincs and 1 keypad. Only one button is used on each. State variable values are 0 to 3 representing the fan speeds off through high. RemoteLinc Key operations are: On - Turn on at last speed Off / Fast off - Turn off Fast On - Turn on at max speed Fade up - Step speed up to max Fade down - Step speed down to min KeypadLinc operations are identical except that both FADE UP and FADE DOWN step up the speed to max. This is because with KPL its difficult to know the fade direction #Program: Fan increase speed If ( Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched Fade Up Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched Fade Up Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched Fade Up Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched Fade Down ) And $sBed1FanState < 3 Then $sBed1FanState += 1 #Program: Fan-Decrease-Speed If ( Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched Fade Down Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched Fade Down ) And $sBed1FanState > 1 Then $sBed1FanState -= 1 #Fan turn on at max speed If Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched Fast On Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched Fast On Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched Fast On Then $sBed1FanState = 3 #Program: Fan turn on If Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched On Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched On Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched On Then $sBed1FanState = $iBed1FanOnValue #Program: Fan turn off If Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched Off Or Control 'Bedroom 1 / Remote 1 / Be1, Rem1 - KeyE: Fan' is switched Fast Off Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched Off Or Control 'Bedroom 1 / Remote 2 / Be1, Rem2 - KeyE: Fan' is switched Fast Off Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched Off Or Control 'Bedroom 1 / Keypad / Be1 - KeyF: Fan' is switched Fast Off Then $sBed1FanState = 0 Second set of programs has one program per state variable value and sets the fan speed appropriately. It also maintains the last ON state and any scenes to indicate fan state. Only one representativie on state is show here - the others are very similar. #Program: Set High Speed If $sBed1FanState is 3 Then Set 'Bedroom 1 / Be1 - Fan-Motor' High $iBed1FanOnValue = 3 Set Scene 'Bedroom 1 / Sc: Be1 Fan Status' On #Program: Set Off If $sBed1FanState is 0 Then Set 'Bedroom 1 / Be1 - Fan-Motor' Off Set Scene 'Bedroom 1 / Sc: Be1 Fan Status' Off
Recommended Posts