diff --git a/growbox.yaml b/growbox.yaml
index f239ddd53eae68c903bdf73f43f1c3cfda15ea85..7486e0e99ddfb990004a1e5376e47f433506cb6f 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 35f3f31bb01d522a86385d4b4b0e4fe1eaa15ad0..0bb05e44469afbe102c6afed5c407c8fcfa08aa3 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 4923f99b0759136af5a003c36da77c11915b8b8b..fc5185e1373cdeb34075e541a0173ee1d9e0c1be 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 0000000000000000000000000000000000000000..6f2fe8785af1a759908f9f779b474b3d1b26013f
--- /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 d2dd5b8aeb21db4540e7bb3ffac07190f4837037..be65f1d8da012d170a6b74add5a863020a2a7e78 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 597d6c4707358f38cd90c1ab4224cedc362c8326..b5eaf69e08d79c1c302e7d66f8b79351b9f83567 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 63513d8fe2ebaa1b1b2e7969f37a26f3b2ffb2d1..4705ad714ca78c8445c70bdd48f6da6b96ab887a 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 7f6ac90318f8ed8c7069aefa11c05ed7576bcdfa..00ffeef48ac8b4367a1c54bd5e882bb4a42cd89e 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 c5b740e69ec4c620d04ccc253de787f2b970faaf..0afe6a2039bcfa0a4014076e727b3a14181d952b 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 84a982dbc2c6dbc95c7ca299ca27a9a0f0626819..c774d1dce849d0855a68bd9a37c8a4467622600f 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 23da35a226bddc039d66b66ca921ebdd83ef50d1..3aa040e9db62b6071ab2fca8e59c3c7ca230cf7b 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