Skip to content

Additional Information, Sensors & Add‐ons

Nicholas White edited this page Jul 1, 2024 · 16 revisions

Temperature Sensor - Dallas

The temperature probes are dallas one-wire probes, meaning they are little special. They each are assigned an address that you can only get by reading the device's logs once plugged in. Natively, the software only allows for 1 temperature probe so we don't need to get the specific address of a probe when we only have 1 attached, but in some cases, we want more than one.

Adding More

You will need to go into AquaPi's logs to get the address of the probes, once obtained, we can edit the .yaml via ESPHome.

YAML

substitutions:
  cal_0_2: "0.0"
  cal_100_2: "100.0"

sensor:
  - id: !extend temp_1
    address: <DALLAS_ADDRESS_1>

  # Temperature Probe 2
  - platform: dallas_temp
    id: temp_2
    icon: mdi:thermometer-lines
    address: <DALLAS_ADDRESS_2>
    name: "Temperature 2"
    state_class: "measurement"
    device_class: "temperature"
    filters:
      - calibrate_linear:
          method: least_squares
          datapoints:
            - 0.0 -> ${cal_0_2}
            - 100.0 -> ${cal_100_2}
    on_value: 
      then:
        - component.update: temp_range_2

# The Following is Optional

  # Convert to Fahrenheit - Temp. 2
  - platform: template
    state_class: "measurement"
    device_class: "temperature"
    id: temp_f_2
    lambda: |-
      return id(temp_2).state * 9 / 5 + 32;

  # Calibration Temp. 2 at 0C
  - platform: template
    name: Calibration at 0°C  - Temp. 2
    id: cal_0_2_sen
    icon: mdi:snowflake-alert
    unit_of_measurement: "°C"
    state_class: "measurement"
    device_class: "temperature"
    entity_category: "diagnostic"
    lambda: |-
      return {${cal_0_2}};

  # Calibration Temp. 2 at 100C
  - platform: template
    name: Calibration at 100°C - Temp. 2
    id: cal_100_2_sen
    icon: mdi:water-thermometer
    unit_of_measurement: "°C"
    state_class: "measurement"
    device_class: "temperature"
    entity_category: "diagnostic"
    lambda: |-
      return {${cal_100_2}};

binary_sensor:
  - platform: template
    name: Ideal Temperature 2
    id: ideal_temp_2
    icon: mdi:thermometer-check
    lambda: |-
      if (id(temp_range_2).state == "OK") {
        return true;
      } else {
        return false;
      }

text_sensor:
  # Temperature Range 2
  - platform: template
    name: Temperature 2 Range
    id: temp_range_2
    icon: mdi:thermometer-water
    update_interval: "${update_temp}"
    lambda: |-
      if(id(temp_f_2).state <= id(range_cool_2).state) {
        return {"Cool"};
      }
      if(id(temp_f_2).state < id(range_warm_2).state && id(temp_f_2).state > id(range_cool_2).state) {
        return {"OK"};
      }
      if(id(temp_f_2).state >= id(range_warm_2).state) {
        return {"Warm"};
      }     
      else {
        return {"Unknown"};
      }

number:
  # Temperature 2 when Cool
  - platform: template
    name: "Temp. 2 Cool"
    id: range_cool_2
    icon: mdi:snowflake-thermometer
    optimistic: true
    mode: box
    min_value: 0.0
    max_value: 100.0
    step: 0.5
    restore_value: True
    initial_value: ${range_cool}
    entity_category: "Config"
    device_class: "temperature"
    on_value: 
      then:
        - component.update: temp_range_2

  # Temperature 2 when Warm
  - platform: template
    name: "Temp. 2 Warm"
    icon: mdi:sun-thermometer
    id: range_warm_2
    optimistic: true
    mode: box
    min_value: 0.0
    max_value: 100.0
    step: 0.5
    restore_value: True
    initial_value: ${range_warm}
    entity_category: "Config"
    device_class: "temperature"
    on_value: 
      then:
        - component.update: temp_range_2

Store Link
Documentation

NOTE: Using Dose Volume for Time can fail sometimes. In using the pump to dose 5 gallons over 8 hours, sometimes the pump would stop working and it would needed to be tapped or jostled to get it started again.
Try only using the Dose Volume methods or Quick Water Change blueprints.

Setup & Install

The Pump cases are designed to attach directly onto the AquaPi base product. There are up to 8 removable plugs on the AquaPi, you can remove 2 adjacent ones and insert the pump case into the empty plug holes.
Plug into Red label cable of the AquaPi, this is the I2C connection for various EZO circuits. Test that the pump is connected by using the corresponding Dose Continuously button, then use the Stop Dosing button to stop it.

Config

Default Address

The default address for the EZO-Pump is 103 but I wanted to support all 6 colors Atlas Scientific supplies so I changed the address based on specific colors.

White - 103
Red - 108
Green - 109
Orange - 110
Yellow - 104
Blue - 106

Home Assistant Aliases

White - Pump
Red - Pump Waste
Green - Pump Clean
Orange - Pump Orange
Yellow - Pump Yellow
Blue - Pump Blue

Calibrate

See Guide

Blueprints

See Blueprints

Store Link
ESPHome Documentation

Setup & Install

Follow same setup from AquaPi

Config

Default Config

Default yaml

Sample Config

By default, the camera is in low resolution (640x480) which allows for a higher framerate, but you can raise the resolution at the cost of frames, essentially a snapshot camera.
Using the ESPHome add-on, try this configuration:

esp32_camera:
  resolution: 2560x1920
  jpeg_quality: 10
  # vertical_flip: false
  # horizontal_mirror: false

If you want to stream it to an NVR like MotionEye or Frigate:

esp32_camera_web_server:
  - port: 8080
    mode: stream
  - port: 8081
    mode: snapshot