Last active
December 18, 2023 09:49
-
-
Save Nailik/e7bd9b7b3b2f7e7ed2c21a72f40fa2f7 to your computer and use it in GitHub Desktop.
Custom Athom Presence Sensor with disabled led and faster lux
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
substitutions: | |
name: "athom-presence-sensor" | |
friendly_name: "presence sensor" | |
room: "" | |
device_description: "mmwave radar human presence sensor" | |
project_name: "Athom Technology.Presence Sensor" | |
project_version: "1.0" | |
esphome: | |
name: "${name}" | |
friendly_name: "${friendly_name}" | |
name_add_mac_suffix: true | |
project: | |
name: "${project_name}" | |
version: "${project_version}" | |
esp8266: | |
board: esp8285 | |
restore_from_flash: true | |
preferences: | |
flash_write_interval: 1min | |
# Enable logging | |
logger: | |
api: | |
ota: | |
mdns: | |
disabled: false | |
web_server: | |
port: 80 | |
wifi: | |
ap: {} | |
captive_portal: | |
dashboard_import: | |
package_import_url: github://athom-tech/athom-configs/athom-presence-sensor.yaml | |
#light: | |
# - platform: status_led | |
# name: "Status LED" | |
# id: led | |
# pin: GPIO16 | |
# disabled_by_default: true | |
# entity_category: config | |
i2c: | |
sda: GPIO4 | |
scl: GPIO5 | |
scan: true | |
uart: | |
tx_pin: GPIO15 | |
rx_pin: GPIO13 | |
baud_rate: 115200 | |
# debug: | |
# direction: BOTH | |
# dummy_receiver: true | |
# after: | |
# delimiter: "\n" | |
# sequence: | |
# - lambda: UARTDebug::log_string(direction, bytes); | |
binary_sensor: | |
- platform: status | |
name: "Status" | |
- platform: gpio | |
pin: | |
number: GPIO0 | |
mode: INPUT_PULLUP | |
inverted: true | |
name: "Button" | |
disabled_by_default: true | |
internal: true | |
on_multi_click: | |
- timing: | |
- ON for at least 10s | |
then: | |
- button.press: factory_reset_device | |
- platform: gpio | |
pin: | |
number: GPIO14 | |
mode: | |
input: true | |
pullup: true | |
name: "Pir Sensor" | |
id: pir | |
filters: | |
# - delayed_on: 50ms | |
# - delayed_off: 10s | |
device_class: motion | |
#on_press: | |
# then: | |
# - light.turn_on: led | |
- platform: gpio | |
pin: | |
number: GPIO12 | |
mode: | |
input: true | |
pullup: true | |
name: "mmWave Sensor" | |
id: mmwave | |
filters: | |
# - delayed_on: 50ms | |
device_class: occupancy | |
#on_release: | |
# then: | |
# - light.turn_off: led | |
- platform: template | |
name: "Occupancy" | |
id: occupancy | |
device_class: occupancy | |
lambda: |- | |
if ( id(mmwave).state or id(pir).state) { | |
return true; | |
} | |
else if (id(mmwave).state == 0 and id(pir).state == 0) { | |
return false; | |
} | |
else { | |
return id(occupancy).state; | |
} | |
sensor: | |
- platform: uptime | |
name: "Uptime Sensor" | |
- platform: wifi_signal | |
name: "WiFi Signal Sensor" | |
update_interval: 60s | |
- platform: bh1750 | |
name: "Light Sensor" | |
address: 0x23 | |
update_interval: 1500ms | |
switch: | |
- platform: template | |
name: "mmWave Status" | |
id: "mmwave_sensor" | |
internal: true | |
entity_category: config | |
optimistic: true | |
restore_mode: DISABLED | |
turn_on_action: | |
- uart.write: "sensorStart\r\n" | |
turn_off_action: | |
- uart.write: "sensorStop\r\n" | |
number: | |
- platform: template | |
name: Farthest Detection #Value range: 1.9 ~ 12m Default: 6 | |
id: Farthest_Detection | |
entity_category: config | |
min_value: 1.9 | |
max_value: 12 | |
initial_value: 6 | |
optimistic: true | |
step: 0.1 | |
restore_value: true | |
unit_of_measurement: m | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda | |
std::string ranges = "setRange 1.8 " + str_sprintf("%.1f",id(Farthest_Detection).state) + "\r\n"; | |
return std::vector<uint8_t>(ranges.begin(), ranges.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
- platform: template | |
name: Maintain Sensitivity #Value range: 0 ~ 9 Default Maintain sensitivity: 7 Default Trigger sensitivity: 5 | |
id: Maintain_Sensitivity | |
entity_category: config | |
min_value: 0 | |
max_value: 9 | |
initial_value: 7 | |
optimistic: true | |
step: 1 | |
restore_value: true | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda | |
std::string sensitivitys = "setSensitivity " + str_sprintf("%.0f",id(Maintain_Sensitivity).state) + " " + str_sprintf("%.0f",id(Trigger_Sensitivity).state) + "\r\n"; | |
return std::vector<uint8_t>(sensitivitys.begin(), sensitivitys.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
- platform: template | |
name: Trigger Sensitivity #Value range: 0 ~ 9 Default Maintain sensitivity: 7 Default Trigger sensitivity: 5 | |
id: Trigger_Sensitivity | |
entity_category: config | |
min_value: 0 | |
max_value: 9 | |
initial_value: 5 | |
optimistic: true | |
step: 1 | |
restore_value: true | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda | |
std::string sensitivityss = "setSensitivity " + str_sprintf("%.0f",id(Maintain_Sensitivity).state) + " " + str_sprintf("%.0f",id(Trigger_Sensitivity).state) + "\r\n"; | |
return std::vector<uint8_t>(sensitivityss.begin(), sensitivityss.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
- platform: template | |
name: Detection Delay #Confirmation delay Value range: 0 ~ 100 default 0.050 seconds. | |
id: Detection_Delay | |
entity_category: config | |
min_value: 0.05 | |
max_value: 60 | |
initial_value: 0.05 | |
optimistic: true | |
step: 0.05 | |
restore_value: true | |
unit_of_measurement: seconds | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda |- | |
std::string detections = "setLatency " + str_sprintf("%.1f",id(Detection_Delay).state) + " " + str_sprintf("%.0f",id(Fading_Time).state) + "\r\n"; | |
return std::vector<uint8_t>(detections.begin(),detections.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
- platform: template | |
name: Fading Time #Fade-out delay Value range: 0.5 ~ 1500, default 15 seconds. | |
id: Fading_Time | |
entity_category: config | |
min_value: 0.5 | |
max_value: 300 | |
initial_value: 15 | |
optimistic: true | |
step: 0.5 | |
restore_value: true | |
unit_of_measurement: seconds | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda |- | |
std::string fadings = "setLatency " + str_sprintf("%.1f",id(Detection_Delay).state) + " " + str_sprintf("%.0f",id(Fading_Time).state) + "\r\n"; | |
return std::vector<uint8_t>(fadings.begin(), fadings.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
- platform: template | |
name: Blockade Time #Configure block time Value range: 1 ~ 255, default 1 seconds. | |
id: Blockade_Time | |
entity_category: config | |
min_value: 1 | |
max_value: 255 | |
initial_value: 1 | |
optimistic: true | |
step: 1 | |
restore_value: true | |
unit_of_measurement: seconds | |
mode: box | |
set_action: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: !lambda | |
std::string blockades = "sethibit " + str_sprintf("%.0f",x) + "\r\n"; | |
return std::vector<uint8_t>(blockades.begin(), blockades.end()); | |
- delay: 500ms | |
- uart.write: "saveConfig\r\n" | |
- delay: 500ms | |
- switch.turn_on: mmwave_sensor | |
button: | |
- platform: factory_reset | |
name: Restart with Factory Default Settings | |
id: Reset | |
entity_category: config | |
internal: true | |
- platform: template | |
name: "Reset device" | |
id: "factory_reset_device" | |
entity_category: config | |
on_press: | |
- switch.turn_off: mmwave_sensor | |
- delay: 500ms | |
- uart.write: "resetCfg\r\n" | |
- delay: 1s | |
- switch.turn_on: mmwave_sensor | |
- button.press: Reset | |
- platform: restart | |
name: Restart_esp | |
id: restart_esp | |
entity_category: config | |
internal: true | |
- platform: template | |
name: "Restart_mmWave" | |
id: "restart_mmwave" | |
entity_category: config | |
internal: true | |
on_press: | |
- uart.write: "resetSystem\r\n" | |
- platform: template | |
name: Restart device | |
entity_category: config | |
on_press: | |
- button.press: restart_mmwave | |
- delay: 1s | |
- button.press: restart_esp | |
text_sensor: | |
- platform: wifi_info | |
ip_address: | |
name: "IP Address" | |
ssid: | |
name: "Connected SSID" | |
mac_address: | |
name: "Mac Address" | |
time: | |
- platform: sntp | |
id: my_time |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment