diff --git a/everything-presence-one-beta.yaml b/everything-presence-one-beta.yaml new file mode 100644 index 0000000..f5bc830 --- /dev/null +++ b/everything-presence-one-beta.yaml @@ -0,0 +1,350 @@ +substitutions: + name: "everything-presence-one" + friendly_name: "Everything Presence One" + project_name: "Everything Smart Technology.Everything Presence One" + project_version: "1.2.0b" + temperature_offset: "-3" + humidity_offset: "5" + temperature_update_interval: "60s" + illuminance_update_interval: "30s" + pir_delay_off: "10s" + occupancy_delay_off: "15s" + hidden_ssid: "false" + factory_reset_disabled: "true" + uart_target_output_disabled: "false" + uart_presence_output_disabled: "true" + +esphome: + name: ${name} + friendly_name: ${friendly_name} + name_add_mac_suffix: true + project: + name: "${project_name}" + version: "${project_version}" + includes: + - SEN0395_distance.h + +esp32: + board: esp32dev + +logger: + +api: + +ota: + +wifi: + fast_connect: ${hidden_ssid} + ap: {} + +captive_portal: + +improv_serial: + +esp32_improv: + authorizer: none + +dashboard_import: + package_import_url: github://everythingsmarthome/presence-one/everything-presence-one.yaml@main + import_full_config: false + +light: + - platform: status_led + name: ESP32 status LED + pin: GPIO32 + entity_category: config + disabled_by_default: True + - platform: binary + name: mmWave LED + restore_mode: RESTORE_DEFAULT_OFF + output: mmwave_led_output + entity_category: config + disabled_by_default: True + +output: + - platform: template + id: mmwave_led_output + type: binary + write_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - if: + condition: + lambda: !lambda return state; + then: + - uart.write: "setLedMode 1 0" + else: + - uart.write: "setLedMode 1 1" + - delay: 1s + - uart.write: "saveConfig" + - delay: 3s + - switch.turn_on: mmwave_sensor + +i2c: + sda: 26 + scl: 25 + scan: true + +sensor: + - platform: shtcx + temperature: + name: Temperature + filters: + offset: ${temperature_offset} + humidity: + name: Humidity + filters: + offset: ${humidity_offset} + address: 0x70 + update_interval: ${temperature_update_interval} + - platform: bh1750 + name: Illuminance + address: 0x23 + update_interval: ${illuminance_update_interval} + - platform: template + name: Target Distance m + id: target_distance_m # do not change + accuracy_decimals: 5 + +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: ${pir_delay_off} + - platform: template + name: Occupancy + id: occupancy + device_class: occupancy + filters: + - delayed_off: ${occupancy_delay_off} + 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; + } +uart: + id: uart_bus + tx_pin: GPIO13 + rx_pin: GPIO14 + baud_rate: 115200 + + +switch: + - platform: template + name: mmWave sensor + id: mmwave_sensor + disabled_by_default: True + entity_category: config + optimistic: true + restore_state: true + turn_on_action: + - uart.write: "sensorStart" + - delay: 1s + turn_off_action: + - uart.write: "sensorStop" + - delay: 1s + + - platform: template + name: UART presence output + id: uart_presence_output + entity_category: config + internal: ${uart_presence_output_disabled} + optimistic: true + restore_state: true + turn_on_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: "setUartOutput 1 1" + - delay: 1s + - uart.write: "saveConfig" + - delay: 3s + - switch.turn_on: mmwave_sensor + turn_off_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: "setUartOutput 1 0" + - delay: 1s + - uart.write: "saveConfig" + - delay: 3s + - switch.turn_on: mmwave_sensor + + - platform: template + name: UART target output + id: uart_target_output + entity_category: config + internal: ${uart_target_output_disabled} + optimistic: true + restore_state: true + assumed_state: false + restore_mode: ALWAYS_ON + turn_on_action: + - 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: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: "setUartOutput 2 0" + - delay: 1s + - uart.write: "saveConfig" + - delay: 3s + - switch.turn_on: mmwave_sensor + +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(cms.begin(), cms.end()); + - delay: 1s + - uart.write: "saveCfg 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89" + - delay: 1s + - switch.turn_on: mmwave_sensor + + - platform: template + name: mmWave off latency + icon: mdi:clock-end + entity_category: config + id: mmwave_off_latency + min_value: 1 + max_value: 60 + initial_value: 15 + optimistic: true + step: 1 + restore_value: true + unit_of_measurement: seconds + mode: slider + set_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: !lambda |- + std::string mss = "setLatency " + to_string(id(mmwave_on_latency).state) + " " + to_string(id(mmwave_off_latency).state); + return std::vector(mss.begin(), mss.end()); + - delay: 1s + - uart.write: "saveCfg 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89" + - delay: 1s + - switch.turn_on: mmwave_sensor + + - platform: template + name: mmWave on latency + icon: mdi:clock-start + id: mmwave_on_latency + entity_category: config + min_value: 0 + max_value: 60 + initial_value: 0 + optimistic: true + step: 0.5 + restore_value: true + unit_of_measurement: seconds + mode: slider + set_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: !lambda |- + std::string mss = "setLatency " + to_string(id(mmwave_on_latency).state) + " " + to_string(id(mmwave_off_latency).state); + return std::vector(mss.begin(), mss.end()); + - delay: 1s + - uart.write: "saveCfg 0x45670123 0xCDEF89AB 0x956128C6 0xDF54AC89" + - delay: 1s + - switch.turn_on: mmwave_sensor + + - platform: template + name: mmWave sensitivity + icon: mdi:target-variant + id: mmwave_sensitivity + entity_category: config + min_value: 0 + max_value: 9 + initial_value: 7 + optimistic: true + step: 1 + restore_value: true + set_action: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: + !lambda std::string mss = "setSensitivity " + to_string((int)x); + return std::vector(mss.begin(), mss.end()); + - delay: 1s + - uart.write: "saveConfig" + - delay: 1s + - switch.turn_on: mmwave_sensor + +button: + - platform: restart + id: restart_internal + entity_category: config + internal: true + - platform: template + name: Restart mmWave sensor + id: restart_mmwave + entity_category: config + internal: true + on_press: + - uart.write: "resetSystem" + - platform: template + name: Restart + icon: mdi:restart + entity_category: config + disabled_by_default: True + on_press: + - button.press: restart_mmwave + - button.press: restart_internal + - platform: safe_mode + internal: false + name: Safe mode + entity_category: config + disabled_by_default: True + - platform: template + name: Factory reset mmWave + icon: mdi:cog-counterclockwise + id: factory_reset_mmwave + internal: ${factory_reset_disabled} + entity_category: config + on_press: + - switch.turn_off: mmwave_sensor + - delay: 1s + - uart.write: "resetCfg" + - delay: 3s + - switch.turn_on: mmwave_sensor + +custom_component: +- lambda: |- + auto my_custom = new Sen0395Distance(id(uart_bus)); + return {my_custom}; \ No newline at end of file diff --git a/everything-presence-one.yaml b/everything-presence-one.yaml index 5713fc1..be1dbd5 100644 --- a/everything-presence-one.yaml +++ b/everything-presence-one.yaml @@ -11,7 +11,7 @@ substitutions: occupancy_delay_off: "15s" hidden_ssid: "false" factory_reset_disabled: "true" - uart_target_output_disabled: "false" + uart_target_output_disabled: "true" uart_presence_output_disabled: "true" esphome: @@ -19,10 +19,8 @@ esphome: friendly_name: ${friendly_name} name_add_mac_suffix: true project: - name: "${project_name}" - version: "${project_version}" - includes: - - SEN0395_distance.h + name: ${project_name} + version: ${project_version} esp32: board: esp32dev @@ -140,7 +138,13 @@ uart: 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); switch: - platform: template @@ -189,7 +193,6 @@ switch: optimistic: true restore_state: true assumed_state: false - restore_mode: ALWAYS_ON turn_on_action: - switch.turn_off: mmwave_sensor - delay: 1s @@ -339,14 +342,3 @@ button: - uart.write: "resetCfg" - delay: 3s - switch.turn_on: mmwave_sensor - -custom_component: -- lambda: |- - auto my_custom = new Sen0395Distance(id(uart_bus)); - return {my_custom}; - -sensor: - - platform: template - name: Target Distance m - id: target_distance_m # do not change - accuracy_decimals: 5