1
0

Compare commits

...

116 Commits

32 changed files with 681 additions and 312 deletions

10
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,10 @@
FROM ghcr.io/home-assistant/devcontainer:addons
RUN \
apt-get update \
&& apt-get install -y --no-install-recommends \
python3-pip
COPY script/requirements.txt /
RUN pip install -r /requirements.txt

View File

@@ -0,0 +1,36 @@
{
"name": "ESPHome Home Assistant add-on devcontainer",
"image": "ghcr.io/esphome/devcontainer:addons",
"appPort": [
"7123:8123",
"7357:4357"
],
"postStartCommand": "bash devcontainer_bootstrap",
"runArgs": [
"-e",
"GIT_EDITOR=code --wait",
"--privileged"
],
"containerEnv": {
"WORKSPACE_DIRECTORY": "${containerWorkspaceFolder}"
},
"extensions": [
"timonwong.shellcheck",
"esbenp.prettier-vscode"
],
"mounts": [
"type=volume,target=/var/lib/docker"
],
"settings": {
"terminal.integrated.profiles.linux": {
"zsh": {
"path": "/usr/bin/zsh"
}
},
"terminal.integrated.defaultProfile.linux": "zsh",
"editor.formatOnPaste": false,
"editor.formatOnSave": true,
"editor.formatOnType": true,
"files.trimTrailingWhitespace": true
}
}

7
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,7 @@
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: daily
open-pull-requests-limit: 10

View File

@@ -6,18 +6,36 @@ on:
version:
description: The version to release
required: true
content:
description: The content of the release-notes
required: true
jobs:
create-release:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
- uses: actions/checkout@v3.3.0
- uses: actions/setup-python@v4
with:
python-version: '3.x'
- run: pip install -r script/requirements.txt
- run: script/bump-version.py ${{ github.event.inputs.version }}
- name: Write Beta changelog
run: |
cat > esphome-beta/CHANGELOG.md << 'EOF'
## ${{ github.event.inputs.version }}
${{ github.event.inputs.content }}
EOF
- name: Write Stable changelog
if: ${{ !contains(github.event.inputs.version, 'b') }}
run: |
cat > esphome/CHANGELOG.md << 'EOF'
## ${{ github.event.inputs.version }}
${{ github.event.inputs.content }}
EOF
- name: Commit version bump
id: commit_version
run: |
@@ -28,59 +46,14 @@ jobs:
git push
COMMIT=$(git rev-parse HEAD)
echo "::set-output name=commit_sha::${COMMIT}"
- if: ${{ contains(github.event.inputs.version, 'b') }}
name: Create Beta Release
uses: actions/create-release@v1
- name: Create a Release
uses: actions/create-release@v1.1.4
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.version }}
tag_name: ${{ github.event.inputs.version }}
release_name: ${{ github.event.inputs.version }}
body: 'See https://beta.esphome.io/changelog/index.html'
prerelease: true
body: ${{ github.event.inputs.content }}
prerelease: ${{ contains(github.event.inputs.version, 'b') }}
commitish: ${{ steps.commit_version.outputs.commit_sha }}
- if: ${{ !contains(github.event.inputs.version, 'b') }}
name: Create Stable Release
uses: actions/create-release@v1
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: v${{ github.event.inputs.version }}
release_name: ${{ github.event.inputs.version }}
body: 'See https://esphome.io/changelog/index.html'
prerelease: false
commitish: ${{ steps.commit_version.outputs.commit_sha }}
deploy-community-addons:
runs-on: ubuntu-latest
needs: [create-release]
steps:
- name: Publish beta release to community-addons repository
uses: peter-evans/repository-dispatch@v1.1.3
with:
token: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
repository: hassio-addons/repository-beta
event-type: update
client-payload: >
{
"addon": "esphome",
"name": "ESPHome",
"repository": "esphome/home-assistant-addon",
"version": "${{ github.event.inputs.version }}"
}
- if: ${{ !contains(github.event.inputs.version, 'b') }}
name: Publish stable release to community-addons repository
uses: peter-evans/repository-dispatch@v1.1.3
with:
token: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
repository: hassio-addons/repository
event-type: update
client-payload: >
{
"addon": "esphome",
"name": "ESPHome",
"repository": "esphome/home-assistant-addon",
"version": "${{ github.event.inputs.version }}"
}

View File

@@ -1,46 +0,0 @@
name: Update Community Repo
on:
workflow_dispatch:
inputs:
version:
description: The version to release
required: true
beta:
description: Whether to release a beta version
type: boolean
required: false
default: false
jobs:
deploy-community-addons:
runs-on: ubuntu-latest
steps:
- if: ${{ contains(github.event.inputs.version, 'b') || github.event.inputs.beta == 'true' }}
name: Publish beta release to community-addons repository
uses: peter-evans/repository-dispatch@v1.1.3
with:
token: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
repository: hassio-addons/repository-beta
event-type: update
client-payload: >
{
"addon": "esphome",
"name": "ESPHome",
"repository": "esphome/home-assistant-addon",
"version": "${{ github.event.inputs.version }}"
}
- if: ${{ !contains(github.event.inputs.version, 'b') }}
name: Publish stable release to community-addons repository
uses: peter-evans/repository-dispatch@v1.1.3
with:
token: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
repository: hassio-addons/repository
event-type: update
client-payload: >
{
"addon": "esphome",
"name": "ESPHome",
"repository": "esphome/home-assistant-addon",
"version": "${{ github.event.inputs.version }}"
}

