tlačítka

www
Odpovědět
JaC
Nováček na fóru
Nováček na fóru
Příspěvky: 3
Registrován: 03. červen 2022, 14:20

tlačítka

Příspěvek od JaC »

Ahoj, měl bych dotaz, jak správně používat tlačítka

potřebuji pro ovládání světel použít tlačítka na ESP32 - 1x krátký stisk, 2x krátký stisk a dlouhý stisk

používate něco takovéto:

Kód: Vybrat vše

  - platform: gpio
    id: tl_01 # tlacitko TL-01
    name: "Tlačítko TL01" # tlacitko TL-01
    pin:
      number: 39
      inverted: true
      mode: 
        input: true

    on_click:
      # kratky stisk
      - min_length: 50ms # default je 50ms
        max_length: 500ms # default je 350ms
        then:
        - light.toggle: sv_01 # svetlo SV01

      # dlouhy stisk
      - min_length: 500ms # default je 50ms
        max_length: 3000ms # default je 350ms
        then:
        - light.toggle: sv_02 # svetlo SV02

    on_double_click:
      # dvojity kratky stisk
      - min_length: 50ms # default je 50ms
        max_length: 500ms # default je 350ms
        then:
        - light.turn_off: sv_01 # svetlo SV01
        - light.turn_off: sv_02 # svetlo SV02


nebo používáte "button:" - jak u něj dlouhý stisk? Nebo něco úplně jiného?

Dík

Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 3461
Registrován: 30. září 2020, 20:33
Dal poděkování: 174 poděkování
Dostal poděkování: 373 poděkování

Re: tlačítka

Příspěvek od Pete30 »

Chtělo by to více informací, světla budou ovládané z esp GPIO přes nějaké relé nebo jak ?
Output platform_gpio nebude vidět v HA, switch platform_gpio ano, jen upozorňuji ;)
Popiš svoji představu. Jinak ten tvůj částečný kód by měl být asi ok.
Sice to nepoužívám, ale mám tu cca 20 běžících node esp tak to snad nějak spácháme :D

U toho tlačítka esp nepůjdou nastavit stisky, ale jen čas jak dlouho má bý aktivní.
Pokud nejsem přítomen tak jsem na rybách ;)

JaC
Nováček na fóru
Nováček na fóru
Příspěvky: 3
Registrován: 03. červen 2022, 14:20

Re: tlačítka

Příspěvek od JaC »

Děkuji za odpověď.
Problém je, že dvojitý stisk právě moc nefunguje, tedy je to náchylné na časy stisku a mezery. Proto byl můj dotaz, zda se to takto používá, nebo je na "double click" něco jiného.

Zkusím se trochu rozepsat o mojí představě, pokud to bude dlouhé, tak se omlouvám. :)
Na začátek bych řekl, že jsem postarší nadšenec samouk, který moc nevládne angličtinou, takže co google přeloží blbě, tak nepochopím. Na HA a ESPHome jsem narazil cca před měsícem a nadchlo mě to. Tak jsem v práci našel vyřazené Barco Clickshare R9861006BEU, doplnil 4GB RAM a 128GB mSATA SSD (z nějakého vyřazeného notebooku) a nainstaloval.

Při rekonstrukci bytu (před pár lety) jsem k většině vypínačů dotáhl jedno UTP a většina světel vede samostatným kabelem také do rozvaděče (nebo tak jde přepojit). Moje představa je vyměnit stávající vypínače za tlačítka a "s nějakou logikou/automatizací" ovládat světla v bytě. Logikou myslím např. dlouhým stiskem zhasnout všechna světla, atd. Mé hravé já by chtělo mít možnost ovládat úplně vše, moje žena chce jednoduše rozsvítit bez manuálu ke každému vypínači. Pro ovládání většiny světel bych chtěl využít jedno ESP-WROOM-32 https://www.laskakit.cz/iot-esp-32s-2-4 ... 1--cp2102/ a logiku mít v něm, pro případ, že si HA rozhrabu, tak předpokládám, že to pojede dál. Zatím uvažuji o připojení tlačítek (v tuto chvíli 14) přímo na ESP (s pull-up). Pro ovládání světel (v tuto chvíli 13) mám I2C modul SX1509 https://esphome.io/components/sx1509.html a dále přes SSR relé https://www.aliexpress.com/item/4000205 ... 180246nXDo. Další rozšíření v budoucnu by šlo už přes HA, jako např. stávajícím tlačítkem ovládat stojací lampu přes SONOFF Basic, nebo stávající světla ovládat nějakým ZIGBEE bezdrátovým tlačítkem. Případně se mi líbí SONOF NS panel https://sonoff.tech/product/smart-wall-swtich/nspanel/.

