From 37d05dd5bf877a4629f4c5a440c58c5b5018834f Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan@faked.org>
Date: Mon, 20 Nov 2023 19:13:48 +0100
Subject: [PATCH] add water level sensors (TL-136), rename packages

---
 growbox.yaml                                  | 23 +++---
 packages/{bme280.yaml => air_bme280.yaml}     |  0
 packages/{scd40.yaml => air_scd40.yaml}       | 16 ++--
 packages/{gp8403.yaml => control_gp8403.yaml} |  0
 .../{pca9685.yaml => dosing_pca9685.yaml}     |  0
 packages/esp32s3.yaml                         |  2 +-
 packages/level.yaml                           | 80 +++++++++++++++++++
 packages/secrets.yaml.dist                    |  1 +
 packages/vpd.yaml                             |  2 +-
 packages/{mlx90614.yaml => vpd_mlx90614.yaml} |  5 +-
 packages/{ads1115.yaml => water_ads1115.yaml} |  1 +
 packages/{ds18b20.yaml => water_ds18b20.yaml} |  0
 packages/{ec.yaml => water_ec.yaml}           |  4 +-
 packages/{ph.yaml => water_ph.yaml}           |  4 +-
 packages/{sts35.yaml => water_sts35.yaml}     |  0
 propbox.yaml                                  |  6 +-
 16 files changed, 117 insertions(+), 27 deletions(-)
 rename packages/{bme280.yaml => air_bme280.yaml} (100%)
 rename packages/{scd40.yaml => air_scd40.yaml} (76%)
 rename packages/{gp8403.yaml => control_gp8403.yaml} (100%)
 rename packages/{pca9685.yaml => dosing_pca9685.yaml} (100%)
 create mode 100644 packages/level.yaml
 rename packages/{mlx90614.yaml => vpd_mlx90614.yaml} (93%)
 rename packages/{ads1115.yaml => water_ads1115.yaml} (56%)
 rename packages/{ds18b20.yaml => water_ds18b20.yaml} (100%)
 rename packages/{ec.yaml => water_ec.yaml} (96%)
 rename packages/{ph.yaml => water_ph.yaml} (97%)
 rename packages/{sts35.yaml => water_sts35.yaml} (100%)

diff --git a/growbox.yaml b/growbox.yaml
index f239ddd..7486e0e 100644
--- a/growbox.yaml
+++ b/growbox.yaml
@@ -1,6 +1,6 @@
 substitutions:
   devicename: "growbox"
-  comment: "Grow Tent Controller"
+  comment: "Grow Box Controller"
 
   # Growbox Nodes
   hostname_light: "${devicename}-light.${domain}"
@@ -13,19 +13,20 @@ packages:
   base:           !include packages/base.yaml
   esp32:          !include packages/esp32s3.yaml
   time:           !include packages/time_schedule.yaml
-  bme280:         !include packages/bme280.yaml
-  scd40:          !include packages/scd40.yaml
-  mlx90614:       !include packages/mlx90614.yaml
-  gp8403:         !include packages/gp8403.yaml
-  vpd:            !include packages/vpd.yaml
+  air_bme280:     !include packages/air_bme280.yaml
+  air_scd40:      !include packages/air_scd40.yaml
+  control_gp8403: !include packages/control_gp8403.yaml
   fan_settings:   !include packages/fan_settings.yaml
   fan_power:      !include packages/fan_power.yaml
   fan_scripts:    !include packages/fan_scripts.yaml
   light_power:    !include packages/light_power.yaml
   light_settings: !include packages/light_settings.yaml
-  ads1115:        !include packages/ads1115.yaml
-  ec:             !include packages/ec.yaml
-  ph:             !include packages/ph.yaml
-  sts35:          !include packages/sts35.yaml
-  pca9685:        !include packages/pca9685.yaml
+  vpd:            !include packages/vpd.yaml
+  vpd_mlx90614:   !include packages/vpd_mlx90614.yaml  
+  water_ads1115:  !include packages/water_ads1115.yaml
+  water_ec:       !include packages/water_ec.yaml
+  water_ph:       !include packages/water_ph.yaml
+  water_sts35:    !include packages/water_sts35.yaml
   dosing:         !include packages/dosing.yaml
+  dosing_pca9685: !include packages/dosing_pca9685.yaml
+  level:          !include packages/level.yaml
diff --git a/packages/bme280.yaml b/packages/air_bme280.yaml
similarity index 100%
rename from packages/bme280.yaml
rename to packages/air_bme280.yaml
diff --git a/packages/scd40.yaml b/packages/air_scd40.yaml
similarity index 76%
rename from packages/scd40.yaml
rename to packages/air_scd40.yaml
index 35f3f31..0bb05e4 100644
--- a/packages/scd40.yaml
+++ b/packages/air_scd40.yaml
@@ -10,11 +10,13 @@ sensor:
     <<: !include filter.yaml
   temperature:
     id: scd40_temperature
