tagyoureit / nodejs-poolController

An application to control pool equipment from various manufacturers.
GNU Affero General Public License v3.0
323 stars 94 forks source link

Use Nixie for chemical controller and whatever else I can #274

Closed DrJeff closed 3 years ago

DrJeff commented 3 years ago

How do I use the nixie controller, how to get started? @tagyoureit

rstrouse commented 3 years ago

Can you take another look at the message manager for me related to the pumps? All indications are that this should be doing its thing.

As for the relay. I think it may just be too fast through the cycle for it. I'll add some delays for that relay type.

DrJeff commented 3 years ago

Can you take another look at the message manager for me related to the pumps? All indications are that this should be doing its thing.

Nope it's blank and yes I selected the top right to start it

As for the relay. I think it may just be too fast through the cycle for it. I'll add some delays for that relay type.

Oh for this MCP20317 probably needs 1 sec delays long but thats what I was doing for the previous setup Screen Shot 2021-04-28 at 1 00 03 PM

rstrouse commented 3 years ago

Oh for this MCP20317 probably needs 1 sec delays long but thats what I was doing for the previous setup

Wow that is really slow. To set white that would mean 14 pairs + an on at the beginning and end so you would be looking at 30 seconds to change the theme. Holy yikes I thought 100ms on my setup was slow but it works.

DrJeff commented 3 years ago

Oh for this MCP20317 probably needs 1 sec delays long but thats what I was doing for the previous setup

Wow that is really slow. To set white that would mean 14 pairs + an on at the beginning and end so you would be looking at 30 seconds to change the theme. Holy yikes I thought 100ms on my setup was slow but it works.

Yup I took it down to 250ms but had issues upped it to 750ms mostly stable but absolutely solid at 1000ms, the delay was ok because I don't do much change. let's do 500ms and try?

DrJeff commented 3 years ago

As for the pump thing I tried pulling the USB and it finds the connection but no messages are generated like earlier.... Screen Shot 2021-04-28 at 1 14 54 PM

rstrouse commented 3 years ago

I'll add some code to allow you to do a cycle delay. That is horrible. My relay transitions are capable of around 500/sec but the lights themselves or the transformer isn't that quick.

Still, can't seem to replicate the pump refusal. In fact the message are indicating that it is attempting to make a run at the pump. Can you stop njspc and copy the poolState.json that I included here over your poolState.json.

poolState.zip

DrJeff commented 3 years ago

You da Man! That worked What did you do?

rstrouse commented 3 years ago

I removed an artifact for the pump state that was created by the reload. Near as I can figure it seems that it didn't like an inactive pump state hanging out in there. I am hardening the code right now to make sure it cleans those up on failure.

rstrouse commented 3 years ago

Pull njspc and REM. I added the ability to add additional time to the relay for sequences. Don't forget to click on the save device after making your changes. image

DrJeff commented 3 years ago

Ok in your ways to fixing the pump is the chlorinator having the same id problem?

rstrouse commented 3 years ago

Maybe. Shoot me a screenshot of the chlorinator messages.

DrJeff commented 3 years ago

Thats the problem there is none

I need to swap the poolState.json each restart? If not the pump stays off shows on last state in status

DrJeff commented 3 years ago

On restart this is what comes up if I don't reinstall that fixed poolState zip file Screen Shot 2021-04-28 at 2 44 44 PM Stuck @ initializing After adding the fixed poolState file Screen Shot 2021-04-28 at 2 47 34 PM Screen Shot 2021-04-28 at 2 47 18 PM

rstrouse commented 3 years ago

If it is stuck on initializing there has to be an error on the console. Can you try it and tell me what it is. I am working through the chlorinators to see what could be holding them up.

DrJeff commented 3 years ago

Pulled the new njspc and the chlorinator is functioning now, Nice! I still have to stop njspc and unzip the poolState you sent for the pump to work each time. Attached is the replay of it not working. replay15.zip

DrJeff commented 3 years ago

The LEDs are still stumping me I just have REMs LED board connected on the bench for LEDs and I'm not getting the on/off action on changes of color or mode. For just manual ON or OFF once that works fine. If I create a group then I get the three buttons on the bottom of the color palette but if I choose those or any color njspc will crash and require a manual resurrection. I don't think this is helpfull but this is what I get in pm2 logs after crash

1|poolCont |     at Array.forEach (<anonymous>)
1|poolCont |     at MqttInterfaceBindings.bindEvent (/home/hass/nodejs-poolController/web/interfaces/mqttInterface.ts:228:67)
1|poolCont |     at MqttInterfaceServer.emitToClients (/home/hass/nodejs-poolController/web/Server.ts:860:27)
1|poolCont |     at WebServer.emitToClients (/home/hass/nodejs-poolController/web/Server.ts:130:30)
1|poolCont |     at CircuitState.emitData (/home/hass/nodejs-poolController/controller/State.ts:490:55)
1|poolCont |     at CircuitState.emitEquipmentChange (/home/hass/nodejs-poolController/controller/State.ts:484:39)
1|poolCont |     at DirtyStateCollection.emitChanges (/home/hass/nodejs-poolController/controller/State.ts:632:20)
1|poolCont |     at State.emitEquipmentChanges (/home/hass/nodejs-poolController/controller/State.ts:235:74)
1|poolCont |     at Function.process (/home/hass/nodejs-poolController/controller/comms/messages/status/ChlorinatorStateMessage.ts:103:27)
1|poolCont |     at Inbound.process (/home/hass/nodejs-poolController/controller/comms/messages/Messages.ts:755:41)
1|poolCont |     at SendRecieveBuffer.processCompletedMessage (/home/hass/nodejs-poolController/controller/comms/Comms.ts:452:17)
1|poolCont |     at SendRecieveBuffer.processInbound (/home/hass/nodejs-poolController/controller/comms/Comms.ts:490:48)
1|poolCont |     at SendRecieveBuffer.processPackets (/home/hass/nodejs-poolController/controller/comms/Comms.ts:281:21)
1|poolCont |     at Timeout._onTimeout (/home/hass/nodejs-poolController/controller/comms/Comms.ts:254:109)
1|poolCont |     at listOnTimeout (internal/timers.js:554:17)

