Esphome Svetlo pomocou PIR a LDR

www
Odpovědět
Uživatelský avatar
tiimsvk
Dárce - Donátor
Dárce - Donátor
Příspěvky: 801
Registrován: 06. květen 2021, 07:03
Dal poděkování: 72 poděkování
Dostal poděkování: 65 poděkování

Esphome Svetlo pomocou PIR a LDR

Příspěvek od tiimsvk »

Ahojte rozhodol som sa namiesto do troch nižšie uvedenych prispekov vypisovať čo som vytvoril, napísať jeden novy ako kompletny navod.
Pir senzor a Retrigger
viewtopic.php?t=486
Pir svetlo on boot
viewtopic.php?t=571
Povolenie/zakazanie automatizacii
viewtopic.php?t=601

Vytvorenie automatickeho ovladania osvetlenia pomocou pir senzoru a senzoru osvetlenia... veľmi podobne zaradenie aké mozete zakúpiť v akomkolvek obchode s osvetlenim.

ČO DOKÁŽE:
- zapnutie a vipnutie osvetlenia pomocou wifi
- automatizacia bez potreby pripojenia do ha a pristupu k wifi
- snimanie osvetlenia v luxoch
- snimanie teploty
- snimanie pohybu
- pri botovani zapnutie svetla až do času nedetekovania pohybu
- automaticke zapnutie svetla iba pri detekovani pohybu a nedetekovani osvetlenia.

ČO POTREBUJEME:
Základné:
- esp32/esp8266
- rele/npn/pnp tranzistor ( + doplnkove odpory a diody podľa schem zapojenia na internete) záleží od vzopnutia záťaže.
- pir (odporúčam najednoduchsi modul mini AM321, zlozity modul HC-SR501 mi stale blbol až som to vzdal a prešiel na hore uvedeny modul)
- ldr photoresistor gl5516 citlivosť 5-10k + resistor 4.7k pripojeny do vcc

Doplnkové:
- kabelaz
- resistory podľa pouziteho esp
- power supply 3.3vdc a pre osvetlenie
- dallas teplotny senzor
- stavova led

