Updated Readme / Added EggTimer Support (#25)
* added setCircuitRuntimeById function
This commit is contained in:
59
README.md
59
README.md
@ -229,6 +229,11 @@ Sets the salt cell's output levels. See [`SLSetSaltCellConfigMessage`](#slsetsal
|
|||||||
* `loginFailed` - Indicates that a remote login attempt via supplying a system address and password to `UnitConnection` has failed likely due to the incorrect password being used.
|
* `loginFailed` - Indicates that a remote login attempt via supplying a system address and password to `UnitConnection` 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 a `set` function.
|
* `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 a `set` function.
|
||||||
* `error` - Indicates that an unhandled error was caught (such as the connection timing out)
|
* `error` - Indicates that an unhandled error was caught (such as the connection timing out)
|
||||||
|
* `addNewScheduleEvent` - will return a [`SLAddNewScheduleEvent`](#sladdnewscheduleevent) object. which contains the created `scheduleId` to be used later for setting up the properties
|
||||||
|
* `deleteScheduleById` - Indicates a response to the `deleteScheduleById()` command has been received.
|
||||||
|
* `getScheduleData` - will return a [`SLGetScheduleData`](#slgetscheduledata) object. which contains a list of events of the specified type
|
||||||
|
* `setScheduleEventById` - Indicates a response to the `setScheduleEventById()` command has been received.
|
||||||
|
* `setCircuitRuntimeById` - Indicates a response to the `setCircuitRuntimeById()` command has been received.
|
||||||
|
|
||||||
### Properties
|
### Properties
|
||||||
|
|
||||||
@ -476,3 +481,57 @@ Passed as an argument to the emitted `gatewayFound` event. Contains information
|
|||||||
* `port` - number containing the port to connect to the unit
|
* `port` - number containing the port to connect to the unit
|
||||||
* `portOpen` - boolean indicating whether or not the port is open and able to be connected to
|
* `portOpen` - boolean indicating whether or not the port is open and able to be connected to
|
||||||
* `relayOn` - boolean indicating whether the relay is on (unsure what exactly this indicates; it's always been false in my tests)
|
* `relayOn` - boolean indicating whether the relay is on (unsure what exactly this indicates; it's always been false in my tests)
|
||||||
|
|
||||||
|
## SLAddNewScheduleEvent
|
||||||
|
|
||||||
|
Adds a new event to the specified schedule type, either 0 for regular events or 1 for one-time events
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* `scheduleType` - 0 - indicates regular scheduled events, 1 - indicates a run-once event
|
||||||
|
|
||||||
|
## SLDeleteScheduleEventById
|
||||||
|
|
||||||
|
Deletes a scheduled event with specified id
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* `scheduleId` - the scheduleId of the schedule to be deleted
|
||||||
|
|
||||||
|
## SLGetScheduleData
|
||||||
|
|
||||||
|
Retrieves a list of schedule events of the specified type, either 0 for regular events or 1 for one-time events
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* `scheduleType` - 0 - indicates regular scheduled events, 1 - indicates a run-once event
|
||||||
|
|
||||||
|
## SLSetScheduleEventById
|
||||||
|
|
||||||
|
Configures an event with properties as described below
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* `scheduleId` - id of a schedule previously created, see [`SLAddNewScheduleEvent`](#sladdnewscheduleevent)
|
||||||
|
* `circuitId` - id of the circuit to which this event applies to
|
||||||
|
* `startTime` - the start time of the event, specified as minutes since midnight
|
||||||
|
* example: 6:00am would be 360
|
||||||
|
* example: 6:15am would be 375
|
||||||
|
* `stopTime` - the stop time of the event, specified as minutes since midnight, format is the same as startTime
|
||||||
|
* `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
|
||||||
|
* only valid values i've seen are 0,1,2,3
|
||||||
|
* `heatCmd` - integer indicating the desired heater mode. Valid values are: 0: "Off", 1: "Solar", 2 : "Solar Preferred", 3 : "Heat Pump", 4: "Don't Change"
|
||||||
|
* `heatSetPoint` - the temperature set point if heat is to be changed (ignored if bit 1 of flags is 0)
|
||||||
|
|
||||||
|
## SLSetCircuitRuntimeById
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
* `circuitId` - id of the circuit to which this event applies to
|
||||||
|
* `runTime` - integer specifying the minutes of runTime
|
7
index.js
7
index.js
@ -249,6 +249,10 @@ class UnitConnection extends EventEmitter {
|
|||||||
dayMask, flags, heatCmd, heatSetPoint).toBuffer());
|
dayMask, flags, heatCmd, heatSetPoint).toBuffer());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setCircuitRuntimebyId(circuitId, runTime) {
|
||||||
|
this.client.write(new messages.SLSetCircuitRuntimeById(circuitId, runTime).toBuffer());
|
||||||
|
}
|
||||||
|
|
||||||
onClientMessage(msg) {
|
onClientMessage(msg) {
|
||||||
// console.log('received message of length ' + msg.length);
|
// console.log('received message of length ' + msg.length);
|
||||||
if (msg.length < 4) {
|
if (msg.length < 4) {
|
||||||
@ -321,6 +325,9 @@ class UnitConnection extends EventEmitter {
|
|||||||
case messages.SLSetScheduleEventById.getResponseId():
|
case messages.SLSetScheduleEventById.getResponseId():
|
||||||
this.emit('setScheduleEventById', new messages.SLSetScheduleEventById(msg));
|
this.emit('setScheduleEventById', new messages.SLSetScheduleEventById(msg));
|
||||||
break;
|
break;
|
||||||
|
case messages.SLSetCircuitRuntimeById.getResponseId():
|
||||||
|
this.emit('setCircuitRuntimebyId', new messages.SLSetCircuitRuntimeById());
|
||||||
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
// console.log(" it's a login failure.");
|
// console.log(" it's a login failure.");
|
||||||
this.emit('loginFailed');
|
this.emit('loginFailed');
|
||||||
|
27
messages/SLSetCircuitRuntimeById.js
Normal file
27
messages/SLSetCircuitRuntimeById.js
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
const SLMessage = require('./SLMessage.js').SLMessage;
|
||||||
|
|
||||||
|
const MSG_ID = 12550;
|
||||||
|
|
||||||
|
|
||||||
|
exports.SLSetCircuitRuntimeById = class SLSetCircuitRuntimeById extends SLMessage {
|
||||||
|
constructor(circuitId, runTime) {
|
||||||
|
super(0, MSG_ID);
|
||||||
|
|
||||||
|
this.circuitId = circuitId;
|
||||||
|
this.runTime = runTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
encode() {
|
||||||
|
this.writeInt32LE(0);
|
||||||
|
this.writeInt32LE(this.circuitId);
|
||||||
|
this.writeInt32LE(this.runTime);
|
||||||
|
|
||||||
|
super.encode();
|
||||||
|
}
|
||||||
|
|
||||||
|
static getResponseId() {
|
||||||
|
return MSG_ID + 1;
|
||||||
|
}
|
||||||
|
};
|
@ -19,3 +19,4 @@ exports.SLGetScheduleData = require('./SLGetScheduleData.js').SLGetScheduleData;
|
|||||||
exports.SLAddNewScheduleEvent = require('./SLAddNewScheduleEvent.js').SLAddNewScheduleEvent;
|
exports.SLAddNewScheduleEvent = require('./SLAddNewScheduleEvent.js').SLAddNewScheduleEvent;
|
||||||
exports.SLDeleteScheduleEventById = require('./SLDeleteScheduleEventById.js').SLDeleteScheduleEventById;
|
exports.SLDeleteScheduleEventById = require('./SLDeleteScheduleEventById.js').SLDeleteScheduleEventById;
|
||||||
exports.SLSetScheduleEventById = require('./SLSetScheduleEventById.js').SLSetScheduleEventById;
|
exports.SLSetScheduleEventById = require('./SLSetScheduleEventById.js').SLSetScheduleEventById;
|
||||||
|
exports.SLSetCircuitRuntimeById = require('./SLSetCircuitRuntimeById.js').SLSetCircuitRuntimeById;
|
||||||
|
Reference in New Issue
Block a user