SodaWithoutSparkles

esphome config

Aug 3rd, 2024
433
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 5.95 KB | None | 0 0
  1. esphome:
  2.   name: pps-v3-548714
  3.   friendly_name: presence sensor
  4.   platformio_options:
  5.     board_build.flash_mode: dio
  6.     board_build.mcu: esp32c3
  7.   on_boot:
  8.     priority: 550
  9.     then:
  10.      # id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xAB, PIR, radar });
  11.       # presence = 0x69, absence = 0x42
  12.       - if:
  13.           condition:
  14.             - binary_sensor.is_on: pir_state
  15.           then:
  16.             # PIR is on
  17.             - globals.set:
  18.                 id: check_radar_again
  19.                 value: 'false'
  20.             # wake up 5m later
  21.             - lambda: |-  
  22.                 id(deep_sleep_1).set_sleep_duration(300000);
  23.             - repeat:
  24.                 count: 10
  25.                 then:
  26.                   # report presennce
  27.                   - if:
  28.                       condition:
  29.                         - binary_sensor.is_off: radar_state
  30.                       then:
  31.                         # PIR on, radar off
  32.                         - lambda: |-
  33.                             float lightVoltage = id(photoresistor).state;
  34.                             uint8_t *lightData = (uint8_t*)&lightVoltage;
  35.                             id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x69, 0x42, lightData[0], lightData[1], lightData[2], lightData[3] });
  36.                       else:
  37.                         - lambda: |-
  38.                             float lightVoltage = id(photoresistor).state;
  39.                             uint8_t *lightData = (uint8_t*)&lightVoltage;
  40.                             id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x69, 0x69, lightData[0], lightData[1], lightData[2], lightData[3] });
  41.                   - delay: 70ms
  42.           else:
  43.             # PIR is off
  44.             - globals.set:
  45.                 id: check_radar_again
  46.                 value: 'false'
  47.             # wake up 5m later
  48.             - lambda: |-  
  49.                 id(deep_sleep_1).set_sleep_duration(300000);
  50.             - repeat:
  51.                 count: 10
  52.                 then:
  53.                   - if:
  54.                       condition:
  55.                         - binary_sensor.is_off: radar_state
  56.                       then:
  57.                        # PIR off, radar off
  58.                         - lambda: |-
  59.                             float lightVoltage = id(photoresistor).state;
  60.                             uint8_t *lightData = (uint8_t*)&lightVoltage;
  61.                             id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x42, 0x42, lightData[0], lightData[1], lightData[2], lightData[3] });
  62.                       else:
  63.                        # PIR off, radar on
  64.                         - lambda: |-
  65.                             float lightVoltage = id(photoresistor).state;
  66.                             uint8_t *lightData = (uint8_t*)&lightVoltage;
  67.                             id(ble).set_manufacturer_data({ 0xFF, 0xFF, 0xCC, 0x42, 0x69, lightData[0], lightData[1], lightData[2], lightData[3] });
  68.                   - delay: 70ms
  69.                  
  70.             - if:
  71.                 condition:
  72.                   and:
  73.                     - binary_sensor.is_on: radar_state
  74.                     - lambda: |-
  75.                         return !id(check_radar_again);
  76.                 then:
  77.                   - globals.set:
  78.                       id: check_radar_again
  79.                       value: 'true'
  80.                   # wake up 30s later
  81.                   - lambda: |-  
  82.                       id(deep_sleep_1).set_sleep_duration(30000);
  83.                 else:
  84.                   - globals.set:
  85.                       id: check_radar_again
  86.                       value: 'false'
  87.                   # wake up 5m later
  88.                   - lambda: |-  
  89.                       id(deep_sleep_1).set_sleep_duration(300000);
  90.                      
  91.       # - light.turn_off: rgb_light
  92.       - deep_sleep.enter: deep_sleep_1              
  93.  
  94.          
  95.              
  96.  
  97. esp32:
  98.   board: esp32-c3-devkitm-1
  99.   variant: ESP32C3
  100.   framework:
  101.     type: esp-idf
  102.  
  103.  
  104. # # Enable logging
  105. # logger:
  106.  
  107. # Enable Home Assistant API
  108. api:
  109.   encryption:
  110.     key: "redacted"
  111.   reboot_timeout: 0s
  112.  
  113. ota:
  114.   - platform: esphome
  115.     password: "redacted"
  116.  
  117. wifi:
  118.   enable_on_boot: False
  119.   ssid: !secret wifi_ssid
  120.   password: !secret wifi_password
  121.   fast_connect: True
  122.   power_save_mode: HIGH
  123.  
  124. globals:
  125.   - id: check_radar_again
  126.     type: bool
  127.     restore_value: True
  128.     initial_value: 'false'
  129.  
  130. deep_sleep:
  131.   run_duration: 5s
  132.   sleep_duration: 30min
  133.   wakeup_pin:
  134.     allow_other_uses: True
  135.     number: 1
  136.   wakeup_pin_mode: INVERT_WAKEUP
  137.   id: deep_sleep_1
  138.  
  139. esp32_ble_server:
  140.   id: ble
  141.   manufacturer_data: [0xFF, 0xFF, 0xBB, 0x00]
  142.  
  143. binary_sensor:
  144.   - platform: gpio
  145.     pin:
  146.       number: 1
  147.       allow_other_uses: True
  148.     name: "pir_state"
  149.     id: pir_state
  150.  
  151.   - platform: gpio
  152.     pin:
  153.       number: 2
  154.     name: "radar_state"
  155.     id: radar_state
  156.  
  157. sensor:
  158.   - platform: adc
  159.     id: photoresistor
  160.     attenuation: auto
  161.     name: "photoresistor"
  162.     pin:
  163.       number: 3
  164.       mode:
  165.         pullup: True
  166.         input: True
  167.     # connect the photoresistor across gnd and pin3
  168.  
  169. #################################
  170. # On the reciever
  171. #################################
  172. esp32_ble_tracker:
  173.   scan_parameters:
  174.     interval: 320ms
  175.     window: 320ms
  176.   on_ble_manufacturer_data_advertise:
  177.     - mac_address: XX:XX:XX:XX:XX:XX
  178.       manufacturer_id: FFFF
  179.       then:
  180.         - lambda: |-
  181.             if (x[0] != 0xAB && x[0] != 0xCC) return;
  182.             if (x[0] == 0xCC) {
  183.               float lightVoltage = *((float*)&x[3]);
  184.               id(ble_light).publish_state(lightVoltage);
  185.               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]);
  186.             }
  187.             id(ble_pir).publish_state(x[1] == 0x69);
  188.             id(ble_radar).publish_state(x[2] == 0x69);
  189.             ESP_LOGD("BLE_sensors---", "PIR: %d     radar: %d  --------", x[1], x[2]);
  190.  
Advertisement
Add Comment
Please, Sign In to add comment