Added ability to set circuit state

This allows for, for example, turning on a water feature or changing pool/spa active status.
This commit is contained in:
2018-04-14 13:46:49 -05:00
parent 562a9993aa
commit e1c775b8a8
4 changed files with 40 additions and 0 deletions

View File

@ -127,6 +127,10 @@ class UnitConnection extends EventEmitter {
this.client.write(new messages.SLVersionMessage().toBuffer());
}
setCircuitState(controllerId, circuitId, circuitState) {
this.client.write(new messages.SLSetCircuitStateMessage(controllerId, circuitId, circuitState).toBuffer());
}
onClientMessage(msg) {
//console.log('received message of length ' + msg.length);
if (msg.length < 4) {
@ -163,6 +167,10 @@ class UnitConnection extends EventEmitter {
//console.log(" it's version");
this.emit('version', new messages.SLVersionMessage(msg));
break;
case messages.SLSetCircuitStateMessage.getResponseId():
//console.log(" it's circuit toggle ack");
this.emit('circuitStateChanged', new messages.SLSetCircuitStateMessage());
break;
default:
//console.log(" it's unknown. type: " + msgType);
break;

6
messages/SLMessage.js Executable file → Normal file
View File

@ -10,6 +10,8 @@ exports.SLMessage = class SLMessage extends SmartBuffer {
}
toBuffer() {
this.encode();
if (this._wroteSize === false) {
this.insertInt32LE(this.length - 4, 4);
this._wroteSize = true;
@ -54,4 +56,8 @@ exports.SLMessage = class SLMessage extends SmartBuffer {
this.messageId = this.readUInt16LE();
this.dataLength = this.readInt32LE();
}
encode() {
}
}

View File

@ -0,0 +1,25 @@
const SLMessage = require('./SLMessage.js').SLMessage;
const MSG_ID = 12530;
exports.SLSetCircuitStateMessage = class SLSetCircuitStateMessage extends SLMessage {
constructor(controllerId, circuitId, circuitState) {
super(0, MSG_ID);
this.controllerId = controllerId;
this.circuitId = circuitId;
this.circuitState = circuitState;
}
encode() {
this.writeInt32LE(this.controllerId || 0);
this.writeInt32LE(this.circuitId || 0);
this.writeInt32LE(this.circuitState || 0);
super.encode();
}
static getResponseId() {
return MSG_ID + 1;
}
}

1
messages/index.js Executable file → Normal file
View File

@ -5,3 +5,4 @@ exports.SLLoginMessage = require("./SLLoginMessage.js").SLLoginMessage;
exports.SLChemDataMessage = require("./SLChemDataMessage.js").SLChemDataMessage;
exports.SLSaltCellConfigMessage = require("./SLSaltCellConfigMessage.js").SLSaltCellConfigMessage;
exports.SLVersionMessage = require("./SLVersionMessage.js").SLVersionMessage;
exports.SLSetCircuitStateMessage = require("./SLSetCircuitStateMessage.js").SLSetCircuitStateMessage;