OpenGarage - open-source Wifi garage opener

Wow that was exactly it … Wild goose chase for that …

For my edification, why does the all caps work but not the lower case? Is that a product of how the opengarage coding functions specifically?

I’m having trouble understanding how the mqtt cover device works, but the up, down, stop buttons on the cover entity are payload_open, close and stop? Is it possible to send a payload command as a tap_action?

For example, if I am displaying the status of the garage door as a glance card, is it possible to use a tap_action to send the “up” command?

It is a product of how computers work (except some parts of windows like important things such as command and file names.)

You wouldn’t by chance be able to point me in the direction of how I would utilize this template for two OpenGarage units, would you? I’ve been trying to create a second .yaml file in the Packages folder, changing up some of the names, but there are apparently duplicate entity names being created somewhere and I’m not sure where / how. The error I keep seeing in the log is:

This entity ("sensor.garage_vehicle_state") does not have a unique ID, therefore its settings cannot be managed from the UI

That is not an error.

I’d think you would change the MQTT topic for the second unit, use a unique name different from that of the first unit. That, plus changing the names for the second unit in the package yaml file should do it.

The warning you’re seeing is, I think, HA telling you, “This device you’re trying to manage didn’t come from a built-in integration which would usually give each device/entity a unique ID, and allow you to manage certain aspects of it from the UI. As a result, you need to manage it in yaml instead.”

sorry guys, there are a lot of posts =) Can someone help me to set up OpenGarage in HA with video in the same section? I have done it in separate sections, but would like to see the overview, like a button, then I press it and it gives me new screen with video, open/close buttons etc (if its possible). Somethin like in the 6ths post

You need to learn a little lovelace I think. Lovelace - Home Assistant

Based on my experience I can recommend the following ESPHome config that uses the OG hardware and pin layout.

Very fast response and rock solid.

He had the code in several files. I consolidated the files into a single esphome yaml file to suit my needs.


#https://github.com/gabe565/esphome-configs/blob/c3d0aa4e88b63ea05b97cdc2309f7d69b0b36738/opengarage/packages/opengarage.yaml
substitutions:
  # For Home Assistant entity_id, hostname, etc.
  device_id: garage_door
  # Pretty name to show for entities in Home Assistant
  device_name: Garage Door

  # entity_id of the vehicle in Home Assistant
  vehicle_id: car
  # Pretty name of the vehicle in Home Assistant
  vehicle_name: Car in Garage

  # Length of time that the relay should stay active.
  # Some garage doors need the relay to stay active for longer.
  # Longer values can slow down when button presses respond.
  # For example, if you open the door, then quickly try to stop/close it,
  relay_click_time: 500ms

  # Height at which the door is considered open.
  # Should be slightly larger than the distance from the ceiling to the door.
  # Must be lower than the car threshold.
  # Entered in cm. 
  door_threshold: '72'

  # Height at which the car is considered to be home.
  # Should be slightly larger than the distance from the ceiling to the top of the car.
  # Must be higher than the door threshold.
  # Entered in cm.
  car_threshold: '175'

  # Length of time time between distance sensor updates.
  # Lower values will detect changes more quickly, but could result in increased noise.
  distance_update_interval: 500ms
  # Length of time to leave the pulse pin active
  distance_pulse_time: 20us

  # SR04 sensors can be noisy. The median is taken to prevent noisy data.
  # Higher values will slow down the distance sensor's responsiveness,
  # but will result in more consistent data.
  # See https://esphome.io/components/sensor/index.html#median
  distance_median_window_size: '31'
  # When the first value should be sent. Must be lower than the distance_median_window_size.
  distance_median_send_first_at: '5'

  # Sound the alarm on open/close
  # RTTL format references:
  #  - https://esphome.io/components/rtttl.html?highlight=rtttl#common-beeps
  #  - https://en.wikipedia.org/wiki/Ring_Tone_Transfer_Language
  open_alarm: 'false'
  open_alarm_rtttl: 'two_short:d=4,o=6,b=100:c,p,c'
  # open_alarm_rtttl: 'long:d=1,o=6,b=100:c'
  # open_alarm_rtttl: 'open_pulse:d=16,o=5,b=100:c,c6,p.,c,c6,p.,c,c6,p.'
  # open_alarm_rtttl: 'open_slide:d=128,o=5,b=100:c,d,e,g,4c6.,4p,c,d,e,g,4c6.,4p'

  close_alarm: 'false'
  close_alarm_rtttl: 'two_short:d=4,o=5,b=100:c,p,c'
  # close_alarm_rtttl: 'long:d=1,o=5,b=100:c'
  # close_alarm_rtttl: 'close_pulse:d=16,o=5,b=100:c6,c,p.,c6,c,p.,c6,c,p.'
  # close_alarm_rtttl: 'close_slide:d=128,o=5,b=100:c6,g,e,d,4c.,4p,c6,g,e,d,4c.,4p'
  
esphome:
  name: opengarage
  platform: ESP8266
  board: esp01_1m

