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:

15 polubień

Ekstra robota! Mam kilka pytań:

Dzwonek jakoś się integruje z AI?
Co to za elektromagnes do skrzynki na listy?
Masz jakąś detekcje listów?
Jak sie spisuje ten czujnik odcików palcy?

I ostatnie FENOMENALNA TABLICZKA o psie itp! Skąd taka zdobyć?

Cześć

Jest integracja - aarlo

Elektrozamek to coś takiego: https://allegro.pl/oferta/elektromagnetyczny-zamek-magnetyczny-do-drzwi-13578212479?utm_medium=afiliacja&utm_source=ctr&utm_campaign=84a5765b-bd8c-43a2-8550-df1dae15cd69#

Tak. Zwykły kontaktron i neodym na pokrywie
https://allegro.pl/oferta/kontaktron-czujnik-otwarcia-drzwi-okna-mc-38-11716292819?utm_medium=afiliacja&utm_source=ctr&utm_campaign=63148733-e554-47fa-9153-d07e48dab459#

Elegancko, cały czas działa. Jedynie dobrze gdyby był w obudowie żeby nie padało na niego, jak jest mokry to “czujnik” zbliżenia cały czas myśli że palec dotknął i wpada w pętle procesu skanowania. Trzeba wtedy chwilę dłużej przytrzymac.

Nie było takiej jak potrzebowałem więc sam zrobiłem projekt i wykonałem rozmiar 200x80 w firmie od tabliczek, jeszcze na shopee. W tej firmie zamówiłem

1 polubienie

Możesz się nim podzielić? O ile oczywiście jesteś skłonny do takiego udostęnienia (nie mam psa, ale taki format pewnie się przyda wielu innym).

Masz np. jakieś konto na githubie ze swoimi projektami?

:slight_smile: nie ma problemu
TABLICZKA PIES.pdf (31,7 KB)

Jak byś potrzebował co innego to mogę pomóc, jestem z branży graficznej :stuck_out_tongue:

3 polubienia

Nie masz może w PSD? :stuck_out_tongue:

Jak ktoś dzwoni dostajesz powiadomienie ze zdjęciem czy coś?

Jaki to model?

ten PDF jest wektorowy, możesz go zaimportowac do photoshopa, a najlepiej do illustratora

Jak ktoś dzwoni to normalnie jest jak by ktoś dzwonił na mój telefon i włącza się kamera
Tutaj pisałem o nim:

