Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev #40

Merged
merged 73 commits into from
Feb 2, 2025
Merged

Dev #40

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
ab41198
Update Changelog
AzonInc Nov 24, 2024
8a3bef7
Update Enclosure Files
AzonInc Nov 29, 2024
ee30d67
Update Schematic
AzonInc Nov 29, 2024
dd66e57
Add switch to turn off ring to open led status
AzonInc Dec 2, 2024
b97222a
Bump version
AzonInc Dec 2, 2024
9dbac48
Refactor doorbell event configuration to support per-button event tra…
Skaronator Jan 6, 2025
87836ac
Update Docs
AzonInc Jan 6, 2025
48ccb5a
Bump Version
AzonInc Jan 6, 2025
254e796
Use latest ESPHome version instead of dev
AzonInc Jan 6, 2025
0f33da0
Update Changelog
AzonInc Jan 6, 2025
16c5816
Update Readme
AzonInc Jan 7, 2025
0510464
Fix Door Call parser
AzonInc Jan 7, 2025
5893fc5
Add Debug Utilities to Dev Firmware
AzonInc Jan 7, 2025
75b73b2
Add more Debug Tools
AzonInc Jan 7, 2025
cc0bc2f
Remove obsolete Nuki Settings
AzonInc Jan 7, 2025
175b782
Allow configuration of entrance outdoor station
AzonInc Jan 12, 2025
51eb9e2
Add dev example fw
AzonInc Jan 12, 2025
fe0d36e
Fix missing address
AzonInc Jan 12, 2025
aebb929
Disable the BLE Server after provisioning
AzonInc Jan 13, 2025
af8308d
Update Changelog
AzonInc Jan 13, 2025
2816eae
Refactor command length
AzonInc Jan 13, 2025
dc7b9ce
Add PSRAM component
AzonInc Jan 13, 2025
04d9893
Remove Arduino sdk options
AzonInc Jan 13, 2025
90af313
Fix format_hex
AzonInc Jan 13, 2025
a2a3e21
Possible parser fix
AzonInc Jan 13, 2025
7787280
Add PSRAM flag by default
AzonInc Jan 13, 2025
42e9bfc
Improve logging
AzonInc Jan 13, 2025
a89a86d
Allow sending 32 bit commands forced
AzonInc Jan 13, 2025
d8d5436
Fix is_long_
AzonInc Jan 13, 2025
fbb7ea6
Switch to new Security Pin Action
AzonInc Jan 13, 2025
565566b
Fix Pin Entity Mode
AzonInc Jan 13, 2025
d5b0a22
Fix is_long string
AzonInc Jan 15, 2025
06541ef
Fix Debug: Search Mode
AzonInc Jan 16, 2025
c565fb2
Add device category retrieval and update model settings in documentation
AzonInc Jan 16, 2025
99a191f
Add support for additional device models and update documentation
AzonInc Jan 16, 2025
d6744a1
Update Changelog
AzonInc Jan 16, 2025
fd551dc
Add settings support for new models and update related documentation
AzonInc Jan 18, 2025
a50c7f3
Remove specific log restriction
AzonInc Jan 19, 2025
a1a43eb
Improve memory footprint for Nuki bridge addon
AzonInc Jan 19, 2025
9a2bb84
Add experimental update switch, separate framework options
AzonInc Jan 20, 2025
c8554cb
Update Docs
AzonInc Jan 20, 2025
7e6a889
Update model names and settings for TCS IVW511x and IVW521x
AzonInc Jan 21, 2025
52bd6ee
Add icons to debug utilities and Nuki pin
AzonInc Jan 21, 2025
02d671d
Update .gitignore files and add friendly name to TC BUS component test
AzonInc Jan 21, 2025
6558b4f
Add indoor station identification feature and update documentation
AzonInc Jan 22, 2025
38f4229
Add Support for TASTA (TC60, VIVO) Settings
AzonInc Jan 23, 2025
884a555
Update Changelog
AzonInc Jan 23, 2025
28f89e0
Fix Docs
AzonInc Jan 23, 2025
284ef0a
Add new firmware configuration files and examples for MQTT
AzonInc Jan 23, 2025
9880946
Fix Build
AzonInc Jan 23, 2025
0af01db
Fixes
AzonInc Jan 24, 2025
68e8b1a
Add firmware configuration files for backwards compatibility
AzonInc Jan 24, 2025
3d739c3
Add MQTT Command Topics
AzonInc Jan 24, 2025
9708066
Add Debug logs
AzonInc Jan 24, 2025
06ae3bf
Fix model detection and remove serial_number if not needed
AzonInc Jan 26, 2025
3592c6a
Add automatic intercom memory reading during boot and model identific…
AzonInc Jan 26, 2025
5f6371a
Refactor logging messages for consistency and clarity; update write_m…
AzonInc Jan 26, 2025
9dc084e
Add Timing Debug Logs (TC_DEBUG_TIMING)
AzonInc Jan 26, 2025
730f01a
Add random delay before sending commands
AzonInc Jan 27, 2025
769a107
Add diagnostic category
AzonInc Jan 27, 2025
04049e4
Debug logging
AzonInc Jan 27, 2025
31ba5db
Clean up unused Wi-Fi buffer configurations
AzonInc Jan 29, 2025
fbd8e2e
Update Docs
AzonInc Jan 31, 2025
bda545d
enable dev updates by default in dev fw
AzonInc Jan 31, 2025
c77c16a
Switch to Nuki master branch
AzonInc Jan 31, 2025
3414d33
Update Docs
AzonInc Jan 31, 2025
0a3688f
Test Workflow
AzonInc Jan 31, 2025
e56cf6d
Set dev version number dynamically
AzonInc Jan 31, 2025
e5e4ee4
Update Changelog
AzonInc Jan 31, 2025
7feaec7
Add summary
AzonInc Jan 31, 2025
e425a1a
Add more Details to Update Summary
AzonInc Jan 31, 2025
391d8c6
Add release url
AzonInc Jan 31, 2025
32e5e06
Update release text
AzonInc Feb 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file removed .github/images/pcbway_delivery.png
Binary file not shown.
Binary file added .github/images/pcbx_example.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 13 additions & 10 deletions .github/workflows/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,31 +28,34 @@ jobs:
echo "VERSION=${VERSION}" >> $GITHUB_ENV

