diff --git a/czytnik-brama.yaml b/czytnik-brama.yaml index 51057e0..3c9d2f0 100644 --- a/czytnik-brama.yaml +++ b/czytnik-brama.yaml @@ -1,157 +1,161 @@ esphome: - name: terminal-brama - platformio_options: - board_build.f_cpu: 80000000L # Oszczędność energii i niższa temperatura + name: terminal-brama + # Punkt 1: Obniżenie taktowania procesora dla oszczędności energii i niższej temperatury + platformio_options: + board_build.f_cpu: 80000000L - esp32: - board: esp32dev - framework: - type: arduino +esp32: + board: esp32dev + framework: + type: arduino - wifi: - ssid: !secret wifi_ssid - password: !secret wifi_password - power_save_mode: LIGHT - fast_connect: true +wifi: + ssid: !secret wifi_ssid + password: !secret wifi_password + power_save_mode: LIGHT # Punkt 3: Energooszczędny tryb WiFi + fast_connect: true - api: - reboot_timeout: 0s - encryption: - key: !secret api_encryption_key +api: + reboot_timeout: 0s + encryption: + key: !secret api_encryption_key - ota: - - platform: esphome - password: !secret ota_password +ota: + - platform: esphome + password: !secret ota_password - logger: - level: INFO +logger: + level: INFO - globals: - - id: g_imie - type: std::string - - id: g_nazwisko - type: std::string - - id: status_karty - type: std::string - initial_value: '"Przyłóż kartę"' - - id: pokazuj_pracownika - type: bool - initial_value: 'false' +globals: + - id: g_imie + type: std::string + restore_value: no + - id: g_nazwisko + type: std::string + restore_value: no + - id: status_karty + type: std::string + initial_value: '"Przyłóż kartę"' + - id: pokazuj_pracownika + type: bool + initial_value: 'false' - font: - - file: "gfonts://Roboto" - id: font_mala - size: 11 - glyphs: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyząćęłńóśźżĄĆĘŁŃÓŚŹŻ!?:-., " - - file: "gfonts://Roboto" - id: font_duza - size: 18 - glyphs: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyząćęłńóśźżĄĆĘŁŃÓŚŹŻ!?:-., " +font: + - file: "gfonts://Roboto" + id: font_mala + size: 11 + glyphs: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyząćęłńóśźżĄĆĘŁŃÓŚŹŻ!?:-., " + - file: "gfonts://Roboto" + id: font_duza + size: 18 + glyphs: "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyząćęłńóśźżĄĆĘŁŃÓŚŹŻ!?:-., " - i2c: - sda: GPIO21 - scl: GPIO22 +i2c: + sda: GPIO21 + scl: GPIO22 - spi: - id: bus_spi - clk_pin: GPIO18 - mosi_pin: GPIO23 - miso_pin: GPIO19 +spi: + id: bus_spi + clk_pin: GPIO18 + mosi_pin: GPIO23 + miso_pin: GPIO19 - rc522_spi: - spi_id: bus_spi - cs_pin: GPIO5 - reset_pin: GPIO4 - update_interval: 500ms - on_tag: - then: - - display.page.show: strona_glowna - - homeassistant.tag_scanned: !lambda 'return x;' +rc522_spi: + spi_id: bus_spi + cs_pin: GPIO5 + reset_pin: GPIO4 + update_interval: 500ms + on_tag: + then: + - display.page.show: strona_glowna # Wybudź ekran przy skanowaniu + - homeassistant.tag_scanned: !lambda 'return x;' - switch: - - platform: gpio - pin: GPIO13 - id: przekaznik_bramy - name: "Przekaźnik Bramy" - restore_mode: ALWAYS_OFF - on_turn_on: - - delay: 3s - - switch.turn_off: przekaznik_bramy +switch: + - platform: gpio + pin: GPIO13 + id: przekaznik_bramy + name: "Przekaźnik Bramy" + restore_mode: ALWAYS_OFF + on_turn_on: + - delay: 3s + - switch.turn_off: przekaznik_bramy - script: - - id: timer_ekranu - mode: restart - then: - - delay: 3s - - globals.set: { id: pokazuj_pracownika, value: 'false' } - - lambda: 'id(status_karty) = "Przyłóż kartę";' - - component.update: moj_ekran - - delay: 60s - - display.page.show: strona_pusta +script: + - id: timer_ekranu + mode: restart + then: + - delay: 3s + - globals.set: { id: pokazuj_pracownika, value: 'false' } + - lambda: 'id(status_karty) = "Przyłóż kartę";' + - component.update: moj_ekran + - delay: 60s # Punkt 2: Czekaj minutę i wygaś ekran + - display.page.show: strona_pusta - display: - - platform: ssd1306_i2c - model: "SSD1306 128x64" - address: 0x3C - id: moj_ekran - update_interval: 1s - pages: - - id: strona_glowna - lambda: |- - if (!id(pokazuj_pracownika)) { - it.print(64, 32, id(font_duza), TextAlign::CENTER, id(status_karty).c_str()); - } else { - it.print(64, 0, id(font_mala), TextAlign::TOP_CENTER, "Karta przyjęta"); - it.print(64, 28, id(font_duza), TextAlign::TOP_CENTER, id(g_imie).c_str()); - it.print(64, 48, id(font_duza), TextAlign::TOP_CENTER, id(g_nazwisko).c_str()); - } - - id: strona_pusta - lambda: |- - ; +display: + - platform: ssd1306_i2c + model: "SSD1306 128x64" + address: 0x3C + id: moj_ekran + update_interval: 1s + pages: + - id: strona_glowna + lambda: |- + if (!id(pokazuj_pracownika)) { + it.print(64, 32, id(font_duza), TextAlign::CENTER, id(status_karty).c_str()); + } else { + it.print(64, 0, id(font_mala), TextAlign::TOP_CENTER, "Karta przyjęta"); + it.print(64, 28, id(font_duza), TextAlign::TOP_CENTER, id(g_imie).c_str()); + it.print(64, 48, id(font_duza), TextAlign::TOP_CENTER, id(g_nazwisko).c_str()); + } + - id: strona_pusta # Punkt 2: Pusta strona dla oszczędności OLED + lambda: |- + ; - light: - - platform: binary - name: "Terminal LED Zielona" - output: out_zielona - id: led_zielona - - platform: binary - name: "Terminal LED Czerwona" - output: out_czerwona - id: led_czerwona +light: + - platform: binary + name: "Terminal LED Zielona" + output: out_zielona + id: led_zielona + - platform: binary + name: "Terminal LED Czerwona" + output: out_czerwona + id: led_czerwona - output: - - platform: gpio - pin: GPIO12 - id: out_zielona - - platform: gpio - pin: GPIO14 - id: out_czerwona +output: + - platform: gpio + pin: GPIO12 + id: out_zielona + - platform: gpio + pin: GPIO14 + id: out_czerwona - text_sensor: - - platform: homeassistant - id: pracownik_text - entity_id: input_text.ostatni_pracownik_przy_bramie - on_value: - then: - - lambda: |- - std::string s = x; - if (s.empty() || s == "Przyłóż kartę") return; - id(moj_ekran)->show_page(id(strona_glowna)); - if (s == "Brak Uprawnień") { - id(pokazuj_pracownika) = false; - id(status_karty) = "Brak Uprawnień"; - } else { - std::vector v; - std::string temp = ""; - for (char c : s) { - if (c == ' ') { if (!temp.empty()) { v.push_back(temp); temp = ""; } } - else { temp += c; } - } - if (!temp.empty()) v.push_back(temp); - if(v.size() >= 2) { id(g_imie) = v[0]; id(g_nazwisko) = v[1]; } - else { id(g_imie) = s; id(g_nazwisko) = ""; } - id(pokazuj_pracownika) = true; - } - id(timer_ekranu)->execute(); - - component.update: moj_ekran - \ No newline at end of file +text_sensor: + - platform: homeassistant + id: pracownik_text + entity_id: input_text.ostatni_pracownik_przy_bramie + on_value: + then: + - lambda: |- + std::string s = x; + if (s.empty() || s == "Przyłóż kartę") return; + + id(moj_ekran)->show_page(id(strona_glowna)); // Wybudź ekran przy nowej wiadomości + + if (s == "Brak Uprawnień") { + id(pokazuj_pracownika) = false; + id(status_karty) = "Brak Uprawnień"; + } else { + std::vector v; + std::string temp = ""; + for (char c : s) { + if (c == ' ') { if (!temp.empty()) { v.push_back(temp); temp = ""; } } + else { temp += c; } + } + if (!temp.empty()) v.push_back(temp); + if(v.size() >= 2) { id(g_imie) = v[0]; id(g_nazwisko) = v[1]; } + else { id(g_imie) = s; id(g_nazwisko) = ""; } + id(pokazuj_pracownika) = true; + } + id(timer_ekranu)->execute(); + - component.update: moj_ekran