wifi:
  ssid: 'your-ssid'
  password: 'yoursupersecretpassword'

  manual_ip:
    static_ip: x.x.x.x #device ip
    gateway: x.x.x.x #gateway ip
    subnet: 255.255.255.0
    dns1: 8.8.8.8
    dns2: 8.8.4.4

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "OpenGarage Hotspot"
    password: "yourfallbackhotspotpassword"

captive_portal:

logger:
  level: error

ota:
#  password: 

binary_sensor:
  - platform: status
    name: $device_name Status
  - platform: gpio
    pin:
      number: GPIO0
      mode: INPUT_PULLUP
    id: physical_button
    on_press:
      - switch.turn_on: relay
  - platform: status
    name: $device_name Status

  - platform: template
    name: $vehicle_name
    device_class: presence
    lambda: |-
      if ($car_threshold < id(distance).state) {
        return false;
      }
      if ($door_threshold < id(distance).state) {
        return true;
      }
      return {};
    on_state:
      - then:
          - homeassistant.service:
              service: device_tracker.see
              data:
                dev_id: $vehicle_id
                host_name: $vehicle_name
              data_template:
                location_name: '{{ location_name }}'
              variables:
                location_name: 'return x ? "home" : "not_home";'

cover:
  - platform: template
    name: $device_name
    id: garage_door_cover
    device_class: garage
    lambda: 'return id(distance).state < $door_threshold ? COVER_OPEN : COVER_CLOSED;'
    open_action:
      - if:
          condition:
            lambda: 'return id(garage_door_cover).position == COVER_CLOSED;'
          then:
            - if:
                condition:
                  lambda: 'return $open_alarm;'
                then:
                  - rtttl.play:
                      rtttl: $open_alarm_rtttl
                  - wait_until:
                      not: rtttl.is_playing
            - switch.turn_on: relay
    close_action:
      - if:
          condition:
            lambda: 'return id(garage_door_cover).position == COVER_OPEN;'
          then:
            - if:
                condition:
                  lambda: 'return $close_alarm;'
                then:
                  - rtttl.play:
                      rtttl: $close_alarm_rtttl
                  - wait_until:
                      not: rtttl.is_playing
            - switch.turn_on: relay

sensor:
  - platform: ultrasonic
    trigger_pin: GPIO12
    echo_pin: GPIO14
    name: $device_name Distance
    id: distance
    update_interval: $distance_update_interval
    unit_of_measurement: cm
    pulse_time: $distance_pulse_time
    timeout: 3m
    filters:
      # Sets the value to the max if the sensor times out
      - lambda: 'return isnan(x) ? 3 : x;'
      # Take median of the last 5 values
      - median:
          window_size: $distance_median_window_size
          send_first_at: $distance_median_send_first_at
      # Convert m to cm
      - multiply: 100
      - delta: 1
  - platform: wifi_signal
    name: $device_name RSSI
    update_interval: 5min
    filters:
      - median:
          window_size: 5

status_led:
  pin:
    number: GPIO2
    inverted: true

switch:
  - platform: gpio
    pin: GPIO15
    id: relay
    restore_mode: ALWAYS_OFF
    on_turn_on:
      # Only pulse on for $relay_click_time
      - delay: $relay_click_time
      - switch.turn_off: relay

output:
  - platform: esp8266_pwm
    pin: GPIO13
    id: buzzer_pwm

rtttl:
  output: buzzer_pwm

api:
  services:
    - service: play_rtttl
      variables:
        song_str: string
      then:
        - rtttl.play:
            rtttl: !lambda 'return song_str;'
2 Likes

EDIT - updated to quote the question directed to the immediate post before this. Not sure why clicking “reply” on that particular post didn’t link properly.

@born2fly Does configuring OG with your recommended ESPHome config help with the timeout issues I get using the latest OG official firmware and configs? e.g. here’s an example of what I regularly see in my logs and it seems like this has gotten worse since OG became a native HA integration.

Logger: homeassistant.components.opengarage
Source: helpers/update_coordinator.py:193
Integration: OpenGarage (documentation, issues)
First occurred: February 1, 2022, 23:00:14 (10 occurrences)
Last logged: 07:10:48

Timeout fetching opengarage data```

Does what help? (There are 264 previous posts in this thread, and we don’t know who you are responding to.)

I had issues with the way HA was interacting with OG, it kept freezing mine every day or two. If the polling stopped, the freezing stopped. I went to MQTT and just had the OG push their states to HA via that.

I recall there were threads using OG hardware but loads ESPHome. Would that be an option?

Probably, its just and ESP chip. Never looked into it myself as the mqtt worked fine.

It works. Whether it is an option depends on what you want to do.

I deployed mine as MQTT to begin with and have not had any issues…

Hi, I’m hoping to make one of these. I see the original plan calls for a NodeMcu V2 and others have used V3. Is it still recommended to use V2 or is the V3 a better choice now?

It has been working flawlessly for me using the ESPHOME config.

As long as the pinouts are identical it should make no difference.

1 Like

I used this diagram that was shared by another user.

1 Like