Skip to content

Commit

Permalink
add initial firmware config for GDOv2-Q (on Arduino)
Browse files Browse the repository at this point in the history
  • Loading branch information
heythisisnate committed Dec 27, 2023
1 parent 05ad02b commit 04f03cf
Show file tree
Hide file tree
Showing 2 changed files with 264 additions and 3 deletions.
15 changes: 12 additions & 3 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,7 @@ jobs:
run: |
esphome compile garage-door-GDOv1-S.yaml
build_path=.esphome/build/garage-door/.pioenvs/garage-door
fname=konnected-esphome-garage-door-GDOv1-S-${{ steps.garage-door-gdov1-s-version.outputs.data }}.bin
fname=konnected-esphome-garage-door-GDOv1-S-${{ steps.garage-door-gdov1-s-version.outputs.data }}.bin
cp $build_path/firmware-factory.bin assets/$fname
echo "fname=$fname" >> $GITHUB_OUTPUT
Expand All @@ -117,7 +117,16 @@ jobs:
run: |
esphome compile garage-door-GDOv2-S.yaml
build_path=.esphome/build/garage-door/.pioenvs/garage-door
fname=konnected-esphome-garage-door-GDOv2-S-${{ steps.garage-door-gdov2-s-version.outputs.data }}.bin
fname=konnected-esphome-garage-door-GDOv2-S-${{ steps.garage-door-gdov2-s-version.outputs.data }}.bin
cp $build_path/firmware-factory.bin assets/$fname
echo "fname=$fname" >> $GITHUB_OUTPUT
- name: Build Garage Door GDOv2-Q
id: build-garage-door-gdov2-q
run: |
esphome compile garage-door-GDOv2-Q.yaml
build_path=.esphome/build/garage-door/.pioenvs/garage-door
fname=konnected-esphome-garage-door-GDOv2-Q-${{ steps.garage-door-gdov2-s-version.outputs.data }}.bin
cp $build_path/firmware-factory.bin assets/$fname
echo "fname=$fname" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -162,7 +171,7 @@ jobs:
ESP8266_IMAGE_URI: https://konnected-io.s3.us-east-2.amazonaws.com/builds/esphome/${{ steps.build-alarm-panel-esp8266.outputs.fname }}
ESP32_IMAGE_URI: https://konnected-io.s3.us-east-2.amazonaws.com/builds/esphome/${{ steps.build-alarm-panel-pro-esp32-wifi.outputs.fname }}

- name: Build Manifest for Garage Door
- name: Build Manifest for GDO White
if: github.event.release
run: |
ruby ./scripts/update-espwebtools-manifests.rb
Expand Down
252 changes: 252 additions & 0 deletions garage-door-GDOv2-Q.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,252 @@
####
##
## Konnected Garage Door Opener blaQ (GDOv2-Q)
## Firmware configuration for ESPHome
##
## filename: garage-door-esp32.yaml
## GitHub: https://github.com/konnected-io/konnected-esphome
## Buy Konnected hardware: https://konnected.io
## Help & Support: https://[email protected] (support is provided for purchasers of Konnected hardware)
##
## Copyright© 2023 Konnected Inc.
##
## Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
## files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
## modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
## is furnished to do so, subject to the following conditions:
##
## The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
##
## THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
## OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
## LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
## IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
##
####

####
# INTRODUCTION
#
# This ESPHome based firmware configuration is designed for the Konnected Garage Door Opener GDOv2-S which is built on the ESP32-S3-MINI.
# The Garage Door Opener retrofits an older style traditional garage door opener with a dry-contact trigger and has the
# following features which are included as packages below:
#
# 1. Wired contact sensor for detecting open/closed state of garage door
# 2. Optical range sensor for detecting open/closed state of garage door
# 3. Emulates a garage door opener button wired to a dry contact relay to open/close the garage door.
# 4. Adds a Garage Door "Cover" entity that is exposed to Home Assistant. The cover entity incorporates the state of the
# garage door and controls to open/close/stop it.
# 5. Flashes an onboard LED and beeps an onboard piezo sounder as a warning before automatically closing.

####
# GENERAL SETTINGS
# Customize these variables to your preferences and needs
# more: https://esphome.io/guides/configuration-types.html#substitutions

####
# GENERAL SETTINGS
# Customize these variables to your preferences and needs
# more: https://esphome.io/guides/configuration-types.html#substitutions
substitutions:

####
# NAME
# By default, the name of the ESPHome device is "garage-door-xxxxxx" where xxxxxx is a unique identifier. The device's
# hostname on your network is also defined by the name, defaulting to "garage-door-xxxxxx.local". Edit this variable to
# customize the name and hostname. Note: only lowercase characters, numbers and hyphen(-) are allowed.
name: garage-door
friendly_name: Garage Door Opener
project_name: konnected.garage-door-gdov2-q
project_version: "0.0.1"
garage_door_cover_name: Garage Door

####
# GARAGE DOOR OPENER MOMENTARY DURATION
# Duration to make the relay contact closure for the garage door opener button circuit.
garage_door_opener_momentary_duration: 300ms

