Brama garażowa jednoprzyciskowa

Najpierw kilka słów wyjaśnienia. Brama garażowa - jeden przycisk wyzwalający. W momencie kiedy Zamknięta - naciśnięcie otwiera ją, kiedy Otwarta - naciśnięcie zamyka. W trakcie ruchu naciśnięcie przycisku zatrzymuje ją, ponowne nacięcie po zatrzymaniu rozpoczyna bieg w przeciwną stronę do tego z przed zatrzymania. Wstawiony i podłączony LoraTap/Tuya - Garage Opener. I w zasadzie na defaulcie działa. Oczywiście zachciało mi się poprawek (np. aby nie było dwóch przycisków, i aby zachowanie wyzwolenia było zgodne z opisem wyżej).
Za słaby jestem w YAML jednak opisawszy temat AI otrzymałem pliki razem z opisami co jest czym i co robi. I tak moja brama ma przycisk ją uruchamiający (w HA jest to switch.garaz_brama_trigger) oraz czujnik kontaktowy (w HA jest to binary_sensor.garaz_brama_garage_door_contact). Brama otwiera się i zamyka ok. 15 sekund.
Stworzyło trzy pliki:

  1. input_select.yaml
input_select:
  stan_bramy_garazowej:
    name: Stan bramy garażowej
    options:
      - "zamknięta"
      - "otwarta"
      - "otwiera się"
      - "zamyka się"
      - "zatrzymana"
    initial: "zamknięta"
    icon: "mdi:garage"

  1. cover.yaml
- platform: template
  covers:
    drzwi_garazowe:
      friendly_name: "Drzwi garażowe"
      value_template: "{{ is_state('input_select.stan_bramy_garazowej', 'zamknięta') == false }}"
      open_cover:
        service: script.otworz_lub_zatrzymaj_brame
      close_cover:
        service: script.otworz_lub_zatrzymaj_brame
      stop_cover:
        service: script.otworz_lub_zatrzymaj_brame
      icon_template: >-
        {% if is_state('input_select.stan_bramy_garazowej', 'otwarta') %}
          mdi:garage-open
        {% elif is_state('input_select.stan_bramy_garazowej', 'zamknięta') %}
          mdi:garage
        {% elif is_state('input_select.stan_bramy_garazowej', 'otwiera się') %}
          mdi:garage-alert
        {% elif is_state('input_select.stan_bramy_garazowej', 'zamyka się') %}
          mdi:garage-alert
        {% else %}
          mdi:garage-stop
        {% endif %}

  1. script.yaml
otworz_lub_zatrzymaj_brame:
  alias: "Otwórz lub zatrzymaj bramę"
  sequence:
    - choose:
        - conditions:
            - condition: state
              entity_id: binary_sensor.czujnik_bramy_garazowej
              state: "off"  # Brama zamknięta
          sequence:
            - service: switch.turn_on
              entity_id: switch.przycisk_bramy_garazowej
            - service: input_select.select_option
              data:
                entity_id: input_select.stan_bramy_garazowej
                option: "otwiera się"
            - delay: "00:00:10"  # Czas otwierania
            - service: input_select.select_option
              data:
                entity_id: input_select.stan_bramy_garazowej
                option: "otwarta"
        - conditions:
            - condition: state
              entity_id: binary_sensor.czujnik_bramy_garazowej
              state: "on"  # Brama otwarta
          sequence:
            - service: switch.turn_on
              entity_id: switch.przycisk_bramy_garazowej
            - service: input_select.select_option
              data:
                entity_id: input_select.stan_bramy_garazowej
                option: "zamyka się"
            - delay: "00:00:10"  # Czas zamykania
            - service: input_select.select_option
              data:
                entity_id: input_select.stan_bramy_garazowej
                option: "zamknięta"
  mode: single

I jest tak, że prawie (!) to działa… bo po jakimś czasie przestaje… ale w sumie prośba o pomoc jest tak, że nie wiem dlaczego (AI po meczeniu mówi, że błąd musi być w innej części konfiguracji… co jest dziwne bo nie ma innej części) w kilku miejscach pojawia się komentarz HA

String does not mach the patter of "LEGACY_SYNTAX"

(np. w cover.yaml przy

open_cover:
        service: script.otworz_lub_zatrzymaj_brame

czy script.yaml
przy

         sequence:
            - service: switch.turn_on

i

           - service: input_select.select_option
 

A to już przerasta mnie (co zrozumiałe) i AI… może ktoś z Was coś doradzi.

I tego własnie nie rozumiem? :wink: Po co utrudniasz sobie życie? Co takiego zyskasz mając jeden przycisk zamiast dwóch?
Najprostsza i najbardziej efektywna obsługa rolet/bramy za pomocą dwóch przycisków:

  • przycisk góra i przycisk dół (z lock)
  • naciśnięcie przycisku powoduje ruch z danej pozycji do pozycji skrajnej - do pełnego otwarcia/zamknięcia)
  • naciśnięcie dowolnego przycisku w czasie ruchu zawsze zatrzymuje urządzenie.

Dlaczego najbardziej efektywna: po wystarczy raz nacisnąć przycisk aby zamknąć roletę, nie trzeba stać przy przycisku.

Oki to może wytłumaczę inaczej bardziej… podstawowa definicja ma jeden feler który wqurza mnie niemiłosiernie - mianowicie jeśli w trakcie ruchu bramy wcisnę przycisk to przy kolejnym wciśnięciu idzie ona w drugą stronę co powoduje, że HA i HK też melduje, że brama jest Otwarta lub Zamknięta a w rzeczywistości jest odwrotnie. Co ciekawe czujnik kontaktowy bramy dobrze pokazuje ale już sam wyzwalacz w jednym i drugim systemie nie.

