add sensors via digital analog converter;
This commit is contained in:
12
README.md
Normal file
12
README.md
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
# Home Assistant
|
||||||
|
## Integrations
|
||||||
|
### ESP32Home - Hochbeet
|
||||||
|
- B4 Controller Config: esphome_b4_controller.yaml
|
||||||
|
#### Config Flashing
|
||||||
|
- in terminal swicht python environment<br>
|
||||||
|
```source ~/b4/bin/activate```
|
||||||
|
- start esphome device builder<br>
|
||||||
|
```esphome-device-builder ~/esphome-configs```
|
||||||
|
- access [ESPHome - Device Builder](http://localhost:6052/)
|
||||||
|
- connect controller with USB-C cable and choose serial port 'USB JTAG'
|
||||||
|
- sometimes after flashing new config controller have to repowered
|
||||||
@@ -8,6 +8,7 @@ esp32:
|
|||||||
type: arduino
|
type: arduino
|
||||||
|
|
||||||
logger:
|
logger:
|
||||||
|
hardware_uart: USB_SERIAL_JTAG
|
||||||
|
|
||||||
api:
|
api:
|
||||||
encryption:
|
encryption:
|
||||||
@@ -26,17 +27,28 @@ wifi:
|
|||||||
captive_portal:
|
captive_portal:
|
||||||
|
|
||||||
i2c:
|
i2c:
|
||||||
- id: bus_a
|
- id: bus_relay
|
||||||
sda: 8
|
sda: 8
|
||||||
scl: 18
|
scl: 18
|
||||||
scan: true
|
scan: true
|
||||||
frequency: 400kHz
|
frequency: 400kHz
|
||||||
|
|
||||||
|
- id: bus_ads
|
||||||
|
sda: 13
|
||||||
|
scl: 14
|
||||||
|
scan: true
|
||||||
|
frequency: 100kHz
|
||||||
|
|
||||||
pcf8574:
|
pcf8574:
|
||||||
- id: pcf8574_hub_out_1
|
- id: pcf8574_hub_out_1
|
||||||
i2c_id: bus_a
|
i2c_id: bus_relay
|
||||||
address: 0x24
|
address: 0x24
|
||||||
|
|
||||||
|
ads1115:
|
||||||
|
- id: ads1115_hub
|
||||||
|
i2c_id: bus_ads
|
||||||
|
address: 0x48
|
||||||
|
|
||||||
switch:
|
switch:
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
name: "Bewässerung Hochbeet 1"
|
name: "Bewässerung Hochbeet 1"
|
||||||
@@ -46,6 +58,7 @@ switch:
|
|||||||
number: 4
|
number: 4
|
||||||
mode: OUTPUT
|
mode: OUTPUT
|
||||||
inverted: true
|
inverted: true
|
||||||
|
restore_mode: ALWAYS_OFF
|
||||||
icon: "mdi:sprinkler-variant"
|
icon: "mdi:sprinkler-variant"
|
||||||
|
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
@@ -56,6 +69,7 @@ switch:
|
|||||||
number: 5
|
number: 5
|
||||||
mode: OUTPUT
|
mode: OUTPUT
|
||||||
inverted: true
|
inverted: true
|
||||||
|
restore_mode: ALWAYS_OFF
|
||||||
icon: "mdi:sprinkler-variant"
|
icon: "mdi:sprinkler-variant"
|
||||||
|
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
@@ -66,6 +80,7 @@ switch:
|
|||||||
number: 6
|
number: 6
|
||||||
mode: OUTPUT
|
mode: OUTPUT
|
||||||
inverted: true
|
inverted: true
|
||||||
|
restore_mode: ALWAYS_OFF
|
||||||
icon: "mdi:sprinkler-variant"
|
icon: "mdi:sprinkler-variant"
|
||||||
|
|
||||||
- platform: gpio
|
- platform: gpio
|
||||||
@@ -76,6 +91,7 @@ switch:
|
|||||||
number: 7
|
number: 7
|
||||||
mode: OUTPUT
|
mode: OUTPUT
|
||||||
inverted: true
|
inverted: true
|
||||||
|
restore_mode: ALWAYS_OFF
|
||||||
icon: "mdi:sprinkler-variant"
|
icon: "mdi:sprinkler-variant"
|
||||||
|
|
||||||
binary_sensor:
|
binary_sensor:
|
||||||
@@ -127,53 +143,54 @@ binary_sensor:
|
|||||||
- delayed_on: 10ms
|
- delayed_on: 10ms
|
||||||
icon: "mdi:water-opacity"
|
icon: "mdi:water-opacity"
|
||||||
|
|
||||||
ads1115:
|
|
||||||
- address: 0x48
|
|
||||||
|
|
||||||
sensor:
|
sensor:
|
||||||
- platform: ads1115
|
- platform: ads1115
|
||||||
|
ads1115_id: ads1115_hub
|
||||||
multiplexer: A0_GND
|
multiplexer: A0_GND
|
||||||
gain: 6.144
|
gain: 4.096
|
||||||
resolution: 16_BITS
|
resolution: 16_BITS
|
||||||
name: "Feuchtigkeitsmessung V Hochbeet 1"
|
name: "Feuchtigkeitsmessung V Hochbeet 1"
|
||||||
id: b4_sensor1
|
id: b4_sensor1
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
unit_of_measurement: "V"
|
unit_of_measurement: "V"
|
||||||
accuracy_decimals: 3
|
accuracy_decimals: 3
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
icon: "mdi:flash"
|
icon: "mdi:flash"
|
||||||
|
|
||||||
- platform: ads1115
|
- platform: ads1115
|
||||||
|
ads1115_id: ads1115_hub
|
||||||
multiplexer: A1_GND
|
multiplexer: A1_GND
|
||||||
gain: 6.144
|
gain: 4.096
|
||||||
resolution: 16_BITS
|
resolution: 16_BITS
|
||||||
name: "Feuchtigkeitsmessung V Hochbeet 2"
|
name: "Feuchtigkeitsmessung V Hochbeet 2"
|
||||||
id: b4_sensor2
|
id: b4_sensor2
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
unit_of_measurement: "V"
|
unit_of_measurement: "V"
|
||||||
accuracy_decimals: 3
|
accuracy_decimals: 3
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
icon: "mdi:flash"
|
icon: "mdi:flash"
|
||||||
|
|
||||||
- platform: ads1115
|
- platform: ads1115
|
||||||
|
ads1115_id: ads1115_hub
|
||||||
multiplexer: A2_GND
|
multiplexer: A2_GND
|
||||||
gain: 6.144
|
gain: 4.096
|
||||||
resolution: 16_BITS
|
resolution: 16_BITS
|
||||||
name: "Feuchtigkeitsmessung V Hochbeet 3"
|
name: "Feuchtigkeitsmessung V Hochbeet 3"
|
||||||
id: b4_sensor3
|
id: b4_sensor3
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
unit_of_measurement: "V"
|
unit_of_measurement: "V"
|
||||||
accuracy_decimals: 3
|
accuracy_decimals: 3
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
icon: "mdi:flash"
|
icon: "mdi:flash"
|
||||||
|
|
||||||
- platform: ads1115
|
- platform: ads1115
|
||||||
|
ads1115_id: ads1115_hub
|
||||||
multiplexer: A3_GND
|
multiplexer: A3_GND
|
||||||
gain: 6.144
|
gain: 4.096
|
||||||
resolution: 16_BITS
|
resolution: 16_BITS
|
||||||
name: "Feuchtigkeitsmessung V Hochbeet 4"
|
name: "Feuchtigkeitsmessung V Hochbeet 4"
|
||||||
id: b4_sensor4
|
id: b4_sensor4
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
unit_of_measurement: "V"
|
unit_of_measurement: "V"
|
||||||
accuracy_decimals: 3
|
accuracy_decimals: 3
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
@@ -186,14 +203,14 @@ sensor:
|
|||||||
accuracy_decimals: 0
|
accuracy_decimals: 0
|
||||||
device_class: humidity
|
device_class: humidity
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
icon: "mdi:water-percent"
|
icon: "mdi:water-percent"
|
||||||
lambda: |-
|
lambda: |-
|
||||||
const float wet_voltage = 1.20;
|
const float wet_voltage = 1.20;
|
||||||
const float dry_voltage = 2.70;
|
const float dry_voltage = 2.70;
|
||||||
float v = id(b4_sensor1).state;
|
float v = id(b4_sensor1).state;
|
||||||
if (isnan(v)) return NAN;
|
if (isnan(v)) return NAN;
|
||||||
float p = (dry_voltage - v) * 100.0 / (dry_voltage - wet_voltage);
|
float p = (dry_voltage - v) * 100.0f / (dry_voltage - wet_voltage);
|
||||||
if (p < 0) p = 0;
|
if (p < 0) p = 0;
|
||||||
if (p > 100) p = 100;
|
if (p > 100) p = 100;
|
||||||
return p;
|
return p;
|
||||||
@@ -205,14 +222,14 @@ sensor:
|
|||||||
accuracy_decimals: 0
|
accuracy_decimals: 0
|
||||||
device_class: humidity
|
device_class: humidity
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
icon: "mdi:water-percent"
|
icon: "mdi:water-percent"
|
||||||
lambda: |-
|
lambda: |-
|
||||||
const float wet_voltage = 1.20;
|
const float wet_voltage = 1.20;
|
||||||
const float dry_voltage = 2.70;
|
const float dry_voltage = 2.70;
|
||||||
float v = id(b4_sensor2).state;
|
float v = id(b4_sensor2).state;
|
||||||
if (isnan(v)) return NAN;
|
if (isnan(v)) return NAN;
|
||||||
float p = (dry_voltage - v) * 100.0 / (dry_voltage - wet_voltage);
|
float p = (dry_voltage - v) * 100.0f / (dry_voltage - wet_voltage);
|
||||||
if (p < 0) p = 0;
|
if (p < 0) p = 0;
|
||||||
if (p > 100) p = 100;
|
if (p > 100) p = 100;
|
||||||
return p;
|
return p;
|
||||||
@@ -224,14 +241,14 @@ sensor:
|
|||||||
accuracy_decimals: 0
|
accuracy_decimals: 0
|
||||||
device_class: humidity
|
device_class: humidity
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
icon: "mdi:water-percent"
|
icon: "mdi:water-percent"
|
||||||
lambda: |-
|
lambda: |-
|
||||||
const float wet_voltage = 1.20;
|
const float wet_voltage = 1.20;
|
||||||
const float dry_voltage = 2.70;
|
const float dry_voltage = 2.70;
|
||||||
float v = id(b4_sensor3).state;
|
float v = id(b4_sensor3).state;
|
||||||
if (isnan(v)) return NAN;
|
if (isnan(v)) return NAN;
|
||||||
float p = (dry_voltage - v) * 100.0 / (dry_voltage - wet_voltage);
|
float p = (dry_voltage - v) * 100.0f / (dry_voltage - wet_voltage);
|
||||||
if (p < 0) p = 0;
|
if (p < 0) p = 0;
|
||||||
if (p > 100) p = 100;
|
if (p > 100) p = 100;
|
||||||
return p;
|
return p;
|
||||||
@@ -243,14 +260,14 @@ sensor:
|
|||||||
accuracy_decimals: 0
|
accuracy_decimals: 0
|
||||||
device_class: humidity
|
device_class: humidity
|
||||||
state_class: measurement
|
state_class: measurement
|
||||||
update_interval: 5s
|
update_interval: 2s
|
||||||
icon: "mdi:water-percent"
|
icon: "mdi:water-percent"
|
||||||
lambda: |-
|
lambda: |-
|
||||||
const float wet_voltage = 1.20;
|
const float wet_voltage = 1.20;
|
||||||
const float dry_voltage = 2.70;
|
const float dry_voltage = 2.70;
|
||||||
float v = id(b4_sensor4).state;
|
float v = id(b4_sensor4).state;
|
||||||
if (isnan(v)) return NAN;
|
if (isnan(v)) return NAN;
|
||||||
float p = (dry_voltage - v) * 100.0 / (dry_voltage - wet_voltage);
|
float p = (dry_voltage - v) * 100.0f / (dry_voltage - wet_voltage);
|
||||||
if (p < 0) p = 0;
|
if (p < 0) p = 0;
|
||||||
if (p > 100) p = 100;
|
if (p > 100) p = 100;
|
||||||
return p;
|
return p;
|
||||||
|
|||||||
Reference in New Issue
Block a user