- name: Update package.json version
if: github.ref == 'refs/heads/master'
if: github.ref_name == 'master'
working-directory: docs
run: |
sed -i "s/\"version\": \".*\"/\"version\": \"${VERSION}\"/" package.json

- name: Update package.json version
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
working-directory: docs
run: |
sed -i "s/\"version\": \".*\"/\"version\": \"${VERSION}-dev\"/" package.json
TIMESTAMP=$(date +%d%H%M)
sed -i "s/\"version\": \".*\"/\"version\": \"${VERSION}-dev.${TIMESTAMP}\"/" package.json

- name: Update example fw branch
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
working-directory: firmware/examples
run: |
sed -i 's/@master/@dev/g' *.example.yaml
BRANCH_NAME=${{ github.ref_name }}
sed -i "s/@master/@${BRANCH_NAME}/g" *.example.yaml

- name: Update docs branch
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
working-directory: docs
run: |
sed -i 's/@master/@dev/g' */guide/getting-started.md
sed -i 's/master/dev/g' */guide/enclosure/3d-printing.md
sed -i 's/@master/@dev/g' */reference/schematics.md
sed -i 's/@master/@dev/g' */guide/firmware/minimal.example.yaml
BRANCH_NAME=${{ github.ref_name }}
sed -i "s/@master/@${BRANCH_NAME}/g" */guide/getting-started.md
sed -i "s/master/${BRANCH_NAME}/g" */guide/enclosure/3d-printing.md
sed -i "s/@master/@${BRANCH_NAME}/g" */reference/schematics.md
sed -i "s/@master/@${BRANCH_NAME}/g" */guide/firmware/minimal.example.yaml

