Files
hassos_config/esphome/common/ep_one-sen0395-stable.yaml
2025-06-23 12:40:35 +02:00

252 lines
6.1 KiB
YAML

uart:
id: uart_bus
tx_pin: GPIO13
rx_pin: GPIO14
baud_rate: 115200
debug:
direction: BOTH
dummy_receiver: true
after:
delimiter: "\n"
sequence:
- lambda: UARTDebug::log_string(direction, bytes);
binary_sensor:
- platform: gpio
name: mmWave
id: mmwave
device_class: occupancy
pin:
number: GPIO15
mode: INPUT_PULLDOWN
- platform: gpio
pin:
number: 33
mode: INPUT_PULLDOWN
name: PIR
id: pir_motion_sensor
device_class: motion
filters:
- delayed_off: !lambda 'return id(pir_off_latency).state * 1000.0;'
- platform: template
name: Occupancy
id: occupancy
device_class: occupancy
filters:
- delayed_off: !lambda 'return id(occupancy_off_latency).state * 1000.0;'
on_state:
- lambda: 'id(illuminance_sensor).update();'
lambda: |-
if ( id(mmwave).state or id(pir_motion_sensor).state) {
return true;
}
else if (id(mmwave).state == 0 and id(pir_motion_sensor).state == 0) {
return false;
}
else {
return id(occupancy).state;
}
number:
- platform: template
id: mmwave_distance
name: mmWave distance
icon: mdi:arrow-left-right
entity_category: config
min_value: 0
max_value: 800
initial_value: 315
optimistic: true
step: 15
restore_value: true
unit_of_measurement: cm
mode: slider
set_action:
- switch.turn_off: mmwave_sensor
- delay: 1s
- uart.write: !lambda int cm = (int)ceil(x / 15.0);
std::string cms = "detRangeCfg -1 0 " + to_string(cm);
return std::vector<unsigned char>(cms.begin(), cms.end());
- delay: 1s
- uart.write: "saveCfg 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89"
- delay: 1s
- switch.turn_on: mmwave_sensor
- platform: template
name: Occupancy off latency
icon: mdi:clock-end
entity_category: config
id: occupancy_off_latency
min_value: 1
max_value: 600
initial_value: 15
optimistic: true
step: 5
restore_value: true
unit_of_measurement: seconds
mode: slider
- platform: template
name: PIR off latency
icon: mdi:clock-end
entity_category: config
id: pir_off_latency
min_value: 1
max_value: 120
initial_value: 10
optimistic: true
step: 1
restore_value: true
unit_of_measurement: seconds
mode: slider
- platform: template
name: "Temperature Offset"
id: temperature_offset_ui
unit_of_measurement: "°C"
min_value: -20
max_value: 20
step: 0.1
mode: box
update_interval: never
optimistic: true
restore_value: true
initial_value: 0
icon: "mdi:thermometer"
entity_category: config
on_value:
- lambda: 'id(shtc3_sensor).update();'
- platform: template
name: "Humidity Offset"
id: humidity_offset_ui
unit_of_measurement: "%"
min_value: -50
max_value: 50
step: 0.1
mode: box
update_interval: never
optimistic: true
restore_value: true
initial_value: 0
icon: "mdi:water-percent"
entity_category: config
on_value:
- lambda: 'id(shtc3_sensor).update();'
- platform: template
name: "Illuminance Offset"
id: illuminance_offset_ui
unit_of_measurement: "lx"
min_value: -50
max_value: 50
step: 1
mode: box
update_interval: never
optimistic: true
restore_value: true
initial_value: 0
icon: "mdi:brightness-5"
entity_category: config
on_value:
- lambda: 'id(illuminance_sensor).update();'
switch:
- platform: template
name: UART target output
id: uart_target_output
entity_category: config
internal: ${uart_target_output_disabled}
optimistic: true
assumed_state: false
turn_on_action:
- logger.log: "UART Target Output On"
- switch.turn_off: mmwave_sensor
- delay: 1s
- uart.write: "setUartOutput 2 1 1 1"
- delay: 1s
- uart.write: "saveConfig"
- delay: 3s
- switch.turn_on: mmwave_sensor
turn_off_action:
- logger.log: "UART Presence Output Off"
- switch.turn_off: mmwave_sensor
- delay: 1s
- uart.write: "setUartOutput 2 0"
- delay: 1s
- uart.write: "saveConfig"
- delay: 3s
- switch.turn_on: mmwave_sensor
light:
- platform: status_led
name: ESP32 status LED
pin: GPIO32
entity_category: config
disabled_by_default: False
sensor:
- platform: shtcx
id: "shtc3_sensor"
i2c_id: bus_a
temperature:
name: Temperature
id: temperature_sensor
filters:
- offset: ${temperature_offset}
- lambda: "return x + id(temperature_offset_ui).state;"
humidity:
name: Humidity
id: humidity_sensor
filters:
- offset: ${humidity_offset}
- lambda: "return x + id(humidity_offset_ui).state;"
address: 0x70
update_interval: ${temperature_update_interval}
- platform: bh1750
name: Illuminance
id: illuminance_sensor
i2c_id: bus_a
address: 0x23
update_interval: ${illuminance_update_interval}
filters:
- calibrate_linear:
method: exact
datapoints:
- 0.3 -> 0.3
- 0.9 -> 1.7
- 1.2 -> 3.6
- 3.2 -> 6.9
- 5.1 -> 10.2
- 6.8 -> 27.1
- 7.0 -> 13.5
- 7.4 -> 28.2
- 8.7 -> 21.7
- 8.9 -> 17.1
- 10.9 -> 20.4
- 12.8 -> 23.5
- 14.5 -> 31.2
- 14.9 -> 26.7
- 16.8 -> 41.1
- 16.9 -> 30.2
- 18.8 -> 33.4
- 19.1 -> 35.8
- 20.7 -> 37.0
- 24.3 -> 60.3
- 26.1 -> 68.6
- 26.7 -> 83.8
- 30.2 -> 75.9
- 32.6 -> 80.3
- 34.6 -> 83.2
- 40.4 -> 99.9
- 48.0 -> 183.7
- 48.3 -> 119.2
- 55.5 -> 141.3
- 55.8 -> 137.9
- 63.8 -> 157.6
- 71.5 -> 176.9
- 79.8 -> 197.1
- 84.3 -> 205.7
- lambda: "return x + id(illuminance_offset_ui).state;"
- clamp:
min_value: 0