From 9b2d49b104ef4c46341e8c47321470fff710e674 Mon Sep 17 00:00:00 2001
From: Jan Grewe <jan@faked.org>
Date: Fri, 27 May 2022 15:41:54 +0200
Subject: [PATCH] replace BLE with BME280 add temperature/humidity hysteresis
 add Dallas DS18B20 for water temperature

---
 propbox.yaml | 51 +++++++++++++++++++++++++++++++++------------------
 1 file changed, 33 insertions(+), 18 deletions(-)

diff --git a/propbox.yaml b/propbox.yaml
index 7fd9eb8..e79dfba 100644
--- a/propbox.yaml
+++ b/propbox.yaml
@@ -9,9 +9,6 @@ substitutions:
   hostname_light: "propbox-light.${domain}"
   hostname_fan: "propbox-fan.${domain}"
 
-  # Sensors
-  ble_sensor_mac: "A4:C1:38:47:14:50" # 'PropBoxBLE'
-
   # Schedules
   #schedule_grow_on: "0 0 3 * * *"
   #schedule_grow_off: "0 0 21 * * *"
@@ -24,15 +21,23 @@ substitutions:
 
   temperature_max: "27"
   temperature_min: "21"
+  temperature_hysteresis: "2"
   humidity_max: "70"
   humidity_min: "40"
+  humidity_hysteresis: "5"
 
 <<: !include common.yaml
 
 esp32:
   board: esp32dev
 
-esp32_ble_tracker:
+i2c:
+  sda: 21
+  scl: 22
+
+dallas:
+  - pin: GPIO23
+    update_interval: 5s
 
 http_request:
   id: http_request_data
@@ -52,26 +57,33 @@ sensor:
 
 ### Specific Sensors
 
-  - platform: pvvx_mithermometer
-    mac_address: ${ble_sensor_mac}
-    battery_level:
-      id: ble_battery_level
-      name: "BLE Battery Level"
-    battery_voltage:
-      id: ble_battery_voltage
-      name: "BLE Battery Voltage"
+  - platform: bme280
+    address: 0x76
+    update_interval: 5s
     temperature:
-      id: ble_temperature
+      id: temperature
       name: "Temperature"
+      accuracy_decimals: 2
       on_value:
         then:
           - script.execute: fan_control
     humidity:
-      id: ble_humidity
+      id: humidity
       name: "Humidity"
+      accuracy_decimals: 2
       on_value:
         then:
           - script.execute: fan_control
+    pressure:
+      id: pressure
+      accuracy_decimals: 2
+      name: "Pressure"
+
+  - platform: dallas
+    index: 0
+    id: temperature_water
+    name: "Water Temperature"
+    accuracy_decimals: 2
 
 text_sensor:
   !include include/text_sensors.yaml
@@ -99,6 +111,8 @@ select:
             id(schedule) = index.value();
 
 switch:
+  - platform: restart
+    name: "Restart"
   - platform: template
     id: propbox_light
     name: "Light Status"
@@ -170,17 +184,18 @@ script:
           // switch fan on when temperature/humidity is above the limit, unless humidity/temperature is below the limit
           if (
             !id(propbox_fan).state &&
-            (id(ble_temperature).state >= ${temperature_max} && id(ble_humidity).state    >= ${humidity_min}) ||
-            (id(ble_humidity).state    >= ${humidity_max}    && id(ble_temperature).state >= ${temperature_min})
+            (id(temperature).state >= ${temperature_max} && id(humidity).state    >= ${humidity_min}) ||
+            (id(humidity).state    >= ${humidity_max}    && id(temperature).state >= ${temperature_min})
           ) {
             id(propbox_fan).turn_on();
             id(propbox_fan).publish_state(true);
           }
 
-          // switch fan off when temperature and humidity are below the limits
+          // switch fan off when temperature and humidity are below the limits minus hysteresis
           else if (
             id(propbox_fan).state &&
-            id(ble_temperature).state <= ${temperature_max} && id(ble_humidity).state <= ${humidity_max}
+            id(temperature).state <= ${temperature_max} - ${temperature_hysteresis} && 
+            id(humidity).state    <= ${humidity_max}    - ${humidity_hysteresis}
           ) {
             id(propbox_fan).turn_off();
             id(propbox_fan).publish_state(false);
-- 
GitLab