View File

@@ -0,0 +1,41 @@
name: Build devcontainer image
on:
workflow_dispatch:
push:
branches:
- main
paths:
- .devcontainer/**
schedule:
- cron: '0 0 1 * *'
pull_request:
branches:
- main
paths:
- .devcontainer/**
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3.3.0
- name: Log in to the GitHub container registry
uses: docker/login-action@v2.1.0
if: github.event_name != 'pull_request'
with:
registry: ghcr.io
username: ${{ github.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v2.1.0
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2.4.1
- name: Build and Push
uses: docker/build-push-action@v4.0.0
with:
context: .
file: .devcontainer/Dockerfile
tags: ghcr.io/${{ github.repository_owner }}/devcontainer:addons
push: ${{ github.event_name != 'pull_request' }}
platforms: linux/amd64,linux/arm64

View File

@@ -19,9 +19,9 @@ jobs:
channel: dev
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@v2
uses: actions/checkout@v3.3.0
- name: 🛠 Setup Python
uses: actions/setup-python@v2
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: 🛠 Install dependencies
@@ -29,6 +29,6 @@ jobs:
- name: 🛠 Generate files from template
run: python script/generate.py ${{ matrix.channels.channel }}
- name: 🚀 Run Home Assistant Add-on Lint on ${{ matrix.channels.channel }}
uses: frenck/action-addon-linter@v2
uses: frenck/action-addon-linter@v2.11.0
with:
path: "./${{ matrix.channels.folder }}"

19
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,19 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "Start Home Assistant",
"type": "shell",
"command": "supervisor_run",
"group": {
"kind": "test",
"isDefault": true
},
"presentation": {
"reveal": "always",
"panel": "new"
},
"problemMatcher": []
}
]
}

View File

@@ -1 +1,76 @@
See https://esphome.io/changelog/index.html
## 2023.3.0b1
- socket: Format IPv4-mapped IPv6 addresses as regular IPv4 address [esphome#4382](https://github.com/esphome/esphome/pull/4382) by [@oxan](https://github.com/oxan)
- Bump frenck/action-yamllint from 1.3.1 to 1.4.0 [esphome#4289](https://github.com/esphome/esphome/pull/4289) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Bump pyupgrade from 3.3.0 to 3.3.1 [esphome#4160](https://github.com/esphome/esphome/pull/4160) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Bump black from 22.12.0 to 23.1.0 [esphome#4375](https://github.com/esphome/esphome/pull/4375) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Improve tuya network status command [esphome#4415](https://github.com/esphome/esphome/pull/4415) by [@Rjevski](https://github.com/Rjevski)
- Gracefully reject vacuum map upload requests [esphome#4414](https://github.com/esphome/esphome/pull/4414) by [@Rjevski](https://github.com/Rjevski)
- Fixed PlatformIO Build on DEV [esphome#4422](https://github.com/esphome/esphome/pull/4422) by [@Expaso](https://github.com/Expaso)
- Bump platformio from 6.1.5 to 6.1.6 [esphome#4341](https://github.com/esphome/esphome/pull/4341) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Bump pylint from 2.15.10 to 2.16.2 [esphome#4426](https://github.com/esphome/esphome/pull/4426) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Bump aioesphomeapi from 13.1.0 to 13.3.1 [esphome#4427](https://github.com/esphome/esphome/pull/4427) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Add concurrency limit to ci-docker [esphome#4407](https://github.com/esphome/esphome/pull/4407) by [@jesserockz](https://github.com/jesserockz)
- Add final job so branch protection can require matrix ci steps [esphome#4432](https://github.com/esphome/esphome/pull/4432) by [@jesserockz](https://github.com/jesserockz)
- Deep Sleep capable ports for ESP32S3 [esphome#4230](https://github.com/esphome/esphome/pull/4230) by [@LeDominik](https://github.com/LeDominik)
- Initialize all fields in ESPTime in PCF85063 [esphome#4439](https://github.com/esphome/esphome/pull/4439) by [@oxan](https://github.com/oxan)
- Bump zeroconf from 0.47.1 to 0.47.3 [esphome#4437](https://github.com/esphome/esphome/pull/4437) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Automate syncing device classes with HA [esphome#4438](https://github.com/esphome/esphome/pull/4438) by [@oxan](https://github.com/oxan)
- NeoPixel - Add support for ESP32-S3 [esphome#4435](https://github.com/esphome/esphome/pull/4435) by [@ajacques](https://github.com/ajacques)
- add SUB_BINARY_SENSOR macro to binary sensor [esphome#4447](https://github.com/esphome/esphome/pull/4447) by [@regevbr](https://github.com/regevbr)
- add SUB_TEXT_SENSOR macro to text sensor [esphome#4448](https://github.com/esphome/esphome/pull/4448) by [@regevbr](https://github.com/regevbr)
- Simplify sensor schema generation [esphome#4462](https://github.com/esphome/esphome/pull/4462) by [@balloob](https://github.com/balloob)
- add SUB_NUMBER macro and schema to number [esphome#4449](https://github.com/esphome/esphome/pull/4449) by [@regevbr](https://github.com/regevbr)
- add SUB_BUTTON macro and ability to button schema to define the class [esphome#4450](https://github.com/esphome/esphome/pull/4450) by [@regevbr](https://github.com/regevbr)
- Simplify number_schema function [esphome#4467](https://github.com/esphome/esphome/pull/4467) by [@jesserockz](https://github.com/jesserockz)
- Simplify button_schema function [esphome#4468](https://github.com/esphome/esphome/pull/4468) by [@jesserockz](https://github.com/jesserockz)
- Simplify binary_sensor_schema function [esphome#4469](https://github.com/esphome/esphome/pull/4469) by [@jesserockz](https://github.com/jesserockz)
- Add configurable color datapoint [esphome#4383](https://github.com/esphome/esphome/pull/4383) by [@irtimaled](https://github.com/irtimaled) (breaking-change)
- Add internal_temperature component [esphome#4330](https://github.com/esphome/esphome/pull/4330) by [@Mat931](https://github.com/Mat931) (new-integration)
- Move remaining SENSOR_SCHEMA to use sensor_schema() [esphome#4471](https://github.com/esphome/esphome/pull/4471) by [@jesserockz](https://github.com/jesserockz)
- Allow specifying target and current visual steps for climate [esphome#4440](https://github.com/esphome/esphome/pull/4440) by [@jesserockz](https://github.com/jesserockz)
- Bump aioesphomeapi from 13.3.1 to 13.4.0 [esphome#4472](https://github.com/esphome/esphome/pull/4472) by [@dependabot[bot]](https://github.com/apps/dependabot)
- toshiba: add support for quiet fan mode [esphome#4283](https://github.com/esphome/esphome/pull/4283) by [@MichaelMure](https://github.com/MichaelMure)
- Bump esptool from 4.4 to 4.5 [esphome#4428](https://github.com/esphome/esphome/pull/4428) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Support Mopeka Standard LPG tank bluetooth sensor [esphome#4351](https://github.com/esphome/esphome/pull/4351) by [@Fabian-Schmidt](https://github.com/Fabian-Schmidt) (new-integration)
- fix library override logic [esphome#4474](https://github.com/esphome/esphome/pull/4474) by [@mzakharo](https://github.com/mzakharo)
- Sprinkler "v2" updates [esphome#4159](https://github.com/esphome/esphome/pull/4159) by [@kbx81](https://github.com/kbx81) (breaking-change)
- add person sensor (SEN21231) from usefulsensors [esphome#4454](https://github.com/esphome/esphome/pull/4454) by [@shreyaskarnik](https://github.com/shreyaskarnik) (new-integration)
- Initial stab at importing idf components [esphome#4000](https://github.com/esphome/esphome/pull/4000) by [@jesserockz](https://github.com/jesserockz)
- add kuntze component [esphome#4411](https://github.com/esphome/esphome/pull/4411) by [@ssieb](https://github.com/ssieb) (new-integration)
- Add Haier climate component [esphome#4001](https://github.com/esphome/esphome/pull/4001) by [@Yarikx](https://github.com/Yarikx) (new-integration)
- Bump esp-idf to 4.4.3 via platformio/espressif32 @ 5.3.0 [esphome#4254](https://github.com/esphome/esphome/pull/4254) by [@bdraco](https://github.com/bdraco)
- Add energy to pzemdc [esphome#3626](https://github.com/esphome/esphome/pull/3626) by [@andreashergert1984](https://github.com/andreashergert1984)
- Update esp32 esp-idf dev and latest version numbers [esphome#4479](https://github.com/esphome/esphome/pull/4479) by [@jesserockz](https://github.com/jesserockz)
- [ExternalRAMAllocator] Use same `heap_caps_malloc` parameter as `ps_malloc`. [esphome#4484](https://github.com/esphome/esphome/pull/4484) by [@Fabian-Schmidt](https://github.com/Fabian-Schmidt)
- Lock scheduler items while modifying them [esphome#4410](https://github.com/esphome/esphome/pull/4410) by [@oxan](https://github.com/oxan)
- Move Font glyphs to SPI RAM. [esphome#4485](https://github.com/esphome/esphome/pull/4485) by [@Fabian-Schmidt](https://github.com/Fabian-Schmidt)
- Run CI on merge group [esphome#4489](https://github.com/esphome/esphome/pull/4489) by [@jesserockz](https://github.com/jesserockz)
- Fix parallel invocations of repeat action [esphome#4480](https://github.com/esphome/esphome/pull/4480) by [@oxan](https://github.com/oxan)
- Make test3 use huge_app [esphome#4488](https://github.com/esphome/esphome/pull/4488) by [@jesserockz](https://github.com/jesserockz)
- Change variable "skip_updates" and "skip_updates_counter" type from "uint8_t" to "uint16_t" [esphome#4487](https://github.com/esphome/esphome/pull/4487) by [@GitforZhangXL](https://github.com/GitforZhangXL)
- Fix copy-pasta mistake [esphome#4492](https://github.com/esphome/esphome/pull/4492) by [@jesserockz](https://github.com/jesserockz)
- Add int16 to codegen [esphome#4507](https://github.com/esphome/esphome/pull/4507) by [@jesserockz](https://github.com/jesserockz)
- Update __init__.py [esphome#4514](https://github.com/esphome/esphome/pull/4514) by [@dashkhaneh](https://github.com/dashkhaneh)
- Remove idf components before checking if any in config [esphome#4506](https://github.com/esphome/esphome/pull/4506) by [@jesserockz](https://github.com/jesserockz)
- substitutions: Don't warn when passwords look like a substitution [esphome#4161](https://github.com/esphome/esphome/pull/4161) by [@tljuniper](https://github.com/tljuniper)
- Fix typo [esphome#4515](https://github.com/esphome/esphome/pull/4515) by [@oxan](https://github.com/oxan)
- implement pairing for bluetooth proxy [esphome#4475](https://github.com/esphome/esphome/pull/4475) by [@jagheterfredrik](https://github.com/jagheterfredrik)
- Bump docker dependencies [esphome#4526](https://github.com/esphome/esphome/pull/4526) by [@jesserockz](https://github.com/jesserockz)
- Bump aioesphomeapi from 13.4.0 to 13.5.0 [esphome#4525](https://github.com/esphome/esphome/pull/4525) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Ensure component is ready before update. [esphome#4523](https://github.com/esphome/esphome/pull/4523) by [@Fabian-Schmidt](https://github.com/Fabian-Schmidt)
- climate: add on_control callbacks [esphome#4511](https://github.com/esphome/esphome/pull/4511) by [@nwf](https://github.com/nwf)
- FS3000 sensor [esphome#4502](https://github.com/esphome/esphome/pull/4502) by [@kahrendt](https://github.com/kahrendt) (new-integration)
- Bump esptool from 4.5 to 4.5.1 [esphome#4497](https://github.com/esphome/esphome/pull/4497) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Add support for multiple devices in bme680_bsec [esphome#3550](https://github.com/esphome/esphome/pull/3550) by [@bisbastuner](https://github.com/bisbastuner)
- Bump pytest from 7.2.1 to 7.2.2 [esphome#4505](https://github.com/esphome/esphome/pull/4505) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Bump pylint from 2.16.2 to 2.16.4 [esphome#4524](https://github.com/esphome/esphome/pull/4524) by [@dependabot[bot]](https://github.com/apps/dependabot)
- Add absolute humidity component [esphome#4519](https://github.com/esphome/esphome/pull/4519) by [@DAVe3283](https://github.com/DAVe3283) (new-integration)
- Add ability to await safe mode in codegen [esphome#4529](https://github.com/esphome/esphome/pull/4529) by [@oxan](https://github.com/oxan)
- sn74hc165 fixes [esphome#4457](https://github.com/esphome/esphome/pull/4457) by [@jesserockz](https://github.com/jesserockz) (breaking-change)
- Add AS7341 spectral color sensor [esphome#4331](https://github.com/esphome/esphome/pull/4331) by [@mrgnr](https://github.com/mrgnr) (new-integration)
- Fix ethernet driver setting gpio 5 high when no power pin defined [esphome#4531](https://github.com/esphome/esphome/pull/4531) by [@jesserockz](https://github.com/jesserockz)
- Use PSRam for BLE scan results. [esphome#4486](https://github.com/esphome/esphome/pull/4486) by [@Fabian-Schmidt](https://github.com/Fabian-Schmidt)
- Bump esp-idf to 4.4.4 [esphome#4528](https://github.com/esphome/esphome/pull/4528) by [@bdraco](https://github.com/bdraco)
- Added pzemdc reset energy action [esphome#4481](https://github.com/esphome/esphome/pull/4481) by [@KG3RK3N](https://github.com/KG3RK3N)

View File

@@ -1,44 +0,0 @@
{
"advanced": true,
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "Beta version of ESPHome add-on",
"hassio_api": true,
"host_network": true,
"image": "ghcr.io/esphome/esphome-hassio-{arch}",
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome (beta)",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome-beta",
"stage": "experimental",
"uart": true,
"url": "https://beta.esphome.io/",
"version": "2022.2.3"
}

42
esphome-beta/config.yaml Normal file
View File

@@ -0,0 +1,42 @@
---
url: https://beta.esphome.io/
arch:
- amd64
- armv7
- aarch64
hassio_api: true
auth_api: true
host_network: true
ingress: true
ingress_port: 0
panel_icon: mdi:chip
uart: true
ports:
6052/tcp: null
map:
- ssl:ro
- config:rw
discovery:
- esphome
schema:
status_use_ping: bool?
streamer_mode: bool?
home_assistant_dashboard_integration: bool?
default_compile_process_limit: int(1,)?
ssl: bool?
certfile: str?
keyfile: str?
relative_url: str?
leave_front_door_open: bool?
backup_exclude:
- '*/*/'
init: false
name: ESPHome (beta)
version: 2023.3.0b1
slug: esphome-beta
description: Beta version of ESPHome add-on
image: ghcr.io/esphome/esphome-hassio
stage: experimental
advanced: true
options:
home_assistant_dashboard_integration: false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,67 @@
---
configuration:
certfile:
name: Certificate file
description: >-
The certificate file to use for SSL. Note that this file must
exist in the /ssl/ folder.
default_compile_process_limit:
name: Default compile process limit
description: >-
The default compile process limit. This is the maximum number of
simultaneous compile processes that ESPHome will run.
esphome_fork:
name: Install ESPHome from a fork or branch
description: >-
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is
the PR number, or you can specify the username of the fork owner and
branch `username:branch` which assumes the repository is named `esphome`
still.
If you need to test the latest commit on dev branch before the image is
updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to
date with ESPHome dev or the add-on **will not start**.
home_assistant_dashboard_integration:
name: Home Assistant Dashboard Integration
description: >-
Enables/Disables the ESPHome dashboard integrating with Home Assistant
for automatic configuration of devices and device updates. If you use
multiple version of the ESPHome add-on, make sure it is enabled on a
single add-on only.
keyfile:
name: Private key file
description: >-
The private key file to use for SSL. Note that this file must
exist in the /ssl/ folder.
leave_front_door_open:
name: Disable external authentication
description: >-
Disables external authentication when having opened the add-on
on an external port. **WARNING**: This is a security risk!
relative_url:
name: Relative URL
description: >-
Host the ESPHome dashboard under a relative URL, so that it can be
integrated into existing web proxies like NGINX under a relative URL.
Defaults to `/`.
ssl:
name: SSL
description: >-
Enables/Disables SSL (HTTPS) on the web interface.
status_use_ping:
name: Use ping for status
description: >-
By default the dashboard uses mDNS to check if nodes are online. This does
not work across subnets unless your router supports mDNS forwarding
or avahi. Enabling this option will use ICMP ping to check if nodes are
online.
streamer_mode:
name: Streamer mode
description: >-
Enables/Disables streamer mode, which makes ESPHome hide all
potentially private information. So for example WiFi (B)SSIDs (which could
be used to find your location), usernames, etc.
network:
6052/tcp: Web interface (to use without Home Assistant)

