NOTE: Version 1.0.0 posted. Join us over here! - http://www.perceptiveautomation.com/userforum/viewforum.php?f=29
Beta 0.9.5 posted 25-Sep-2011
• Includes naming for AUX; used for Triggers and Control Pages
• Does not store any auxiliaries that are not "installed," i.e. when their respective checkboxes are not selected in Edit Device Settings (this operation is still "buggy" and requires accessing Edit Device Settings twice or opening a new Trigger Action or Control Page edit to remove uninstalled auxiliaries - working to rectify)
• Added support for dimmable auxiliaries (although not yet tested, as I don't have any dimmable devices)
Beta 0.9.6 available 28-Sep-2011 - Phils just finished the season with win 102 (11:41 EDT!!)
• Fixed error with decoding/parsing #PUMP and #SPA commands.
• NOTE: An analogous version for the Pentair IntelliTouch is now available for testing; turns out the same commands work on both systems; thanks to Swancoat for helping with initial debugging, as there are some EOL character differences between the systems!
Beta 0.9.7 available 23-Nov-2011
• Modified the getDeviceStatus to be compatible with GM 5.0; this also allows state variables to be updated correctly from "Edit Device Settings."
• NOTE: I am only able to test this version in a limited fashion, as my pool is now closed for the season. PLEASE POST A PM if you want the new version sent, as I assume most others pools are also be closed.
Beta 0.9.8 available 24-Mar-2012
• Modified the temperature variables to be INTEGER rather than string variables. Please note that this may require adjusting any control pages to include both the temperature and the "unit state" to provide a temperature with units.
• Added additional actions, detailed below, for toggling the pump, cleaner and waterfall (assuming the latter two are installed).
Beta 0.9.9 available 25-Mar-2012
• Minor bug fixes
(If you are interested in testing the plugin, please send me a PM with your e-mail address noted, and I will send you a copy of the plugin.))
Questions for anyone who tests this plugin (please respond on this forum)
Note: I have an RS-4 Pool/Spa Combo, and only have on/off pool and spa lights as auxiliaries. Feedback on any other options installed that operate correctly - or not - would be appreciated.
1) What values are returned for pumpState for RS-2/6, given that there are two pumps?
2) What values are returned for valveState for RS-2/6 or RS-4/6/8 Pool Only / Spa Only systems?
3) What temperature is returned for solHeat if active?
4) Are Intelliflow pumps connected to AUX2 and controlled by pumpLo commands?
5) Does anyone have a system purchased from Jandy's new owner (Zodiac), and does the plugin operate?
This plugin supports the following configurations of the Jandy Aqualink RS
RS-4 Pool/Spa Combo
RS-6 Pool/Spa Combo
RS-8 Pool/Spa Combo
RS-2/6 Pool/Spa Separate Equipment
Notes:
• Assumes a Jandy Aqualink-RS Serial Adaptor is connected to the Indigo server, typically using a USB-serial adaptor such as the Keyspan USA-19HS USB Serial Adapter
• RS-4/6/8 Pool Only / Spa Only systems may function with their respective "Combo" configurations, however, I am not certain how these systems are plumbed, and therefore, what Jandy Aqualink commands are valid
• If AppleScripts to control a Jandy system are currently installed and running on your Indigo system, they must be disabled before installing the Jandy Aqualink plugin
• Control for second pool heater (POOLHT2) not currently implemented
Configuration:
Create a New Device (example for RS-4 Pool/Spa Combo illustrated below)
Type: Plugin
Plugin: Jandy Aqualink
Model: Select according to your equipment
Edit Device Settings (example illustrated below for RS-4 with two auxiliaries labeled)
Serial Port: Select your serial port connected to the Jandy Aqualink-RS Serial Adaptor (e.g. USA19H47P1.1)
Logging for Jandy state changes: Select what level of logging you desire (see notes below)
AUX1 - AUXX: Select auxiliaries that are installed on your system. If a Pool Cleaner, Low Speed Pump, Waterfall or Solar Heater are installed on AUX1, AUX2, AUX3 or AUXX, respectively, select the corresponding checkbox. Add a label to be used in Triggers and Control Page pop-ups if desired. [Note that device states and actions will still refer to AUX by number.]
Devices States:
The following device states are created, and kept up-to-date with ongoing communciation.
pumpState - Main Pump On / Off / WaitingforDelay
valveState - Pool or Spa
poolHeat - Pool Heater On / Off / Enabled (Enabled if valves set to Spa, or already at temperature)
spaHeat - Spa Heater On / Off / Enabled (Enabled if valves set to Spa, or already at temperature)
solHeat - Solar Heat On / Off / Enabled
tempUnits - °F or °C
poolTemp - Pool temperature
poolSetpoint - Pool setpoint temperature
spaTemp - Spa temperature
spaSetpoint - Spa setpoint temperature
solTemp - Solar temperature
airtemp - Air temperature
State options are the same for all of the following auxiliaries: Off / On if not dimmable or Off / 25% / 50% / 75% / 100% if dimmable
aux1 through aux4 (RS-4), aux6 (RS-6 and RS 2/6), or aux8 (RS-8) plus auxX (all systems)
cleanr - Pool Cleaner on AUX1
pumpLo - Low Speed Pump on AUX2
wfall - Waterfall on AUX3
solHeat - Solar Heater on AUXX
commActive - true/false (used to provide an indication of active communication with Jandy system)
loggingChoice - logOff / logAllButTemp / logAll - Log state changes; note that Jandy updates temperatures quite frequently, hence the choice to turn off their logging.
Notes:
1) All of the above states are available in Triggers and Control Pages. An example of Trigger Action creation is shown below.
2) The Jandy COSMSGS command is issued at startup to enable the Jandy system to update the device states in an ongoing manner. [For those who have used the Jandy Aqualink AppleScripts, note that this method of direct communciation used by the plugin allows your Pool/Spa device to maintain up-to-date temperatures as well as valve, heater, etc. states without ongoing polling by the plugin.]
3) All temperatures are stored (as integers) in °F or °C, per units selected at the Jandy system
Example of creating a new Trigger Action:
Actions:
The following default actions are defined and available:
Send direct Command to Jandy - useful if variations on default commands are needed and for debugging. Note that there is minimal syntax checking, other than transforming all commands to upper case and removing embedded spaces. This is done to check for disallowed commands; ECHO, RSPFMT, CMDCHR, NRMCHR, and ERRCHR are not allowed as they would "break" decoding of responses by the plugin.
Set Jandy logging - Used to select the level of Indigo logging for device state updates from Jandy system; Use Edit Action Settings to make selection
Toggle Jandy logging - Used to select the level of Indigo logging for device state updates from Jandy system
Toggle Pump - Toggle pool pump on/off - does not act if pump is "waiting for delay."
Toggle Cleaner - Toggle cleaner on/off - if cleaner is attached on AUX1
Toggle Waterfall - Toggle waterfall on/off - if waterfall is attached on AUX3
Turn on/enable Pool, Spa or Solar Heat - Turn on or enable the heater selected in Edit Action Settings
Turn off Pool, Spa or Solar Heat - Turn off the selected heater
Toggle Pool, Spa or Solar Heat - Toggle the selected heater
New Pool or Spa Setpoint - Change heater setpoint; use Edit Action Settings to make selection and set temperature
Increment Pool or Spa Setpoint - Same as above, but set +/- change
Note: The plugin will only allow temperatures input as integers, without degree symbols or units, and the plugin will only allow setpoints in the range 60-104°F or 15-40°C
Turn on AUX - Turn on the selected AUX (in the range of 1-8, or X) - AUX selected in Edit Action Settings
Turn off AUX - Turn off the selected AUX
Toggle AUX - Toggle the selected AUX
Dim AUX - Dim the selected AUX by one step
Brighten AUX - Brighten the selected AUX by one step
Example of creating a new Action Group:
Example for "Send direct command to Jandy" Action, sending the "#LED?" command:
Scripting Support:
Plugin ID: org.yergeyjDoesntHaveaURL.jandyaqualink
Send Direct Command to Jandy Aqualink
Action ID: directJandy
Properties for scripting: newCommand (Text with command content; <CR> added by plugin)
Set Jandy Logging
Action ID: setLoggingChoice
Properties for scripting: loggingChoice (Value must be "logOff", "logAllButTemp" or "logAll" )
Toggle Jandy Logging
Action ID: toggleLoggingChoice
Properties for scripting: none
Switch Valves to Pool or Spa
Action ID: switchValves
Properties for scripting: valvePopUp (Value must be "pool" or "spa" )
Toggle Pump
Action ID: togglePump
Toggle Cleaner
Action ID: toggleCleanr
Toggle Waterfall
Action ID: toggleWfall
Turn On/Enable, Turn Off or Toggle Pool, Spa or Solar Heater
Action ID: turnOnHeat or turnOffHeat or toggleHeat
Properties for scripting: heatOnPopUp or heatOffPopUp or heatTogglePopUp, respectively (Value must be "pool," "spa" or "solar" )
Change Temperature Setpoint for Pool or Spa
Action ID: newSetpoint
Properties for scripting: newSetpointPopUp (Value must be "pool" or "spa" ) and newSetpoint (Value must be integer)
Increment/Decrement Temperature Setpoint for Pool or Spa
Action ID: incrementSetpoint
Properties for scripting: incrementSetpointPopUp (Value must be "pool" or "spa" ) and incrementSetpoint (Value must be + or - with integer)
Turn On, Turn Off or Toggle Auxilliary
Action ID: turnOnAux, turnOffAux or toggleAux
Properties for scripting: auxChoice (Value must be text in the range "1" to "7" or "X")
Dim or Brighten Auxilliary
Action ID: dimAux or brightenAux
Properties for scripting: auxChoice (Value must be text in the range "1" to "7" or "X")
Examples:
- Code: Select all
## Send direct command to Jandy Aqualink
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("directJandy", deviceId=1215166506, props={"newCommand":"#PUMP?"})
## Set Jandy Logging (logging all changes exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("setLoggingChoice", deviceId=1215166506, props={"loggingChoice":"logAll"})
## Toggle Jandy Logging
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("toggleLoggingChoice", deviceId=1215166506)
## Switch Valves to Pool or Spa (switch to pool exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("switchValves", deviceId=1215166506, props={"valvePopUp":"pool"})
## Toggle Pump
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("togglePump", deviceId=1215166506)
## Toggle Cleaner
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("toggleCleanr", deviceId=1215166506)
## Toggle Waterfall
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("toggleWfall", deviceId=1215166506)
## Turn On/Enable, Turn Off or Toggle Pool, Spa or Solar Heat (Turn on/enable spa heat exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("turnOnHeat", deviceId=1215166506, props={"heatOnPopUp":"spa"})
## Change Temperature Setpoint for Pool or Spa (Set pool to 90°F exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("newSetpoint", deviceId=1215166506, props={"newSetpointPopUp":"pool", "newSetpoint":"90"})
## Increment/Decrement Temperature Setpoint for Pool or Spa (Decrement Pool by 5° exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("incrementSetpoint", deviceId=1215166506, props={"incrementSetpointPopUp":"pool", "incrementSetpoint":"-5"})
## Turn On, Turn Off or Toggle Auxilliary (Toggle AUX1 exemplified)
jandyAqualinkId = indigo.server.getPlugin("org.yergeyjDoesntHaveaURL.jandyaqualink")
if jandyAqualinkId.isEnabled():
jandyAqualinkId.executeAction("toggleAux", deviceId=1215166506, props={"auxChoice":"1"})