parnic / node-screenlogic

Pentair ScreenLogic Javascript library using Node.JS

Home Page:https://www.npmjs.com/package/node-screenlogic

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Unable to set salt level for pool or spa individually

bwoodworth opened this issue · comments

commented

The setSaltCellOutput function sets the pool and spa levels so you can't just send one level. Would it be possible to either create distinct functions for pool and spa or add the ability to pass null values to the existing function like this:

exports.SLSetSaltCellConfigMessage = class SLSetSaltCellConfigMessage extends SLMessage {
  constructor(controllerIndex, poolOutput, spaOutput) {
    super(0, MSG_ID);
    this.controllerIndex = controllerIndex;
    if(poolOutput != null){
      this.poolOutput = poolOutput;
    }
    if(spaOutput != null){
      this.spaOutput = spaOutput;
    }
  }
  encode() {
    this.writeInt32LE(this.controllerIndex || 0);
    this.writeInt32LE(this.poolOutput || 0);
    this.writeInt32LE(this.spaOutput || 0);
    this.writeInt32LE(0);
    this.writeInt32LE(0);
    super.encode();
  }
  static getResponseId() {
    return MSG_ID + 1;
  }
};

I'm not sure how the messages are sent to SL so this might not be possible, but it would make sense to allow just setting one at a time.

I don't have the ability to change things on the ScreenLogic side, so no, this is not possible. The message that gets sent to SL must have both pool and spa specified.

You can emulate this on your side by first getting the salt cell levels with getSaltCellConfig(), then using the existing level1 or level2 values in that message to pass along for pool or spa, respectively.

commented

Thanks. We must work within the SL constraints.