View File

@@ -1,40 +1,31 @@
# Home Assistant Community Add-on: ESPHome
# ESPHome DEV add on
## Installation
This is **development** version of the ESPHome add on.
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant add-on.
To deploy production nodes please use mainstream release add on.
1. Search for the “ESPHome” add-on in the Supervisor add-on store.
2. Press install to download the add-on and unpack it on your machine. This can take some time.
3. Optional: If you're using SSL/TLS certificates and want to encrypt your communication to this add-on, please enter `true` into the `ssl` field and set the `fullchain` and `certfile` options accordingly.
4. Start the add-on, check the logs of the add-on to see if everything went well.
5. Click "OPEN WEB UI" to open the ESPHome dashboard. You will be asked for your Home Assistant credentials - ESPHome uses Home Assistant's authentication system to log you in.
You can view the ESPHome documentation at https://esphome.io/
The add on uses a version of ESPHome built automatically every day at 02:00 UTC. and is used to test components in development. See the `esphome_fork` configuration below to properly configure the add on. Once you update the configuration make sure to rebuild the image.
## Configuration
**Note**: _Remember to restart the add-on when the configuration is changed._
Example add-on configuration:
```json
{
"ssl": false,
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}
```
### Option: `esphome_fork`
Install ESPHome from a fork or branch.
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is the PR number,
or you can specify the username of the fork owner and branch `username:branch` which
assumes the repository is named `esphome` still.
assumes the repository is named `esphome` still.
If you need to test the latest commit on dev branch before the image is updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to date with ESPHome dev
or the add-on **will not start**.
or the add-on **will not start**.
## General ESPHome add on configurations
General options also available in other versions.
### Option: `ssl`

