Sterowanie Bramą i Furtką poprzez moduł esp32 i czytnik R503

W końcu skończyłem robić bramę, pospawane, pomalowane więc nadszedł czas żeby dodać elektronikę.
Zdecydowałem, że chce przy bramie czytnik linii papilarnych, abym mógł uruchamiać różne funkcje każdym palcem, podjeżdżając pod dom, nie potrzebuję klucza, pamiętać pinu, po prostu przykładam palec i wchodzę.

W słupku furtki zamontowałem
elektrozaczep
image

dzwonek arlo,

czytnik lini papilarnych R503 z lm1117 3,3v
można zapisać 200 palców w tym czytniku

i przycisk chwilowy z podświetleniem led od strony podwórka.
dfgdrgrtr

Do słupka idzie przewód 7x1

  1. 5v dc do lm1117 3,3 do czytnika i dla czujników jakie chce jeszcze dodać. np. dopplera
  2. 5v dc gnd
  3. 12v dc elektrozamek po przekaźniku
  4. 12v dc gnd
  5. 24v ac arlo
  6. 24v ac gnd
  7. 5v dc do podświetlenia guzika led po przekaźniku

idzie również skrętka

  1. r503
  2. r503
  3. r503
  4. guzik
  5. kontaktron
      1. jeszcze wolne

Trochę sie nagimnastykowałem żeby to w słupku poprzeciągać


Ale wyszło bardzo fajnie, beż żadnych puszek itp.

Rozdzielnia z elektroniką jest w budynku, kupiłem większą niż potrzebowałem, ale w trakcie wyszło że jeszcze chce tam coś wsadzić i wyszło prawie na styk.

w skrzynce jest:

bezpiecznik 6A
transformator 24v ac
zasilacz 12v dc
zasilacz 5v dc
zasilacz 12v do kamer
3x przekaźniki po 4
nano router TP-link
Mercusys MS108 switch x8
moduł led 2 diodowy
dht11 temeratura i wilgotność w skrzynce
przełącznik rtęciowy na pokrywie

i najważniejsze ESP32 :slight_smile:

początkowo był esp8266, ale chciałem bluetooth i później podłączyć ethernet a esphome wpiera tylko esp32

Wszystko upakowałem do rozdzielni, uchwyty na szyny, wago, przekaźniki, esp, router i switch wydrukowałem.

jeszcze muszę ogarnąć ładnie przewody :stuck_out_tongue:

dodałem kontaktron do bramy i beznapięciowy przekaźnik do centrali bramy z siłownikami super jack które już wcześniej zainstalowałem.

Dodatkowo puściłem skrętkę do skrzynki pocztowej, dodałem kontaktron co by mnie powiadamiało i zamontowałem elektrozaczep
image

Dzięki temu mogę również bez kluczą ją otwierać.
Ogólnie wszystko dla tego że mam problem z noszeniem kluczy :slight_smile:

Czyli autonomicznie podstawowa funkcjonalność działa bez HA
jednym palcem otwieram furtkę, drugim bramę a trzecim skrzynkę na listy.

ESPHome wygląda tak:

esphome:
  name: brama
  platform: ESP32
  board: nodemcu-32s

logger:

wifi:
  ssid: 
  password: 

    
captive_portal:

web_server:
 port: 80
 
esp32_ble_tracker:

binary_sensor:
  - platform: gpio
    pin:
      number: GPIO15
      mode: INPUT_PULLUP
      inverted: true
    name: "Guzik furtki"
    on_press:
      then:
        - switch.turn_on: furtka
  - platform: gpio
    pin:
      number: GPIO19
      mode: INPUT_PULLUP
      inverted: true
    name: "czujnik pokrywy"
    on_press:
      then:
        - switch.turn_on: swiatloskrzynka
    on_release:
      then:
        - switch.turn_off: swiatloskrzynka
    filters:
      - delayed_on_off: 100ms

  - platform: gpio
    pin:
      number: GPIO4
      mode: INPUT_PULLUP
      inverted: true
    name: "kontaktron furtki"

  - platform: gpio
    pin:
      number: GPIO26
      mode: INPUT_PULLUP
      inverted: true
    name: "kontaktron bramy" 

  - platform: gpio
    pin:
      number: GPIO33
      mode: INPUT_PULLUP
      inverted: true
    name: "kontaktron skrzynka na listy" 

  - platform: ble_presence
    mac_address: C4:9D:60:67:B4:DB
    name: " opaska BLE Presence"

            
