Create screek-humen-sensor-2a.yaml
This commit is contained in:
parent
d1d0f3dd15
commit
576fc9aa56
356
2a/screek-humen-sensor-2a.yaml
Normal file
356
2a/screek-humen-sensor-2a.yaml
Normal file
|
|
@ -0,0 +1,356 @@
|
|||
# This is a custom firmware for Human Presence Sensor 2A
|
||||
# https://screek.io/2a
|
||||
|
||||
esphome:
|
||||
name: screek-humen-sensor-2a
|
||||
comment: Screek Human Sensor 2A
|
||||
friendly_name: Human Sensor 2A
|
||||
name_add_mac_suffix: True
|
||||
platformio_options:
|
||||
board_build.flash_mode: dio
|
||||
project:
|
||||
name: Screek.Human_Presence_Sensor
|
||||
version: 2A
|
||||
on_boot:
|
||||
- priority: 900
|
||||
then:
|
||||
lambda: |-
|
||||
id(cpu_speed) = ESP.getCpuFreqMHz();
|
||||
|
||||
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'
|
||||
|
||||
improv_serial:
|
||||
|
||||
# Enable logging
|
||||
logger:
|
||||
# level: VERY_VERBOSE
|
||||
|
||||
debug:
|
||||
update_interval: 30s
|
||||
|
||||
text_sensor:
|
||||
- platform: debug
|
||||
reset_reason:
|
||||
name: "Reset Reason"
|
||||
disabled_by_default: True
|
||||
- platform: wifi_info
|
||||
mac_address:
|
||||
name: ESP MAC
|
||||
entity_category: "diagnostic"
|
||||
disabled_by_default: True
|
||||
|
||||
# Enable Home Assistant API
|
||||
api:
|
||||
# encryption:
|
||||
# key: "b1b1F1ArnSZmIvk7WLL9oG19gjPTCmBP1irQlSlSDGY="
|
||||
|
||||
ota:
|
||||
password: "all-things-in-their-being-are-good-for-something" # words by Socrates
|
||||
safe_mode: False
|
||||
|
||||
wifi:
|
||||
power_save_mode: NONE
|
||||
reboot_timeout: 10min
|
||||
ap:
|
||||
ssid: "HUMAN-SENSOR 2A"
|
||||
|
||||
captive_portal:
|
||||
|
||||
web_server:
|
||||
port: 80
|
||||
|
||||
binary_sensor:
|
||||
- platform: status
|
||||
name: Online
|
||||
id: ink_ha_connected
|
||||
|
||||
i2c:
|
||||
sda: GPIO7
|
||||
scl: GPIO11
|
||||
scan: true
|
||||
id: bus_a
|
||||
|
||||
sensor:
|
||||
- platform: template
|
||||
name: "ESP CPU Speed"
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: Mhz
|
||||
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: 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"
|
||||
update_interval: 1s
|
||||
- platform: template
|
||||
name: "Target1 X"
|
||||
id: target1_x
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- platform: template
|
||||
name: "Target1 Y"
|
||||
id: target1_y
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- platform: template
|
||||
name: "Target1 Speed"
|
||||
id: target1_speed
|
||||
accuracy_decimals: 0
|
||||
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
|
||||
- platform: template
|
||||
name: "Target2 X"
|
||||
id: target2_x
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- platform: template
|
||||
name: "Target2 Y"
|
||||
id: target2_y
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- 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
|
||||
- platform: template
|
||||
name: "Target3 X"
|
||||
id: target3_x
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- platform: template
|
||||
name: "Target3 Y"
|
||||
id: target3_y
|
||||
accuracy_decimals: 0
|
||||
unit_of_measurement: 'mm'
|
||||
state_class: measurement
|
||||
device_class: distance
|
||||
- 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
|
||||
|
||||
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: "config"
|
||||
restore_mode: ALWAYS_OFF
|
||||
|
||||
time:
|
||||
- platform: sntp
|
||||
id: time_now
|
||||
|
||||
output:
|
||||
- platform: gpio
|
||||
id: board_info_ed
|
||||
pin: GPIO12
|
||||
|
||||
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: UARTDebug::log_hex(direction, bytes, ' ');
|
||||
- lambda: |-
|
||||
if ((millis() - id(last_update_ld2450)) <= 1000) {
|
||||
return;
|
||||
};
|
||||
id(last_update_ld2450) = millis();
|
||||
|
||||
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] ));
|
||||
|
||||
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] ));
|
||||
|
||||
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[19] << 8) | bytes[18] ));
|
||||
|
||||
id(target1_x).publish_state(p1_x);
|
||||
id(target1_y).publish_state(p1_y);
|
||||
id(target1_speed).publish_state(p1_speed);
|
||||
id(target1_resolution).publish_state(p1_distance_resolution);
|
||||
|
||||
id(target2_x).publish_state(p2_x);
|
||||
id(target2_y).publish_state(p2_y);
|
||||
id(target2_speed).publish_state(p2_speed);
|
||||
id(target2_resolution).publish_state(p2_distance_resolution);
|
||||
|
||||
id(target3_x).publish_state(p3_x);
|
||||
id(target3_y).publish_state(p3_y);
|
||||
id(target3_speed).publish_state(p3_speed);
|
||||
id(target3_resolution).publish_state(p3_distance_resolution);
|
||||
|
||||
button:
|
||||
- platform: restart
|
||||
icon: mdi:power-cycle
|
||||
name: "ESP Reboot"
|
||||
- platform: factory_reset
|
||||
disabled_by_default: True
|
||||
name: Factory Reset
|
||||
id: factory_reset_all
|
||||
Loading…
Reference in New Issue
Block a user