Compare commits
274 Commits
2024.2.0b2
...
dependabot
82
.github/workflows/bump-version.yml
vendored
@@ -15,45 +15,47 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.1
|
- uses: actions/checkout@v4.2.2
|
||||||
- uses: actions/setup-python@v4.8.0
|
- uses: actions/setup-python@v5.3.0
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: "3.11"
|
||||||
- run: pip install -r script/requirements.txt
|
- run: pip install -r script/requirements.txt
|
||||||
- run: script/bump-version.py ${{ github.event.inputs.version }}
|
- run: script/bump-version.py ${{ github.event.inputs.version }}
|
||||||
- name: Write Beta changelog
|
- name: Write Beta changelog
|
||||||
run: |
|
if: ${{ !contains(github.event.inputs.version, 'dev') }}
|
||||||
cat > esphome-beta/CHANGELOG.md << 'EOF'
|
run: |
|
||||||
## ${{ github.event.inputs.version }}
|
cat > esphome-beta/CHANGELOG.md << 'EOF'
|
||||||
|
## ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
${{ github.event.inputs.content }}
|
${{ github.event.inputs.content }}
|
||||||
EOF
|
EOF
|
||||||
- name: Write Stable changelog
|
- name: Write Stable changelog
|
||||||
if: ${{ !contains(github.event.inputs.version, 'b') }}
|
if: ${{ !contains(github.event.inputs.version, 'b') && !contains(github.event.inputs.version, 'dev') }}
|
||||||
run: |
|
run: |
|
||||||
cat > esphome/CHANGELOG.md << 'EOF'
|
cat > esphome/CHANGELOG.md << 'EOF'
|
||||||
## ${{ github.event.inputs.version }}
|
## ${{ github.event.inputs.version }}
|
||||||
|
|
||||||
${{ github.event.inputs.content }}
|
${{ github.event.inputs.content }}
|
||||||
EOF
|
EOF
|
||||||
- name: Commit version bump
|
- name: Commit version bump
|
||||||
id: commit_version
|
id: commit_version
|
||||||
run: |
|
run: |
|
||||||
git config user.name esphomebot
|
git config user.name esphomebot
|
||||||
git config user.email esphome@nabucasa.com
|
git config user.email esphome@nabucasa.com
|
||||||
git add .
|
git add .
|
||||||
git commit -m "Bump version to ${{ github.event.inputs.version }}"
|
git commit -m "Bump version to ${{ github.event.inputs.version }}"
|
||||||
git push
|
git push
|
||||||
COMMIT=$(git rev-parse HEAD)
|
COMMIT=$(git rev-parse HEAD)
|
||||||
echo "::set-output name=commit_sha::${COMMIT}"
|
echo "::set-output name=commit_sha::${COMMIT}"
|
||||||
- name: Create a Release
|
- name: Create a Release
|
||||||
uses: actions/create-release@v1.1.4
|
uses: actions/create-release@v1.1.4
|
||||||
continue-on-error: true
|
continue-on-error: true
|
||||||
env:
|
if: ${{ !contains(github.event.inputs.version, 'dev') }}
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
env:
|
||||||
with:
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
tag_name: ${{ github.event.inputs.version }}
|
with:
|
||||||
release_name: ${{ github.event.inputs.version }}
|
tag_name: ${{ github.event.inputs.version }}
|
||||||
body: ${{ github.event.inputs.content }}
|
release_name: ${{ github.event.inputs.version }}
|
||||||
prerelease: ${{ contains(github.event.inputs.version, 'b') }}
|
body: ${{ github.event.inputs.content }}
|
||||||
commitish: ${{ steps.commit_version.outputs.commit_sha }}
|
prerelease: ${{ contains(github.event.inputs.version, 'b') }}
|
||||||
|
commitish: ${{ steps.commit_version.outputs.commit_sha }}
|
||||||
|
|||||||
10
.github/workflows/devcontainer-build.yaml
vendored
@@ -19,20 +19,20 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4.1.1
|
- uses: actions/checkout@v4.2.2
|
||||||
- name: Log in to the GitHub container registry
|
- name: Log in to the GitHub container registry
|
||||||
uses: docker/login-action@v3.0.0
|
uses: docker/login-action@v3.3.0
|
||||||
if: github.event_name != 'pull_request'
|
if: github.event_name != 'pull_request'
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3.0.0
|
uses: docker/setup-qemu-action@v3.2.0
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3.0.0
|
uses: docker/setup-buildx-action@v3.7.1
|
||||||
- name: Build and Push
|
- name: Build and Push
|
||||||
uses: docker/build-push-action@v5.1.0
|
uses: docker/build-push-action@v6.9.0
|
||||||
with:
|
with:
|
||||||
context: .
|
context: .
|
||||||
file: .devcontainer/Dockerfile
|
file: .devcontainer/Dockerfile
|
||||||
|
|||||||
6
.github/workflows/lint.yml
vendored
@@ -19,9 +19,9 @@ jobs:
|
|||||||
channel: dev
|
channel: dev
|
||||||
steps:
|
steps:
|
||||||
- name: ⤵️ Check out code from GitHub
|
- name: ⤵️ Check out code from GitHub
|
||||||
uses: actions/checkout@v4.1.1
|
uses: actions/checkout@v4.2.2
|
||||||
- name: 🛠 Setup Python
|
- name: 🛠 Setup Python
|
||||||
uses: actions/setup-python@v4.8.0
|
uses: actions/setup-python@v5.3.0
|
||||||
with:
|
with:
|
||||||
python-version: '3.11'
|
python-version: '3.11'
|
||||||
- name: 🛠 Install dependencies
|
- name: 🛠 Install dependencies
|
||||||
@@ -29,6 +29,6 @@ jobs:
|
|||||||
- name: 🛠 Generate files from template
|
- name: 🛠 Generate files from template
|
||||||
run: python script/generate.py ${{ matrix.channels.channel }}
|
run: python script/generate.py ${{ matrix.channels.channel }}
|
||||||
- name: 🚀 Run Home Assistant Add-on Lint on ${{ matrix.channels.channel }}
|
- name: 🚀 Run Home Assistant Add-on Lint on ${{ matrix.channels.channel }}
|
||||||
uses: frenck/action-addon-linter@v2.15.0
|
uses: frenck/action-addon-linter@v2.17.1
|
||||||
with:
|
with:
|
||||||
path: "./${{ matrix.channels.folder }}"
|
path: "./${{ matrix.channels.folder }}"
|
||||||
|
|||||||
@@ -1,9 +1,6 @@
|
|||||||
## 2024.2.0b2
|
## 2024.10.2
|
||||||
|
|
||||||
- AUTO_LOAD `sensor` for `shelly_dimmer` [esphome#6223](https://github.com/esphome/esphome/pull/6223) by [@kbx81](https://github.com/kbx81)
|
- Humanized the missing MQTT log topic error message [esphome#7634](https://github.com/esphome/esphome/pull/7634) by [@solarkennedy](https://github.com/solarkennedy)
|
||||||
- Add more debugging logs to microWakeWord [esphome#6238](https://github.com/esphome/esphome/pull/6238) by [@kahrendt](https://github.com/kahrendt)
|
- [lvgl] Some properties were not templatable (Bugfix) [esphome#7655](https://github.com/esphome/esphome/pull/7655) by [@clydebarrow](https://github.com/clydebarrow)
|
||||||
- Fix to RF receiver for Drayton Digistat heating controller [esphome#6235](https://github.com/esphome/esphome/pull/6235) by [@marshn](https://github.com/marshn)
|
- [voice_assistant] Bugfix: Fix crash on start [esphome#7662](https://github.com/esphome/esphome/pull/7662) by [@kahrendt](https://github.com/kahrendt)
|
||||||
- WRGB Use correct multiplier [esphome#6237](https://github.com/esphome/esphome/pull/6237) by [@mhetzi](https://github.com/mhetzi)
|
|
||||||
- Add optional minimum esphome version to microWakeWord manifest [esphome#6240](https://github.com/esphome/esphome/pull/6240) by [@jesserockz](https://github.com/jesserockz)
|
|
||||||
- Fix xl9535 pin reads [esphome#6242](https://github.com/esphome/esphome/pull/6242) by [@jesserockz](https://github.com/jesserockz)
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ backup_exclude:
|
|||||||
init: false
|
init: false
|
||||||
startup: services
|
startup: services
|
||||||
name: ESPHome (beta)
|
name: ESPHome (beta)
|
||||||
version: 2024.2.0b2
|
version: 2024.10.2
|
||||||
slug: esphome-beta
|
slug: esphome-beta
|
||||||
description: Beta version of ESPHome add-on
|
description: Beta version of ESPHome add-on
|
||||||
image: ghcr.io/esphome/esphome-hassio
|
image: ghcr.io/esphome/esphome-hassio
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 8.0 KiB |
@@ -1 +1 @@
|
|||||||
See https://esphome.io/changelog/index.html
|
See https://github.com/esphome/esphome/commits/dev
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
ARG BUILD_FROM=esphome/esphome-hassio-amd64:dev
|
|
||||||
FROM ${BUILD_FROM}
|
|
||||||
|
|
||||||
# Copy root filesystem
|
|
||||||
COPY rootfs /
|
|
||||||
|
|
||||||
# Labels
|
|
||||||
LABEL \
|
|
||||||
io.hass.type="addon" \
|
|
||||||
io.hass.version=dev
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
# ESPHome Dev Add-On
|
# ESPHome Device Compiler (Development branch)
|
||||||
|
|
||||||
[![ESPHome logo][logo]][website]
|
[![ESPHome logo][logo]][website]
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
This add-on allows you to write configurations and turn your microcontrollers
|
||||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
into smart home devices directly through Home Assistant **with no programming experience required**.
|
||||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
All you need to do is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||||
handled by ESPHome.
|
handled by ESPHome.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img title="ESPHome dashboard screenshot" src="https://github.com/esphome/home-assistant-addon/raw/main/esphome-dev/images/screenshot.png" width="700px"></img>
|
<img title="ESPHome Device Compiler screenshot" src="https://github.com/esphome/home-assistant-addon/raw/main/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[View the ESPHome documentation][website]
|
[View the ESPHome documentation][website]
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
---
|
|
||||||
build_from:
|
|
||||||
aarch64: ghcr.io/esphome/esphome-hassio:dev
|
|
||||||
amd64: ghcr.io/esphome/esphome-hassio:dev
|
|
||||||
armv7: ghcr.io/esphome/esphome-hassio:dev
|
|
||||||
@@ -32,10 +32,11 @@ backup_exclude:
|
|||||||
- '*/*/'
|
- '*/*/'
|
||||||
init: false
|
init: false
|
||||||
startup: services
|
startup: services
|
||||||
name: ESPHome (dev)
|
name: ESPHome Device Compiler (dev)
|
||||||
version: dev
|
version: 2024.11.0-dev20241024
|
||||||
slug: esphome-dev
|
slug: esphome-dev
|
||||||
description: Development version of ESPHome add-on
|
description: Development version of ESPHome Device Compiler
|
||||||
|
image: ghcr.io/esphome/esphome-hassio
|
||||||
stage: experimental
|
stage: experimental
|
||||||
advanced: true
|
advanced: true
|
||||||
options:
|
options:
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 69 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 7.7 KiB |
@@ -1,47 +0,0 @@
|
|||||||
#!/usr/bin/with-contenv bashio
|
|
||||||
# ==============================================================================
|
|
||||||
# Community Hass.io Add-ons: ESPHome
|
|
||||||
# This files installs the user ESPHome fork if specified
|
|
||||||
# The fork must be up to date with the latest ESPHome dev branch
|
|
||||||
# and have no conflicts
|
|
||||||
# ==============================================================================
|
|
||||||
|
|
||||||
declare esphome_fork
|
|
||||||
|
|
||||||
if bashio::config.has_value 'esphome_fork'; then
|
|
||||||
esphome_fork=$(bashio::config 'esphome_fork')
|
|
||||||
if [[ $esphome_fork == *":"* ]]; then
|
|
||||||
IFS=':' read -r -a array <<< "$esphome_fork"
|
|
||||||
username=${array[0]}
|
|
||||||
ref=${array[1]}
|
|
||||||
else
|
|
||||||
username="esphome"
|
|
||||||
ref=$esphome_fork
|
|
||||||
fi
|
|
||||||
full_url="https://github.com/${username}/esphome/archive/${ref}.tar.gz"
|
|
||||||
bashio::log.info "Checking forked ESPHome"
|
|
||||||
dev_version=$(python3 -c "from esphome.const import __version__; print(__version__)")
|
|
||||||
bashio::log.info "Downloading ESPHome from fork '${esphome_fork}' (${full_url})..."
|
|
||||||
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})..."
|
|
||||||
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 || 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__)")
|
|
||||||
|
|
||||||
if [[ "$fork_version" != "$dev_version" ]]; then
|
|
||||||
bashio::log.error "############################"
|
|
||||||
bashio::log.error "Uninstalled fork as version does not match"
|
|
||||||
bashio::log.error "Update (or ask the author to update) the branch"
|
|
||||||
bashio::log.error "This is important as the dev addon and the dev ESPHome"
|
|
||||||
bashio::log.error "branch can have changes that are not compatible with old forks"
|
|
||||||
bashio::log.error "and get reported as bugs which we cannot solve easily."
|
|
||||||
bashio::log.error "############################"
|
|
||||||
bashio::exit.nok
|
|
||||||
fi
|
|
||||||
bashio::log.info "Installed ESPHome from fork '${esphome_fork}' (${full_url})..."
|
|
||||||
fi
|
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
## 2023.12.9
|
## 2024.10.2
|
||||||
|
|
||||||
- fix sen5x negative temperature [esphome#6082](https://github.com/esphome/esphome/pull/6082) by [@ssieb](https://github.com/ssieb)
|
- Humanized the missing MQTT log topic error message [esphome#7634](https://github.com/esphome/esphome/pull/7634) by [@solarkennedy](https://github.com/solarkennedy)
|
||||||
- negative values for all DHT22 variants [esphome#6074](https://github.com/esphome/esphome/pull/6074) by [@ssieb](https://github.com/ssieb)
|
- [lvgl] Some properties were not templatable (Bugfix) [esphome#7655](https://github.com/esphome/esphome/pull/7655) by [@clydebarrow](https://github.com/clydebarrow)
|
||||||
- fix negative temperature for pmsx003 [esphome#6083](https://github.com/esphome/esphome/pull/6083) by [@ssieb](https://github.com/ssieb)
|
- [voice_assistant] Bugfix: Fix crash on start [esphome#7662](https://github.com/esphome/esphome/pull/7662) by [@kahrendt](https://github.com/kahrendt)
|
||||||
- fix: negative temperatures on PMS5003T sensors [esphome#6100](https://github.com/esphome/esphome/pull/6100) by [@aschmitz](https://github.com/aschmitz)
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ backup_exclude:
|
|||||||
init: false
|
init: false
|
||||||
startup: services
|
startup: services
|
||||||
name: ESPHome
|
name: ESPHome
|
||||||
version: 2023.12.9
|
version: 2024.10.2
|
||||||
slug: esphome
|
slug: esphome
|
||||||
description: ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices
|
description: ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices
|
||||||
image: ghcr.io/esphome/esphome-hassio
|
image: ghcr.io/esphome/esphome-hassio
|
||||||
|
|||||||
BIN
esphome/icon.png
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.5 KiB |
BIN
esphome/logo.png
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.9 KiB |
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import re
|
import re
|
||||||
import subprocess
|
|
||||||
from dataclasses import dataclass
|
from dataclasses import dataclass
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
@@ -17,72 +16,71 @@ class Version:
|
|||||||
minor: int
|
minor: int
|
||||||
patch: int
|
patch: int
|
||||||
beta: int = 0
|
beta: int = 0
|
||||||
dev: bool = False
|
dev: str = ""
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return f'{self.major}.{self.minor}.{self.full_patch}'
|
return f"{self.major}.{self.minor}.{self.full_patch}"
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def full_patch(self):
|
def full_patch(self):
|
||||||
res = f'{self.patch}'
|
res = f"{self.patch}"
|
||||||
if self.beta > 0:
|
if self.beta > 0:
|
||||||
res += f'b{self.beta}'
|
res += f"b{self.beta}"
|
||||||
if self.dev:
|
if self.dev:
|
||||||
res += '-dev'
|
res += f"-dev{self.dev}"
|
||||||
return res
|
return res
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def parse(cls, value):
|
def parse(cls, value):
|
||||||
match = re.match(r'(\d+).(\d+).(\d+)(b\d+)?(-dev)?', value)
|
match = re.match(r"(\d+).(\d+).(\d+)(b\d+)?(-dev\d+)?", value)
|
||||||
assert match is not None
|
assert match is not None
|
||||||
major = int(match[1])
|
major = int(match[1])
|
||||||
minor = int(match[2])
|
minor = int(match[2])
|
||||||
patch = int(match[3])
|
patch = int(match[3])
|
||||||
beta = int(match[4][1:]) if match[4] else 0
|
beta = int(match[4][1:]) if match[4] else 0
|
||||||
dev = bool(match[5])
|
dev = str(match[5][4:]) if match[5] else ""
|
||||||
return Version(
|
return Version(major=major, minor=minor, patch=patch, beta=beta, dev=dev)
|
||||||
major=major, minor=minor, patch=patch,
|
|
||||||
beta=beta, dev=dev
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def sub(path, pattern, repl, expected_count=1):
|
def _sub(path, pattern, repl, expected_count=1):
|
||||||
with open(path) as fh:
|
with open(path, encoding="utf-8") as fh:
|
||||||
content = fh.read()
|
content = fh.read()
|
||||||
content, count = re.subn(pattern, repl, content, flags=re.MULTILINE)
|
content, count = re.subn(pattern, repl, content, flags=re.NOFLAG)
|
||||||
if expected_count is not None:
|
if expected_count is not None:
|
||||||
assert count == expected_count, f"Pattern {pattern} replacement failed!"
|
assert count == expected_count, f"Pattern {pattern} replacement failed!"
|
||||||
with open(path, "wt") as fh:
|
with open(path, "wt", encoding="utf-8") as fh:
|
||||||
fh.write(content)
|
fh.write(content)
|
||||||
|
|
||||||
|
|
||||||
def write_version(target: str, version: Version):
|
def _write_version(target: str, version: Version):
|
||||||
# version: '1.14.5' # BETA
|
# version: "2024.5.0-dev20240412" # DEV
|
||||||
# version: '1.14.5' # STABLE
|
# version: "1.14.5" # BETA
|
||||||
sub(
|
# version: "1.14.5" # STABLE
|
||||||
'template/addon_config.yaml',
|
_sub(
|
||||||
r" version: '[^']+' # {}".format(target.upper()),
|
"template/addon_config.yaml",
|
||||||
f" version: '{version}' # {target.upper()}"
|
f' version: "[^"]+" # {target.upper()}',
|
||||||
|
f' version: "{version}" # {target.upper()}',
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument('new_version', type=str)
|
parser.add_argument("new_version", type=str)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
version = Version.parse(args.new_version)
|
version = Version.parse(args.new_version)
|
||||||
assert not version.dev
|
|
||||||
|
|
||||||
print(f"Bumping to {version}")
|
print(f"Bumping to {version}")
|
||||||
if version.beta:
|
if version.dev:
|
||||||
write_version('beta', version)
|
_write_version("dev", version)
|
||||||
generate.main(['beta'])
|
generate.main(["dev"])
|
||||||
|
elif version.beta:
|
||||||
|
_write_version("beta", version)
|
||||||
|
generate.main(["beta"])
|
||||||
else:
|
else:
|
||||||
assert not version.beta
|
_write_version("stable", version)
|
||||||
write_version('stable', version)
|
_write_version("beta", version)
|
||||||
write_version('beta', version)
|
generate.main(["stable", "beta"])
|
||||||
generate.main(['stable', 'beta'])
|
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import argparse
|
import argparse
|
||||||
import yaml
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
import sys
|
import sys
|
||||||
import os
|
import os
|
||||||
|
|
||||||
|
import yaml
|
||||||
|
|
||||||
|
|
||||||
class Channel(Enum):
|
class Channel(Enum):
|
||||||
stable = "stable"
|
stable = "stable"
|
||||||
@@ -25,17 +26,16 @@ def main(args):
|
|||||||
root = Path(__file__).parent.parent
|
root = Path(__file__).parent.parent
|
||||||
templ = root / "template"
|
templ = root / "template"
|
||||||
|
|
||||||
with open(templ / "addon_config.yaml", "r") as f:
|
with open(templ / "addon_config.yaml", "r", encoding="utf-8") as f:
|
||||||
config = yaml.safe_load(f)
|
config = yaml.safe_load(f)
|
||||||
|
|
||||||
copyf = config["copy_files"]
|
copyf = config["copy_files"]
|
||||||
|
|
||||||
for channel in args.channels:
|
for channel in args.channels:
|
||||||
conf = config[f"esphome-{channel.value}"]
|
conf = config[f"esphome-{channel.value}"]
|
||||||
base_image = conf.pop("base_image", None)
|
|
||||||
dir_ = root / conf.pop("directory")
|
dir_ = root / conf.pop("directory")
|
||||||
path = dir_ / "config.yaml"
|
path = dir_ / "config.yaml"
|
||||||
with open(path, "w") as f:
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
yaml.dump(conf, f, indent=2, sort_keys=False, explicit_start=True)
|
yaml.dump(conf, f, indent=2, sort_keys=False, explicit_start=True)
|
||||||
|
|
||||||
for file_ in copyf:
|
for file_ in copyf:
|
||||||
@@ -46,19 +46,9 @@ def main(args):
|
|||||||
copyfile(templ / file_, dir_ / file_)
|
copyfile(templ / file_, dir_ / file_)
|
||||||
|
|
||||||
path = dir_ / "FILES ARE GENERATED DO NOT EDIT"
|
path = dir_ / "FILES ARE GENERATED DO NOT EDIT"
|
||||||
with open(path, "w") as f:
|
with open(path, "w", encoding="utf-8") as f:
|
||||||
f.write("Any edits should be made to the files in the 'template' directory")
|
f.write("Any edits should be made to the files in the 'template' directory")
|
||||||
|
|
||||||
if channel == Channel.dev:
|
|
||||||
path = dir_ / "build.yaml"
|
|
||||||
build_conf = {
|
|
||||||
"build_from": {
|
|
||||||
arch: base_image for arch in conf["arch"]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
with open(path, "w") as f:
|
|
||||||
yaml.dump(build_conf, f, indent=2, sort_keys=True, explicit_start=True)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
main(sys.argv[1:])
|
main(sys.argv[1:])
|
||||||
|
|||||||
@@ -16,11 +16,11 @@ base: &base
|
|||||||
# Ingress settings
|
# Ingress settings
|
||||||
ingress: true
|
ingress: true
|
||||||
ingress_port: 0
|
ingress_port: 0
|
||||||
panel_icon: 'mdi:chip'
|
panel_icon: "mdi:chip"
|
||||||
# Automatically add UART devices to add-on
|
# Automatically add UART devices to add-on
|
||||||
uart: true
|
uart: true
|
||||||
ports:
|
ports:
|
||||||
'6052/tcp': null
|
"6052/tcp": null
|
||||||
map:
|
map:
|
||||||
- ssl:ro
|
- ssl:ro
|
||||||
- config:rw
|
- config:rw
|
||||||
@@ -45,11 +45,12 @@ base: &base
|
|||||||
esphome-dev:
|
esphome-dev:
|
||||||
<<: *base
|
<<: *base
|
||||||
directory: esphome-dev
|
directory: esphome-dev
|
||||||
name: ESPHome (dev)
|
name: ESPHome Device Compiler (dev)
|
||||||
version: 'dev' # DEV
|
version: "2024.11.0-dev20241024" # DEV
|
||||||
slug: esphome-dev
|
slug: esphome-dev
|
||||||
description: "Development version of ESPHome add-on"
|
description: "Development version of ESPHome Device Compiler"
|
||||||
url: https://next.esphome.io/
|
url: https://next.esphome.io/
|
||||||
|
image: ghcr.io/esphome/esphome-hassio
|
||||||
stage: experimental
|
stage: experimental
|
||||||
advanced: true
|
advanced: true
|
||||||
schema:
|
schema:
|
||||||
@@ -62,15 +63,14 @@ esphome-dev:
|
|||||||
certfile: str?
|
certfile: str?
|
||||||
keyfile: str?
|
keyfile: str?
|
||||||
leave_front_door_open: bool?
|
leave_front_door_open: bool?
|
||||||
base_image: ghcr.io/esphome/esphome-hassio:dev
|
|
||||||
options:
|
options:
|
||||||
home_assistant_dashboard_integration: false
|
home_assistant_dashboard_integration: false
|
||||||
|
|
||||||
esphome-beta:
|
esphome-beta:
|
||||||
<<: *base
|
<<: *base
|
||||||
directory: esphome-beta
|
directory: esphome-beta
|
||||||
name: ESPHome (beta)
|
name: ESPHome (beta)
|
||||||
version: '2024.2.0b2' # BETA
|
version: "2024.10.2" # BETA
|
||||||
slug: esphome-beta
|
slug: esphome-beta
|
||||||
description: "Beta version of ESPHome add-on"
|
description: "Beta version of ESPHome add-on"
|
||||||
url: https://beta.esphome.io/
|
url: https://beta.esphome.io/
|
||||||
@@ -78,13 +78,13 @@ esphome-beta:
|
|||||||
stage: experimental
|
stage: experimental
|
||||||
advanced: true
|
advanced: true
|
||||||
options:
|
options:
|
||||||
home_assistant_dashboard_integration: false
|
home_assistant_dashboard_integration: false
|
||||||
|
|
||||||
esphome-stable:
|
esphome-stable:
|
||||||
<<: *base
|
<<: *base
|
||||||
directory: esphome
|
directory: esphome
|
||||||
name: ESPHome
|
name: ESPHome
|
||||||
version: '2023.12.9' # STABLE
|
version: "2024.10.2" # STABLE
|
||||||
slug: esphome
|
slug: esphome
|
||||||
description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices"
|
description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices"
|
||||||
image: ghcr.io/esphome/esphome-hassio
|
image: ghcr.io/esphome/esphome-hassio
|
||||||
|
|||||||
BIN
template/beta/icon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
template/beta/logo.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
@@ -1,4 +1,4 @@
|
|||||||
# ESPHome Dev Add-On
|
# ESPHome Device Compiler (Development branch)
|
||||||
|
|
||||||
[![ESPHome logo][logo]][website]
|
[![ESPHome logo][logo]][website]
|
||||||
|
|
||||||
@@ -7,13 +7,13 @@
|
|||||||
|
|
||||||
## About
|
## About
|
||||||
|
|
||||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
This add-on allows you to write configurations and turn your microcontrollers
|
||||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
into smart home devices directly through Home Assistant **with no programming experience required**.
|
||||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
All you need to do is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||||
handled by ESPHome.
|
handled by ESPHome.
|
||||||
|
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<img title="ESPHome dashboard screenshot" src="https://github.com/esphome/home-assistant-addon/raw/main/esphome-dev/images/screenshot.png" width="700px"></img>
|
<img title="ESPHome Device Compiler screenshot" src="https://github.com/esphome/home-assistant-addon/raw/main/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
[View the ESPHome documentation][website]
|
[View the ESPHome documentation][website]
|
||||||
|
|||||||
BIN
template/dev/icon.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
template/dev/logo.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 2.9 KiB After Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 5.9 KiB |