parnic / node-screenlogic

Pentair ScreenLogic Javascript library using Node.JS
https://www.npmjs.com/package/node-screenlogic
MIT License
52 stars 14 forks source link

Testing Needed for SLGetPumpStatus / SLSetPumpFlow #27

Closed bshep closed 4 years ago

bshep commented 4 years ago

@mikemucc and @parnic

I implemented the above messages, but need feedback from someone with more than one VS pump as I have no way to know for sure how to set/request data for other pumps, i made an educated guess based on the other messages.

you can checkout my branch: https://github.com/bshep/node-screenlogic/tree/pump_info

you can use this example file to test: https://gist.github.com/bshep/0f900eabe699d141bd4a33d60907037f

edit the line 51:

this.getPumpStatus(0);

to request other pumps ( it may not work if i guessed wrong )

Please also test ( this WILL change your settings so make sure you have some way of setting them back if something fails):

setPumpFlow(pumpId, circuitId, setPoint, isRPMs)

I've tested with 'pumpId = 0' and it works perfectly

Once more testing has been done I will submit a PR to have it merged.

parnic commented 4 years ago

Lines 72-73 of the example gist: circuitIds actually match up with deviceIds in a controller config's bodyArray, it's not always index + 1. I have a circuit that's circuitId 11 that lives at bodyArray position 7, for example. Most of my circuits are index + 1, but not all.

I'll add some comments directly to the commits in your repo for some GetPumpInfo feedback. This looks really good, though! Thanks for doing all this work.

bshep commented 4 years ago

Lines 72-73 of the example gist: circuitIds actually match up with deviceIds in a controller config's bodyArray, it's not always index + 1. I have a circuit that's circuitId 11 that lives at bodyArray position 7, for example. Most of my circuits are index + 1, but not all.

Got it, probably need a helper function, like getCircuitInfoFromDeviceId or something similar, i'll cook it up and update the branch

Also were you able to get any data from a different pump other than pump 0

parnic commented 4 years ago

Yes, I get data for both of my pumps (0 and 1). Neither of them is running right now (waiting for cheaper electricity hours which start in 17 minutes ;)) so I'll verify that the RPMs and stuff are correct then. Circuits are accurate for me, though!

bshep commented 4 years ago

Updated the gist based on your comments.

Add this to the end of SLControllerConfigMessage.js (i'm not sure where you want this so i'm not commiting the changes yet):


  getCircuitInfoFromDeviceId(deviceId) {
    for (var i = 0; i < this.bodyArray.length; i++) {
      if (this.bodyArray[i].deviceId === deviceId) {
        return this.bodyArray[i];
      }
    }
    return null;
  }
parnic commented 4 years ago

One of my pumps is currently on. That pump's "val1" returns 1. The pump that's off still returns 0. I'd say it's safe to assume that is an on/off status. RPMs/watts look good on the pump that's on. Exciting!

mikemucc commented 4 years ago

Not to throw a monkey wrench in here, but any chance there could be a "priming" status?

parnic commented 4 years ago

Not to throw a monkey wrench in here, but any chance there could be a "priming" status?

Could be! Maybe that's when you were seeing the 0xFF's on that second uint? 🤷

mikemucc commented 4 years ago

I don’t have a second pump, but it just seems to fit with the rest of the logic built into this thing

Michael Mucciarone

On Jun 8, 2020, at 9:46 PM, parnic notifications@github.com wrote:

 Not to throw a monkey wrench in here, but any chance there could be a "priming" status?

Could be! Maybe that's when you were seeing the 0xFF's on that second uint? 🤷

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub, or unsubscribe.

bshep commented 4 years ago

Not to throw a monkey wrench in here, but any chance there could be a "priming" status?

Could be! Maybe that's when you were seeing the 0xFF's on that second uint?

Its possible unknown1 is an indication of an active delay ( 0 no delay, 1 delay active ) and unknown2 is a priming indicator, however i have no way to test priming, i can however test the delay tomorrow but id have to reconfigure my second pumps function to cleaner, unknown2/1 could be reserved fields or used for other types of pumps. Need more data...