Zatím mám tedy nainstalované HA s ESPHome a na stole modul ESP32 propojený s tlačítky (na stole, né ty ve zdi), modul SX1509 s výstupem na LED.

začátek kódu mám toto:

Kód: Vybrat vše

esphome:
  name: "esp32_svetla" # nezapomen zmenit
esp32:
  board: esp32dev

# Enable logging
logger:

# Enable Home Assistant API
api:
ota:
  
wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphome-Web-007378"
    password: "yg0P1IiqXK8N"
captive_portal:

# i2c
i2c:
  sda: 21 # je potreba zjistit
  scl: 22 # je potreba zjistit
  scan: true
  id: i2c_bus

sx1509:
  - id: sx1509_io_expander
    address: 0x3E
pro tlačítka toto:

Kód: Vybrat vše

# tlacitka
binary_sensor:
  - platform: gpio
    id: tl_00 # tlacitko TL-00, kabel K-01 oranzova + bilooranzova + kabel K-03 oranzova + bilooranzova
    name: "TL00 - koupelna u dveří vlevo nahoře" # tlacitko TL-00, kabel K-01 oranzova + bilooranzova + kabel K-03 oranzova + bilooranzova
    pin:
      number: 36
      inverted: true
      mode: 
        input: true
        # pullup: true
    on_click:
      # kratky stisk
      - min_length: 50ms # default je 50ms
        max_length: 500ms # default je 350ms
        then:
        - light.toggle: sv_12 # SV12 - koupelna sprcha strop
        - if:
            condition:
              light.is_on: sv_12
            then:
              - light.turn_on: sv_14 # SV14 - koupelna zrcadlo
              - light.turn_on: sv_15 # SV15 - koupelna sprcha LED pasek nika
            else:
              - light.turn_off: sv_14 # SV14 - koupelna zrcadlo
              - light.turn_off: sv_15 # SV15 - koupelna sprcha LED pasek nika
      # dlouhy stisk
      - min_length: 500ms # default je 50ms
        max_length: 3000ms # default je 350ms
        then:
        - light.turn_off: sv_12 # SV12 - koupelna sprcha strop
        - light.turn_off: sv_14 # SV14 - koupelna zrcadlo
        - light.turn_off: sv_15 # SV15 - koupelna sprcha LED pasek nika
    on_double_click:
      # dvojity kratky stisk
      - min_length: 50ms # default je 50ms
        max_length: 500ms # default je 350ms
        then:
        - light.toggle: sv_12 # SV12 - koupelna sprcha strop
pro světla toto:

Kód: Vybrat vše

# vystup
output:
  - platform: gpio
    id: expander_00 # SV01 - svetlo chodba centralni
    pin:
      sx1509: sx1509_io_expander
      number: 0 # Use pin number
      mode:
        output: true
      inverted: false
  
  - platform: gpio
    id: expander_01 # SV11 - svetlo koupelna centralni
    pin:
      sx1509: sx1509_io_expander
      number: 1 # Use pin number
      mode:
        output: true
      inverted: false
a pro ovládání z HA toto:

Kód: Vybrat vše

# svetla
light:
  - platform: binary
    name: "SV01 - chodba centralni"
    output: expander_00
    id: sv_01
  - platform: binary
    name: "SV11 - koupelna centralni"
    output: expander_01
    id: sv_11
Vše se opakuje pro každé světlo a každé tlačítko.

Uživatelský avatar
Pete30
Moderátor
Moderátor
Příspěvky: 3461
Registrován: 30. září 2020, 20:33
Dal poděkování: 174 poděkování
Dostal poděkování: 373 poděkování

Re: tlačítka

Příspěvek od Pete30 »

