From db2b68d53d0e33500b75675b4d113911014ffa4e Mon Sep 17 00:00:00 2001 From: sen Date: Fri, 28 Feb 2025 17:56:09 +0800 Subject: [PATCH] Update: Support ESPHome 2025.2.0, remove kernel modifications - Added support for ESPHome 2025.2.0. - Removed unnecessary kernel modifications. - Thanks to Swisch_99, OwlBawl, and athua for their contributions. --- 1w/yaml/human-sensor-1w-github.yaml | 2 +- 1wx/yaml/human-sensor-1wx-github.yaml | 2 +- 2a/yaml/beta/README.md | 5 - 2a/yaml/beta/human-sensor-2a-beta-github.yaml | 1335 ----------------- 2a/yaml/human-sensor-2a-stable-github.yaml | 19 +- .../beta-version/human-sensor-f2-beta.yaml | 10 +- f2/yaml/human-sensor-f2-stable.yaml | 6 +- 7 files changed, 26 insertions(+), 1353 deletions(-) delete mode 100644 2a/yaml/beta/README.md delete mode 100644 2a/yaml/beta/human-sensor-2a-beta-github.yaml diff --git a/1w/yaml/human-sensor-1w-github.yaml b/1w/yaml/human-sensor-1w-github.yaml index 34f57c4..2b8e901 100644 --- a/1w/yaml/human-sensor-1w-github.yaml +++ b/1w/yaml/human-sensor-1w-github.yaml @@ -14,7 +14,7 @@ external_components: type: git url: https://github.com/screekworkshop/custom_components_support_for_screek_1w ref: main - components: [esp32, uart, ld2410] + components: [uart, ld2410] esp32: board: esp32-c3-devkitm-1 diff --git a/1wx/yaml/human-sensor-1wx-github.yaml b/1wx/yaml/human-sensor-1wx-github.yaml index b19539b..eb2cccc 100644 --- a/1wx/yaml/human-sensor-1wx-github.yaml +++ b/1wx/yaml/human-sensor-1wx-github.yaml @@ -14,7 +14,7 @@ external_components: type: git url: https://github.com/screekworkshop/custom_components_support_for_screek_1w ref: main - components: [esp32, uart, ld2410] + components: [uart, ld2410] esp32: board: esp32-c3-devkitm-1 diff --git a/2a/yaml/beta/README.md b/2a/yaml/beta/README.md deleted file mode 100644 index f211de5..0000000 --- a/2a/yaml/beta/README.md +++ /dev/null @@ -1,5 +0,0 @@ -Current version synchronized with public version: V230818_2_beta - -More Doc: https://docs.screek.io/2a - -Thank you for supporting Screek. \ No newline at end of file diff --git a/2a/yaml/beta/human-sensor-2a-beta-github.yaml b/2a/yaml/beta/human-sensor-2a-beta-github.yaml deleted file mode 100644 index de212f2..0000000 --- a/2a/yaml/beta/human-sensor-2a-beta-github.yaml +++ /dev/null @@ -1,1335 +0,0 @@ -# This is a custom firmware for Human Presence Sensor 2A -# https://docs.screek.io/2a -# Current version synchronized with public version: V230907_1_beta - -esphome: - name: screek-human-sensor-2a - comment: Screek Human Sensor 2A - friendly_name: Human Sensor 2A - name_add_mac_suffix: True - platformio_options: - board_build.flash_mode: dio - # board_build.f_cpu: 80000000L - project: - name: Screek.Human_Presence_Sensor - version: 2A - on_boot: - - priority: 100 - then: - lambda: |- - id(cpu_speed) = ESP.getCpuFreqMHz(); - - priority: -200 - then: - lambda: |- - id(zone1_target_exsits).publish_state(false); - id(zone2_target_exsits).publish_state(false); - id(zone3_target_exsits).publish_state(false); - id(zone_ex1_target_exsits).publish_state(false); - -preferences: - flash_write_interval: 5s - -external_components: - - source: - type: git - url: https://github.com/screekworkshop/custom_components_support_for_screek_2a - ref: main - components: [esp32, uart] - -esp32: - board: lolin_c3_mini - framework: - type: arduino - version: 2.0.9 - platform_version: 6.3.0 - -globals: - - id: cpu_speed - type: int - restore_value: no - initial_value: '0' - - id: last_update_ld2450 - type: unsigned long - restore_value: no - initial_value: '0' - - id: init_zone_publish - type: bool - restore_value: no - initial_value: "false" - - id: last_illuminance - type: float - restore_value: no - initial_value: "-1" - - id: last_illuminance_timestamp - type: int - restore_value: no - initial_value: "-1" - -improv_serial: - -logger: - -debug: - update_interval: 30s - -api: - -ota: - # use your own ota password plz. this is a words by Socrates. - password: "all-things-in-their-being-are-good-for-something" - safe_mode: False - -wifi: - power_save_mode: LIGHT - reboot_timeout: 10min - ap: - ssid: "HUMAN-SENSOR 2A" - -captive_portal: - -web_server: - port: 80 - - -text_sensor: - - platform: debug - reset_reason: - name: "ESP Reset Reason" - icon: mdi:anchor - disabled_by_default: True - - platform: wifi_info - ip_address: - name: ESP IP Address - entity_category: "diagnostic" - disabled_by_default: True - icon: mdi:ip-network - mac_address: - name: ESP MAC - entity_category: "diagnostic" - icon: mdi:ip-network - disabled_by_default: True - - platform: template - name: "Zone1 Info" - id: tips_zone1_conf - icon: mdi:information-outline - entity_category: config - lambda: |- - return {"Configure below" }; - update_interval: 1000s - - platform: template - name: "Zone2 Info" - id: tips_zone2_conf - icon: mdi:information-outline - entity_category: config - lambda: |- - return {"Configure below" }; - update_interval: 1000s - - platform: template - name: "Zone3 Info" - id: tips_zone3_conf - icon: mdi:information-outline - entity_category: config - lambda: |- - return {"Configure below" }; - update_interval: 1000s - - platform: template - name: "Zout1 Info" - id: tips_zone_ex1_conf - icon: mdi:information-outline - entity_category: config - lambda: |- - return {"Zone Exclusion 1" }; - update_interval: 1000s - - platform: template - name: "Any-Presence Info" - id: tips_any_presence_conf - icon: mdi:information-outline - entity_category: config - lambda: |- - return {"Any Presence Config" }; - update_interval: 1000s - - platform: template - name: "Target1 Direction" - id: target1_direction - icon: mdi:directions - - platform: template - name: "Target2 Direction" - id: target2_direction - icon: mdi:directions - - platform: template - name: "Target3 Direction" - id: target3_direction - icon: mdi:directions - - platform: template - name: "Target1 Position" - id: target1_position - icon: mdi:directions - - platform: template - name: "Target2 Position" - id: target2_position - icon: mdi:directions - - platform: template - name: "Target3 Position" - id: target3_position - icon: mdi:directions - -number: - - platform: template - name: "Any Presence Timeout" - id: any_presence_timeout - min_value: 0 - max_value: 1800 - mode: box - device_class: duration - entity_category: config - unit_of_measurement: s - icon: mdi:timer-off - step: 1 - optimistic: True - initial_value: 0 - restore_value: True - - platform: template - name: "Zone1 Timeout" - id: zone1_x_timeout - min_value: 0 - max_value: 1800 - mode: box - device_class: duration - entity_category: config - unit_of_measurement: s - icon: mdi:timer-off - step: 1 - optimistic: True - initial_value: 0 - restore_value: True - - platform: template - name: "Zone2 Timeout" - id: zone2_x_timeout - min_value: 0 - max_value: 1800 - mode: box - device_class: duration - entity_category: config - unit_of_measurement: s - icon: mdi:timer-off - step: 1 - optimistic: True - initial_value: 0 - restore_value: True - - platform: template - name: "Zone3 Timeout" - id: zone3_x_timeout - min_value: 0 - max_value: 1800 - mode: box - device_class: duration - entity_category: config - unit_of_measurement: s - icon: mdi:timer-off - step: 1 - optimistic: True - initial_value: 0 - restore_value: True - # Zone 1 - - platform: template - name: Zone1 X-Begin - id: zone1_x_begin - min_value: -4000 - max_value: 4000 - mode: box - device_class: distance - entity_category: config - unit_of_measurement: mm - icon: mdi:arrow-left-bold - step: 10 - optimistic: True - initial_value: 0 - restore_value: True - on_value: - then: - - script.execute: check_zone1_vaild - - platform: template - name: Zone1 X-End - id: zone1_x_end - mode: box - min_value: -4000 - max_value: 4000 - device_class: distance - unit_of_measurement: mm - entity_category: config - icon: mdi:arrow-right-bold - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone1_vaild - - platform: template - name: Zone1 Y-Begin - id: zone1_y_begin - mode: box - min_value: 0 - max_value: 6000 - device_class: distance - entity_category: config - icon: mdi:arrow-up-bold - unit_of_measurement: mm - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone1_vaild - - platform: template - name: Zone1 Y-End - id: zone1_y_end - icon: mdi:arrow-down-bold - mode: box - min_value: 0 - max_value: 6000 - initial_value: 0 - entity_category: config - device_class: distance - unit_of_measurement: mm - step: 10 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone1_vaild - - # Zone 2 - - platform: template - name: Zone2 X-Begin - id: zone2_x_begin - min_value: -4000 - max_value: 4000 - mode: box - device_class: distance - entity_category: config - unit_of_measurement: mm - icon: mdi:arrow-left-bold - step: 10 - optimistic: True - initial_value: 0 - restore_value: True - on_value: - then: - - script.execute: check_zone2_vaild - - platform: template - name: Zone2 X-End - id: zone2_x_end - mode: box - min_value: -4000 - max_value: 4000 - device_class: distance - unit_of_measurement: mm - entity_category: config - icon: mdi:arrow-right-bold - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone2_vaild - - platform: template - name: Zone2 Y-Begin - id: zone2_y_begin - mode: box - min_value: 0 - max_value: 6000 - device_class: distance - entity_category: config - icon: mdi:arrow-up-bold - unit_of_measurement: mm - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone2_vaild - - platform: template - name: Zone2 Y-End - id: zone2_y_end - icon: mdi:arrow-down-bold - mode: box - min_value: 0 - max_value: 6000 - initial_value: 0 - entity_category: config - device_class: distance - unit_of_measurement: mm - step: 10 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone2_vaild - - # Zone 3 - - platform: template - name: Zone3 X-Begin - id: zone3_x_begin - min_value: -4000 - max_value: 4000 - mode: box - device_class: distance - entity_category: config - unit_of_measurement: mm - icon: mdi:arrow-left-bold - step: 10 - optimistic: True - initial_value: 0 - restore_value: True - on_value: - then: - - script.execute: check_zone3_vaild - - platform: template - name: Zone3 X-End - id: zone3_x_end - mode: box - min_value: -4000 - max_value: 4000 - device_class: distance - unit_of_measurement: mm - entity_category: config - icon: mdi:arrow-right-bold - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone3_vaild - - platform: template - name: Zone3 Y-Begin - id: zone3_y_begin - mode: box - min_value: 0 - max_value: 6000 - device_class: distance - entity_category: config - icon: mdi:arrow-up-bold - unit_of_measurement: mm - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone3_vaild - - platform: template - name: Zone3 Y-End - id: zone3_y_end - icon: mdi:arrow-down-bold - mode: box - min_value: 0 - max_value: 6000 - initial_value: 0 - entity_category: config - device_class: distance - unit_of_measurement: mm - step: 10 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zone3_vaild - - # Zout1 - - platform: template - name: Zout1 X-Begin - id: zone_ex1_x_begin - min_value: -4000 - max_value: 4000 - mode: box - device_class: distance - entity_category: config - unit_of_measurement: mm - icon: mdi:arrow-left-bold - step: 10 - optimistic: True - initial_value: 0 - restore_value: True - on_value: - then: - - script.execute: check_zout1_vaild - - platform: template - name: Zout1 X-End - id: zone_ex1_x_end - mode: box - min_value: -4000 - max_value: 4000 - device_class: distance - unit_of_measurement: mm - entity_category: config - icon: mdi:arrow-right-bold - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zout1_vaild - - platform: template - name: Zout1 Y-Begin - id: zone_ex1_y_begin - mode: box - min_value: 0 - max_value: 6000 - device_class: distance - entity_category: config - icon: mdi:arrow-up-bold - unit_of_measurement: mm - step: 10 - initial_value: 0 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zout1_vaild - - platform: template - name: Zout1 Y-End - id: zone_ex1_y_end - icon: mdi:arrow-down-bold - mode: box - min_value: 0 - max_value: 6000 - initial_value: 0 - entity_category: config - device_class: distance - unit_of_measurement: mm - step: 10 - optimistic: True - restore_value: True - on_value: - then: - - script.execute: check_zout1_vaild - -binary_sensor: - - platform: status - name: Online - id: ink_ha_connected - - platform: template - name: "Any Presence" - id: any_target_exsits - device_class: occupancy - filters: - - delayed_off: !lambda |- - if (!id(init_zone_publish) || !id(zone_fn_enable).state) { - return 0; - }; - return id(any_presence_timeout).state * 1000.0; - - platform: template - name: "Zone1 Presence" - id: zone1_target_exsits - device_class: occupancy - filters: - - delayed_off: !lambda |- - if (!id(init_zone_publish) || !id(zone_fn_enable).state) { - return 0; - } - return id(zone1_x_timeout).state * 1000.0; - - platform: template - name: "Zone2 Presence" - id: zone2_target_exsits - device_class: occupancy - filters: - - delayed_off: !lambda |- - if (!id(init_zone_publish) || !id(zone_fn_enable).state) { - return 0; - } - return id(zone2_x_timeout).state * 1000.0; - - platform: template - name: "Zone3 Presence" - id: zone3_target_exsits - device_class: occupancy - filters: - - delayed_off: !lambda |- - if (!id(init_zone_publish) || !id(zone_fn_enable).state) { - return 0; - } - return id(zone3_x_timeout).state * 1000.0; - - platform: template - name: "Zout1 Presence" - id: zone_ex1_target_exsits - icon: mdi:account-multiple-remove - device_class: occupancy - -i2c: - sda: GPIO7 - scl: GPIO11 - scan: true - id: bus_a - -script: - - id: check_zone1_vaild - then: - - lambda: |- - if (id(zone1_x_begin).state > id(zone1_x_end).state){ - id(tips_zone1_conf).publish_state("Err: X-Begin > X-End"); - return; - } - if (id(zone1_y_begin).state > id(zone1_y_end).state){ - id(tips_zone1_conf).publish_state("Err: Y-Begin > Y-End"); - return; - } - if (id(zone1_x_begin).state == 0 && id(zone1_x_end).state == 0 && id(zone1_y_begin).state == 0 && id(zone1_y_end).state == 0){ - id(tips_zone1_conf).publish_state("Configure below"); - return; - } - - int x_size = id(zone1_x_end).state - id(zone1_x_begin).state; - int y_size = id(zone1_y_end).state - id(zone1_y_begin).state; - - char combined[80]; - sprintf(combined, "Curr Size: %d x %d", x_size, y_size); - id(tips_zone1_conf).publish_state(combined); - - id: check_zone2_vaild - then: - - lambda: |- - if (id(zone2_x_begin).state > id(zone2_x_end).state){ - id(tips_zone2_conf).publish_state("Err: X-Begin > X-End"); - return; - } - if (id(zone2_y_begin).state > id(zone2_y_end).state){ - id(tips_zone2_conf).publish_state("Err: Y-Begin > Y-End"); - return; - } - if (id(zone2_x_begin).state == 0 && id(zone2_x_end).state == 0 && id(zone2_y_begin).state == 0 && id(zone2_y_end).state == 0){ - id(tips_zone2_conf).publish_state("Configure below"); - return; - } - - int x_size = id(zone2_x_end).state - id(zone2_x_begin).state; - int y_size = id(zone2_y_end).state - id(zone2_y_begin).state; - - char combined[80]; - sprintf(combined, "Curr Size: %d x %d", x_size, y_size); - id(tips_zone2_conf).publish_state(combined); - - id: check_zone3_vaild - then: - - lambda: |- - if (id(zone3_x_begin).state > id(zone3_x_end).state){ - id(tips_zone3_conf).publish_state("Err: X-Begin > X-End"); - return; - } - if (id(zone3_y_begin).state > id(zone3_y_end).state){ - id(tips_zone3_conf).publish_state("Err: Y-Begin > Y-End"); - return; - } - if (id(zone3_x_begin).state == 0 && id(zone3_x_end).state == 0 && id(zone3_y_begin).state == 0 && id(zone3_y_end).state == 0){ - id(tips_zone3_conf).publish_state("Configure below"); - return; - } - - int x_size = id(zone3_x_end).state - id(zone3_x_begin).state; - int y_size = id(zone3_y_end).state - id(zone3_y_begin).state; - - char combined[80]; - sprintf(combined, "Curr Size: %d x %d", x_size, y_size); - id(tips_zone3_conf).publish_state(combined); - - id: check_zout1_vaild - then: - - lambda: |- - if (id(zone_ex1_x_begin).state > id(zone_ex1_x_end).state){ - id(tips_zone_ex1_conf).publish_state("Err: X-Begin > X-End"); - return; - } - if (id(zone_ex1_y_begin).state > id(zone_ex1_y_end).state){ - id(tips_zone_ex1_conf).publish_state("Err: Y-Begin > Y-End"); - return; - } - id(tips_zone_ex1_conf).publish_state("Zone Exclusion 1"); - -sensor: - - platform: template - name: "ESP CPU Speed" - accuracy_decimals: 0 - icon: mdi:cpu-32-bit - unit_of_measurement: Mhz - disabled_by_default: True - lambda: |- - return (id(cpu_speed)); - entity_category: "diagnostic" - update_interval: 600s - - platform: template - id: sys_esp_temperature - name: ESP Temperature - lambda: return temperatureRead(); - unit_of_measurement: °C - device_class: TEMPERATURE - update_interval: 45s - entity_category: "diagnostic" - - platform: uptime - name: ESP Uptime - id: sys_uptime - update_interval: 60s - - platform: wifi_signal - name: RSSI - id: wifi_signal_db - update_interval: 60s - entity_category: "diagnostic" - - platform: template - id: esp_memory - icon: mdi:memory - name: ESP Free Memory - lambda: return heap_caps_get_free_size(MALLOC_CAP_INTERNAL) / 1024; - unit_of_measurement: 'kB' - state_class: measurement - entity_category: "diagnostic" - update_interval: 60s - - platform: bh1750 - name: "Illuminance" - accuracy_decimals: 1 - id: bh1750_light - update_interval: 1s - force_update: true - filters: - - lambda: !lambda |- - auto time = id(time_now).utcnow().timestamp; - if (id(last_illuminance) == x){ - if (time >= (id(last_illuminance_timestamp) + 60)){ - id(last_illuminance_timestamp) = time; - return x; - } else { - return {}; - } - } - if (id(bh1750_fast_update).state){ - id(last_illuminance) = x; - // ESP_LOGD("custom", "Fast Update BH1850"); - id(last_illuminance_timestamp) = time; - return x; - } - if (abs(id(last_illuminance) - x) > 1){ - - id(last_illuminance) = x; - id(last_illuminance_timestamp) = time; - return x; - } - return {}; - - #-------------------------------------# - # 高级雷达数据 - - platform: template - name: "All Target Counts" - id: all_target_count - accuracy_decimals: 0 - icon: "mdi:counter" - unit_of_measurement: "targets" - - platform: template - name: "Zone1 Target Counts" - id: zone1_target_count - accuracy_decimals: 0 - icon: "mdi:counter" - unit_of_measurement: "targets" - - platform: template - name: "Zone2 Target Counts" - id: zone2_target_count - accuracy_decimals: 0 - icon: "mdi:counter" - unit_of_measurement: "targets" - - platform: template - name: "Zone3 Target Counts" - id: zone3_target_count - accuracy_decimals: 0 - icon: "mdi:counter" - unit_of_measurement: "targets" - - platform: template - name: "Zout1 Target Counts" - id: zone_ex1_target_count - accuracy_decimals: 0 - icon: mdi:account-multiple-minus-outline - unit_of_measurement: "targets" - - # Target 1 - - platform: template - name: "Target1 X" - id: target1_x - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - icon: mdi:focus-field-horizontal - device_class: distance - - platform: template - name: "Target1 Y" - id: target1_y - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - icon: mdi:focus-field-vertical - - platform: template - name: "Target1 Speed" - id: target1_speed - accuracy_decimals: 2 - unit_of_measurement: 'm/s' - state_class: measurement - device_class: speed - - platform: template - name: "Target1 Resolution" - id: target1_resolution - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - - # Target 2 - - platform: template - name: "Target2 X" - id: target2_x - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - icon: mdi:focus-field-horizontal - - platform: template - name: "Target2 Y" - id: target2_y - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - icon: mdi:focus-field-vertical - - platform: template - name: "Target2 Speed" - id: target2_speed - accuracy_decimals: 0 - unit_of_measurement: 'm/s' - state_class: measurement - device_class: speed - - platform: template - name: "Target2 Resolution" - id: target2_resolution - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - - # Target 3 - - platform: template - name: "Target3 X" - id: target3_x - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - icon: mdi:focus-field-horizontal - - platform: template - name: "Target3 Y" - id: target3_y - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - icon: mdi:focus-field-vertical - - platform: template - name: "Target3 Speed" - id: target3_speed - accuracy_decimals: 0 - unit_of_measurement: 'm/s' - state_class: measurement - device_class: speed - - platform: template - name: "Target3 Resolution" - id: target3_resolution - accuracy_decimals: 0 - unit_of_measurement: 'mm' - state_class: measurement - device_class: distance - - platform: template - name: "Target1 Angle" - id: target1_angle - unit_of_measurement: 'º' - accuracy_decimals: 1 - icon: mdi:angle-acute - - platform: template - name: "Target2 Angle" - id: target2_angle - accuracy_decimals: 1 - unit_of_measurement: 'º' - icon: mdi:angle-acute - - platform: template - name: "Target3 Angle" - id: target3_angle - accuracy_decimals: 1 - unit_of_measurement: 'º' - icon: mdi:angle-acute - -light: - - platform: status_led - name: sys_status - pin: GPIO13 - internal: True - restore_mode: ALWAYS_OFF - - platform: binary - name: "Red Info Light" - output: board_info_ed - entity_category: diagnostic - restore_mode: ALWAYS_OFF - -time: - - platform: sntp - id: time_now - -output: - - platform: gpio - id: board_info_ed - pin: GPIO12 - -switch: - - platform: factory_reset - name: Factory Reset - disabled_by_default: True - icon: mdi:heart-broken - entity_category: diagnostic - - platform: template - name: Zout1 Enable - id: zone_ex1_enable - optimistic: True - icon: mdi:account-cancel - entity_category: config - restore_mode: RESTORE_DEFAULT_OFF - - platform: template - name: Zone Enable - id: zone_fn_enable - optimistic: True - icon: mdi:target-variant - entity_category: config - restore_mode: RESTORE_DEFAULT_ON - - platform: template - name: Illuminance Fast-Update - id: bh1750_fast_update - optimistic: True - entity_category: diagnostic - restore_mode: RESTORE_DEFAULT_OFF - icon: mdi:run-fast - -button: - - platform: restart - icon: mdi:power-cycle - name: "ESP Reboot" - entity_category: diagnostic - -uart: - id: uart_bus - tx_pin: - number: GPIO5 - mode: - input: true - pullup: true - rx_pin: - number: GPIO4 - mode: - input: true - pullup: true - baud_rate: 256000 - parity: NONE - stop_bits: 1 - data_bits: 8 - debug: - direction: BOTH - dummy_receiver: True - after: - delimiter: [0X55, 0XCC] - sequence: - - lambda: |- - if ((millis() - id(last_update_ld2450)) <= 500) { - return; - }; - id(last_update_ld2450) = millis(); - - // p1 - int16_t p1_x = (uint16_t((bytes[5] << 8) | bytes[4] )); - if ((bytes[5] & 0x80) >> 7){ - p1_x -= pow(2, 15); - }else{ - p1_x = 0 - p1_x; - } - - int16_t p1_y = (uint16_t((bytes[7] << 8) | bytes[6] )); - if ((bytes[7] & 0x80) >> 7){ - p1_y -= pow(2, 15); - }else{ - p1_y = 0 - p1_y; - } - - int p1_speed = (bytes[9] << 8 | bytes[8] ); - if ((bytes[9] & 0x80) >> 7){ - p1_speed -= pow(2, 15); - }else{ - p1_speed = 0 - p1_speed; - } - int16_t p1_distance_resolution = (uint16_t((bytes[11] << 8) | bytes[10] )); - - // p2 - int16_t p2_x = (uint16_t((bytes[13] << 8) | bytes[12] )); - if ((bytes[13] & 0x80) >> 7){ - p2_x -= pow(2, 15); - }else{ - p2_x = 0 - p2_x; - } - - int16_t p2_y = (uint16_t((bytes[15] << 8) | bytes[14] )); - if ((bytes[15] & 0x80) >> 7){ - p2_y -= pow(2, 15); - }else{ - p2_y = 0 - p2_y; - } - - int p2_speed = (bytes[17] << 8 | bytes[16] ); - if ((bytes[17] & 0x80) >> 7){ - p2_speed -= pow(2, 15); - }else{ - p2_speed = 0 - p2_speed; - } - int16_t p2_distance_resolution = (uint16_t((bytes[19] << 8) | bytes[18] )); - - // p3 - int16_t p3_x = (uint16_t((bytes[21] << 8) | bytes[20] )); - if ((bytes[21] & 0x80) >> 7){ - p3_x -= pow(2, 15); - }else{ - p3_x = 0 - p3_x; - } - - int16_t p3_y = (uint16_t((bytes[23] << 8) | bytes[22] )); - if ((bytes[23] & 0x80) >> 7){ - p3_y -= pow(2, 15); - }else{ - p3_y = 0 - p3_y; - } - - int p3_speed = (bytes[25] << 8 | bytes[24] ); - if ((bytes[25] & 0x80) >> 7){ - p3_speed -= pow(2, 15); - }else{ - p3_speed = 0 - p3_speed; - } - - int16_t p3_distance_resolution = (uint16_t((bytes[27] << 8) | bytes[26] )); - - bool p1_vaild = (p1_x != 0 || p1_y > 0); - bool p2_vaild = (p2_x != 0 || p2_y > 0); - bool p3_vaild = (p3_x != 0 || p3_y > 0); - - // zone exlude 1 - - int16_t target_count_in_zone_ex1 = 0; - - int16_t zone_ex1_x_min = id(zone_ex1_x_begin).state; - int16_t zone_ex1_x_max = id(zone_ex1_x_end).state; - int16_t zone_ex1_y_min = id(zone_ex1_y_begin).state; - int16_t zone_ex1_y_max = id(zone_ex1_y_end).state; - - bool p1_zone_ex_enter = false; - bool p2_zone_ex_enter = false; - bool p3_zone_ex_enter = false; - - if (id(zone_ex1_enable).state){ - if (p1_vaild){ - if (p1_x >= zone_ex1_x_min && p1_x <= zone_ex1_x_max && p1_y >= zone_ex1_y_min && p1_y <= zone_ex1_y_max){ - p1_zone_ex_enter = true; - target_count_in_zone_ex1 ++; - } - } - if (p2_vaild){ - if (p2_x >= zone_ex1_x_min && p2_x <= zone_ex1_x_max && p2_y >= zone_ex1_y_min && p2_y <= zone_ex1_y_max){ - p2_zone_ex_enter = true; - target_count_in_zone_ex1 ++; - } - } - if (p3_vaild){ - if (p3_x >= zone_ex1_x_min && p3_x <= zone_ex1_x_max && p3_y >= zone_ex1_y_min && p3_y <= zone_ex1_y_max){ - p3_zone_ex_enter = true; - target_count_in_zone_ex1 ++; - } - } - } - - bool has_target_in_zone_ex1 = (target_count_in_zone_ex1 > 0); - - int16_t all_target_counts = 0; - if (p1_vaild && !p1_zone_ex_enter){ - all_target_counts ++; - } - if (p2_vaild && !p2_zone_ex_enter){ - all_target_counts ++; - } - if (p3_vaild && !p3_zone_ex_enter){ - all_target_counts ++; - } - - bool has_target_in_zone_all = (all_target_counts > 0); - - int16_t target_count_in_zone1 = 0; - bool has_target_in_zone1 = false; - - int16_t target_count_in_zone2 = 0; - bool has_target_in_zone2 = false; - - int16_t target_count_in_zone3 = 0; - bool has_target_in_zone3 = false; - - if (id(zone_fn_enable).state){ - - // zone 1 check - - int16_t zone1_x_min = id(zone1_x_begin).state; - int16_t zone1_x_max = id(zone1_x_end).state; - int16_t zone1_y_min = id(zone1_y_begin).state; - int16_t zone1_y_max = id(zone1_y_end).state; - - if (p1_vaild && !p1_zone_ex_enter){ - if (p1_x >= zone1_x_min && p1_x <= zone1_x_max && p1_y >= zone1_y_min && p1_y <= zone1_y_max){ - target_count_in_zone1 ++; - } - } - if (p2_vaild && !p2_zone_ex_enter){ - if (p2_x >= zone1_x_min && p2_x <= zone1_x_max && p2_y >= zone1_y_min && p2_y <= zone1_y_max){ - target_count_in_zone1 ++; - } - } - if (p3_vaild && !p3_zone_ex_enter){ - if (p3_x >= zone1_x_min && p3_x <= zone1_x_max && p3_y >= zone1_y_min && p3_y <= zone1_y_max){ - target_count_in_zone1 ++; - } - } - has_target_in_zone1 = (target_count_in_zone1 > 0); - - // zone 2 check - - int16_t zone2_x_min = id(zone2_x_begin).state; - int16_t zone2_x_max = id(zone2_x_end).state; - int16_t zone2_y_min = id(zone2_y_begin).state; - int16_t zone2_y_max = id(zone2_y_end).state; - - if (p1_vaild && !p1_zone_ex_enter){ - if (p1_x >= zone2_x_min && p1_x <= zone2_x_max && p1_y >= zone2_y_min && p1_y <= zone2_y_max){ - target_count_in_zone2 ++; - } - } - if (p2_vaild && !p2_zone_ex_enter){ - if (p2_x >= zone2_x_min && p2_x <= zone2_x_max && p2_y >= zone2_y_min && p2_y <= zone2_y_max){ - target_count_in_zone2 ++; - } - } - if (p3_vaild && !p3_zone_ex_enter){ - if (p3_x >= zone2_x_min && p3_x <= zone2_x_max && p3_y >= zone2_y_min && p3_y <= zone2_y_max){ - target_count_in_zone2 ++; - } - } - - has_target_in_zone2 = (target_count_in_zone2 > 0); - - // zone 3 check - - int16_t zone3_x_min = id(zone3_x_begin).state; - int16_t zone3_x_max = id(zone3_x_end).state; - int16_t zone3_y_min = id(zone3_y_begin).state; - int16_t zone3_y_max = id(zone3_y_end).state; - - if (p1_vaild && !p1_zone_ex_enter){ - if (p1_x >= zone3_x_min && p1_x <= zone3_x_max && p1_y >= zone3_y_min && p1_y <= zone3_y_max){ - target_count_in_zone3 ++; - } - } - if (p2_vaild && !p2_zone_ex_enter){ - if (p2_x >= zone3_x_min && p2_x <= zone3_x_max && p2_y >= zone3_y_min && p2_y <= zone3_y_max){ - target_count_in_zone3 ++; - } - } - if (p3_vaild && !p3_zone_ex_enter){ - if (p3_x >= zone3_x_min && p3_x <= zone3_x_max && p3_y >= zone3_y_min && p3_y <= zone3_y_max){ - target_count_in_zone3 ++; - } - } - has_target_in_zone3 = (target_count_in_zone3 > 0); - - } - - // Angle, Position and Direction, idea from walberjunior. - - float p1_angle = 0; - if (p1_vaild){ - p1_angle = ((float)p1_x / (float)p1_y) * 180 / M_PI;; - } - - std::basic_string p1_position = "Static"; - if (p1_speed > 0) { - p1_position = "Moving away"; - } else if (p1_speed < 0) { - p1_position = "Approaching"; - } - - std::basic_string p1_direction = "None"; - if (p1_x > 0) { - p1_direction = "Right"; - } else if (p1_x < 0) { - p1_direction = "Left"; - } else if (p1_y > 0){ - p1_direction = "Middle"; - } - - float p2_angle = 0; - if (p2_vaild){ - p2_angle = ((float)p2_x / (float)p2_y) * 180 / M_PI;; - } - - std::basic_string p2_position = "Static";; - if (p2_speed > 0) { - p2_position = "Moving away"; - } else if (p2_speed < 0) { - p2_position = "Approaching"; - } - - std::basic_string p2_direction = "None"; - if (p2_x > 0) { - p2_direction = "Right"; - } else if (p2_x < 0) { - p2_direction = "Left"; - } else if (p2_y > 0){ - p2_direction = "Middle"; - } - - float p3_angle = 0; - if (p3_vaild){ - p3_angle = ((float)p3_x / (float)p3_y) * 180 / M_PI;; - } - - std::basic_string p3_position = "Static";; - if (p3_speed > 0) { - p3_position = "Moving away"; - } else if (p3_speed < 0) { - p3_position = "Approaching"; - } - - std::basic_string p3_direction = "None"; - if (p3_x > 0) { - p3_direction = "Right"; - } else if (p3_x < 0) { - p3_direction = "Left"; - } else if (p3_y > 0){ - p3_direction = "Middle"; - } - - if (id(target1_angle).state != p1_angle){ - id(target1_angle).publish_state(p1_angle); - } - if (id(target2_angle).state != p2_angle){ - id(target2_angle).publish_state(p2_angle); - } - if (id(target3_angle).state != p3_angle){ - id(target3_angle).publish_state(p3_angle); - } - - if (p1_position != id(target1_position).state){ - id(target1_position).publish_state(p1_position); - } - if (p2_position != id(target2_position).state){ - id(target2_position).publish_state(p2_position); - } - if (p3_position != id(target3_position).state){ - id(target3_position).publish_state(p3_position); - } - - if (p1_direction != id(target1_direction).state){ - id(target1_direction).publish_state(p1_direction); - } - if (p2_direction != id(target2_direction).state){ - id(target2_direction).publish_state(p2_direction); - } - if (p3_direction != id(target3_direction).state){ - id(target3_direction).publish_state(p3_direction); - } - - // public all info - - if (id(target1_x).state != p1_x){ - id(target1_x).publish_state(p1_x); - } - if (id(target1_y).state != p1_y){ - id(target1_y).publish_state(p1_y); - } - - float p1_m_speed = float(p1_speed) / 100.0; - if (id(target1_speed).state != p1_m_speed){ - id(target1_speed).publish_state(p1_m_speed); - } - if (id(target1_resolution).state != p1_distance_resolution){ - id(target1_resolution).publish_state(p1_distance_resolution); - } - - if (id(target2_x).state != p2_x){ - id(target2_x).publish_state(p2_x); - } - if (id(target2_y).state != p2_y){ - id(target2_y).publish_state(p2_y); - } - if (id(target2_speed).state != p2_speed){ - id(target2_speed).publish_state(p2_speed); - } - if (id(target2_resolution).state != p2_distance_resolution){ - id(target2_resolution).publish_state(p2_distance_resolution); - } - - if (id(target3_x).state != p3_x){ - id(target3_x).publish_state(p3_x); - } - if (id(target3_y).state != p3_y){ - id(target3_y).publish_state(p3_y); - } - if (id(target3_speed).state != p3_speed){ - id(target3_speed).publish_state(p3_speed); - } - if (id(target3_resolution).state != p3_distance_resolution){ - id(target3_resolution).publish_state(p3_distance_resolution); - } - - // publish target info - - if (id(all_target_count).state != all_target_counts){ - id(all_target_count).publish_state(all_target_counts); - id(any_target_exsits).publish_state(has_target_in_zone_all); - }else if (id(any_target_exsits).state != has_target_in_zone_all){ - id(any_target_exsits).publish_state(has_target_in_zone_all); - } - - if (id(zone1_target_count).state != target_count_in_zone1){ - id(zone1_target_count).publish_state(target_count_in_zone1); - id(zone1_target_exsits).publish_state(has_target_in_zone1); - }else if (id(zone1_target_exsits).state != has_target_in_zone1){ - id(zone1_target_exsits).publish_state(has_target_in_zone1); - } - - if (id(zone2_target_count).state != target_count_in_zone2){ - id(zone2_target_count).publish_state(target_count_in_zone2); - id(zone2_target_exsits).publish_state(has_target_in_zone2); - }else if (id(zone2_target_exsits).state != has_target_in_zone2){ - id(zone2_target_exsits).publish_state(has_target_in_zone2); - } - - if (id(zone3_target_count).state != target_count_in_zone3){ - id(zone3_target_count).publish_state(target_count_in_zone3); - id(zone3_target_exsits).publish_state(has_target_in_zone3); - }else if (id(zone3_target_exsits).state != has_target_in_zone3){ - id(zone3_target_exsits).publish_state(has_target_in_zone3); - } - - // zout - if (id(zone_ex1_target_count).state != target_count_in_zone_ex1){ - id(zone_ex1_target_count).publish_state(target_count_in_zone_ex1); - } - - if (id(zone_ex1_target_exsits).state != has_target_in_zone_ex1){ - id(zone_ex1_target_exsits).publish_state(has_target_in_zone_ex1); - } - - if (!id(init_zone_publish)){ - id(init_zone_publish) = true; - } diff --git a/2a/yaml/human-sensor-2a-stable-github.yaml b/2a/yaml/human-sensor-2a-stable-github.yaml index e369e3e..138d24f 100644 --- a/2a/yaml/human-sensor-2a-stable-github.yaml +++ b/2a/yaml/human-sensor-2a-stable-github.yaml @@ -33,7 +33,7 @@ external_components: type: git url: https://github.com/screekworkshop/custom_components_support_for_screek_2a ref: main - components: [esp32, uart] + components: [uart] esp32: board: lolin_c3_mini @@ -74,9 +74,12 @@ debug: api: ota: - # use your own ota password plz. this is a words by Socrates. - password: "all-things-in-their-being-are-good-for-something" - safe_mode: False + - platform: esphome + # use your own ota password plz. this is a words by Socrates. + password: "all-things-in-their-being-are-good-for-something" + +safe_mode: + disabled: True wifi: power_save_mode: LIGHT @@ -863,7 +866,9 @@ sensor: light: - platform: status_led name: sys_status - pin: GPIO13 + pin: + number: GPIO13 + ignore_pin_validation_error: true internal: True restore_mode: ALWAYS_OFF - platform: binary @@ -879,7 +884,9 @@ time: output: - platform: gpio id: board_info_ed - pin: GPIO12 + pin: + number: GPIO12 + ignore_pin_validation_error: true switch: - platform: factory_reset diff --git a/f2/yaml/beta-version/human-sensor-f2-beta.yaml b/f2/yaml/beta-version/human-sensor-f2-beta.yaml index 87564b4..257176c 100644 --- a/f2/yaml/beta-version/human-sensor-f2-beta.yaml +++ b/f2/yaml/beta-version/human-sensor-f2-beta.yaml @@ -69,7 +69,7 @@ external_components: type: git url: https://github.com/screekworkshop/custom_components_support_for_screek_2a ref: main - components: [esp32, uart] + components: [uart] - source: type: git url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. @@ -313,7 +313,9 @@ sensor: light: - platform: status_led name: sys_status - pin: GPIO13 + pin: + number: GPIO13 + ignore_pin_validation_error: true internal: True restore_mode: ALWAYS_OFF - platform: binary @@ -331,7 +333,9 @@ i2c: output: - platform: gpio id: board_info_ed - pin: GPIO12 + pin: + number: GPIO12 + ignore_pin_validation_error: true switch: - platform: factory_reset diff --git a/f2/yaml/human-sensor-f2-stable.yaml b/f2/yaml/human-sensor-f2-stable.yaml index 1987269..c501e45 100644 --- a/f2/yaml/human-sensor-f2-stable.yaml +++ b/f2/yaml/human-sensor-f2-stable.yaml @@ -69,7 +69,7 @@ external_components: type: git url: https://github.com/screekworkshop/custom_components_support_for_screek_2a ref: main - components: [esp32, uart] + components: [uart] - source: type: git url: https://github.com/ssieb/custom_components #Thanks for @ssieb components. @@ -302,7 +302,9 @@ sensor: light: - platform: status_led name: sys_status - pin: GPIO13 + pin: + number: GPIO13 + ignore_pin_validation_error: true internal: True restore_mode: ALWAYS_OFF - platform: binary