View File

@@ -1,7 +0,0 @@
{
"build_from": {
"aarch64": "ghcr.io/esphome/esphome-hassio-aarch64:dev",
"amd64": "ghcr.io/esphome/esphome-hassio-amd64:dev",
"armv7": "ghcr.io/esphome/esphome-hassio-armv7:dev"
}
}

5
esphome-dev/build.yaml Normal file
View File

@@ -0,0 +1,5 @@
---
build_from:
aarch64: ghcr.io/esphome/esphome-hassio:dev
amd64: ghcr.io/esphome/esphome-hassio:dev
armv7: ghcr.io/esphome/esphome-hassio:dev

View File

@@ -1,44 +0,0 @@
{
"advanced": true,
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "Development version of ESPHome add-on",
"hassio_api": true,
"host_network": true,
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome (dev)",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"esphome_fork": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome-dev",
"stage": "experimental",
"uart": true,
"url": "https://next.esphome.io/",
"version": "dev"
}

42
esphome-dev/config.yaml Normal file
View File

@@ -0,0 +1,42 @@
---
url: https://next.esphome.io/
arch:
- amd64
- armv7
- aarch64
hassio_api: true
auth_api: true
host_network: true
ingress: true
ingress_port: 0
panel_icon: mdi:chip
uart: true
ports:
6052/tcp: null
map:
- ssl:ro
- config:rw
discovery:
- esphome
schema:
status_use_ping: bool?
streamer_mode: bool?
home_assistant_dashboard_integration: bool?
default_compile_process_limit: int(1,)?
esphome_fork: str?
ssl: bool?
certfile: str?
keyfile: str?
relative_url: str?
leave_front_door_open: bool?
backup_exclude:
- '*/*/'
init: false
name: ESPHome (dev)
version: dev
slug: esphome-dev
description: Development version of ESPHome add-on
stage: experimental
advanced: true
options:
home_assistant_dashboard_integration: false

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