- name: Install dependencies
working-directory: docs
Expand Down
19 changes: 16 additions & 3 deletions .github/workflows/build-esphome.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,16 @@ on:
required: true
type: string
default: esp32
summary:
description: Summary of the release
required: false
type: string
default: Not available
url:
description: URL of the release
required: false
type: string
default: "https://github.com/AzonInc/Doorman/releases"

jobs:
prepare:
Expand Down Expand Up @@ -49,16 +59,19 @@ jobs:
- uses: actions/checkout@v4

- name: Change ESPHome project version to dev
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
run: |
VERSION=$(awk '/project:/, /version:/' firmware/base.yaml | grep 'version:' | awk '{print $2}' | sed 's/[",]//g')
sed -i '/^ project:/,/^ platformio_options:/s/^ version: .*/ version: "'"$VERSION"'-dev"/' firmware/base.yaml
TIMESTAMP=$(date +%d%H%M)
sed -i '/^ project:/,/^ platformio_options:/s/^ version: .*/ version: "'"$VERSION"'-dev.'"$TIMESTAMP"'"/' firmware/base.yaml

- uses: esphome/build-action@v4.0.1
- uses: esphome/build-action@v6.0.0
id: esphome-build
with:
yaml-file: ${{ matrix.file }}
version: ${{ inputs.esphome_version }}
release-url: ${{ inputs.url }}
release-summary: ${{ inputs.summary }}
complete-manifest: true

- name: Change Manifest Firmware Name
Expand Down
16 changes: 8 additions & 8 deletions .github/workflows/build-nightly.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13,22 +13,22 @@ jobs:
steps:
- uses: actions/checkout@v4

- name: Compile Stock (ESP32-S3) Firmware
uses: esphome/build-action@v4.0.1
- name: Build Doorman Stock for Home Assistant (ESP32-S3) Firmware
uses: esphome/build-action@v6.0.0
with:
yaml-file: firmware/doorman-stock.yaml
yaml-file: firmware/ha-doorman-stock.yaml
version: latest
complete-manifest: true

- name: Compile Nuki Bridge (ES32-S3) Firmware
uses: esphome/build-action@v4.0.1
- name: Build Doorman Nuki Bridge for Home Assistant (ESP32-S3) Firmware
uses: esphome/build-action@v6.0.0
with:
yaml-file: firmware/doorman-nuki-bridge.yaml
yaml-file: firmware/ha-doorman-nuki-bridge.yaml
version: latest
complete-manifest: true

- name: Compile Component Test (ESP8266) Firmware
uses: esphome/build-action@v4.0.1
- name: Build Component Test (ESP8266) Firmware
uses: esphome/build-action@v6.0.0
with:
yaml-file: firmware/tc-bus-component-8266.yaml
version: latest
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/bundle-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,27 +25,27 @@ jobs:

- name: Copy interactive BOM
run: cp pcb/bom/ibom.html output/

- name: Download Doorman Stock (ESP32-S3) artifact
- name: Download Doorman Stock for Home Assistant (ESP32-S3) artifact
uses: actions/download-artifact@v4
with:
name: firmware-doorman-stock
path: output/firmware/release

- name: Download Doorman Nuki Bridge (ESP32-S3) artifact
- name: Download Doorman Nuki Bridge for Home Assistant (ESP32-S3) artifact
uses: actions/download-artifact@v4
with:
name: firmware-doorman-nuki-bridge
path: output/firmware/release

- name: Upload Pages artifact
if: github.ref == 'refs/heads/master'
if: github.ref_name == 'master'
uses: actions/upload-pages-artifact@v3
with:
path: output

- name: Upload Assets Bundle
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
uses: actions/upload-artifact@v4
with:
name: asset-bundle
Expand Down
89 changes: 68 additions & 21 deletions .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,68 +24,115 @@ jobs:
name: Build Docs
uses: ./.github/workflows/build-docs.yml