-    name: "CO2: Temperature"
+    internal: true
+    #name: "CO2: Temperature"
     <<: !include filter.yaml
   humidity:
     id: scd40_humidity
-    name: "CO2: Humidity"
+    internal: true
+    #name: "CO2: Humidity"
     <<: !include filter.yaml
 
 prometheus:
@@ -34,8 +36,8 @@ button:
         - scd4x.perform_forced_calibration:
             value: 419  # outside average April 2022
             id: scd40
-  - platform: template
-    name: "CO2: Factory Reset"
-    on_press:
-      then:
-        - scd4x.factory_reset: scd40
+  # - platform: template
+  #   name: "CO2: Factory Reset"
+  #   on_press:
+  #     then:
+  #       - scd4x.factory_reset: scd40
diff --git a/packages/gp8403.yaml b/packages/control_gp8403.yaml
similarity index 100%
rename from packages/gp8403.yaml
rename to packages/control_gp8403.yaml
diff --git a/packages/pca9685.yaml b/packages/dosing_pca9685.yaml
similarity index 100%
rename from packages/pca9685.yaml
rename to packages/dosing_pca9685.yaml
diff --git a/packages/esp32s3.yaml b/packages/esp32s3.yaml
index 4923f99..fc5185e 100644
--- a/packages/esp32s3.yaml
+++ b/packages/esp32s3.yaml
@@ -22,7 +22,7 @@ status_led:
 i2c:
   sda: 5
   scl: 6
-  frequency: 10khz
+  frequency: 50khz
 
 wifi:
   power_save_mode: none
diff --git a/packages/level.yaml b/packages/level.yaml
new file mode 100644
index 0000000..6f2fe87
--- /dev/null
+++ b/packages/level.yaml
@@ -0,0 +1,80 @@
+substitutions:
+  waterlevel_current_init: '4.06' # mA at 0mm
+  waterlevel_range: '1000' # mm
+  waterlevel_density: '1' # water
+
+globals:
+  - id: waterlevel_current_init
+    type: float
+    restore_value: yes
+    initial_value: ${waterlevel_current_init}
+  - id: waterlevel_range
+    type: float
+    restore_value: yes
+    initial_value: ${waterlevel_range}
+  - id: waterlevel_density
+    type: float
+    restore_value: yes
+    initial_value: ${waterlevel_density}
+
+ads1115:
+  - address: 0x49
+    id: ads1115_waterlevel
+
+sensor:
+  - platform: ads1115
+    ads1115_id: ads1115_waterlevel
+    id: waterlevel_tank_voltage
+    internal: true
+    #name: "Waterlevel Tank: Voltage"
+    multiplexer: 'A0_GND'
+    gain: 4.096 # max: 3.0V
+    update_interval: 5s
+    accuracy_decimals: 5
+    <<: !include filter.yaml
+  - platform: ads1115
+    ads1115_id: ads1115_waterlevel
+    id: waterlevel_system_voltage
+    internal: true
+    #name: "Waterlevel System: Voltage"
+    multiplexer: 'A1_GND'
+    gain: 4.096 # max: 3.0V
+    update_interval: 5s
+    accuracy_decimals: 5
+    <<: !include filter.yaml
+
+  # - platform: template
+  #   name: "Waterlevel System: Current"
+  #   id: waterlevel_tank_current
+  #   unit_of_measurement: "mA"
+  #   accuracy_decimals: 2
+  #   update_interval: 5s
+  #   lambda: !lambda 'return id(waterlevel_tank_voltage).state * 1024.0 / 120.0;' # V->mV, Sense Resistor: 120ohm'
+  # - platform: template
+  #   name: "Waterlevel Tank: Current"
+  #   id: waterlevel_system_current
+  #   unit_of_measurement: "mA"
+  #   accuracy_decimals: 2
+  #   update_interval: 5s
+  #   lambda: !lambda 'return id(waterlevel_system_voltage).state * 1024.0 / 120.0;'  # V->mV, Sense Resistor: 120ohm
+
+  - platform: template
+    name: "Waterlevel: Tank"
+    id: waterlevel_tank
+    unit_of_measurement: "cm"
+    accuracy_decimals: 2
+    update_interval: 5s
+    lambda: |-
+      float dataCurrent = id(waterlevel_tank_voltage).state * 1024.0 / 120.0;  // Sense Resistor: 120ohm
+      float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10;
+      return depth;
+  - platform: template
+    name: "Waterlevel: System"
+    id: waterlevel_system
+    unit_of_measurement: "cm"
+    accuracy_decimals: 2
+    update_interval: 5s
+    lambda: |-
+      float dataCurrent = id(waterlevel_system_voltage).state * 1024.0 / 120.0; // Sense Resistor: 120ohm
+      float depth = (dataCurrent - id(waterlevel_current_init)) * (id(waterlevel_range) / id(waterlevel_density) / 16.0) / 10;
+      return depth;
diff --git a/packages/secrets.yaml.dist b/packages/secrets.yaml.dist
index d2dd5b8..be65f1d 100644
--- a/packages/secrets.yaml.dist
+++ b/packages/secrets.yaml.dist
@@ -8,3 +8,4 @@ pump1_ml_sec: "2.15"    # millilitre per second
 pump1_dose_ml: "2"      # millilitre per dose
 pump2_ml_sec: "2.15"    # millilitre per second
 pump2_dose_ml: "5"      # millilitre per dose