JaC píše: 04. červen 2022, 09:43 Na začátek bych řekl, že jsem postarší nadšenec samouk, který moc nevládne angličtinou, takže co google přeloží blbě, tak nepochopím. Na HA a ESPHome jsem narazil cca před měsícem a nadchlo mě to. Tak jsem v práci našel vyřazené Barco Clickshare R9861006BEU, doplnil 4GB RAM a 128GB mSATA SSD (z nějakého vyřazeného notebooku) a nainstaloval.
O věku to není, jsme na tom stejně hlavně to nadšení je důležité a to ženská nikdy nepochopí :D
Jinak ten kód vypadá ok co jsem se zběžně díval a předpokládám že to funguje kromě on_double_click ?
Nezkoušel jsi si pohrát s časem min, max dát tam větší časové rozsahy například max 1s a min také zvednout protože může vzniknout efekt zákmitu tlačítka řádově v ms, který nejsi schopen zaregistrovat?
Pokud to chceš provozovat nezávisle na HA pomocí Esphome asi nic jiného neexistuje
Pokud nejsem přítomen tak jsem na rybách ;)

JaC
Nováček na fóru
Nováček na fóru
Příspěvky: 3
Registrován: 03. červen 2022, 14:20

Re: tlačítka

Příspěvek od JaC »

Ano, zatím funguje, vlastně i ten on_double_click funguje, je ty časy. :)

Tak mě napadá, nějak vytvořit proměnou, případně nějakou entitu, kterou bych z HA dokázal online nastavit čas pro min_length: proměnná_1 a max_length: proměnná_2. Aby se dalo jednoduše zkoušet, který čas je vyhovující (následně entitu z kódu vyhodit).
Zatím netuším, jak - zkusíte mě nasměrovat?

zatím jsem použil substitution, abych časy mohl nastavovat na jednom místě:
na začátek

Kód: Vybrat vše

substitutions:
  min_cas_kratkeho_stisku: "50ms" # default je 50ms
  max_cas_kratkeho_stisku: "500ms" # default je 350ms
  min_cas_dlouheho_stisku: "500ms" # default je 500ms
  max_cas_dlouheho_stisku: "3000ms" # default je 2000ms
a tlačítka:

Kód: Vybrat vše

# tlacitka
binary_sensor:
  - platform: gpio
    id: tl_00 # tlacitko TL-00, kabel K-01 oranzova + bilooranzova + kabel K-03 oranzova + bilooranzova
    name: "TL00 - koupelna u dveří vlevo nahoře" # tlacitko TL-00, kabel K-01 oranzova + bilooranzova + kabel K-03 oranzova + bilooranzova
    pin:
      number: 36
      inverted: true
      mode: 
        input: true
        # pullup: true
    on_click:
      # kratky stisk
      - min_length: "${min_cas_kratkeho_stisku}" # cas nastaven v susbstitutions:
        max_length: "${max_cas_kratkeho_stisku}" # cas nastaven v susbstitutions:
        then:
        - light.toggle: sv_12 # SV12 - koupelna sprcha strop
        - if:
            condition:
              light.is_on: sv_12
            then:
              - light.turn_on: sv_14 # SV14 - koupelna zrcadlo
              - light.turn_on: sv_15 # SV15 - koupelna sprcha LED pasek nika
            else:
              - light.turn_off: sv_14 # SV14 - koupelna zrcadlo
              - light.turn_off: sv_15 # SV15 - koupelna sprcha LED pasek nika
      # dlouhy stisk
      - min_length: "${min_cas_dlouheho_stisku}" # cas nastaven v susbstitutions:
        max_length: "${max_cas_dlouheho_stisku}" # cas nastaven v susbstitutions:
        then:
        - light.turn_off: sv_12 # SV12 - koupelna sprcha strop
        - light.turn_off: sv_14 # SV14 - koupelna zrcadlo
        - light.turn_off: sv_15 # SV15 - koupelna sprcha LED pasek nika
    on_double_click:
      # dvojity kratky stisk
      - min_length: "${min_cas_kratkeho_stisku}" # cas nastaven v susbstitutions:
        max_length: "${max_cas_kratkeho_stisku}" # cas nastaven v susbstitutions:
        then:
        - light.toggle: sv_12 # SV12 - koupelna sprcha strop

Odpovědět

Zpět na „ESPHome“