Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- esphome:
- name: pps-v3-548714
- friendly_name: presence sensor
- platformio_options:
- board_build.flash_mode: dio
- board_build.mcu: esp32c3
- on_boot:
- priority: 550
- then:
- # id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xAB, PIR, radar });
- # presence = 0x69, absence = 0x42
- - if:
- condition:
- - binary_sensor.is_on: pir_state
- then:
- # PIR is on
- - globals.set:
- id: check_radar_again
- value: 'false'
- # wake up 5m later
- - lambda: |-
- id(deep_sleep_1).set_sleep_duration(300000);
- - repeat:
- count: 10
- then:
- # report presennce
- - if:
- condition:
- - binary_sensor.is_off: radar_state
- then:
- # PIR on, radar off
- - lambda: |-
- float lightVoltage = id(photoresistor).state;
- uint8_t *lightData = (uint8_t*)&lightVoltage;
- id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x69, 0x42, lightData[0], lightData[1], lightData[2], lightData[3] });
- else:
- - lambda: |-
- float lightVoltage = id(photoresistor).state;
- uint8_t *lightData = (uint8_t*)&lightVoltage;
- id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x69, 0x69, lightData[0], lightData[1], lightData[2], lightData[3] });
- - delay: 70ms
- else:
- # PIR is off
- - globals.set:
- id: check_radar_again
- value: 'false'
- # wake up 5m later
- - lambda: |-
- id(deep_sleep_1).set_sleep_duration(300000);
- - repeat:
- count: 10
- then:
- - if:
- condition:
- - binary_sensor.is_off: radar_state
- then:
- # PIR off, radar off
- - lambda: |-
- float lightVoltage = id(photoresistor).state;
- uint8_t *lightData = (uint8_t*)&lightVoltage;
- id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x42, 0x42, lightData[0], lightData[1], lightData[2], lightData[3] });
- else:
- # PIR off, radar on
- - lambda: |-
- float lightVoltage = id(photoresistor).state;
- uint8_t *lightData = (uint8_t*)&lightVoltage;
- id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x42, 0x69, lightData[0], lightData[1], lightData[2], lightData[3] });
- - delay: 70ms
- - if:
- condition:
- and:
- - binary_sensor.is_on: radar_state
- - lambda: |-
- return !id(check_radar_again);
- then:
- - globals.set:
- id: check_radar_again
- value: 'true'
- # wake up 30s later
- - lambda: |-
- id(deep_sleep_1).set_sleep_duration(30000);
- else:
- - globals.set:
- id: check_radar_again
- value: 'false'
- # wake up 5m later
- - lambda: |-
- id(deep_sleep_1).set_sleep_duration(300000);
- # - light.turn_off: rgb_light
- - deep_sleep.enter: deep_sleep_1
- esp32:
- board: esp32-c3-devkitm-1
- variant: ESP32C3
- framework:
- type: esp-idf
- # # Enable logging
- # logger:
- # Enable Home Assistant API
- api:
- encryption:
- key: "redacted"
- reboot_timeout: 0s
- ota:
- - platform: esphome
- password: "redacted"
- wifi:
- enable_on_boot: False
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- fast_connect: True
- power_save_mode: HIGH
- globals:
- - id: check_radar_again
- type: bool
- restore_value: True
- initial_value: 'false'
- deep_sleep:
- run_duration: 5s
- sleep_duration: 30min
- wakeup_pin:
- allow_other_uses: True
- number: 1
- wakeup_pin_mode: INVERT_WAKEUP
- id: deep_sleep_1
- esp32_ble_server:
- id: ble
- manufacturer_data: [0xFF, 0xFF, 0xBB, 0x00]
- binary_sensor:
- - platform: gpio
- pin:
- number: 1
- allow_other_uses: True
- name: "pir_state"
- id: pir_state
- - platform: gpio
- pin:
- number: 2
- name: "radar_state"
- id: radar_state
- sensor:
- - platform: adc
- id: photoresistor
- attenuation: auto
- name: "photoresistor"
- pin:
- number: 3
- mode:
- pullup: True
- input: True
- # connect the photoresistor across gnd and pin3
- #################################
- # On the reciever
- #################################
- esp32_ble_tracker:
- scan_parameters:
- interval: 320ms
- window: 320ms
- on_ble_manufacturer_data_advertise:
- - mac_address: XX:XX:XX:XX:XX:XX
- manufacturer_id: FFFF
- then:
- - lambda: |-
- if (x[0] != 0xAB && x[0] != 0xCC) return;
- if (x[0] == 0xCC) {
- float lightVoltage = *((float*)&x[3]);
- id(ble_light).publish_state(lightVoltage);
- ESP_LOGD("BLE_sensors-LIGHT--", "PIR: %d radar: %d light: %d %d %d %d --------", x[1], x[2], x[3], x[4], x[5], x[6]);
- }
- id(ble_pir).publish_state(x[1] == 0x69);
- id(ble_radar).publish_state(x[2] == 0x69);
- ESP_LOGD("BLE_sensors---", "PIR: %d radar: %d --------", x[1], x[2]);
Advertisement
Add Comment
Please, Sign In to add comment