7
esphome-dev/rootfs/etc/cont-init.d/30-esphome-fork.sh Normal file → Executable file
View File

@@ -25,10 +25,11 @@ if bashio::config.has_value 'esphome_fork'; then
curl -L -o /tmp/esphome.tar.gz "${full_url}" -qq \
|| bashio::exit.nok "Failed downloading ESPHome fork."
bashio::log.info "Installing ESPHome from fork '${esphome_fork}' (${full_url})..."
mkdir /esphome-fork
tar -zxf /tmp/esphome.tar.gz -C /esphome-fork --strip-components=1 \
rm -rf /esphome || bashio::exit.nok "Failed to remove ESPHome."
mkdir /esphome
tar -zxf /tmp/esphome.tar.gz -C /esphome --strip-components=1 \
|| bashio::exit.nok "Failed installing ESPHome from fork."
pip install -U -e /esphome-fork || bashio::exit.nok "Failed installing ESPHome from fork."
pip install -U -e /esphome || bashio::exit.nok "Failed installing ESPHome from fork."
rm -f /tmp/esphome.tar.gz
fork_version=$(python3 -c "from esphome.const import __version__; print(__version__)")

View File

@@ -0,0 +1,67 @@
---
configuration:
certfile:
name: Certificate file
description: >-
The certificate file to use for SSL. Note that this file must
exist in the /ssl/ folder.
default_compile_process_limit:
name: Default compile process limit
description: >-
The default compile process limit. This is the maximum number of
simultaneous compile processes that ESPHome will run.
esphome_fork:
name: Install ESPHome from a fork or branch
description: >-
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is
the PR number, or you can specify the username of the fork owner and
branch `username:branch` which assumes the repository is named `esphome`
still.
If you need to test the latest commit on dev branch before the image is
updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to
date with ESPHome dev or the add-on **will not start**.
home_assistant_dashboard_integration:
name: Home Assistant Dashboard Integration
description: >-
Enables/Disables the ESPHome dashboard integrating with Home Assistant
for automatic configuration of devices and device updates. If you use
multiple version of the ESPHome add-on, make sure it is enabled on a
single add-on only.
keyfile:
name: Private key file
description: >-
The private key file to use for SSL. Note that this file must
exist in the /ssl/ folder.
leave_front_door_open:
name: Disable external authentication
description: >-
Disables external authentication when having opened the add-on
on an external port. **WARNING**: This is a security risk!
relative_url:
name: Relative URL
description: >-
Host the ESPHome dashboard under a relative URL, so that it can be
integrated into existing web proxies like NGINX under a relative URL.
Defaults to `/`.
ssl:
name: SSL
description: >-
Enables/Disables SSL (HTTPS) on the web interface.
status_use_ping:
name: Use ping for status
description: >-
By default the dashboard uses mDNS to check if nodes are online. This does
not work across subnets unless your router supports mDNS forwarding
or avahi. Enabling this option will use ICMP ping to check if nodes are
online.
streamer_mode:
name: Streamer mode
description: >-
Enables/Disables streamer mode, which makes ESPHome hide all
potentially private information. So for example WiFi (B)SSIDs (which could
be used to find your location), usernames, etc.
network:
6052/tcp: Web interface (to use without Home Assistant)