to jeszcze p[odrzuć większe zdjęcie skrzynki pocztowej :wink: albo model xD

Skrzynka? to zwykła skrzynka, na allegro dawno temu kupiłem. Jest pełno modeli, coś na pewno sobie dobierzesz

Hej
jako że ten projekt dał mi pomysł na automatykę wejścia, chciałem pochwalić się swoim projektem.
Dzieki @bartik22 :slight_smile:

Jako main użyłem ESP32 -WROOM BLE+Wifi.

  • Czytnik lini papilarnych
  • relay 4ch
  • zasilacz 12v 10W
  • kontaktrony (brama zamknięta/otwarta, furtka zamknięta)
  • przycisk do furtki
  • zamek do furtki i skrzynki
  • czujnik zbliżenia (czy list w skrzynce)
  • do samochodu Prixima HB
  • Wideodomofon VTO2111D-P-S2
  • Nice ROX40 jako napęd bramy
esphome:
  name: esphome-web-8402e8
  friendly_name: ais_front_station

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

ota:

wifi:
  ssid: "xxxxxxxxxxx"
  password: "xxxxxxxxxxxx"
  manual_ip:
    static_ip: 192.168.88.33
    gateway: 192.168.88.1
    subnet: 255.255.255.0

captive_portal:

web_server:
  port: 80
  auth:
    username: xxxxxx
    password: 'xxxxxxxxxxx'

switch:
  - platform: gpio
    pin: GPIO19   #D19
    id: gate
    name: "Furtka"
    inverted: True
    on_turn_on:
    - delay: 3s
    - switch.turn_off: gate

  - platform: gpio 
    pin: GPIO21  #D21
    id: driveway_gate
    name: "Brama Wjazdowa"
    inverted: True
    on_turn_on:
    - delay: 1s
    - switch.turn_off: driveway_gate

  - platform: gpio 
    pin: GPIO23  #D22
    id: letter_box
    name: "Skrzynka na listy"
    inverted: True
    on_turn_on:
    - delay: 5s
    - switch.turn_off: letter_box
    
  - platform: gpio 
    pin: GPIO22  #D23
    inverted: True
    name: "free" 
    id: IN4

api:
  encryption:
    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  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;'
      - fingerprint_grow.aura_led_control:
          state: ALWAYS_ON
          speed: 0
          color: PURPLE
          count: 0
  - 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:


uart:
  rx_pin: GPIO16
  tx_pin: GPIO17
  baud_rate: 57600
  

fingerprint_grow:
  sensing_pin: GPIO18
  on_finger_scan_matched:
    - homeassistant.event:
        event: esphome.test_node_finger_scan_matched
        data:
          finger_id: !lambda 'return finger_id;'
          confidence: !lambda 'return confidence;'
    - lambda: |-
        if (finger_id == 1) {
          id(fingerprint_username).publish_state("Bartek_Furtka");
          id(gate).turn_on();
        } else if (finger_id == 2) {
          id(fingerprint_username).publish_state("Bartek_Brama");
          id(driveway_gate).turn_on();
        } else if (finger_id == 3) {
          id(fingerprint_username).publish_state("Bartek_Skrzynka");
          id(letter_box).turn_on();
        } else {
          id(fingerprint_username).publish_state("unknown");
        }
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 200
        color: GREEN
        count: 1
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Authorized"

  on_finger_scan_unmatched:
    - homeassistant.event:
        event: esphome.test_node_finger_scan_unmatched
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Unknown"

  on_enrollment_scan:
    - homeassistant.event:
        event: esphome.test_node_enrollment_scan
        data:
          finger_id: !lambda 'return finger_id;'
          scan_num: !lambda 'return scan_num;'
    - 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: "Learning"

  on_enrollment_done:
    - homeassistant.event:
        event: esphome.test_node_enrollment_done
        data:
          finger_id: !lambda 'return finger_id;'
    - fingerprint_grow.aura_led_control:
        state: BREATHING
        speed: 100
        color: BLUE
        count: 2
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Registered"

  on_enrollment_failed:
    - homeassistant.event:
        event: esphome.test_node_enrollment_failed
        data:
          finger_id: !lambda 'return finger_id;'
    - fingerprint_grow.aura_led_control:
        state: FLASHING
        speed: 25
        color: RED
        count: 4
    - text_sensor.template.publish:
        id: fingerprint_state
        state: "Failure"

sensor:
  - platform: fingerprint_grow
    fingerprint_count:
      name: "Fingerprint Count"
    last_finger_id:
      name: "Fingerprint Last Finger ID"
    last_confidence:
      name: "Fingerprint Last Confidence"
    status:
      name: "Fingerprint Status"
    capacity:
      name: "Fingerprint Capacity"
    security_level:
      name: "Fingerprint Security Level"
  - platform: wifi_signal # Reports the WiFi signal strength/RSSI in dB
    name: "WiFi Signal dB"
    id: wifi_signal_db
    update_interval: 60s
    entity_category: "diagnostic"
  - platform: copy # Reports the WiFi signal strength in %
    source_id: wifi_signal_db
    name: "WiFi Signal Percent"
    filters:
      - lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
    unit_of_measurement: "Signal %"
    entity_category: "diagnostic"


    # Optional template text sensor for visual feedback
text_sensor:
  - platform: template
    id: fingerprint_state
    name: "Fingerprint State"
    lambda: |-
      return {"-"};
    update_interval: 6s
  - platform: template
    id:       fingerprint_username
    name:     "Who Scanned Last"
  - platform: template
    id: letter_box_status
    name: letter_box_status
    lambda: |-
        if (id(letter_box_flag).state) {
          id(letter_box_flag).set_icon("mdi:email-open-outline");
          return {"letter in the box"};
        } else {
          id(letter_box_flag).set_icon("mdi:email-outline"); 
          return {"nothing in the box"}; 
        }
    update_interval: 2s

# Optional sensors
binary_sensor:
  - platform: fingerprint_grow
    id: fingerprint_enrolling
    name: "Fingerprint Enrolling"
  - platform: gpio
    id: "letter_box_flag"
    name: "Letter box flag"
    pin:
      number: GPIO32
      mode: INPUT_PULLUP
      inverted: True
  - platform: gpio
    pin:
      number: GPIO14 #D14
      mode: INPUT_PULLUP
      inverted: True
    name: "Driveway gate Door Open"
    device_class: garage_door
  - platform: gpio
    pin:
      number: GPIO13 #D13
      mode: INPUT_PULLUP
      inverted: False
    name: "Driveway gate Door Close"
    device_class: garage_door
  - platform: gpio
    pin:
      number: GPIO12 #D12
      mode: INPUT_PULLUP
      inverted: False
    name: "Gate Close"
  - platform: gpio
    id: gate_btn
    pin:
      number: GPIO27 #D27
      mode: INPUT_PULLUP
      inverted: True
    name: "Gate BTN"
    on_press:
      then:
        - switch.turn_on: gate



Wszystko pięknie śmiga, ale … pojawił sie problem po dwóch dniach uzytkowania.
W momencie skanowania palca do otwierania skrzynki otwiera się tez furtka. Zastanawiam sie co to może być. Zamek furtki i skrzynki mam na tej samel listwie zasilania może to ma jakis wpływ.

2 polubienia

Dobra robota :ok_hand:

Odnośnie problemu, piszesz ze po dwóch dniach dopiero? Na początku jesteś pewien że tak nie było?
Powiedz czy robiłeś test odcięcie zasilania i powrót, czy wtedy przypadkiem furtka się nie otwiera.

Tzn? Jakiś schemacik?

Na relay’ach masz lampki,
przy otwieraniu skrzynki tylko jeden miga czy dwa przekaźniki?

Świetne dwa rozwiązania, szacun.

Wszystko jest jasne ale nigdzie nie wiedzę na zdjęciach, w obu projektach jak rozwiązaliście czujnik listów w skrzynce?

U mnie jest magnes neodymowy pod pokrywą, trzyma się tylko na siłę magnesu, a w skrzynce od środka u góry jest przyklejony zwykły biały kontaktron za 5zl.

uszkodzony miałem elektrozaczep w furtce. Wymieniłem na nowy bez pamięci i działa jak należy

Czyli, czujnik rozpoznaje otwarcie i zamkniecie pokrywy skrzynki a nie czy list jest w srodku?

Tak dokładnie. Żeby wrzucić list trzeba podnieść pokrywę

Semka. Nie masz kłopotów z połączeniami video z Arlo? U mnie od odebrania jest bardzo długi lag zanim się pojawi obraz a jakość rozmowy pozostawia naprawdę bardzo wiele do jakiejkolwiek jakości…