This is a Node.JS library for interfacing with Pentair ScreenLogic systems over your local network or remotely through the Pentair dispatcher. Local connections require a Pentair ScreenLogic device on the same network (a network which supports UDP broadcasts).
Tested with a Pentair ScreenLogic system on firmware versions 5.2 Build 736.0 Rel, 5.2 Build 738.0 Rel
- Usage
- Notes
- Packet format
- API reference
- FindUnits
- RemoteLogin
- UnitConnection
- All messages
- SLVersionMessage
- SLPoolStatusMessage
- SLChemDataMessage
- SLSaltCellConfigMessage
- SLSetSaltCellConfigMessage
- SLControllerConfigMessage
- SLSetCircuitStateMessage
- SLSetHeatSetPointMessage
- SLSetHeatModeMessage
- SLLightControlMessage
- SLGetGatewayDataMessage
- SLAddNewScheduleEvent
- SLDeleteScheduleEventById
- SLGetScheduleData
- SLSetScheduleEventById
- SLSetCircuitRuntimeById
- SLGetPumpStatus
- SLSetPumpFlow
- SLCancelDelay
- SLAddClient
- SLRemoveClient
- SLGetSystemTime
- SLSetSystemTime
See example.js for an example of interfacing with the library. Broadly, import the library with
const ScreenLogic = require('node-screenlogic');
then for local connections create a new ScreenLogic unit finder with
new ScreenLogic.FindUnits();
Hook its serverFound
event with
.on('serverFound', function(server) { })
and call it via search()
. This performs a UDP broadcast on 255.255.255.255, port 1444, so ensure your network supports UDP broadcasts and the device is on the same subnet.
Alternatively, to find a unit remotely, create a new ScreenLogic remote login with
new ScreenLogic.RemoteLogin('Pentair: xx-xx-xx')
Hook its gatewayFound
event with
.on('gatewayFound', function(unit) { })
and call it via connect()
. This opens a TCP connection to screenlogicserver.pentair.com, port 500.
When a local or remote server is found, create a new UnitConnection with
new ScreenLogic.UnitConnection(server);
or
new ScreenLogic.UnitConnection(unit.port, unit.ipAddr, '1234')
where '1234'
is the remote login password.
Once you've connected with connect()
, there are a number of methods available and corresponding events for when they've completed successfully. See UnitConnection API reference.
All communication with a ScreenLogic unit is done via TCP, so responses will come back in the order they were requested.
Contributions welcome. There are lots of available messages supported by ScreenLogic that the app doesn't support yet, but can be added pretty easily as needed.
All ScreenLogic packets are sent with an 8-byte header. The first 2 bytes are a little-endian-encoded sender ID (which is normally specified when making the original request). The second 2 bytes are a little-endian-encoded message ID. The final 4 bytes are a little-endian-encoded length of the data payload on the packet. The data payload is handled per-message.
Pull requests to document undocumented properties are most welcome.
Examples:
const ScreenLogic = require('node-screenlogic');
var finder = new ScreenLogic.FindUnits();
Begins a UDP broadcast search for available units.
Closes the socket.
serverFound
- Indicates that a ScreenLogic unit has been found. Event handler receives aUnitConnection
object.
Examples:
finder.on('serverFound', function(server) {
var client = new ScreenLogic.UnitConnection(server);
})
error
- Indicates that an unhandled error was caught (such as the connection timing out)
Argument is the name of a system to connect to in "Pentair: xx-xx-xx" format.
Example:
const ScreenLogic = require('./index');
var remoteLogin = new ScreenLogic.RemoteLogin('Pentair: xx-xx-xx');
Connects to the dispatcher service and searches for the unit passed to its constructor.
Closes the connection
gatewayFound
- Indicates that the search for the named unit has completed (may or may not be successful). Event handler receives aSLGetGatewayDataMessage
argument.error
- Indicates that an unhandled error was caught (such as the connection timing out)
Argument is a server returned from FindUnits
serverFound
event.
Examples:
finder.on('serverFound', function(server) {
var client = new ScreenLogic.UnitConnection(server);
})
remoteLogin.on('gatewayFound', function(unit) {
if (unit && unit.gatewayFound) {
var client = new ScreenLogic.UnitConnection(unit.port, unit.ipAddr, '1234'));
}
});
Port is an integer. Address is an IPv4 address of the server as a string. Password is optional; should be the 4-digit password in string form, e.g. '1234'
.
Examples:
var client = new ScreenLogic.UnitConnection(80, '10.0.0.85', '1234')
Connects to the server passed to its constructor.
Examples:
var client = new ScreenLogic.UnitConnection(server);
client.connect();
Closes the connection.
Requests the system version string from the connected unit. Emits the version
event when the response comes back. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Requests pool status from the connected unit. Emits the poolStatus
event when the response comes back. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Requests chemical data from the connected unit (may require an IntelliChem or similar). Emits the chemicalData
event when the response comes back. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Requests salt cell status/configuration from the connected unit (requires an IntelliChlor or compatible salt cell). Emits the saltCellConfig
event when the response comes back. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Requests controller configuration from the connected unit. Emits the controllerConfig
event when the response comes back. senderId
isan optional 16-bit integer and will be present as the senderId
field on the returned message.
Activates or deactivates a circuit. See SLSetCircuitStateMessage
documentation for argument values. Emits the circuitStateChanged
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Sets the heating setpoint for any body. See SLSetHeatSetPointMessage
documentation for argument values. Emits the setPointChanged
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Sets the preferred heat mode. See SLSetHeatModeMessage
documentation for argument values. Emits the heatModeChanged
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Sends a lighting command. See SLLightControlMessage
documentation for argument values. Emits the sentLightCommand
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Note that better/more complete handling of lighting is desired, but I have yet to find all the commands I need to implement to make that happen. This currently sends each command to all lights and there is no ability to send to an individual light. Pull requests adding more functionality here would be most welcome.
Sets the salt cell's output levels. See SLSetSaltCellConfigMessage
documentation for argument values. Emits the setSaltCellConfig
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Retrieves a list of schedule events of the specified type. See SLGetScheduleData
documentation for argument values. Emits the getScheduleData
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Adds a new event to the specified schedule type. See SLAddNewScheduleEvent
documentation for argument values. Emits either the addNewScheduleEvent
or scheduleChanged
event when response is acknowledged (listen for both). senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Deletes a scheduled event with specified id. See SLDeleteScheduleEventById
documentation for argument values. Emits the deleteScheduleById
or scheduleChanged
event when response is acknowledged (listen for both). senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
setScheduleEventById(scheduleId, circuitId, startTime, stopTime, dayMask, flags, heatCmd, heatSetPoint, senderId)
Configures a schedule event. See SLSetScheduleEventById
documentation for argument values. Emits the setScheduleEventById
or scheduleChanged
event when response is acknowledged (listen for both). senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Configures default run-time of a circuit, usually referred to as the 'egg timer'. This also applies to 'run-once' programs as this will set the length of the program. See SLSetCircuitRuntimeById
documentation for argument values. Emits the setCircuitRuntimeById
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Gets information about the specified pump. See SLGetPumpStatus
documentation for argument values. Emits the getPumpStatus
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Sets flow setting for a pump/circuit combination. See SLSetPumpFlow
documentation for argument values. Emits the setPumpFlow
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Cancels any delays on the system. See SLCancelDelay
documentation. Emits the cancelDelay
event when response is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Registers to receive updates from controller when something changes. Takes a random number clientId
to identify the client. Emits the poolStatus
event when something changes on the controller, and the addClient
event when the request to add a client is acknowledged. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
No longer receive poolStatus
messages from controller. Emits the removeClient
event when the request to remove a client is acknowledged. Takes a random number clientId
that should match a previously registered client with addClient
. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Retrieves the current time the system is set to. Emits the getSystemTime
event when response is received. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
Sets the current date and time of the ScreenLogic system. Emits the setSystemTime
event when request is acknowledged. date
must be a Date
instance holding the date/time to set, and adjustForDST
must be a boolean indicating whether the system should adjust for daylight saving time or not. senderId
is an optional 16-bit integer and will be present as the senderId
field on the returned message.
loggedIn
- Indicates that a connection to the server has been established and the login process completed.get
methods can be called once this event has been emitted.version
- Indicates that a response togetVersion()
has been received. Event handler receives aSLVersionMessage
object.poolStatus
- Indicates that a response togetPoolStatus()
has been received. Event handler receives aSLPoolStatusMessage
object.chemicalData
- Indicates that a response togetChemicalData()
has been received. Event handler receives aSLChemDataMessage
object.saltCellConfig
- Indicates that a response togetSaltCellConfig()
has been received. Event handler receives aSLSaltCellConfigMessage
object.controllerConfig
- Indicates that a response togetControllerConfig()
has been received. Event handler receives aSLControllerConfigMessage
object.circuitStateChanged
- Indicates that a response tosetCircuitState()
has been received. Event handler receives aSLSetCircuitStateMessage
object.setPointChanged
- Indicates that a response tosetSetPoint()
has been received. Event handler receives aSLSetHeatSetPointMessage
object.heatModeChanged
- Indicates that a response tosetHeatMode()
has been received. Event handler receives aSLSetHeatModeMessage
object.sentLightCommand
- Indicates that a response tosendLightCommand()
has been received. Event handler receives aSLLightControlMessage
object.setSaltCellConfig
- Indicates that a response tosetSaltCellOutput()
has been received. Event handler receives aSLSetSaltCellConfigMessage
object.getScheduleData
- Indicates that a response togetScheduleData()
has been received. Event handler receives aSLGetScheduleData
object.addNewScheduleEvent
- Indicates that a response toaddNewScheduleEvent()
has been received which contains the createdscheduleId
to be used later for setting up the properties. Event handler receives aSLAddNewScheduleEvent
object.deleteScheduleById
- Indicates that a response todeleteScheduleById()
has been received. Event handler receives aSLDeleteScheduleEventById
object.setScheduleEventById
- Indicates that a response tosetScheduleEventById()
has been received. Event handler receives aSLSetScheduleEventById
object.scheduleChanged
- Indicates that a response to adding, deleting, or setting a schedule has been received. Event handler receives nothing. This seems to be arbitrarily returned sometimes instead of a normal ack by the system.setCircuitRuntimeById
- Indicates that a response tosetCircuitRuntimeById()
has been received. Event handler receives aSLSetCircuitRuntimeById
object.getPumpStatus
- Indicates that a response togetPumpStatus()
has been received. Event handler receives aSLGetPumpStatus
object.setPumpFlow
- Indicates that a response tosetPumpFlow()
has been received. Event handler receives aSLSetPumpFlow
object.cancelDelay
- Indicates that a response tocancelDelay()
has been received. Event handler receives aSLCancelDelay
object.addClient
- Indicates that a response toaddClient()
has been received. Event handler receives aSLAddClient
object.removeClient
- Indicates that a response toremoveClient()
has been received. Event handler receives aSLRemoveClient
object.getSystemTime
- Indicates that a response togetSystemTime()
has been received. Event handler receives aSLGetSystemTime
object.setSystemTime
- Indicates that a response tosetSystemTime()
has been received. Event handler receives aSLSetSystemTime
object if the request was valid, ornull
if the request was invalid (input parameters were not of the required types).loginFailed
- Indicates that a remote login attempt via supplying a system address and password toUnitConnection
has failed likely due to the incorrect password being used.badParameter
- Indicates that a bad parameter has been supplied to a function. This can be triggered, for example, by sending the wrong controller ID to aset
function.error
- Indicates that an unhandled error was caught (such as the connection timing out)unknownCommand
- Indicates that an unknown command was issued to ScreenLogic (should not be possible to trigger when using the suppliedUnitConnection
methods).
address
- string representing the IPv4 address of the found servertype
- integer representing the type of server found (will always be 2)port
- short representing the port to use for TCP connections to this servergatewayType
- bytegatewaySubtype
- bytegatewayName
- string representing the server's name. Will be in the format Pentair: xx-xx-xx
Information about features common to all the below SL Message types.
Interprets a time integer recorded as minutes past midnight and returns the ScreenLogic string representation of it in 24-hour time.
Interprets the string representing 24-hour time and returns an integer of minutes past midnight.
Converts a day mask from, for example, SLGetScheduleData
's events[idx].days property into a DAY_VALUES
array for ease of use.
Converts an array of DAY_VALUES into a mask used by, for example, SLGetScheduleData
's events[idx].days property.
Returns the value of a given DAY_VALUES
day name.
DAY_VALUES
is defined as the following array for simplicity of checking whether a specific day is set in a mask:
const DAY_VALUES = [
['Mon', 0x1 ],
['Tue', 0x2 ],
['Wed', 0x4 ],
['Thu', 0x8 ],
['Fri', 0x10 ],
['Sat', 0x20 ],
['Sun', 0x40 ],
];
senderId
- an integer matching whatever was passed as thesenderId
argument when making the initial request (default 0)messageId
- an integer indicating the ScreenLogic ID for this message
Passed as an argument to the emitted version
event handler.
version
- a string representing the system's version
Passed as an argument to the emitted poolStatus
event handler.
Returns a bool indicating whether the device is in a normal operating state.
Returns a bool.
Returns a bool indicating whether the device is in service mode or not.
Returns a bool indicating whether the spa is currently active or not.
Returns a bool indicating whether the pool is currently active or not.
ok
- can be interpreted withisDevice...
methods.freezeMode
- byte representing whether the device is in freeze mode or not.remotes
- bytepoolDelay
- bytespaDelay
- bytecleanerDelay
- byteairTemp
- integer representing the current temperature (check controller config to see if it's in celsius or fahrenheit)currentTemp
- array of size 0-2 indicating current temperature of each body as an integer (pool: 0, spa: 1) (check controller config to see if it's in celsius or fahrenheit)heatStatus
- array of size 0-2 indicating whether heat is active or not for each body as an integer (pool: 0, spa: 1)setPoint
- array of size 0-2 holding the heating set point for each body as an integer (pool: 0, spa: 1) (check controller config to see if it's in celsius or fahrenheit)coolSetPoint
- array of size 0-2 holding the cooling set point for each body as an integer (pool: 0, spa: 1; the spa seems to always track air temperature for this, however) (check controller config to see if it's in celsius or fahrenheit)heatMode
- array of size 0-2 indicating whether heating is enabled or not for each body as an integer (pool: 0, spa: 1)circuitArray
- array holding all circuits in the systemid
- integer representing the circuit's ID (spa is 500, pool is 505)state
- integer indicating whether the circuit is on or not (0/1)colorSet
- bytecolorPos
- bytecolorStagger
- bytedelay
- byte
pH
- float indicating the current pH level (e.g.: 7.62)orp
- integer indicating the current ORP value if available (e.g.: 650)saturation
- float indicating the water balance/saturation level (e.g.: -0.13)saltPPM
- integer indicating the salt level in parts-per-million (e.g.: 3000)pHTank
- integer indicating the fill level of the pH tank (e.g.: 4)orpTank
- integer indicating the fill level of the ORP tankalarms
- integer indicating how many alarms are currently active
Passed as an argument to the emitted chemicalData
event handler.
isValid
- boolean indicating whether we got a valid response back or notpH
- float indicating the current pH levelorp
- short indicating the current ORP levelpHSetPoint
- float indicating the desired pH levelorpSetPoint
- short indicating the desired ORP levelpHTankLevel
- byte indicating how full the pH tank is. I believe this operates on a 0-6 scaleorpTankLevel
- byte indicating how full the ORP tank issaturation
- float indicating water balance/LSI saturationcalcium
- short indicating the calcium level (manually set)cyanuricAcid
- short indicating the CYA level (manually set)alkalinity
- short indicating the alkalinity level (manually set)saltPPM
- integer representing the salt level in parts-per-milliontemperature
- byte indicating the current water temperaturecorrosive
- boolean indicating whether the water balance is corrosive or notscaling
- boolean indicating whether the water balance is scaling or noterror
- boolean indicating whether there's currently an error in the chem system or not
Passed as an argument to the emitted saltCellConfig
event handler.
installed
- boolean indicating whether a salt cell is installed or notstatus
- integer bitmasklevel1
- integer indicating the output level of the salt cell for the pool. I believe this operates on a 0-100 scalelevel2
- integer indicating the output level of the salt cell for the spa. I believe this operates on a 0-100 scalesalt
- integer indicating salt level in parts-per-millionflags
- integer bitmasksuperChlorTimer
- integer
Passed as an argument to the emitted setSaltCellConfig
event.
controllerId
- integer indicating the ID of the controller to send this command to.- Note that while
SLControllerConfigMessage
includes a controllerId, this ID, in my experience, should always be 0.
- Note that while
poolOutput
- integer indicating the output level of the salt cell for the pool. I believe this operates on a 0-100 scale.spaOutput
- integer indicating the output level of the salt cell for the spa. I believe this operates on a 0-100 scale.
Passed as an argument to the emitted controllerConfig
event handler.
Returns a bool indicating whether the system has solar present. (Helper method for interpreting the value in equipFlags
.)
Returns a bool indicating whether the system has a solar heatpump (UltraTemp, ThermalFlo) present. (Helper method for interpreting the value in equipFlags
.)
Returns a bool indicating whether the system has a chlorinator present. (Helper method for interpreting the value in equipFlags
.)
Returns a bool indicating whether the system has a cooler present. (Helper method for interpreting the value in equipFlags
.)
Returns a bool indicating whether the system has an IntelliChem chemical management system present. (Helper method for interpreting the value in equipFlags
.)
Returns a bool indicating whether the system is an EasyTouch system or not. (Helper method for interpreting the value in controllerType
.)
Returns a bool indicating whether the system is an IntelliTouch system or not. (Helper method for interpreting the value in controllerType
.)
Returns a bool indicating whether the system is an EasyTouch Lite system or not. (Helper method for interpreting the value in controllerType
and hwType
.)
Returns a bool indicating whether the system is dual-body or not. (Helper method for interpreting the value in controllerType
.)
Returns a bool indicating whether the system is a Chem2 system or not. (Helper method for interpreting the value in controllerType
and hwType
.)
Returns the bodyArray
entry for the circuit matching the given device id. This is most useful with an SLGetPumpStatus
message.
controllerId
- integer indicating the controller's IDminSetPoint
- array (size 2) indicating the minimum setpoint available for the pool (index 0) or spa (index 1)maxSetPoint
- array (size 2) indicating the maximum setpoint available for the pool (index 0) or spa (index 1)degC
- boolean indicating whether the system is using the centigrade scale for temperatures or notcontrollerType
- bytehwType
- bytecontrollerData
- byteequipFlags
- integer indicating the type(s) of equipment present in the system (see helper methods above for interpreting these values)genCircuitName
- string indicating the circuit namebodyArray
- array (size number-of-circuits) holding circuit datacircuitId
- integer indicating circuit ID (e.g.: 500 is spa, 505 is pool)name
- string representing the name of the circuitnameIndex
- bytefunction
- byteinterface
- byteflags
- bytecolorSet
- bytecolorPos
- bytecolorStagger
- bytedeviceId
- bytedfaultRt
- short
colorArray
- array (size number-of-colors) holding data about available light colorsname
- color namecolor
- object containingr
/g
/b
properties as bytes (values from 0-255) indicating the color
pumpCircArray
- array (size 8) holding data about pumps attached to the systeminterfaceTabFlags
- integershowAlarms
- integer
Passed as an argument to the emitted circuitStateChanged
event.
controllerId
- integer indicating the ID of the controller to send this command to.- Note that while
SLControllerConfigMessage
includes a controllerId, this ID, in my experience, should always be 0.
- Note that while
circuitId
- integer indicating the ID of the circuit to set the state of.- This ID can be retrieved from
SLControllerConfigMessage
'sbodyArray
property.
- This ID can be retrieved from
circuitState
- integer indicating whether to switch the circuit on (1
) or off (0
).
Passed as an argument to the emitted setPointChanged
event.
controllerId
- integer indicating the ID of the controller to send this command to.- Note that while
SLControllerConfigMessage
includes a controllerId, this ID, in my experience, should always be 0.
- Note that while
bodyType
- integer indicating the type of body to set the setpoint of. The pool is body0
and the spa is body1
.temperature
- integer indicating the desired setpoint. This is presumably in whatever units your system is set to (celsius or fahrenheit).
Passed as an argument to the emitted heatModeChanged
event.
controllerId
- integer indicating the ID of the controller to send this command to.- Note that while
SLControllerConfigMessage
includes a controllerId, this ID, in my experience, should always be 0.
- Note that while
bodyType
- integer indicating the type of body to set the setpoint of. The pool is body0
and the spa is body1
.heatMode
- integer indicating the desired heater mode. Valid values are:- ScreenLogic.HEAT_MODE_OFF
- ScreenLogic.HEAT_MODE_SOLAR
- ScreenLogic.HEAT_MODE_SOLARPREFERRED
- ScreenLogic.HEAT_MODE_HEATPUMP
- ScreenLogic.HEAT_MODE_DONTCHANGE
Passed as an argument to the emitted sentLightCommand
event.
controllerId
- integer indicating the ID of the controller to send this command to.- Note that while
SLControllerConfigMessage
includes a controllerId, this ID, in my experience, should always be 0.
- Note that while
command
- integer indicating which command to send to the lights. Valid values are:- ScreenLogic.LIGHT_CMD_LIGHTS_OFF
- ScreenLogic.LIGHT_CMD_LIGHTS_ON
- ScreenLogic.LIGHT_CMD_COLOR_SET
- ScreenLogic.LIGHT_CMD_COLOR_SYNC
- ScreenLogic.LIGHT_CMD_COLOR_SWIM
- ScreenLogic.LIGHT_CMD_COLOR_MODE_PARTY
- ScreenLogic.LIGHT_CMD_COLOR_MODE_ROMANCE
- ScreenLogic.LIGHT_CMD_COLOR_MODE_CARIBBEAN
- ScreenLogic.LIGHT_CMD_COLOR_MODE_AMERICAN
- ScreenLogic.LIGHT_CMD_COLOR_MODE_SUNSET
- ScreenLogic.LIGHT_CMD_COLOR_MODE_ROYAL
- ScreenLogic.LIGHT_CMD_COLOR_SET_SAVE
- ScreenLogic.LIGHT_CMD_COLOR_SET_RECALL
- ScreenLogic.LIGHT_CMD_COLOR_BLUE
- ScreenLogic.LIGHT_CMD_COLOR_GREEN
- ScreenLogic.LIGHT_CMD_COLOR_RED
- ScreenLogic.LIGHT_CMD_COLOR_WHITE
- ScreenLogic.LIGHT_CMD_COLOR_PURPLE
Passed as an argument to the emitted gatewayFound
event. Contains information about the remote unit's status and access properties.
gatewayFound
- boolean indicating whether a unit was foundlicenseOK
- boolean indicating if the license is valid (I've never seen this be false)ipAddr
- string containing the ipv4 address to remotely connect to this unitport
- number containing the port to connect to the unitportOpen
- boolean indicating whether or not the port is open and able to be connected torelayOn
- boolean indicating whether the relay is on (unsure what exactly this indicates; it's always been false in my tests)
Passed as an argument to the emitted addNewScheduleEvent
event. Adds a new event to the specified schedule type, either 0 for regular events or 1 for one-time events.
scheduleType
- 0 indicates regular scheduled events, 1 indicates a run-once event
Passed as an argument to the emitted deleteScheduleEventById
event. Deletes a scheduled event with specified id.
scheduleId
- the scheduleId of the schedule to be deleted
Passed as an argument to the emitted getScheduleData
event. Retrieves a list of schedule events of the specified type, either 0 for regular events or 1 for one-time events.
eventCount
- the number ofevents
returnedevents
- array containing:scheduleId
- the associated scheduleIdcircuitId
- the circuit this schedule affectsstartTime
- the start time of the event, specified as a string in 24-hour time, so, for example, 6:00AM would be '0600' (see conversion functions)stopTime
- the stop time of the event, specified as a string in 24-hour time, so, for example, 6:00AM would be '0600' (see conversion functions)dayMask
- 7-bit mask that determines which days the schedule is active for, MSB is always 0, valid numbers 1-127 (see conversion functions)flags
- bit 0 is the schedule type, if 0 then regular event, if 1 its a run-once
- bit 1 indicates whether heat setPoint should be changed
heatCmd
- integer indicating the desired heater mode. Valid values are:- ScreenLogic.HEAT_MODE_OFF
- ScreenLogic.HEAT_MODE_SOLAR
- ScreenLogic.HEAT_MODE_SOLARPREFERRED
- ScreenLogic.HEAT_MODE_HEATPUMP
- ScreenLogic.HEAT_MODE_DONTCHANGE
heatSetPoint
- the temperature set point if heat is to be changed (ignored if bit 1 of flags is 0)days
- which days this schedule is active for; this is just thedayMask
property run throughdecodeDayMask()
for convenience
Passed as an argument to the emitted setScheduleEventById
event. Configures an event with properties as described below.
scheduleId
- id of a schedule previously created, seeSLAddNewScheduleEvent
circuitId
- id of the circuit to which this event appliesstartTime
- the start time of the event, specified as minutes since midnight (see conversion functions)- example: 6:00am would be 360
- example: 6:15am would be 375
stopTime
- the stop time of the event, specified as minutes since midnight (see conversion functions)dayMask
- 7-bit mask that determines which days the schedule is active for, MSB is always 0, valid numbers 1-127
flags
- bit 0 is the schedule type, if 0 then regular event, if 1 its a run-once
- bit 1 indicates whether heat setPoint should be changed
heatCmd
- integer indicating the desired heater mode. Valid values are:- ScreenLogic.HEAT_MODE_OFF
- ScreenLogic.HEAT_MODE_SOLAR
- ScreenLogic.HEAT_MODE_SOLARPREFERRED
- ScreenLogic.HEAT_MODE_HEATPUMP
- ScreenLogic.HEAT_MODE_DONTCHANGE
heatSetPoint
- the temperature set point if heat is to be changed (ignored if bit 1 of flags is 0)
Passed as an argument to the emitted setCircuitRuntimebyId
event. Configures default run-time of a circuit, usually referred to as the 'egg timer'. This also applies to 'run-once' programs as this will set the length of the program.
circuitId
- id of the circuit to which this event applies torunTime
- integer specifying the run time in minutes
Passed as an argument to the emitted getPumpStatus
event. Gets information about the specified pump.
pumpId
- id of pump to get information about, first pump is 0
isRunning
- boolean that says if pump is runningpumpType
- 0 if invalid pump id or one of the IntelliFlo constants:- ScreenLogic.PUMP_TYPE_INTELLIFLOVF
- ScreenLogic.PUMP_TYPE_INTELLIFLOVS
- ScreenLogic.PUMP_TYPE_INTELLIFLOVSF
pumpWatts
- current Watts usage of the pumppumpRPMs
- current RPMs of the pumppumpGPMs
- current GPMs of the pumppumpSetting
- Array of 8 items each containingcircuitId
- Circuit Id (CircuitId matched data returned bySLControllerConfigMessage
'sgetCircuitByDeviceId()
)pumpSetPoint
- the set point for this pump/circuit combo (in either RPMs or GPMs depending on the value ofisRPMs
)isRPMs
- boolean indicating if the set point is in RPMs (false means it's in GPMs)
pumpUnknown1
- unknown data; always 0pumpUnknown2
- unknown data; always 255
Passed as an argument to the emitted setPumpFlow
event. Sets flow setting for a pump/circuit combination.
pumpId
- id of pump to get information about, first pump is 0circuitId
- index of circuit for which to change the set point (index is relative to data returned bySLGetPumpStatus
)setPoint
- the value for which to set the pump/circuit comboisRPMs
- boolean,true
for RPMs,false
for GPMs
Passed as an argument to the emitted cancelDelay
event.
Passed as an argument to the emitted addClient
event.
Passed as an argument to the emitted removeClient
event.
Contains information about the system's current time and date. Passed as an argument to the emitted getSystemTime
event.
year
- short representing current system yearmonth
- short representing current system month (where 1 is January, 2 is February, etc.)day
- short representing current system day of the monthdayOfWeek
- short representing current system day of the week (where 0 is Monday and 6 is Sunday)hour
- short representing current system hour (24-hour time where 0 is midnight, 13 is 1PM, etc.)minute
- short representing current system minutesecond
- short representing current system secondmillisecond
- short representing current system millisecondadjustForDST
- bool indicating whether the system should adjust for daylight saving time or notdate
-Date
instance representing the current system datetime (convenience, constructed from the above properties)
Passed as an argument to the emitted setSystemTime
event.