View File

@@ -1 +1,6 @@
See https://esphome.io/changelog/index.html
## 2023.2.4
- BL0939 state_class set for energy sensors [esphome#4463](https://github.com/esphome/esphome/pull/4463) by [@konsulten](https://github.com/konsulten)
- fix wiegand tag parity [esphome#4476](https://github.com/esphome/esphome/pull/4476) by [@ssieb](https://github.com/ssieb)
- Fix multiple remote_receivers with triggers [esphome#4477](https://github.com/esphome/esphome/pull/4477) by [@jesserockz](https://github.com/jesserockz)

View File

@@ -1,42 +0,0 @@
{
"arch": [
"amd64",
"armv7",
"aarch64"
],
"auth_api": true,
"backup_exclude": [
"*/*/"
],
"description": "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices",
"hassio_api": true,
"host_network": true,
"image": "ghcr.io/esphome/esphome-hassio-{arch}",
"ingress": true,
"ingress_port": 0,
"map": [
"ssl:ro",
"config:rw"
],
"name": "ESPHome",
"panel_icon": "mdi:chip",
"ports": {
"6052/tcp": null
},
"ports_description": {
"6052/tcp": "Web interface (not required for Home Assistant ingress)"
},
"schema": {
"certfile": "str?",
"keyfile": "str?",
"leave_front_door_open": "bool?",
"relative_url": "str?",
"ssl": "bool?",
"status_use_ping": "bool?",
"streamer_mode": "bool?"
},
"slug": "esphome",
"uart": true,
"url": "https://esphome.io/",
"version": "2022.2.3"
}

38
esphome/config.yaml Normal file
View File

@@ -0,0 +1,38 @@
---
url: https://esphome.io/
arch:
- amd64
- armv7
- aarch64
hassio_api: true
auth_api: true
host_network: true
ingress: true
ingress_port: 0
panel_icon: mdi:chip
uart: true
ports:
6052/tcp: null
map:
- ssl:ro
- config:rw
discovery:
- esphome
schema:
status_use_ping: bool?
streamer_mode: bool?
home_assistant_dashboard_integration: bool?
default_compile_process_limit: int(1,)?
ssl: bool?
certfile: str?
keyfile: str?
relative_url: str?
leave_front_door_open: bool?
backup_exclude:
- '*/*/'
init: false
name: ESPHome
version: 2023.2.4
slug: esphome
description: ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices
image: ghcr.io/esphome/esphome-hassio

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,67 @@
---
configuration:
certfile:
name: Certificate file
description: >-
The certificate file to use for SSL. Note that this file must
exist in the /ssl/ folder.
default_compile_process_limit:
name: Default compile process limit
description: >-
The default compile process limit. This is the maximum number of
simultaneous compile processes that ESPHome will run.
esphome_fork:
name: Install ESPHome from a fork or branch
description: >-
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is
the PR number, or you can specify the username of the fork owner and
branch `username:branch` which assumes the repository is named `esphome`
still.
If you need to test the latest commit on dev branch before the image is
updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to
date with ESPHome dev or the add-on **will not start**.
home_assistant_dashboard_integration:
name: Home Assistant Dashboard Integration
description: >-
Enables/Disables the ESPHome dashboard integrating with Home Assistant
for automatic configuration of devices and device updates. If you use
multiple version of the ESPHome add-on, make sure it is enabled on a
single add-on only.
keyfile:
name: Private key file
description: >-
The private key file to use for SSL. Note that this file must
exist in the /ssl/ folder.
leave_front_door_open:
name: Disable external authentication
description: >-
Disables external authentication when having opened the add-on
on an external port. **WARNING**: This is a security risk!
relative_url:
name: Relative URL
description: >-
Host the ESPHome dashboard under a relative URL, so that it can be
integrated into existing web proxies like NGINX under a relative URL.
Defaults to `/`.
ssl:
name: SSL
description: >-
Enables/Disables SSL (HTTPS) on the web interface.
status_use_ping:
name: Use ping for status
description: >-
By default the dashboard uses mDNS to check if nodes are online. This does
not work across subnets unless your router supports mDNS forwarding
or avahi. Enabling this option will use ICMP ping to check if nodes are
online.
streamer_mode:
name: Streamer mode
description: >-
Enables/Disables streamer mode, which makes ESPHome hide all
potentially private information. So for example WiFi (B)SSIDs (which could
be used to find your location), usernames, etc.
network:
6052/tcp: Web interface (to use without Home Assistant)

View File

@@ -4,7 +4,6 @@ import argparse
import yaml
from pathlib import Path
from enum import Enum
import json
from shutil import copyfile
import sys
@@ -34,9 +33,9 @@ def main(args):
conf = config[f"esphome-{channel.value}"]
base_image = conf.pop("base_image", None)
dir_ = root / conf.pop("directory")
path = dir_ / "config.json"
path = dir_ / "config.yaml"
with open(path, "w") as f:
json.dump(conf, f, indent=2, sort_keys=True)
yaml.dump(conf, f, indent=2, sort_keys=False, explicit_start=True)
for file_, conf_ in copyf.items():
if Path.exists(templ / channel.value / file_):
@@ -49,16 +48,14 @@ def main(args):
f.write("Any edits should be made to the files in the 'template' directory")
if channel == Channel.dev:
path = dir_ / "build.json"
path = dir_ / "build.yaml"
build_conf = {
"build_from": {
arch: base_image.format(arch=arch) for arch in conf["arch"]
arch: base_image for arch in conf["arch"]
}
}
with open(path, "w") as f:
json.dump(build_conf, f, indent=2, sort_keys=True)
print(f"Wrote {path}")
yaml.dump(build_conf, f, indent=2, sort_keys=True, explicit_start=True)
if __name__ == "__main__":

View File

@@ -1 +1 @@
PyYAML==5.4
PyYAML==6.0

View File

@@ -21,21 +21,25 @@ base: &base
uart: true
ports:
'6052/tcp': null
ports_description:
'6052/tcp': "Web interface (not required for Home Assistant ingress)"
map:
- ssl:ro
- config:rw
discovery:
- esphome
schema:
status_use_ping: bool?
streamer_mode: bool?
home_assistant_dashboard_integration: bool?
default_compile_process_limit: int(1,)?
ssl: bool?
certfile: str?
keyfile: str?
leave_front_door_open: bool?
streamer_mode: bool?
relative_url: str?
status_use_ping: bool?
leave_front_door_open: bool?
backup_exclude:
- "*/*/"
# Disable docker init for s6
init: false
esphome-dev:
<<: *base
@@ -48,40 +52,47 @@ esphome-dev:
stage: experimental
advanced: true
schema:
status_use_ping: bool?
streamer_mode: bool?
home_assistant_dashboard_integration: bool?
default_compile_process_limit: int(1,)?
esphome_fork: str?
ssl: bool?
certfile: str?
keyfile: str?
leave_front_door_open: bool?
streamer_mode: bool?
relative_url: str?
status_use_ping: bool?
esphome_fork: str?
base_image: ghcr.io/esphome/esphome-hassio-{arch}:dev
leave_front_door_open: bool?
base_image: ghcr.io/esphome/esphome-hassio:dev
options:
home_assistant_dashboard_integration: false
esphome-beta:
<<: *base
directory: esphome-beta
name: ESPHome (beta)
version: '2022.2.3' # BETA
version: '2023.3.0b1' # BETA
slug: esphome-beta
description: "Beta version of ESPHome add-on"
url: https://beta.esphome.io/
image: ghcr.io/esphome/esphome-hassio-{arch}
image: ghcr.io/esphome/esphome-hassio
stage: experimental
advanced: true
options:
home_assistant_dashboard_integration: false
esphome-stable:
<<: *base
directory: esphome
name: ESPHome
version: '2022.2.3' # STABLE
version: '2023.2.4' # STABLE
slug: esphome
description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices"
image: ghcr.io/esphome/esphome-hassio-{arch}
image: ghcr.io/esphome/esphome-hassio
copy_files:
CHANGELOG.md:
DOCS.md:
icon.png:
logo.png:
README.md:
DOCS.md:
CHANGELOG.md:
translations/en.yaml:

View File

@@ -1,40 +1,31 @@
# Home Assistant Community Add-on: ESPHome
# ESPHome DEV add on
## Installation
This is **development** version of the ESPHome add on.
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant add-on.
To deploy production nodes please use mainstream release add on.
1. Search for the “ESPHome” add-on in the Supervisor add-on store.
2. Press install to download the add-on and unpack it on your machine. This can take some time.
3. Optional: If you're using SSL/TLS certificates and want to encrypt your communication to this add-on, please enter `true` into the `ssl` field and set the `fullchain` and `certfile` options accordingly.
4. Start the add-on, check the logs of the add-on to see if everything went well.
5. Click "OPEN WEB UI" to open the ESPHome dashboard. You will be asked for your Home Assistant credentials - ESPHome uses Home Assistant's authentication system to log you in.
You can view the ESPHome documentation at https://esphome.io/
The add on uses a version of ESPHome built automatically every day at 02:00 UTC. and is used to test components in development. See the `esphome_fork` configuration below to properly configure the add on. Once you update the configuration make sure to rebuild the image.
## Configuration
**Note**: _Remember to restart the add-on when the configuration is changed._
Example add-on configuration:
```json
{
"ssl": false,
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}
```
### Option: `esphome_fork`
Install ESPHome from a fork or branch.
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is the PR number,
or you can specify the username of the fork owner and branch `username:branch` which
assumes the repository is named `esphome` still.
assumes the repository is named `esphome` still.
If you need to test the latest commit on dev branch before the image is updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to date with ESPHome dev
or the add-on **will not start**.
or the add-on **will not start**.
## General ESPHome add on configurations
General options also available in other versions.
### Option: `ssl`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,67 @@
---
configuration:
certfile:
name: Certificate file
description: >-
The certificate file to use for SSL. Note that this file must
exist in the /ssl/ folder.
default_compile_process_limit:
name: Default compile process limit
description: >-
The default compile process limit. This is the maximum number of
simultaneous compile processes that ESPHome will run.
esphome_fork:
name: Install ESPHome from a fork or branch
description: >-
For example to test a pull request, use `pull/XXXX/head` where `XXXX` is
the PR number, or you can specify the username of the fork owner and
branch `username:branch` which assumes the repository is named `esphome`
still.
If you need to test the latest commit on dev branch before the image is
updated you can enter `dev` here.
Please note that the fork or branch you are using **must** be up to
date with ESPHome dev or the add-on **will not start**.
home_assistant_dashboard_integration:
name: Home Assistant Dashboard Integration
description: >-
Enables/Disables the ESPHome dashboard integrating with Home Assistant
for automatic configuration of devices and device updates. If you use
multiple version of the ESPHome add-on, make sure it is enabled on a
single add-on only.
keyfile:
name: Private key file
description: >-
The private key file to use for SSL. Note that this file must
exist in the /ssl/ folder.
leave_front_door_open:
name: Disable external authentication
description: >-
Disables external authentication when having opened the add-on
on an external port. **WARNING**: This is a security risk!
relative_url:
name: Relative URL
description: >-
Host the ESPHome dashboard under a relative URL, so that it can be
integrated into existing web proxies like NGINX under a relative URL.
Defaults to `/`.
ssl:
name: SSL
description: >-
Enables/Disables SSL (HTTPS) on the web interface.
status_use_ping:
name: Use ping for status
description: >-
By default the dashboard uses mDNS to check if nodes are online. This does
not work across subnets unless your router supports mDNS forwarding
or avahi. Enabling this option will use ICMP ping to check if nodes are
online.
streamer_mode:
name: Streamer mode
description: >-
Enables/Disables streamer mode, which makes ESPHome hide all
potentially private information. So for example WiFi (B)SSIDs (which could
be used to find your location), usernames, etc.
network:
6052/tcp: Web interface (to use without Home Assistant)