+tcs34725_gaf: "1.0"
diff --git a/packages/vpd.yaml b/packages/vpd.yaml
index 597d6c4..b5eaf69 100644
--- a/packages/vpd.yaml
+++ b/packages/vpd.yaml
@@ -1,7 +1,7 @@
 sensor:
 - platform: template
   id: vpd
-  name: "Vapor Pressure Deficit"
+  name: "VPD"
   update_interval: 5s
   accuracy_decimals: 2
   unit_of_measurement: 'kPa'
diff --git a/packages/mlx90614.yaml b/packages/vpd_mlx90614.yaml
similarity index 93%
rename from packages/mlx90614.yaml
rename to packages/vpd_mlx90614.yaml
index 63513d8..4705ad7 100644
--- a/packages/mlx90614.yaml
+++ b/packages/vpd_mlx90614.yaml
@@ -3,7 +3,8 @@ sensor:
     update_interval: 5s
     ambient:
       id: mlx90614_temperature_ambient
-      name: "IR: Ambient Temperature"
+      internal: true
+      #name: "IR: Ambient Temperature"
       unit_of_measurement: °C
       accuracy_decimals: 2
       <<: !include filter.yaml
@@ -20,7 +21,7 @@ sensor:
             - button.press: device_reset
     object:
       id: mlx90614_temperature_object
-      name: "IR: Object Temperature"
+      name: "VPD: Leaf Temperature"
       unit_of_measurement: °C
       accuracy_decimals: 2
       emissivity: 0.98
diff --git a/packages/ads1115.yaml b/packages/water_ads1115.yaml
similarity index 56%
rename from packages/ads1115.yaml
rename to packages/water_ads1115.yaml
index 7f6ac90..00ffeef 100644
--- a/packages/ads1115.yaml
+++ b/packages/water_ads1115.yaml
@@ -1,2 +1,3 @@
 ads1115:
   - address: 0x48
+    id: ads1115_phec
diff --git a/packages/ds18b20.yaml b/packages/water_ds18b20.yaml
similarity index 100%
rename from packages/ds18b20.yaml
rename to packages/water_ds18b20.yaml
diff --git a/packages/ec.yaml b/packages/water_ec.yaml
similarity index 96%
rename from packages/ec.yaml
rename to packages/water_ec.yaml
index c5b740e..0afe6a2 100644
--- a/packages/ec.yaml
+++ b/packages/water_ec.yaml
@@ -12,8 +12,10 @@ globals:
   
 sensor:
   - platform: ads1115
+    ads1115_id: ads1115_phec
     id: analog_ec
-    name: "EC: Analog Voltage"
+    internal: true
+    #name: "EC: Analog Voltage"
     multiplexer: 'A1_GND'
     gain: 4.096 # max: 3.4V
     update_interval: 5s
diff --git a/packages/ph.yaml b/packages/water_ph.yaml
similarity index 97%
rename from packages/ph.yaml
rename to packages/water_ph.yaml
index 84a982d..c774d1d 100644
--- a/packages/ph.yaml
+++ b/packages/water_ph.yaml
@@ -24,8 +24,10 @@ globals:
 
 sensor:
   - platform: ads1115
+    ads1115_id: ads1115_phec
     id: analog_ph
-    name: "pH: Analog Voltage"
+    internal: true
+    #name: "pH: Analog Voltage"
     multiplexer: 'A0_GND'
     gain: 4.096 # max: 3.0V
     update_interval: 5s
diff --git a/packages/sts35.yaml b/packages/water_sts35.yaml
similarity index 100%
rename from packages/sts35.yaml
rename to packages/water_sts35.yaml
diff --git a/propbox.yaml b/propbox.yaml
index 23da35a..3aa040e 100644
--- a/propbox.yaml
+++ b/propbox.yaml
@@ -1,6 +1,6 @@
 substitutions:
   devicename: "propbox"
-  comment: "Propagator Controller"
+  comment: "Propagation Box Controller"
 
   # Propbox Nodes
   hostname_light: "${devicename}-light.${domain}"
@@ -13,8 +13,8 @@ packages:
   base:           !include packages/base.yaml
   esp32:          !include packages/esp32.yaml
   time:           !include packages/time_schedule.yaml
-  bme280:         !include packages/bme280.yaml
-  ds18b20:        !include packages/ds18b20.yaml
+  air_bme280:     !include packages/air_bme280.yaml
+  water_ds18b20:  !include packages/water_ds18b20.yaml
   yyac32:         !include packages/yyac3s.yaml
   fan_settings:   !include packages/fan_settings.yaml
   fan_power:      !include packages/fan_power.yaml
-- 
GitLab