Do you have any safety feature built into your garage door? You know when it hits something and stops in mid-flights and moves back a bit.

I do use that feature a lot, when I just forgot something when started to close it. So it stops and I can leave and come back and press the button again to close it properly.

It would just mess up your whole concept.

I think that you are overthinking the whole garage door thing. You want to see that it is closing or opening for 15 seconds, so you are trying to implement some complex logic to get it right.

For me the state that it is open or closed is more important, in-between the garage door can do whatever it does. But to help you, I would suggest a different approach. I guess we are talking about a panelled garage door, and not a sliding gate or similar, but it can work with both, just needs some attention to the details.

So SmartThings used to have a Open/Close sensor called a Multipurpose sensor.

It had an open/close function with a magnet, but it had also a 3 axis tilt sensor and a 3 axis accelerometer.

SmartThings advertised it that it can work without the magnet as a garage door sensor, as it detects the difference between horizontal and vertical position, so you could just stick it to the door and when it is horizontal, then it is closed, when it is vertical, then it is open. But also the accelerometer sensor could be used to define the direct of the motion as general. So you could use it to define when it is opening and when it is closing.

Nowadays it is hard to get hold of these sensors and to be honest, they consume a lot of batteries. But there are other sensors like this (vibration sensor) from different manufacturers, like Xiaomi on the Aqara line.

The Aqara one provides all these values through Z2M:

{
    "angle": 7,
    "angle_x": -2,
    "angle_x_absolute": 92,
    "angle_y": 3,
    "angle_y_absolute": 87,
    "angle_z": 86,
    "battery": 0,
    "device_temperature": 26,
    "last_seen": "2024-10-10T17:19:47+02:00",
    "linkquality": 138,
    "power_outage_count": 12382,
    "strength": 17,
    "vibration": false,
    "voltage": 2835,
    "x_axis": -31,
    "y_axis": 67,
    "z_axis": 1176
}

I guess you could make an automation when the values are changing direction you could assume which way the garage door is moving to get it correctly aligned. And you could use the open/close sensor for ultimate positions. (If you use 2 of those, then you can clearly know when the garage door is fully open. One in a position where it goes “closed”, when the garage doors is fully open.)

But generally I think that it is just an overkill what you are trying to achieve for 15 seconds of motion.

(A camera in the garage pointing to the garage door is more useful…)

Co prawda pisane na kolanie z telefonu ale spróbuj dodać taki wpis w cover.yaml i zrób restart HA.

Powinna pojawić się encja “Garaż Przycisk”

Jak dodasz do pulpitu jako “button” to przy kliknięciu na encje powinna działać sekwencyjnie otwórz/stop/zamknij

Jak dodasz do pulpitu jako “cover” to masz 3 przyciski góra/stop/dół

U mnie w ten sposób działa
Może być źle z wyświetlany stan na przycisku ale to sprawdź i później się przerobi.

- platform: template

  covers:
    door1:
      friendly_name: 'Garaż Przycisk'
      device_class: garage
      open_cover:
        service: switch.toggle
        entity_id: switch.garaz_brama_trigger
      close_cover:
        service: switch.toggle
        entity_id: switch.garaz_brama_trigger
      stop_cover:
        service: switch.toggle
        entity_id: switch.garaz_brama_trigger
      icon_template: >-
          {% if is_state("binary_sensor.garaz_brama_garage_door_contact, "on") %}
          mdi:garage-open-variant
          {% else %}
          mdi:garage-variant
          {% endif %}

Efekt podobnie jak u mnie - wszystko jest OK do momentu kiedy pozwoli się bramie dojechać do końca. Jeśli w HK w trakcie jazdy wyzwolę przycisk to zaczyna się imba. Od razy melduje, że zamknięte i kafelek się zmienia choć brama stoi.

Coś czuje, że albo zostanę przy starym rozwiązaniu (default) albo kupię inny napęd.

Edit:
Acha ciekawi mnie dlaczego często w configu się to pojawia (LEGACY_SYNTAX):

Spróbuj zamienić “switch.toggle” na “switch.on” i sprawdź.

Wszystkie działają tak samo więc nic to nie zmienia.

Nie taniej kupić (zrobić) sterownik?
Mam to zrobione na przekaźniku Wifi z tasmotą. Podłączyłem dwa kontaktrony jako czujniki skrajnych położeń otwarte/zamknięte. Inaczej brama się nie “odnajdzie” w swoim położeniu.
W położenie pośrednim sygnalizowane jest jako “brama w ruchu”. Jeśli bardzo się upierasz to możesz dodać czyjnik prądu silnika wtedy otrzymasz dokładną informację o ruch i kierunku.
Jeden button do sterowania i sygnalizacji.

brama

2 polubienia
action: switch.toggle
target:
  entity_id:

Wersje HA 2024.8 2024.9 wprowadziły zmiany, service zostało zamienione na action w wersji 2024.10 action został zmieniony na actions
trigger na triggers. O ile automatyzacje zostaną naprawione automatycznie w tle, to dla templates chyba to się nie odnosi, przez jakiś czasz stare service będzie jeszcze działało. Warto więc dostosować wszystko do nowego formatu.

Jeżeli plik przechodzi Walidację YAML tymi błędami bym się nie przejmował i nie próbował ich naprawiać w wewnętrznym edytorze HA, czasami przynosi to opłakane skutki.

1 polubienie