Hej,
Bardzo dawno temu zrobiłem sobie PCB pod ESP8266 do sterowania bramą, tzn. główny sterownik działa z bramą, a ten mój podłączony pod wejście zewnętrznego przycisku ma za zadanie uruchamiać tylko bramę. Teraz chciałbym tego użyć do Home Assistant gdzie będę mógł otworzyć bramę oraz sprawdzić stan bramy (brama jest wspólna na sześć rodzin)
Podpowiedzcie czy to co skleciłem będzie OK.
###################################################################################################################################################
#-- konfiguracja modułu
esphome:
name: brama # nazwa
friendly_name: Brama # nazwa używana w Home Assistant
#-- moduł ESP
esp8266:
board: esp01_1m # ESP-07
#-- włącz logi
logger:
#-- włącz API Home Assistant
api:
encryption:
key: "v6LtRbeyiUrQgMkIbbQ9YfgvIyj36d2OANgplKuWGEg=" # klucz API
#-- OTA
ota:
password: "d150c3dd8d9c6f6e166ec7aa96d1c092" # hasło OTA
#-- konfiguracja Wi-Fi
wifi:
ssid: !secret wifi_ssid # nazwa sieci Wi-Fi
password: !secret wifi_password # hasło sieci Wi-Fi
#-- ta sekcja może zostać usunięta w celu włączenia DHCP
manual_ip: # statyczna konfiguracja sieci
static_ip: 192.168.1.122 # IP modułu
gateway: 192.168.1.1 # IP bramy/routera
subnet: 255.255.255.0 # maska sieci
#-- konfiguracja AP
ap:
ssid: "Brama" # nazwa AP
password: !secret ap_password # hasło AP
#-- włącz rezerwowy hotspot (portal przechwytujący) na wypadek awarii połączenia Wi-Fi
captive_portal:
#--
web_server:
port: 80
auth:
username: "admin"
password: !secret web_server_password
###################################################################################################################################################
# piny GPIO
# GPIO 0 - przycisk (flash)
# GPIO 4 - czujnik/krańcówka
# GPIO 5 - przekaźnik
# GPIO 12 - LED przekaźnik
# GPIO 13 - LED czujnik/krańcówka
# GPIO 14 - LED Wi-Fi
###################################################################################################################################################
text_sensor:
#-- uptime
- platform: template
name: Uptime
id: uptime_human
icon: mdi:clock-start
###################################################################################################################################################
sensor:
#-- uptime
- platform: uptime
name: Uptime
id: uptime_sensor
on_raw_value:
then:
- text_sensor.template.publish:
id: uptime_human
state: !lambda |-
int seconds = round(id(uptime_sensor).raw_state);
int days = seconds / (24 * 3600);
seconds = seconds % (24 * 3600);
int hours = seconds / 3600;
seconds = seconds % 3600;
int minutes = seconds / 60;
seconds = seconds % 60;
return (
(days ? to_string(days) + "d " : "") +
(hours ? to_string(hours) + "h " : "") +
(minutes ? to_string(minutes) + "m " : "") +
(to_string(seconds) + "s")
).c_str();
#-- signał Wi-Fi
- platform: wifi_signal
name: Sygnał Wi-Fi
device_class: signal_strength
entity_category: diagnostic
###################################################################################################################################################
switch:
#-- restart modułu
- platform: restart # restart ESP
name: Restart # nazwa czujnika - pojawi w Home Assistant
#-- kontrolka LED dla załączonego przekaźnika
- platform: gpio
id: led_pk
pin: 12
inverted: yes
#-- kontrolka LED dla otwarcia bramy
- platform: gpio
id: led_status
pin: 13
inverted: yes
#-- kontrolka LED dla połaczenia modułu z siecią Wi-Fi
- platform: gpio
id: led_wifi
pin: 14
inverted: yes
#-- przekaźnik uruchamiający bramę - załączenie na ustalony czas
- platform: gpio
id: brama_start # identyfikator
name: Start # nzwa jaka pojawi się w Home Assistant
icon: mdi:refresh-auto # ikona
pin: GPIO5 # nr GPIO dla przekaźnika
on_turn_on: # gdy został załączony przekaźnik
- switch.turn_on: led_pk # włącz LED przekaźnk
- delay: 1s # odczekaj ustalony czas
- switch.turn_off: brama_start # wyłącz przekaźnik
- switch.turn_off: led_pk # wyłącz LED przekaźnik
restore_mode: ALWAYS_OFF # przekaźnik zawsze wyłączony (włączenie/reset ESP)
###################################################################################################################################################
binary_sensor:
#-- krańcówka
- platform: gpio
id: brama_status # identyfikator
name: Status # nzwa jaka pojawi się w Home Assistant
#icon: mdi:gate # ikona
device_class: lock
pin: # konfiguracja GPIO
number: GPIO4 # nr GPIO dla przycisku
mode: # konfiguracja przycisku
input: true # GPIO jako wejście
pullup: true # wewnętrzne podciągnęcie GPIO (pull-up)
inverted: True # odwrócenie
filters: # filtr aby odbić wciśnięcie przycisku
- delayed_on: 50ms # odczekaj 50ms
- delayed_off: 50ms # OK, to nie zakłócenia, a wciśnięty przycisk
on_press: # gdy przycisk został nacisnięty
- switch.turn_on: led_status # włącz LED przekaźnk
on_release:
- switch.turn_off: led_status # włącz LED przekaźnk
#-- włączenie przekaźnika po naciśnięciu przycisku fizycznego
- platform: gpio
id: przycisk # identyfikator
name: Przycisk # nzwa jaka pojawi się w Home Assistant
icon: mdi:button-pointer # ikona
pin: # konfiguracja GPIO
number: GPIO0 # nr GPIO dla przycisku
mode: # konfiguracja przycisku
input: true # GPIO jako wejście
pullup: false # zewnętrzne podciągnęcie GPIO (pull-up)
inverted: True # odwrócenie
filters: # filtr aby odbić wciśnięcie przycisku
- delayed_on: 50ms # odczekaj 50ms
- delayed_off: 50ms # OK, to nie zakłócenia, a wciśnięty przycisk
on_press: # gdy przycisk został nacisnięty
- switch.turn_on: brama_start # włącz przekaźnik
###################################################################################################################################################
interval:
- interval: 1s # wykonaj co 1 sekundę
then:
if: # jeżeli
condition:
wifi.connected: # połączenie z Wi-Fi
then:
- if:
condition:
api.connected:
then: # jeżeli połączono z Wi-Fi
- switch.turn_on: led_wifi # to włącz LED Wi-Fi
else: # jeśli nie ma połączenia z HA to mrugaj LED Wi-Fi
- switch.turn_on: led_wifi # włącz LED Wi-Fi
- delay: 500ms # odczekaj
- switch.turn_off: led_wifi # wyłącz LED Wi-Fi
- delay: 500ms # odczekaj
else: # jeżeli nie połączono z Wi-Fi (automatycznie z HA również nie)
- switch.turn_off: led_wifi # to wygaś LED Wi-Fi
###################################################################################################################################################
A teraz pytania:
- co można poprawić w moim kodzie?
- co zrobić aby mój kod wczytał aktualny stan krańcówki po uruchomieniu? teraz prawdziwy stan się pokazuje dopiero jak rozepnę i wepnę krańcówkę
- jak zrobić (czy w ogóre się da) jakąś prostą stronę gdzie będzie jakiś większy guzik, który uruchomi bramę oraz pokaże status bramy zamknięta/otwarta.
- czy można jakoś zrobić dodatkowe opcje jak AP? Chodzi o to, że chciałbym podzielić się z sąsiadami możliwością otwierania bramy przez telefon, ale nie koniecznie chcę się dzielić internetem czy dostępem do Home Assistant
*na tą chwilę całość męczę na stole bez fizycznego podłączenia do sterownika bramy