For a color change I see this but not actions happen

1|poolController  | [4/29/2021, 10:14:46 AM] debug: REM server request returned. PUT /state/device/i2c:1:7:1 {"isOn":true,"latch":10000} {"status":{"code":200,"message":"OK"},"data":"{\"id\":1,\"name\":\"Light #1\",\"enabled\":true,\"state\":true,\"tripTime\":1619716396902,\"initState\":\"off\",\"invert\":true,\"sequenceOnDelay\":1000,\"sequenceOffDelay\":1000,\"oldState\":true,\"latchDuration\":89378}","obj":{"id":1,"name":"Light #1","enabled":true,"state":true,"tripTime":1619716396902,"initState":"off","invert":true,"sequenceOnDelay":1000,"sequenceOffDelay":1000,"oldState":true,"latchDuration":89378}}
DrJeff commented 3 years ago

@rstrouse Looks like it's only reading the commands in REM not writing the commands on changes to color or mode

1|REM  | setDeviceState: i2c:1:7:1 - {"isOn":true,"latch":10000}
1|REM  | info: Setting device state [object Object]
1|REM  | debug: Executed read command 0x12 byte read:0xfe
1|REM  | debug: Executed read command 0x12 byte read:0xfe
1|REM  | verbose: 192.168.0.179 PUT /state/device/i2c:1:6:13 {"isOn":true,"latch":10000}
1|REM  | info: [10:31:39 AM] 192.168.0.179 PUT /state/device/i2c:1:6:13 {"isOn":true,"latch":10000}

compared to

1|REM  | setDeviceState: i2c:1:7:1 - {"isOn":true,"latch":10000}
1|REM  | info: Setting device state [object Object]
1|REM  | debug: Executed read command 0x12 byte read:0xff
1|REM  | debug: Executed read command 0x12 byte read:0xff
1|REM  | debug: Executed read command 0x12 byte read:0xff
1|REM  | debug: Executed read command 0x13 byte read:0xef
1|REM  | debug: Executed send command 0x14 0xfe  bytes written:2
1|REM  | silly: Setting Dirty... true 2450
1|REM  | silly: Setting Dirty... true 2450
1|REM  | info: Processing socket event circuit
1|REM  | verbose: 192.168.0.179 PUT /state/device/i2c:1:7:1 {"isOn":true,"latch":10000}
1|REM  | info: [10:38:59 AM] 192.168.0.179 PUT /state/device/i2c:1:7:1 {"isOn":true,"latch":10000}
rstrouse commented 3 years ago

This is only working with single circuits assigned as color changing and does not work for grouped circuits yet. Groups are going to take some work as we need to be able to make a distinction between circuits that we control and those that belong to another controller.

Now that being said how are you changing colors? You should be clicking on the palette icon. image

Then choose a theme from the popup which will send the appropriate commands to REM. image

DrJeff commented 3 years ago

Yes thats what I have been trying to do, exactly like you posted my palette is black not white I don't know if thats a problem. I did delete the groups and still no joy on the single lights.

rstrouse commented 3 years ago

Yeah the groups just wont send the sequence. However, when we figure this out it will be one of those moments. I know you have these selected as IntelliBrite which is what determines whether the theme can be set. I also know you are clicking on the right things in dashPanel. From there njspc should send a sequence array to REM.

Basically you should see the following in the REM console when you do this. image

Just for kicks lets make sure all 3 projects have been updated and restarted.

DrJeff commented 3 years ago

Ok made sure I was up to date on all three projects, and restarted all three still don't get what you showed above. This is low priority I have the lights working via Home Assistant and Node Red. Even synced lights. I'm not sure how to translate the starting and stoping of the transformer here anyways. I have it so when any of the lights call for power the transformer is turned on and stays on with a cool down period before it shuts off. So that if you turn on spa lights then maybe turn off then within a few minutes turn on another light the transformer is ready then after the cool down period expires it would shutdown the transformer also necessary so that color changes/modes doesn't kill the power.

rstrouse commented 3 years ago

What transformers are you using and how many lights are attached to each? I run a pretty extensive DMX light show in the backyard. Unfortunately, the pool lights are IntelliBrite so they aren't responsive like all the other fixtures. One day I am going to build a DMX decoder for those lights and poke it into the fixture.

DrJeff commented 3 years ago

I don't know the brand but it's a beast. Three transformers in the main box and they are large I've had it for years running just the yard lights. But i swapped the Fiberstars fiber optics for the MicroBrites in the pool, spa, and waterfall.

I don't use DMX but do LED with WLED throughout my house and Yard

rstrouse commented 3 years ago

Yeah I have local decoders and PAR fixtures (28 of them) strewn throughout the yard. There is also a sound to light processor that is hooked into the sound system that does full on concert music effects. Unfortunately, that unit locks up if it isn't getting a constant feed so I find myself rebooting it when I want the sound processor active (I think it doesn't like a floating ground). But I power the architectural side wit a 2 universe Nicolaudie Stick DE3. I have it run searchlight effects, color rainbows and chases all over the yard. Combine that with the fire features and it looks like Vegas!

DrJeff commented 3 years ago

Sounds very Nice! especially after seeing your Controller Box beautiful setup!!

tagyoureit commented 3 years ago

We're making good progress here... open any new issues if anything crops up.