O NasBlogKontakt
ProduktyESP CoverPierwsze Uruchomienie

Automatyzacje Wewnętrzne

Przygotuj swoje pierwsze automatyzacje wewnętrzne!

Zaawansowana automatyzacja z Multi-Click

Dla bardziej zaawansowanej kontroli możesz użyć funkcji on_multi_click w ESPHome. Pozwala to na przypisanie różnych akcji do krótkich i długich naciśnięć przełącznika monostabilnego, dając pełną kontrolę nad ruchem i pochyłem lameli za pomocą zaledwie dwóch przycisków.

Oto zalecana konfiguracja, która zapewnia intuicyjne sterowanie:

binary_sensor:
  # Przycisk GÓRA
  - platform: gpio
    name: 'IN_01'
    id: in_01
    pin:
      pcf8574: pcf_inputs_1to14
      number: 0
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 2s # Długie naciśnięcie
        then:
          - lambda: |
              auto call = id(cover_01).make_call();
              if(id(cover_01).current_operation == COVER_OPERATION_IDLE){
                call.set_command_open();
              }
              else {
                call.set_command_stop();
              }
              call.perform();
      - timing:
          - ON for at most 0.4s # Krótkie naciśnięcie
          - OFF for at least 0.1s
        then:
          - lambda: |
              auto call = id(cover_01).make_call();
              if (id(cover_01).current_operation == COVER_OPERATION_IDLE){
                    if (id(cover_01).tilt < 1.0){
                      float new_tilt = std::min(id(cover_01).tilt + 0.1f, 1.0f);
                      call.set_tilt(new_tilt);
                    }
              }
              else {
                call.set_command_stop();
              }
              call.perform();

  # Przycisk DÓŁ
  - platform: gpio
    name: 'IN_02'
    id: in_02
    pin:
      pcf8574: pcf_inputs_1to14
      number: 1
      mode:
        input: true
      inverted: true
    on_multi_click:
      - timing:
          - ON for at least 2s # Długie naciśnięcie
        then:
          - lambda: |
              auto call = id(cover_01).make_call();
              if(id(cover_01).current_operation == COVER_OPERATION_IDLE){
                call.set_command_close();
              }
              else {
                call.set_command_stop();
              }
              call.perform();
      - timing:
          - ON for at most 0.4s # Krótkie naciśnięcie
          - OFF for at least 0.1s
        then:
          - lambda: |
              auto call = id(cover_01).make_call();
              if (id(cover_01).current_operation == COVER_OPERATION_IDLE){
                    if (id(cover_01).tilt > 0.0){
                      float new_tilt = std::max(id(cover_01).tilt - 0.1f, 0.0f);
                      call.set_tilt(new_tilt);
                    }
              }
              else {
                call.set_command_stop();
              }
              call.perform();

Jak to działa:

Ta konfiguracja wykorzystuje dwa przyciski (IN_01 do ruchu w górę i IN_02 do ruchu w dół) do sterowania jedną roletą (cover_01).

  • Długie naciśnięcie (przycisk góra/dół):

    • Jeśli roleta jest w spoczynku, rozpoczyna ruch w górę lub w dół.
    • Jeśli roleta jest już w ruchu, zatrzymuje się.
  • Krótkie naciśnięcie (przycisk góra/dół):

    • Jeśli roleta jest w spoczynku, dostosowuje pochylenie lameli o 10%. Jest to idealne rozwiązanie dla żaluzji.
    • Jeśli roleta jest w ruchu, zatrzymuje się.