From 4fc3b15042eb15b4eaf8aed1b8a1a86ed06f5d4c Mon Sep 17 00:00:00 2001 From: Jan Grewe <jan@faked.org> Date: Sat, 4 Nov 2023 01:00:36 +0100 Subject: [PATCH] add dosing pump control for pH+/- --- .gitlab-ci.yml | 2 +- growbox.yaml | 1 + packages/pca9685.yaml | 61 ++++++++++++++++++++++++++++++++++++++ packages/secrets.yaml.dist | 4 +++ 4 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 packages/pca9685.yaml diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 7f2b225..ff459e8 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,7 +4,7 @@ stages: - deploy image: - name: esphome/esphome:2023.9.3 + name: esphome/esphome:2023.10.6 entrypoint: [""] validate_configs: diff --git a/growbox.yaml b/growbox.yaml index be6d021..6661bde 100644 --- a/growbox.yaml +++ b/growbox.yaml @@ -27,3 +27,4 @@ packages: ec: !include packages/ec.yaml ph: !include packages/ph.yaml sts35: !include packages/sts35.yaml + pca9685: !include packages/pca9685.yaml diff --git a/packages/pca9685.yaml b/packages/pca9685.yaml new file mode 100644 index 0000000..08df1a3 --- /dev/null +++ b/packages/pca9685.yaml @@ -0,0 +1,61 @@ +globals: + - id: pump1_ml_sec + type: float + initial_value: !secret pump1_ml_sec + - id: pump1_dose_ml + type: int + initial_value: !secret pump1_dose_ml + - id: pump2_ml_sec + type: float + initial_value: !secret pump2_ml_sec + - id: pump2_dose_ml + type: int + initial_value: !secret pump2_dose_ml + +pca9685: + - id: pca9685_dosing + frequency: 100Hz + +output: + - platform: pca9685 + id: output_ph_down + pca9685_id: pca9685_dosing + channel: 8 + - platform: pca9685 + id: output_ph_up + pca9685_id: pca9685_dosing + channel: 7 + +switch: + - platform: output + output: output_ph_down + id: ph_down + name: "pH Down" + on_turn_on: + - then: + - logger.log: + level: INFO + tag: "dosing" + format: "Dosing %d ml of 'pH Down' (%.1f seconds @ %.2f ml/s)" + args: [ 'id(pump1_dose_ml)', 'id(pump1_dose_ml) / id(pump1_ml_sec)', 'id(pump1_ml_sec)' ] + - delay: !lambda return id(pump1_dose_ml) / id(pump1_ml_sec) * 1000; + - switch.turn_off: ph_down + on_turn_off: + - then: + - logger.log: "Stopped dosing 'pH Down'" + - platform: output + output: output_ph_up + id: ph_up + name: "pH Up" + on_turn_on: + - then: + - logger.log: + level: INFO + tag: "dosing" + format: "Dosing %d ml of 'pH Up' (%.1f seconds @ %.2f ml/s)" + args: [ 'id(pump2_dose_ml)', 'id(pump2_dose_ml) / id(pump2_ml_sec)', 'id(pump2_ml_sec)' ] + - delay: !lambda return id(pump2_dose_ml) / id(pump2_ml_sec) * 1000; + - switch.turn_off: ph_up + on_turn_off: + - then: + - logger.log: "Stopped dosing 'pH Up'" diff --git a/packages/secrets.yaml.dist b/packages/secrets.yaml.dist index 458c71c..a537f16 100644 --- a/packages/secrets.yaml.dist +++ b/packages/secrets.yaml.dist @@ -4,3 +4,7 @@ ota_password: "" api_password: "" domain: "local" timezone: "Europe/Berlin" +pump1_ml_sec: "2.15" # millilitre per second +pump1_dose_ml: "10" # millilitre per dose +pump2_ml_sec: "2.15" # millilitre per second +pump2_dose_ml: "10" # millilitre per dose -- GitLab