ZAPOJENIE:
- esp podľa typu dosky je potrebne pozrieť na internete
- pir vcc(pre AM321 postačuje 3.3V/gnd/gpio priamo bezodporov
- ldr: gnd do ldr do gpio+4.7k resistor do vcc
- rele alebo tranzistor viď schemy na internete

PREVEDENIE:
- doplním neskor

YAML:

Kód: Vybrat vše

#-------------------------------------------
# SUBTITUTIONS - basic definitions and description of the device
#-------------------------------------------
substitutions:
  friendly_name: ESP-Light1
  device_name: ESP-Light1
  version: "1.03"
  created_by: "StudioTiiM 2022"
  device_description: "Convert Broken LivarnoLux 5W 6500K whit PIR sensor, Pir AM321, LDR GL5516 5-10k whit 4.7k resistor, dallas temperature"

#-------------------------------------------
# Define pins
#-------------------------------------------
  switch_pin: GPIO21
  pir_pin: GPIO23
  ldr_pin: GPIO34
  dallas_pin: GPIO22
  status_led_pin: GPIO19

#-------------------------------------------
# ESP main settings
#-------------------------------------------
esphome:
  name: light1
  on_boot:
    priority: 600.0
    then:
      - component.update: ldr_adc
      - logger.log: "---boot relay on---"
      - switch.turn_on: relay
      - delay: 60s
      - wait_until:
          binary_sensor.is_off: motion
      - logger.log: "---boot relay off motion off---"
      - switch.turn_off: relay
      - binary_sensor.template.publish:
          id: script_enable
          state: true

esp32:
  board: esp32dev

logger:
api:
ota:
  password: !secret ota_pass

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip:
    static_ip: 192.168.31.167
    gateway: 192.168.31.1
    subnet: 255.255.255.0
  ap:
    ssid: "$device_name Hotspot"
    password: "passaquarium"

captive_portal:

#-------------------------------------------
# BLUETOOTH GATEWAY
#-------------------------------------------
esp32_ble_tracker:
  scan_parameters:
    interval: 1100ms
    window: 1100ms
    active: False

bluetooth_proxy:

#-------------------------------------------
# DEFINE DALLAS TEMPERATURE SENSOR
#-------------------------------------------
dallas:
  - pin: "$dallas_pin" 
    update_interval: 60s

#-------------------------------------------
# STATUS LED
# Yellow led
#-------------------------------------------
status_led:
  pin:
    number: "$status_led_pin"

#-------------------------------------------
# SENSORS
#-------------------------------------------
sensor:
#-------------------------------------------
# Wifi signal component
#-------------------------------------------
  - platform: wifi_signal
    name: "${friendly_name} Signal"
    id: "wifisignal"
    update_interval: 60s

#-------------------------------------------
# DALLAS temperature sensor DS18B20 
# 4.7k resistor to VCC
#-------------------------------------------
  - platform: dallas
    address: 0xca8a83f90264ff28
    name: "${friendly_name} Temperature"
    id: temp_dallas
    unit_of_measurement: "°C"

#-------------------------------------------
# LDR SENSOR - LIGHT lux
# GL5516 5-10k sensitivity
# 4.7k resistor to VCC or GND
#-------------------------------------------
  - platform: adc
    attenuation: 11db
    id: ldr_adc
    pin: "$ldr_pin"
    name: "${friendly_name} Illuminance"
    unit_of_measurement: lux
    device_class: illuminance
    accuracy_decimals: 0
    update_interval: 10s
    filters:
      - calibrate_polynomial:
         degree: 3
         datapoints:
        # Map 0.0 (from sensor) to 0.0 (true value)
          - 0.142 -> 500
          - 0.2 -> 469
          - 1.0 -> 165
          - 2.8 -> 0   
      # No value lower than 0
      - lambda: 'return max((float)0.0, x);'
    on_value:
      if:
        condition:
          sensor.in_range:
            id: ldr_adc
            above: 1.0
        then:
          if:
            condition:
              - switch.is_on: relay
            then:
            # relay is on bulb light on
              - lambda: id(light_detect).publish_state("Bulb");
            else:
              - lambda: id(light_detect).publish_state("Light");
        else:
          - if:
              condition:
                - switch.is_on: relay
              then:
                - lambda: id(light_detect).publish_state("Bulb");
              else:
                - lambda: id(light_detect).publish_state("Dark");

#-------------------------------------------
# TEXT SENSORS - light detected
#-------------------------------------------
text_sensor:
  - platform: template
    name: "${friendly_name} Light detect"
    #icon: mdi:
    id: light_detect
    lambda: |-
       return {"Loading"};
    update_interval: never
    
#-------------------------------------------
# BINARY SENSORS
#-------------------------------------------
binary_sensor:
#-------------------------------------------
# Template - enable script after boot and no motion
#-------------------------------------------
  - platform: template
    name: "${friendly_name} Enable Script"
    id: script_enable
    internal: True

#-------------------------------------------
# Pir sensor AM321 mini pir
#-------------------------------------------
  - platform: gpio
    pin: 
      number: "$pir_pin"
    name: "${friendly_name} Motion"
    id: motion
    device_class: motion
    filters:
      - delayed_off: 60s
    # motion on
    on_press:
      - component.update: ldr_adc
      - if:
          condition:
            and:
              - text_sensor.state:
                  id: light_detect
                  state: 'Dark'
              - binary_sensor.is_on: script_enable
          then:
            - switch.turn_on: relay
            - component.update: ldr_adc
            - logger.log: "LDR UPDATE"
    # motion off
    on_release:
      - component.update: ldr_adc
      - if:
          condition:
            - binary_sensor.is_on: script_enable
          then:
            - switch.turn_off: relay
            - delay: 500ms
            - component.update: ldr_adc
            - logger.log: "LDR UPDATE"

#-------------------------------------------
# SWITCHES
#-------------------------------------------
switch:
#-------------------------------------------
# RELAY 005-1H1L 5VDC 18A 277VAC
# turn on when motion sensor on and ldr sensor light off
#-------------------------------------------
  - platform: gpio
    pin: "$switch_pin"
    id: relay
    name: '${friendly_name} Switch'
    restore_mode: RESTORE_DEFAULT_OFF

Odpovědět

Zpět na „ESPHome“