####
# OPEN GARAGE DOOR DISTANCE MARGIN OF ERROR
# The margin of error (+/-) in meters from the value above to consider the garage door in the open position.
open_garage_door_distance_margin_of_error: "0.05"

####
# GARAGE DOOR CLOSE WARNING DURATION
# Duration to blink the warning LED and beep the buzzer before the garage door closes.
garage_door_close_warning_duration: 5s

####
# ADDITIONAL SETTTINGS
warning_beep_pulse_time: 100ms
warning_beep_pause_time: 130ms
warning_beep_internal_only: "true"
warning_beep_shared: "false"
sensor_debounce_time: 200ms
range_sensor_polling_time: 2500ms
range_sensor_debounce_time: 3s
blink_on_state: "true"

####
# INTERNAL MAPPINGS
# DO NOT EDIT these when using Konnected hardware
uart_tx_pin: GPIO1
uart_rx_pin: GPIO2
input_obst_pin: GPIO5
warning_beep_pin: GPIO4
warning_leds_pin: GPIO3
status_led: GPIO18

external_components:
- source:
type: git
url: https://github.com/ratgdo/esphome-ratgdo
refresh: 1s

####
# PACKAGES
# Each package includes a Garage Door Opener feature described
# Remove or comment out any packages that you do not need or want.
packages:

remote_package:
url: http://github.com/konnected-io/konnected-esphome
ref: master
refresh: 5min
files:

####
# CORE
# This package is required and sets up core ESPHome features.
- packages/core-esp32-s3.yaml

####
# WIFI
# Enables WiFi connectivity and diagnostics. Uncommet below to enable WiFi.
# wifi: !include packages/wifi.yaml
- packages/wifi.yaml

####
# WARNING LED
# Enables the onboard warning LED light, with strobe effect. Used to visually warn of garage door automatic closing.
# warning_led: !include packages/warning-led.yaml
- packages/warning-led.yaml

####
# PRE-CLOSE WARNING
# Enables a pleasant and customizable pre-close warning tone using the onboard piezo buzzer. Used to audibly
# warn of a garage door automatic closing.
- packages/buzzer-rtttl.yaml
- packages/pre-close-warning-tones.yaml

####
# STATUS LED
# Enables the onboard blue status LED as an activity/error indicator
# status_led: !include packages/status-led.yaml
- packages/status-led.yaml

####
# SELF-TEST
# Self test script used to validate the hardware post-assembly
# - packages/gdo-self-test.yaml

esp32:
framework:
type: arduino

ratgdo:
id: ratgdov25i
input_gdo_pin: ${uart_rx_pin}
output_gdo_pin: ${uart_tx_pin}
input_obst_pin: ${input_obst_pin}
on_sync_failed:
then:
- homeassistant.service:
service: persistent_notification.create
data:
title: "${friendly_name} sync failed"
message: "Failed to communicate with garage opener on startup; Check the ${friendly_name} Rolling code counter number entity history and set the entity to one number larger than the largest value in history. [ESPHome devices](/config/devices/dashboard?domain=esphome)"
notification_id: "esphome_ratgdov25i_gdo_sync_failed"

sensor:
- platform: ratgdo
id: gdo_openings
type: openings
entity_category: diagnostic
ratgdo_id: ratgdov25i
name: "Openings"
unit_of_measurement: "openings"
icon: mdi:open-in-app

lock:
- platform: ratgdo
id: gdo_lock_remotes
ratgdo_id: ratgdov25i
name: "Lock remotes"

binary_sensor:
- platform: ratgdo
type: motion
id: gdo_motion
ratgdo_id: ratgdov25i
name: "Motion"
device_class: motion
- platform: ratgdo
type: obstruction
id: gdo_obstruction
ratgdo_id: ratgdov25i
name: "Obstruction"
device_class: problem
- platform: ratgdo
type: button
id: gdo_button
ratgdo_id: ratgdov25i
name: "Button"
entity_category: diagnostic
- platform: ratgdo
type: motor
id: gdo_motor
ratgdo_id: ratgdov25i
name: "Motor"
device_class: running
entity_category: diagnostic

####
# DASHBOARD IMPORT
# Enables automatic discovery and upgrades via ESPHome Dashboard
# more: https://esphome.io/guides/getting_started_hassio.html
dashboard_import:
package_import_url: github://konnected-io/konnected-esphome/garage-door-GDOv2-S.yaml@master
import_full_config: false

####
# LOGGER
# more: https://esphome.io/components/logger.html
logger:
level: DEBUG
hardware_uart: UART0
logs:
ledc.output: INFO
vl53l0x: DEBUG
sensor: INFO
json: INFO
api: DEBUG

####
# NATIVE API
# Enables the native ESPHome API
# more: https://esphome.io/components/api.html
api:

####
# OTA UPDATES
# Enables over-the-air updates
# more: https://esphome.io/components/ota.html
ota:

improv_serial:

esp32_improv:
authorizer: false

web_server:
include_internal: true

0 comments on commit 04f03cf

Please sign in to comment.