252 lines
6.1 KiB
YAML
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
|
|
|