switch:
  - platform: gpio
    pin: GPIO13
    id: furtka
    name: "Furtka"
    inverted: true
    on_turn_on:
    - delay: 50ms
    - switch.turn_off: furtka
    
  - platform: gpio
    pin: GPIO12
    id: guzikled
    name: "Podswietlenie Guzika Furtka"
    inverted: true

  - platform: gpio
    pin: GPIO14
    id: brama
    name: "Brama"
    inverted: true
    on_turn_on:
    - delay: 50ms
    - switch.turn_off: brama

  - platform: gpio
    pin: GPIO27
    id: swiatloskrzynka
    name: "Światło skrzynka"
    inverted: true

  - platform: gpio
    pin: GPIO25
    id: skrzynkanalisty
    name: "Skrzynka na listy"
    inverted: true
    on_turn_on:
    - delay: 5s
    - switch.turn_off: skrzynkanalisty

    
mqtt:
  broker: 192.168.100.100
  
  
uart:
  tx_pin: GPIO17
  rx_pin: GPIO16
  baud_rate: 57600

fingerprint_grow:
  sensing_pin: GPIO21
  on_finger_scan_matched:
    - lambda: |-
        if (finger_id == 10) {
          id(fingerprint_username).publish_state("Bartek10");
          id(furtka).turn_on();
        } else if (finger_id == 17) {
          id(fingerprint_username).publish_state("Bartek17");
          id(brama).turn_on();
        } else if (finger_id == 18) {
          id(fingerprint_username).publish_state("Bartek18");
          id(skrzynkanalisty).turn_on();
        } else {
          id(fingerprint_username).publish_state("Unknown");

        };
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 200
        color: BLUE
        count: 1
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Authorized finger"
    - delay: 3s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
  on_finger_scan_unmatched:
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Unauthorized finger"
    - delay: 3s
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Scan your finger"
  on_enrollment_scan:
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: BLUE
        count: 2
    - fingerprint_grow.aura_led_control:
        state: ALWAYS_ON
        speed: 0
        color: PURPLE
        count: 0
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Finger scanned"
  on_enrollment_done:
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 100
        color: BLUE
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Enrolled fingerprint"
  on_enrollment_failed:
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 4
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Failed to enroll fingerprint"

text_sensor:
  - platform: template
    id: fingerprint_state
    name: "Garage Fingerprint State"
    
  - platform: template
    id:       fingerprint_username
    name:     "Who Scanned Last"
    
sensor:
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Garage Fingerprint Count"
    last_finger_id:
      name: "Garage Fingerprint Last Finger ID"
    last_confidence:
      name: "Garage Fingerprint Last Confidence"
    status:
      name: "Garage Fingerprint Status"
    capacity:
      name: "Garage Fingerprint Capacity"
    security_level:
      name: "Garage Fingerprint Security Level"
  - platform: wifi_signal
    name: "WiFi Signal Sensor"
    update_interval: 60s      
 
  - platform: dht
    pin: GPIO5
    temperature:
      name: "skrzynka Temperature"
    humidity:
      name: "skrzynka Humidity"
    update_interval: 60s
    
  - platform: xiaomi_hhccjcy01
    mac_address: C4:7C:8D:6C:B9:6D
    temperature:
      name: "Xiaomi MiFlora Temperatura"
    moisture:
      name: "Xiaomi MiFlora Wilgoć"
    illuminance:
      name: "Xiaomi MiFlora Nasłonecznienie"
    conductivity:
      name: "Xiaomi MiFlora Żyzność"
    battery_level:
      name: "Xiaomi MiFlora Battery Level"

    
api:
  services:
  - service: enroll
    variables:
      finger_id: int
      num_scans: int
    then:
      - fingerprint_grow.enroll:
          finger_id: !lambda 'return finger_id;'
          num_scans: !lambda 'return num_scans;'
  - service: cancel_enroll
    then:
      - fingerprint_grow.cancel_enroll:
  - service: delete
    variables:
      finger_id: int
    then:
      - fingerprint_grow.delete:
          finger_id: !lambda 'return finger_id;'
  - service: delete_all
    then:
      - fingerprint_grow.delete_all:

Trochę się natrudziłem z kodem jak zrobić dla każdego palca osobno bo nie jestem programistą, w necie znalazłem tylko automatyzacje z HA, a chciałem aby podstawowa funkcjonalność była na płytce, działająca niezależnie.
Teraz dodatkowe automatyzacje np. włączenie wszystkich świateł w ogrodzie, wyłączenie wszystkiego w domu, włączenie alarmu, mogę sobie zrobić w NR / HA.

W HA wszystko jest:
ytjyjydtyu

Jeszcze coś tam muszę poprawić, podłączyć halogeny, lampy, jakieś czujniki ruchu itp.

Trochę mi to zajęło ale działa… tak jak chciałem :slight_smile:

11 polubień