brianhanifin / Home-Assistant-Config

Home Assistant configuration files.
https://brianhanifin.com
123 stars 23 forks source link

Pool Pump Controller #26

Open brianhanifin opened 5 years ago

brianhanifin commented 5 years ago

Pump Controller: smarten the schedule based on the season (less in winter)

CCOSTAN commented 5 years ago

Might be helpful : https://github.com/CCOSTAN/Home-AssistantConfig/issues/191

brianhanifin commented 5 years ago

Thank you. Rob's video is what inspired me to consider this. I may never do this, but I like the idea.

CCOSTAN commented 5 years ago

https://github.com/segalion/raspipool - I dare you. :)

brianhanifin commented 5 years ago

@CCOSTAN Wow! That's pretty serious. I stop paying for a pool guy with that setup.

Unfortunately, the wife would never allow that level of integration. There are too many flaky components of our home automation system to get her onboard with anything that critical. I'm going to have to work on that.

brianhanifin commented 5 years ago

I just looked closer at Raspipool. While it looks promising, I have a fancy Intelliflo Variable Speed pump. I need a way to connect into the external controls port. This project appears to be controlling a dumb pump with relays. I'm just not motivated enough to mess with this right now. I'm going to close this.

brianhanifin commented 3 years ago

Hey @CCOSTAN, I just came across this project on Thingiverse! This YAML code was included with the STL file for the case. This person did all of the hard work for us! :)

This looks like a good candidate for another Sonoff 4 Channel Pro like I used for my Irrigation Controller. I still don't plan on making this any time soon... but the barrier for entry just got a whole lot smaller now that I don't have reverse engineer anything, so... someday. 😁

This is a box for an ESP32 / ESPHome based pool pump controller.

Last year I bought a old ranch house that had an empty pool that was missing all of it's supporting equipment. I resurrected the pool and installed new equipment. Now I'm going down the deep end of home automation with ESPHome and Home-Assistant. As I'm thinking of projects, I remembered that my pool pump has an input connector for remote control via their super expensive control solution. A quick google of the pump manual resulted in the pinout of the connector that just takes 5v signal level inputs to command the pump. This is the result

The esp32 is connected to a relay board that then commands the pump. I also added a CT to monitor the power useage of the pump. I have solar panels installed that also report to Home-Assistant, so I will do some logic to slow the pump when the panels are not keeping up with the house.

Parts list: ESP32 - https://www.amazon.com/gp/product/B0811KLGDD Solder Breadboard - https://www.sparkfun.com/products/12070 CT Clamp - https://www.sparkfun.com/products/11005 Power Supply - https://www.amazon.com/gp/product/B005T6UJBU Antenna - https://www.amazon.com/gp/product/B06WD7FZV4 Pump Control Cable - https://www.amazon.com/gp/product/B01MCTHE53

Pool Pump Pentair Superflo VS - https://www.amazon.com/gp/product/B00PKHX2BM

This object was made in Tinkercad. Edit it online https://www.tinkercad.com/things/fnY93wt4LCN Pool Pump Pentair Superflo VS - https://www.amazon.com/gp/product/B00PKHX2BM

This object was made in Tinkercad. Edit it online https://www.tinkercad.com/things/fnY93wt4LCN

esphome:
  name: pool
  platform: ESP32
  board: nodemcu-32s

wifi:
  ssid: !secret wifissid
  password: !secret wifipass

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  #ap:
  #  ssid: "Pool Fallback Hotspot"
  #  password: "IQkNijFST3Ec"

captive_portal:

# Enable logging
logger:

# Enable Home Assistant API
api:
  password: !secret apipass

ota:
  password: !secret otapass

switch:
  - platform: gpio
    name: "Pool Low Speed"
    pin: GPIO32
    id: lowspeed
    inverted: true
    interlock: [medspeed, highspeed, cleanspeed]
  - platform: gpio
    name: "Pool Medium Speed"
    pin: GPIO33
    id: medspeed
    inverted: true
    interlock: [lowspeed, highspeed, cleanspeed]
  - platform: gpio
    name: "Pool High Speed"
    pin: GPIO25
    id: highspeed
    inverted: true
    interlock: [lowspeed, medspeed, cleanspeed]
  - platform: gpio
    name: "Pool Cleaning Speed"
    pin: GPIO26
    id: cleanspeed
    inverted: true
    interlock: [lowspeed, medspeed, highspeed]

sensor:
  - platform: ct_clamp
    sensor: poolcurrent
    name: "Pool Pump Current"
    update_interval: 10s
    id: poolamps
    filters:
      - calibrate_linear:
          - 0.02 -> 0
          - 0.34 -> 7.375
  - platform: adc
    pin: GPIO34
    id: poolcurrent
    attenuation: 11db
    update_interval: 10s
  - platform: template
    name: "Pool Pump Watts"
    id: poolwatts
    lambda: return id(poolamps).state * 240;
    accuracy_decimals: 0
    unit_of_measurement: W
    icon: "mdi:flash-circle"
    update_interval: 60s

time:
  - platform: sntp
    on_time:
      - seconds: 0
        minutes: 0
        hours: 8
        then:
          - switch.turn_on: highspeed
      - seconds: 0
        minutes: 0
        hours: 10
        then:
          - switch.turn_on: medspeed
      - seconds: 0
        minutes: 0
        hours: 18
        then:
          - switch.turn_on: lowspeed
      - seconds: 0
        minutes: 0
        hours: 0
        then:
          - switch.turn_off: highspeed
          - switch.turn_off: medspeed
          - switch.turn_off: lowspeed
          - switch.turn_off: cleanspeed