prepare-release:
runs-on: ubuntu-latest
name: Prepare release data
outputs:
release_summary: ${{ steps.generate-summary.outputs.summary }}
release_url: ${{ steps.generate-summary.outputs.url }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0

- name: Generate Release Data
id: generate-summary
run: |
GITHUB_REF_NAME=${{ github.ref_name }}
SHA=${{ github.sha }}

URL="https://doorman.azon.ai/changelog/firmware"

if [[ "${GITHUB_REF_NAME}" == "master" ]]; then
SUMMARY="Kindly review the release notes for further details, as there may be some breaking changes."
elif [[ "${GITHUB_REF_NAME}" == dev* ]]; then
SUMMARY="Please note this is an experimental update (${GITHUB_REF_NAME}) and may contain unstable features. Details: $(git log -1 --pretty=%B), ${SHA}"
URL="https://doorman-dev.surge.sh/changelog/firmware"
else
SUMMARY=""
fi

# Encode special characters
SUMMARY="${SUMMARY//'%'/'%25'}"
SUMMARY="${SUMMARY//$'\n'/'%0A'}"
SUMMARY="${SUMMARY//$'\r'/'%0D'}"

echo "url=$URL" >> $GITHUB_OUTPUT
echo "summary=$SUMMARY" >> $GITHUB_OUTPUT

# Build stable firmware
build-doorman-stock-stable-firmware:
if: github.ref == 'refs/heads/master'
name: Build Doorman Stock (ESP32-S3) Firmware (stable)
if: github.ref_name == 'master'
name: Build Doorman Stock for Home Assistant (ESP32-S3) Firmware (stable)
uses: ./.github/workflows/build-esphome.yml
needs: prepare-release
with:
files: firmware/doorman-stock.yaml
files: firmware/ha-doorman-stock.yaml
name: AzonInc.Doorman
esphome_version: dev
esphome_version: latest
directory_name: doorman-stock
summary: ${{ needs.prepare-release.outputs.release_summary }}
url: ${{ needs.prepare-release.outputs.release_url }}

build-doorman-nuki-bridge-stable-firmware:
if: github.ref == 'refs/heads/master'
name: Build Doorman Nuki Bridge (ESP32-S3) Firmware (stable)
if: github.ref_name == 'master'
name: Build Doorman Nuki Bridge for Home Assistant (ESP32-S3) Firmware (stable)
uses: ./.github/workflows/build-esphome.yml
needs: prepare-release
with:
files: firmware/doorman-nuki-bridge.yaml
files: firmware/ha-doorman-nuki-bridge.yaml
name: AzonInc.Doorman-Nuki-Bridge
esphome_version: dev
esphome_version: latest
directory_name: doorman-nuki-bridge
summary: ${{ needs.prepare-release.outputs.release_summary }}
url: ${{ needs.prepare-release.outputs.release_url }}


# Build dev firmware
build-doorman-stock-dev-firmware:
if: github.ref != 'refs/heads/master'
name: Build Doorman Stock (ESP32-S3) Firmware (dev)
if: startsWith(github.ref_name, 'dev')
name: Build Doorman Stock for Home Assistant (ESP32-S3) Firmware (dev)
uses: ./.github/workflows/build-esphome.yml
needs: prepare-release
with:
files: firmware/doorman-stock.dev.yaml
files: firmware/ha-doorman-stock.dev.yaml
name: AzonInc.Doorman
esphome_version: dev
esphome_version: latest
directory_name: doorman-stock
summary: ${{ needs.prepare-release.outputs.release_summary }}
url: ${{ needs.prepare-release.outputs.release_url }}

build-doorman-nuki-bridge-dev-firmware:
if: github.ref != 'refs/heads/master'
name: Build Doorman Nuki Bridge (ESP32-S3) Firmware (dev)
if: startsWith(github.ref_name, 'dev')
name: Build Doorman Nuki Bridge for Home Assistant (ESP32-S3) Firmware (dev)
uses: ./.github/workflows/build-esphome.yml
needs: prepare-release
with:
files: firmware/doorman-nuki-bridge.dev.yaml
files: firmware/ha-doorman-nuki-bridge.dev.yaml
name: AzonInc.Doorman-Nuki-Bridge
esphome_version: dev
esphome_version: latest
directory_name: doorman-nuki-bridge

summary: ${{ needs.prepare-release.outputs.release_summary }}
url: ${{ needs.prepare-release.outputs.release_url }}

# Bundle all assets for Pages
bundle-assets-stable:
if: github.ref == 'refs/heads/master'
if: github.ref_name == 'master'
name: Create asset bundle (stable)
uses: ./.github/workflows/bundle-assets.yml
needs: [build-docs, build-doorman-stock-stable-firmware, build-doorman-nuki-bridge-stable-firmware]

bundle-assets-dev:
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
name: Create asset bundle (dev)
uses: ./.github/workflows/bundle-assets.yml
needs: [build-docs, build-doorman-stock-dev-firmware, build-doorman-nuki-bridge-dev-firmware]


# Deployment job
deploy-stable:
if: github.ref == 'refs/heads/master'
if: github.ref_name == 'master'
name: Deploy to Github Pages (stable)
environment:
name: github-pages
Expand All @@ -98,7 +145,7 @@ jobs:
uses: actions/deploy-pages@v4

deploy-dev:
if: github.ref != 'refs/heads/master'
if: startsWith(github.ref_name, 'dev')
name: Deploy to surge.sh (dev)
environment:
name: surge.sh
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,6 @@ TODOs.md
*.timestamp-*.mjs
__pycache__
.esphome
/*.yaml
/*.yaml
.esphome/
/secrets.yaml
13 changes: 4 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ The Doorman S3 isn't limited to these intercoms alone. With its integrated relay

If your intercom isn't a TCS, Koch, Niko, Scantron or Jung model but operates on a 2-wire bus within the 14-24V DC range, you might be able to implement other protocols. Additionally, you can monitor the voltage levels on older intercoms (14-24V), allowing you to trigger specific actions based on the voltage readings.

A big thanks to [PCBWay](https://pcbway.com) for sponsoring this project!
For more details on the manufacturing process, scroll down to the "Manufacturing" section.

## 🚀 Getting started
Expand Down Expand Up @@ -56,17 +55,13 @@ The repository is organized into the following directories:

## 🛠️ Manufacturing

<img src=".github/images/pcbway_delivery.png" alt="PCBWay Delivery" height="275">
<img src=".github/images/pcbx_example.png" alt="PCBX Delivery" height="275">

I was unsure which PCB manufacturer to choose, but fortunately, PCBWay reached out and offered to sponsor the PCB fabrication. I couldn't be happier with the results—the quality is exceptional, especially with the vibrant colors. Everything arrived in pristine condition, and sourcing parts was hassle-free. They even included two extra unpopulated PCBs.
A huge thanks to [PCBX](https://www.pcbx.com/?mtm_campaign=review&mtm_kwd=BD&mtm_source=flo) for manufacturing and sponsoring 10 awesome PCBs for this project! Your support means a lot to us, and your prices are seriously hard to beat. We're thrilled to have you on board!

I handled the soldering of the ESP modules myself using a heating plate, as I already had ESP32 modules at home.
If you're looking for a reliable PCB manufacturer for your own project, definitely check out [PCBX](https://www.pcbx.com/?mtm_campaign=review&mtm_kwd=BD&mtm_source=flo). While their production might take a little longer than some others, the unbeatable prices and super-easy part sourcing make it absolutely worth it. They handle everything for you!

PCBWay made the entire process straightforward and responsive. A special thanks to Liam and Lynne for their support throughout, especially given the numerous changes I made. Their patience and assistance were greatly appreciated.

If you're looking for a reliable, high-quality PCB manufacturer, I highly recommend [PCBWay](https://pcbway.com) :)

You can find all the neccessary files [here](https://github.com/AzonInc/doorman/tree/master/pcb).
You can find all the necessary files for manufacturing the Doorman-S3 [here](https://github.com/AzonInc/doorman/tree/master/pcb).

## 🙌 Contributing
If you'd like to contribute to the Doorman project, we welcome your involvement!\
Expand Down
Loading
Loading