Compare commits
114 Commits
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Issue Tracker
|
||||
url: https://github.com/esphome/issues
|
||||
about: Please create bug reports in the dedicated issue tracker.
|
||||
- name: Feature Request Tracker
|
||||
url: https://github.com/esphome/feature-requests
|
||||
about: Please create feature requests in the dedicated feature request tracker.
|
||||
- name: Frequently Asked Question
|
||||
url: https://esphome.io/guides/faq.html
|
||||
about: Please view the FAQ for common questions and what to include in a bug report.
|
||||
73
.github/workflows/bump-version.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
name: Publish Release
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
version:
|
||||
description: The version to release
|
||||
required: true
|
||||
|
||||
jobs:
|
||||
create-release:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- run: pip install -r script/requirements.txt
|
||||
- run: script/bump-version.py ${{ github.event.inputs.version }}
|
||||
- name: Commit version bump
|
||||
id: commit_version
|
||||
run: |
|
||||
git config user.name esphomebot
|
||||
git config user.email esphome@nabucasa.com
|
||||
git add .
|
||||
git commit -m "Bump version to v${{ github.event.inputs.version }}"
|
||||
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
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: v${{ github.event.inputs.version }}
|
||||
release_name: ${{ github.event.inputs.version }}
|
||||
body: 'See https://beta.esphome.io/changelog/index.html'
|
||||
prerelease: true
|
||||
commitish: ${{ steps.commit_version.outputs.commit_sha }}
|
||||
- if: ${{ !contains(github.event.inputs.version, 'b') }}
|
||||
name: Create Stable Release
|
||||
uses: actions/create-release@v1
|
||||
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
|
||||
run: |
|
||||
docker run --rm hassioaddons/repository-updater:latest \
|
||||
--repository hassio-addons/repository-beta \
|
||||
--addon esphome \
|
||||
--token "${TOKEN}"
|
||||
env:
|
||||
TOKEN: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
|
||||
- if: ${{ !contains(github.event.inputs.version, 'b') }}
|
||||
name: Publish stable release to community-addons repository
|
||||
run: |
|
||||
docker run --rm hassioaddons/repository-updater:latest \
|
||||
--repository hassio-addons/repository \
|
||||
--addon esphome \
|
||||
--token "${TOKEN}"
|
||||
env:
|
||||
TOKEN: ${{ secrets.COMMUNITY_ADDONS_TOKEN }}
|
||||
24
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
name: Lint
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
build:
|
||||
name: Add-on configuration
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
channel: [esphome, esphome-beta, esphome-dev]
|
||||
steps:
|
||||
- name: ⤵️ Check out code from GitHub
|
||||
uses: actions/checkout@v2
|
||||
- name: 🛠 Setup Python
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: '3.x'
|
||||
- name: 🛠 Install dependencies
|
||||
run: pip install -r script/requirements.txt
|
||||
- name: 🛠 Generate files from template
|
||||
run: python script/generate.py dev beta stable
|
||||
- name: 🚀 Run Home Assistant Add-on Lint on ${{ matrix.channel }}
|
||||
uses: frenck/action-addon-linter@v2
|
||||
with:
|
||||
path: "./${{ matrix.channel }}"
|
||||
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
[](https://esphome.io/)
|
||||
|
||||
This is the Hass.io addon repository for ESPHome. For the ESPHome source please go to [esphome](https://github.com/esphome/esphome)
|
||||
This is the Home Assistant (former Hass.io) addon repository for ESPHome. For the ESPHome source please go to [esphome](https://github.com/esphome/esphome).
|
||||
|
||||
**Documentation:** https://esphome.io/
|
||||
|
||||
|
||||
81
esphome-beta/DOCS.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Home Assistant Community Add-on: ESPHome
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant 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/
|
||||
|
||||
## 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: `ssl`
|
||||
|
||||
Enables or disables encrypted SSL/TLS (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the add-on.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.14.0: `"esphome_version": "v1.14.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
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 `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
1
esphome-beta/FILES ARE GENERATED DO NOT EDIT
Normal file
@@ -0,0 +1 @@
|
||||
Any edits should be made to the files in the 'template' directory
|
||||
@@ -1,4 +1,4 @@
|
||||
# ESPHome Hass.io Add-On
|
||||
# ESPHome Home Assistant Add-On
|
||||
|
||||
[](https://esphome.io/)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
## About
|
||||
|
||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
||||
directly through Hass.io **with no programming experience required**. All you need to do
|
||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||
handled by ESPHome.
|
||||
|
||||
@@ -17,7 +17,7 @@ handled by ESPHome.
|
||||
<img title="ESPHome dashboard screenshot" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||
</p>
|
||||
|
||||
[_View the ESPHome documentation here_](https://esphome.io/)
|
||||
[View the ESPHome documentation](https://esphome.io/)
|
||||
|
||||
## Example
|
||||
|
||||
@@ -32,98 +32,9 @@ Then just click UPLOAD and the sensor will magically appear in Home Assistant:
|
||||
|
||||
<img title="ESPHome Home Assistant MQTT discovery" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/temperature-humidity.png" width="600px"></img>
|
||||
|
||||
## Installation
|
||||
|
||||
To install this Hass.io add-on you need to add the ESPHome add-on repository
|
||||
first:
|
||||
|
||||
1. Add the epshomeyaml add-ons repository to your Hass.io instance. You can do this by navigating to the "Add-on Store" tab in the Hass.io panel and then entering https://github.com/esphome/hassio in the "Add new repository by URL" field.
|
||||
2. Now scroll down and select the "ESPHome" add-on.
|
||||
3. Press install to download the add-on and unpack it on your machine. This can take some time.
|
||||
4. Optional: If you're using SSL 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.
|
||||
5. Start the add-on, check the logs of the add-on to see if everything went well.
|
||||
6. Click "OPEN WEB UI" to open the ESPHome dashboard. You will be asked for your Home Assistant credentials - ESPHome uses Hass.io's authentication system to log you in.
|
||||
|
||||
**NOTE**: Installation on RPis running in 64-bit mode is currently not possible. Please use the 32-bit variant of HassOS instead.
|
||||
|
||||
You can view the ESPHome docs here: https://esphome.io/
|
||||
|
||||
## 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",
|
||||
"port": 6052
|
||||
}
|
||||
```
|
||||
|
||||
### Option: `port`
|
||||
|
||||
The port to start the dashboard server on. Default is 6052.
|
||||
|
||||
### Option: `ssl`
|
||||
|
||||
Enables/Disables encrypted SSL (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the addon.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.10.0: `"esphome_version": "v1.10.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
Host the ESPHome dashboard under a relative URL, so that it can be integrated
|
||||
into existing web proxys like nginx under a relative URl. Defaults to `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable stremer 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
|
||||
[discord-shield]: https://img.shields.io/discord/429907082951524364.svg
|
||||
[dht22]: https://esphome.io/components/sensor/dht.html
|
||||
[discord]: https://discord.me/KhAMKrd
|
||||
[discord]: https://discord.gg/KhAMKrd
|
||||
[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg
|
||||
[releases]: https://esphome.io/changelog/index.html
|
||||
[repository]: https://github.com/esphome/esphome
|
||||
|
||||
@@ -1,43 +1,41 @@
|
||||
{
|
||||
"name": "ESPHome (beta)",
|
||||
"version": "1.12.2",
|
||||
"slug": "esphome-beta",
|
||||
"description": "Beta version of ESPHome Hass.io add-on.",
|
||||
"url": "https://beta.esphome.io/",
|
||||
"webui": "http://[HOST]:[PORT:6052]",
|
||||
"startup": "application",
|
||||
"arch": [
|
||||
"amd64",
|
||||
"armhf",
|
||||
"i386"
|
||||
"armv7",
|
||||
"aarch64"
|
||||
],
|
||||
"hassio_api": true,
|
||||
"auth_api": true,
|
||||
"hassio_role": "default",
|
||||
"homeassistant_api": false,
|
||||
"description": "Beta version of ESPHome add-on.",
|
||||
"hassio_api": true,
|
||||
"host_network": true,
|
||||
"boot": "auto",
|
||||
"auto_uart": true,
|
||||
"image": "esphome/esphome-hassio-{arch}",
|
||||
"ingress": true,
|
||||
"ingress_port": 0,
|
||||
"map": [
|
||||
"ssl",
|
||||
"ssl:ro",
|
||||
"config:rw"
|
||||
],
|
||||
"options": {
|
||||
"ssl": false,
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"port": 6052
|
||||
"name": "ESPHome (beta)",
|
||||
"panel_icon": "mdi:chip",
|
||||
"ports": {
|
||||
"6052/tcp": null
|
||||
},
|
||||
"ports_description": {
|
||||
"6052/tcp": "Web interface (Not required for Home Assistant Ingress)"
|
||||
},
|
||||
"schema": {
|
||||
"ssl": "bool",
|
||||
"certfile": "str",
|
||||
"keyfile": "str",
|
||||
"port": "int",
|
||||
"leave_front_door_open": "bool?",
|
||||
"certfile": "str?",
|
||||
"esphome_version": "str?",
|
||||
"streamer_mode": "bool?",
|
||||
"keyfile": "str?",
|
||||
"leave_front_door_open": "bool?",
|
||||
"relative_url": "str?",
|
||||
"status_use_ping": "bool?"
|
||||
"ssl": "bool?",
|
||||
"status_use_ping": "bool?",
|
||||
"streamer_mode": "bool?"
|
||||
},
|
||||
"image": "esphome/esphome-hassio-{arch}"
|
||||
}
|
||||
"slug": "esphome-beta",
|
||||
"stage": "experimental",
|
||||
"uart": true,
|
||||
"url": "https://beta.esphome.io/",
|
||||
"version": "1.19.0b2"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
81
esphome-dev/DOCS.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Home Assistant Community Add-on: ESPHome
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant 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/
|
||||
|
||||
## 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: `ssl`
|
||||
|
||||
Enables or disables encrypted SSL/TLS (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the add-on.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.14.0: `"esphome_version": "v1.14.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
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 `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
@@ -1,11 +1,10 @@
|
||||
ARG BUILD_FROM=esphome/esphome-hassio-base-amd64:1.4.3
|
||||
ARG BUILD_FROM=esphome/esphome-hassio-base-amd64:2.0.0
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
# Copy root filesystem
|
||||
COPY rootfs /
|
||||
|
||||
RUN \
|
||||
pip2 install --no-cache-dir --no-binary :all: https://github.com/esphome/esphome/archive/dev.zip
|
||||
RUN pip3 install --no-cache-dir https://github.com/esphome/esphome/archive/dev.zip
|
||||
|
||||
# Build arguments
|
||||
ARG BUILD_VERSION=dev
|
||||
|
||||
1
esphome-dev/FILES ARE GENERATED DO NOT EDIT
Normal file
@@ -0,0 +1 @@
|
||||
Any edits should be made to the files in the 'template' directory
|
||||
@@ -1,4 +1,4 @@
|
||||
# ESPHome Hass.io Add-On
|
||||
# ESPHome Home Assistant Add-On
|
||||
|
||||
[](https://esphome.io/)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
## About
|
||||
|
||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
||||
directly through Hass.io **with no programming experience required**. All you need to do
|
||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||
handled by ESPHome.
|
||||
|
||||
@@ -17,7 +17,7 @@ handled by ESPHome.
|
||||
<img title="ESPHome dashboard screenshot" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||
</p>
|
||||
|
||||
[_View the ESPHome documentation here_](https://esphome.io/)
|
||||
[View the ESPHome documentation](https://esphome.io/)
|
||||
|
||||
## Example
|
||||
|
||||
@@ -32,98 +32,9 @@ Then just click UPLOAD and the sensor will magically appear in Home Assistant:
|
||||
|
||||
<img title="ESPHome Home Assistant MQTT discovery" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/temperature-humidity.png" width="600px"></img>
|
||||
|
||||
## Installation
|
||||
|
||||
To install this Hass.io add-on you need to add the ESPHome add-on repository
|
||||
first:
|
||||
|
||||
1. Add the epshomeyaml add-ons repository to your Hass.io instance. You can do this by navigating to the "Add-on Store" tab in the Hass.io panel and then entering https://github.com/esphome/hassio in the "Add new repository by URL" field.
|
||||
2. Now scroll down and select the "ESPHome" add-on.
|
||||
3. Press install to download the add-on and unpack it on your machine. This can take some time.
|
||||
4. Optional: If you're using SSL 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.
|
||||
5. Start the add-on, check the logs of the add-on to see if everything went well.
|
||||
6. Click "OPEN WEB UI" to open the ESPHome dashboard. You will be asked for your Home Assistant credentials - ESPHome uses Hass.io's authentication system to log you in.
|
||||
|
||||
**NOTE**: Installation on RPis running in 64-bit mode is currently not possible. Please use the 32-bit variant of HassOS instead.
|
||||
|
||||
You can view the ESPHome docs here: https://esphome.io/
|
||||
|
||||
## 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",
|
||||
"port": 6052
|
||||
}
|
||||
```
|
||||
|
||||
### Option: `port`
|
||||
|
||||
The port to start the dashboard server on. Default is 6052.
|
||||
|
||||
### Option: `ssl`
|
||||
|
||||
Enables/Disables encrypted SSL (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the addon.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.10.0: `"esphome_version": "v1.10.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
Host the ESPHome dashboard under a relative URL, so that it can be integrated
|
||||
into existing web proxys like nginx under a relative URl. Defaults to `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable stremer 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
|
||||
[discord-shield]: https://img.shields.io/discord/429907082951524364.svg
|
||||
[dht22]: https://esphome.io/components/sensor/dht.html
|
||||
[discord]: https://discord.me/KhAMKrd
|
||||
[discord]: https://discord.gg/KhAMKrd
|
||||
[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg
|
||||
[releases]: https://esphome.io/changelog/index.html
|
||||
[repository]: https://github.com/esphome/esphome
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
{
|
||||
"squash": false,
|
||||
"build_from": {
|
||||
"aarch64": "esphome/esphome-hassio-base-aarch64:1.4.1",
|
||||
"amd64": "esphome/esphome-hassio-base-amd64:1.4.1",
|
||||
"armhf": "esphome/esphome-hassio-base-armhf:1.4.1",
|
||||
"i386": "esphome/esphome-hassio-base-i386:1.4.1"
|
||||
},
|
||||
"args": {}
|
||||
}
|
||||
"aarch64": "esphome/esphome-hassio-base-aarch64:3.1.0",
|
||||
"amd64": "esphome/esphome-hassio-base-amd64:3.1.0",
|
||||
"armv7": "esphome/esphome-hassio-base-armv7:3.1.0"
|
||||
}
|
||||
}
|
||||
@@ -1,43 +1,43 @@
|
||||
{
|
||||
"name": "ESPHome (dev)",
|
||||
"version": "dev",
|
||||
"slug": "esphome-dev",
|
||||
"description": "Development Version! Manage and program ESP8266/ESP32 microcontrollers through YAML configuration files",
|
||||
"url": "https://esphome.io/",
|
||||
"webui": "http://[HOST]:[PORT:6052]",
|
||||
"startup": "application",
|
||||
"arch": [
|
||||
"amd64",
|
||||
"armhf",
|
||||
"i386"
|
||||
"armv7",
|
||||
"aarch64"
|
||||
],
|
||||
"hassio_api": true,
|
||||
"auth_api": true,
|
||||
"hassio_role": "default",
|
||||
"homeassistant_api": false,
|
||||
"description": "Development Version! Manage and program ESP8266/ESP32 microcontrollers through YAML configuration files",
|
||||
"hassio_api": true,
|
||||
"host_network": true,
|
||||
"boot": "auto",
|
||||
"auto_uart": true,
|
||||
"ingress": true,
|
||||
"ingress_port": 0,
|
||||
"map": [
|
||||
"ssl",
|
||||
"ssl:ro",
|
||||
"config:rw"
|
||||
],
|
||||
"name": "ESPHome (dev)",
|
||||
"options": {
|
||||
"ssl": false,
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"port": 6052,
|
||||
"esphome_version": "dev"
|
||||
},
|
||||
"panel_icon": "mdi:chip",
|
||||
"ports": {
|
||||
"6052/tcp": null
|
||||
},
|
||||
"ports_description": {
|
||||
"6052/tcp": "Web interface (Not required for Home Assistant Ingress)"
|
||||
},
|
||||
"schema": {
|
||||
"ssl": "bool",
|
||||
"certfile": "str",
|
||||
"keyfile": "str",
|
||||
"port": "int",
|
||||
"leave_front_door_open": "bool?",
|
||||
"certfile": "str?",
|
||||
"esphome_version": "str?",
|
||||
"streamer_mode": "bool?",
|
||||
"keyfile": "str?",
|
||||
"leave_front_door_open": "bool?",
|
||||
"relative_url": "str?",
|
||||
"status_use_ping": "bool?"
|
||||
}
|
||||
}
|
||||
"ssl": "bool?",
|
||||
"status_use_ping": "bool?",
|
||||
"streamer_mode": "bool?"
|
||||
},
|
||||
"slug": "esphome-dev",
|
||||
"stage": "experimental",
|
||||
"uart": true,
|
||||
"url": "https://next.esphome.io/",
|
||||
"version": "dev"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
@@ -6,21 +6,29 @@
|
||||
|
||||
declare certfile
|
||||
declare keyfile
|
||||
declare port
|
||||
declare direct_port
|
||||
declare ingress_interface
|
||||
declare ingress_port
|
||||
|
||||
mkdir -p /var/log/nginx
|
||||
|
||||
# Enable SSL
|
||||
if bashio::config.true 'ssl'; then
|
||||
rm /etc/nginx/nginx.conf
|
||||
mv /etc/nginx/nginx-ssl.conf /etc/nginx/nginx.conf
|
||||
direct_port=$(bashio::addon.port 6052)
|
||||
if bashio::var.has_value "${direct_port}"; then
|
||||
if bashio::config.true 'ssl'; then
|
||||
certfile=$(bashio::config 'certfile')
|
||||
keyfile=$(bashio::config 'keyfile')
|
||||
|
||||
certfile=$(bashio::config 'certfile')
|
||||
keyfile=$(bashio::config 'keyfile')
|
||||
mv /etc/nginx/servers/direct-ssl.disabled /etc/nginx/servers/direct.conf
|
||||
sed -i "s/%%certfile%%/${certfile}/g" /etc/nginx/servers/direct.conf
|
||||
sed -i "s/%%keyfile%%/${keyfile}/g" /etc/nginx/servers/direct.conf
|
||||
else
|
||||
mv /etc/nginx/servers/direct.disabled /etc/nginx/servers/direct.conf
|
||||
fi
|
||||
|
||||
sed -i "s/%%certfile%%/${certfile}/g" /etc/nginx/nginx.conf
|
||||
sed -i "s/%%keyfile%%/${keyfile}/g" /etc/nginx/nginx.conf
|
||||
sed -i "s/%%port%%/${direct_port}/g" /etc/nginx/servers/direct.conf
|
||||
fi
|
||||
|
||||
port=$(bashio::config 'port')
|
||||
sed -i "s/%%port%%/${port}/g" /etc/nginx/nginx.conf
|
||||
ingress_port=$(bashio::addon.ingress_port)
|
||||
ingress_interface=$(bashio::addon.ip_address)
|
||||
sed -i "s/%%port%%/${ingress_port}/g" /etc/nginx/servers/ingress.conf
|
||||
sed -i "s/%%interface%%/${ingress_interface}/g" /etc/nginx/servers/ingress.conf
|
||||
|
||||
@@ -8,8 +8,16 @@ declare esphome_version
|
||||
|
||||
if bashio::config.has_value 'esphome_version'; then
|
||||
esphome_version=$(bashio::config 'esphome_version')
|
||||
full_url="https://github.com/esphome/esphome/archive/${esphome_version}.zip"
|
||||
if [[ $esphome_version == *":"* ]]; then
|
||||
IFS=':' read -r -a array <<< "$esphome_version"
|
||||
username=${array[0]}
|
||||
ref=${array[1]}
|
||||
else
|
||||
username="esphome"
|
||||
ref=$esphome_version
|
||||
fi
|
||||
full_url="https://github.com/${username}/esphome/archive/${ref}.zip"
|
||||
bashio::log.info "Installing esphome version '${esphome_version}' (${full_url})..."
|
||||
pip2 install --no-cache-dir --no-binary :all: "${full_url}" \
|
||||
pip3 install -U --no-cache-dir "${full_url}" \
|
||||
|| bashio::exit.nok "Failed installing esphome pinned version."
|
||||
fi
|
||||
|
||||
96
esphome-dev/rootfs/etc/nginx/includes/mime.types
Normal file
@@ -0,0 +1,96 @@
|
||||
types {
|
||||
text/html html htm shtml;
|
||||
text/css css;
|
||||
text/xml xml;
|
||||
image/gif gif;
|
||||
image/jpeg jpeg jpg;
|
||||
application/javascript js;
|
||||
application/atom+xml atom;
|
||||
application/rss+xml rss;
|
||||
|
||||
text/mathml mml;
|
||||
text/plain txt;
|
||||
text/vnd.sun.j2me.app-descriptor jad;
|
||||
text/vnd.wap.wml wml;
|
||||
text/x-component htc;
|
||||
|
||||
image/png png;
|
||||
image/svg+xml svg svgz;
|
||||
image/tiff tif tiff;
|
||||
image/vnd.wap.wbmp wbmp;
|
||||
image/webp webp;
|
||||
image/x-icon ico;
|
||||
image/x-jng jng;
|
||||
image/x-ms-bmp bmp;
|
||||
|
||||
font/woff woff;
|
||||
font/woff2 woff2;
|
||||
|
||||
application/java-archive jar war ear;
|
||||
application/json json;
|
||||
application/mac-binhex40 hqx;
|
||||
application/msword doc;
|
||||
application/pdf pdf;
|
||||
application/postscript ps eps ai;
|
||||
application/rtf rtf;
|
||||
application/vnd.apple.mpegurl m3u8;
|
||||
application/vnd.google-earth.kml+xml kml;
|
||||
application/vnd.google-earth.kmz kmz;
|
||||
application/vnd.ms-excel xls;
|
||||
application/vnd.ms-fontobject eot;
|
||||
application/vnd.ms-powerpoint ppt;
|
||||
application/vnd.oasis.opendocument.graphics odg;
|
||||
application/vnd.oasis.opendocument.presentation odp;
|
||||
application/vnd.oasis.opendocument.spreadsheet ods;
|
||||
application/vnd.oasis.opendocument.text odt;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation
|
||||
pptx;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
|
||||
xlsx;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document
|
||||
docx;
|
||||
application/vnd.wap.wmlc wmlc;
|
||||
application/x-7z-compressed 7z;
|
||||
application/x-cocoa cco;
|
||||
application/x-java-archive-diff jardiff;
|
||||
application/x-java-jnlp-file jnlp;
|
||||
application/x-makeself run;
|
||||
application/x-perl pl pm;
|
||||
application/x-pilot prc pdb;
|
||||
application/x-rar-compressed rar;
|
||||
application/x-redhat-package-manager rpm;
|
||||
application/x-sea sea;
|
||||
application/x-shockwave-flash swf;
|
||||
application/x-stuffit sit;
|
||||
application/x-tcl tcl tk;
|
||||
application/x-x509-ca-cert der pem crt;
|
||||
application/x-xpinstall xpi;
|
||||
application/xhtml+xml xhtml;
|
||||
application/xspf+xml xspf;
|
||||
application/zip zip;
|
||||
|
||||
application/octet-stream bin exe dll;
|
||||
application/octet-stream deb;
|
||||
application/octet-stream dmg;
|
||||
application/octet-stream iso img;
|
||||
application/octet-stream msi msp msm;
|
||||
|
||||
audio/midi mid midi kar;
|
||||
audio/mpeg mp3;
|
||||
audio/ogg ogg;
|
||||
audio/x-m4a m4a;
|
||||
audio/x-realaudio ra;
|
||||
|
||||
video/3gpp 3gpp 3gp;
|
||||
video/mp2t ts;
|
||||
video/mp4 mp4;
|
||||
video/mpeg mpeg mpg;
|
||||
video/quicktime mov;
|
||||
video/webm webm;
|
||||
video/x-flv flv;
|
||||
video/x-m4v m4v;
|
||||
video/x-mng mng;
|
||||
video/x-ms-asf asx asf;
|
||||
video/x-ms-wmv wmv;
|
||||
video/x-msvideo avi;
|
||||
}
|
||||
16
esphome-dev/rootfs/etc/nginx/includes/proxy_params.conf
Normal file
@@ -0,0 +1,16 @@
|
||||
proxy_http_version 1.1;
|
||||
proxy_ignore_client_abort off;
|
||||
proxy_read_timeout 86400s;
|
||||
proxy_redirect off;
|
||||
proxy_send_timeout 86400s;
|
||||
proxy_max_temp_file_size 0;
|
||||
|
||||
proxy_set_header Accept-Encoding "";
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header Authorization "";
|
||||
6
esphome-dev/rootfs/etc/nginx/includes/server_params.conf
Normal file
@@ -0,0 +1,6 @@
|
||||
root /dev/null;
|
||||
server_name $hostname;
|
||||
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Robots-Tag none;
|
||||
9
esphome-dev/rootfs/etc/nginx/includes/ssl_params.conf
Normal file
@@ -0,0 +1,9 @@
|
||||
ssl_protocols TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
|
||||
ssl_ecdh_curve secp384r1;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_tickets off;
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
@@ -1,62 +0,0 @@
|
||||
worker_processes 1;
|
||||
pid /var/run/nginx.pid;
|
||||
error_log stderr;
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
access_log stdout;
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
|
||||
upstream esphome {
|
||||
ip_hash;
|
||||
server unix:/var/run/esphome.sock;
|
||||
}
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name hassio.local;
|
||||
listen %%port%% default_server ssl;
|
||||
root /dev/null;
|
||||
|
||||
ssl_certificate /ssl/%%certfile%%;
|
||||
ssl_certificate_key /ssl/%%keyfile%%;
|
||||
ssl_protocols TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
|
||||
ssl_ecdh_curve secp384r1;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_tickets off;
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
|
||||
# Redirect http requests to https on the same port.
|
||||
# https://rageagainstshell.com/2016/11/redirect-http-to-https-on-the-same-port-in-nginx/
|
||||
error_page 497 https://$http_host$request_uri;
|
||||
|
||||
location / {
|
||||
proxy_redirect off;
|
||||
proxy_pass http://esphome;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Authorization "";
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
}
|
||||
}
|
||||
}
|
||||
51
esphome-dev/rootfs/etc/nginx/nginx.conf
Executable file → Normal file
@@ -1,46 +1,33 @@
|
||||
worker_processes 1;
|
||||
daemon off;
|
||||
user root;
|
||||
pid /var/run/nginx.pid;
|
||||
error_log stderr;
|
||||
|
||||
worker_processes 1;
|
||||
# Hass.io addon log
|
||||
error_log /proc/1/fd/1 error;
|
||||
events {
|
||||
worker_connections 1024;
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
access_log stdout;
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
include /etc/nginx/includes/mime.types;
|
||||
access_log stdout;
|
||||
default_type application/octet-stream;
|
||||
gzip on;
|
||||
keepalive_timeout 65;
|
||||
sendfile on;
|
||||
server_tokens off;
|
||||
|
||||
upstream esphome {
|
||||
ip_hash;
|
||||
server unix:/var/run/esphome.sock;
|
||||
}
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
server_name hassio.local;
|
||||
listen %%port%% default_server;
|
||||
root /dev/null;
|
||||
# Use Hass.io supervisor as resolver
|
||||
resolver 172.30.32.2;
|
||||
|
||||
location / {
|
||||
proxy_redirect off;
|
||||
proxy_pass http://esphome;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Authorization "";
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
}
|
||||
upstream esphome {
|
||||
server unix:/var/run/esphome.sock;
|
||||
}
|
||||
|
||||
include /etc/nginx/servers/*.conf;
|
||||
}
|
||||
|
||||
22
esphome-dev/rootfs/etc/nginx/servers/direct-ssl.disabled
Normal file
@@ -0,0 +1,22 @@
|
||||
server {
|
||||
listen %%port%% default_server ssl http2;
|
||||
|
||||
include /etc/nginx/includes/server_params.conf;
|
||||
include /etc/nginx/includes/proxy_params.conf;
|
||||
include /etc/nginx/includes/ssl_params.conf;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate /ssl/%%certfile%%;
|
||||
ssl_certificate_key /ssl/%%keyfile%%;
|
||||
|
||||
# Clear Hass.io Ingress header
|
||||
proxy_set_header X-Hassio-Ingress "";
|
||||
|
||||
# Redirect http requests to https on the same port.
|
||||
# https://rageagainstshell.com/2016/11/redirect-http-to-https-on-the-same-port-in-nginx/
|
||||
error_page 497 https://$http_host$request_uri;
|
||||
|
||||
location / {
|
||||
proxy_pass http://esphome;
|
||||
}
|
||||
}
|
||||
12
esphome-dev/rootfs/etc/nginx/servers/direct.disabled
Normal file
@@ -0,0 +1,12 @@
|
||||
server {
|
||||
listen %%port%% default_server;
|
||||
|
||||
include /etc/nginx/includes/server_params.conf;
|
||||
include /etc/nginx/includes/proxy_params.conf;
|
||||
# Clear Hass.io Ingress header
|
||||
proxy_set_header X-Hassio-Ingress "";
|
||||
|
||||
location / {
|
||||
proxy_pass http://esphome;
|
||||
}
|
||||
}
|
||||
16
esphome-dev/rootfs/etc/nginx/servers/ingress.conf
Normal file
@@ -0,0 +1,16 @@
|
||||
server {
|
||||
listen %%interface%%:%%port%% default_server;
|
||||
|
||||
include /etc/nginx/includes/server_params.conf;
|
||||
include /etc/nginx/includes/proxy_params.conf;
|
||||
# Set Hass.io Ingress header
|
||||
proxy_set_header X-Hassio-Ingress "YES";
|
||||
|
||||
location / {
|
||||
# Only allow from Hass.io supervisor
|
||||
allow 172.30.32.2;
|
||||
deny all;
|
||||
|
||||
proxy_pass http://esphome;
|
||||
}
|
||||
}
|
||||
@@ -4,5 +4,11 @@
|
||||
# Runs the NGINX proxy
|
||||
# ==============================================================================
|
||||
|
||||
bashio::log.info "Waiting for dashboard to come up..."
|
||||
|
||||
while [[ ! -S /var/run/esphome.sock ]]; do
|
||||
sleep 0.5
|
||||
done
|
||||
|
||||
bashio::log.info "Starting NGINX..."
|
||||
exec nginx -g "daemon off;"
|
||||
exec nginx
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
; This file allows the docker build file to install the required platformio
|
||||
; platforms
|
||||
|
||||
[env:espressif8266]
|
||||
platform = espressif8266@1.8.0
|
||||
board = nodemcuv2
|
||||
framework = arduino
|
||||
|
||||
[env:espressif32]
|
||||
platform = espressif32@1.5.0
|
||||
board = nodemcu-32s
|
||||
framework = arduino
|
||||
81
esphome/DOCS.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Home Assistant Community Add-on: ESPHome
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant 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/
|
||||
|
||||
## 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: `ssl`
|
||||
|
||||
Enables or disables encrypted SSL/TLS (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the add-on.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.14.0: `"esphome_version": "v1.14.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
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 `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
1
esphome/FILES ARE GENERATED DO NOT EDIT
Normal file
@@ -0,0 +1 @@
|
||||
Any edits should be made to the files in the 'template' directory
|
||||
@@ -1,4 +1,4 @@
|
||||
# ESPHome Hass.io Add-On
|
||||
# ESPHome Home Assistant Add-On
|
||||
|
||||
[](https://esphome.io/)
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
## About
|
||||
|
||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
||||
directly through Hass.io **with no programming experience required**. All you need to do
|
||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||
handled by ESPHome.
|
||||
|
||||
@@ -17,7 +17,7 @@ handled by ESPHome.
|
||||
<img title="ESPHome dashboard screenshot" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||
</p>
|
||||
|
||||
[_View the ESPHome documentation here_](https://esphome.io/)
|
||||
[View the ESPHome documentation](https://esphome.io/)
|
||||
|
||||
## Example
|
||||
|
||||
@@ -32,98 +32,9 @@ Then just click UPLOAD and the sensor will magically appear in Home Assistant:
|
||||
|
||||
<img title="ESPHome Home Assistant MQTT discovery" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/temperature-humidity.png" width="600px"></img>
|
||||
|
||||
## Installation
|
||||
|
||||
To install this Hass.io add-on you need to add the ESPHome add-on repository
|
||||
first:
|
||||
|
||||
1. Add the epshomeyaml add-ons repository to your Hass.io instance. You can do this by navigating to the "Add-on Store" tab in the Hass.io panel and then entering https://github.com/esphome/hassio in the "Add new repository by URL" field.
|
||||
2. Now scroll down and select the "ESPHome" add-on.
|
||||
3. Press install to download the add-on and unpack it on your machine. This can take some time.
|
||||
4. Optional: If you're using SSL 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.
|
||||
5. Start the add-on, check the logs of the add-on to see if everything went well.
|
||||
6. Click "OPEN WEB UI" to open the ESPHome dashboard. You will be asked for your Home Assistant credentials - ESPHome uses Hass.io's authentication system to log you in.
|
||||
|
||||
**NOTE**: Installation on RPis running in 64-bit mode is currently not possible. Please use the 32-bit variant of HassOS instead.
|
||||
|
||||
You can view the ESPHome docs here: https://esphome.io/
|
||||
|
||||
## 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",
|
||||
"port": 6052
|
||||
}
|
||||
```
|
||||
|
||||
### Option: `port`
|
||||
|
||||
The port to start the dashboard server on. Default is 6052.
|
||||
|
||||
### Option: `ssl`
|
||||
|
||||
Enables/Disables encrypted SSL (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Hass.io
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the addon.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.10.0: `"esphome_version": "v1.10.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
Host the ESPHome dashboard under a relative URL, so that it can be integrated
|
||||
into existing web proxys like nginx under a relative URl. Defaults to `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable stremer 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
|
||||
[discord-shield]: https://img.shields.io/discord/429907082951524364.svg
|
||||
[dht22]: https://esphome.io/components/sensor/dht.html
|
||||
[discord]: https://discord.me/KhAMKrd
|
||||
[discord]: https://discord.gg/KhAMKrd
|
||||
[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg
|
||||
[releases]: https://esphome.io/changelog/index.html
|
||||
[repository]: https://github.com/esphome/esphome
|
||||
|
||||
@@ -1,43 +1,40 @@
|
||||
{
|
||||
"name": "ESPHome",
|
||||
"version": "1.12.2",
|
||||
"slug": "esphome",
|
||||
"description": "ESPHome Hass.io add-on for intelligently managing all your ESP8266/ESP32 devices.",
|
||||
"url": "https://esphome.io/",
|
||||
"webui": "http://[HOST]:[PORT:6052]",
|
||||
"startup": "application",
|
||||
"arch": [
|
||||
"amd64",
|
||||
"armhf",
|
||||
"i386"
|
||||
"armv7",
|
||||
"aarch64"
|
||||
],
|
||||
"hassio_api": true,
|
||||
"auth_api": true,
|
||||
"hassio_role": "default",
|
||||
"homeassistant_api": false,
|
||||
"description": "ESPHome Hass.io add-on for intelligently managing all your ESP8266/ESP32 devices.",
|
||||
"hassio_api": true,
|
||||
"host_network": true,
|
||||
"boot": "auto",
|
||||
"auto_uart": true,
|
||||
"image": "esphome/esphome-hassio-{arch}",
|
||||
"ingress": true,
|
||||
"ingress_port": 0,
|
||||
"map": [
|
||||
"ssl",
|
||||
"ssl:ro",
|
||||
"config:rw"
|
||||
],
|
||||
"options": {
|
||||
"ssl": false,
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"port": 6052
|
||||
"name": "ESPHome",
|
||||
"panel_icon": "mdi:chip",
|
||||
"ports": {
|
||||
"6052/tcp": null
|
||||
},
|
||||
"ports_description": {
|
||||
"6052/tcp": "Web interface (Not required for Home Assistant Ingress)"
|
||||
},
|
||||
"schema": {
|
||||
"ssl": "bool",
|
||||
"certfile": "str",
|
||||
"keyfile": "str",
|
||||
"port": "int",
|
||||
"leave_front_door_open": "bool?",
|
||||
"certfile": "str?",
|
||||
"esphome_version": "str?",
|
||||
"streamer_mode": "bool?",
|
||||
"keyfile": "str?",
|
||||
"leave_front_door_open": "bool?",
|
||||
"relative_url": "str?",
|
||||
"status_use_ping": "bool?"
|
||||
"ssl": "bool?",
|
||||
"status_use_ping": "bool?",
|
||||
"streamer_mode": "bool?"
|
||||
},
|
||||
"image": "esphome/esphome-hassio-{arch}"
|
||||
}
|
||||
"slug": "esphome",
|
||||
"uart": true,
|
||||
"url": "https://esphome.io/",
|
||||
"version": "1.18.0"
|
||||
}
|
||||
BIN
esphome/icon.png
|
Before Width: | Height: | Size: 2.4 KiB After Width: | Height: | Size: 2.9 KiB |
BIN
esphome/logo.png
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 11 KiB |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "ESPHome Hass.io Add-Ons",
|
||||
"name": "ESPHome Home Assistant Add-Ons",
|
||||
"url": "https://github.com/esphome/hassio",
|
||||
"maintainer": "ESPHome <contact@esphome.io>"
|
||||
"maintainer": "ESPHome <esphome@nabucasa.com>"
|
||||
}
|
||||
|
||||
24
script/NOTES.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Maintainer notes
|
||||
|
||||
This repository is pulled by all Hassio installs and contains
|
||||
the Hassio config for each type of install: latest, beta and dev.
|
||||
|
||||
- `latest` always points to the most recent full release.
|
||||
- `beta` points to the most recent full release or beta release (whichever is newer). This is so that beta image users automatically get upgraded to the stable install once it gets released.
|
||||
- `dev` is an image that Hassio builds itself and contains the latest ESPHome version straigt from dev branch.
|
||||
|
||||
The config.json files are all automatically written with the script in this directory and the `template/addon_config.yaml` file.
|
||||
|
||||
To update one of the images: use
|
||||
|
||||
```bash
|
||||
$ pip3 install -r script/requirements.txt
|
||||
$ python3 script/generate.py [dev|beta|latest]
|
||||
```
|
||||
|
||||
The `esphome-dev/rootfs` folder is shared with the `docker/rootfs` folder in the esphome repo.
|
||||
This could be solved better, but currently `rsync` is used to copy the files over:
|
||||
|
||||
```bash
|
||||
rsync -av ../esphome/docker/rootfs esphome-dev/
|
||||
```
|
||||
90
script/bump-version.py
Executable file
@@ -0,0 +1,90 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import re
|
||||
import subprocess
|
||||
from dataclasses import dataclass
|
||||
import sys
|
||||
import os
|
||||
|
||||
sys.path.append(os.path.dirname(__file__))
|
||||
import generate
|
||||
|
||||
|
||||
@dataclass
|
||||
class Version:
|
||||
major: int
|
||||
minor: int
|
||||
patch: int
|
||||
beta: int = 0
|
||||
dev: bool = False
|
||||
|
||||
def __str__(self):
|
||||
return f'{self.major}.{self.minor}.{self.full_patch}'
|
||||
|
||||
@property
|
||||
def full_patch(self):
|
||||
res = f'{self.patch}'
|
||||
if self.beta > 0:
|
||||
res += f'b{self.beta}'
|
||||
if self.dev:
|
||||
res += '-dev'
|
||||
return res
|
||||
|
||||
@classmethod
|
||||
def parse(cls, value):
|
||||
match = re.match(r'(\d+).(\d+).(\d+)(b\d+)?(-dev)?', value)
|
||||
assert match is not None
|
||||
major = int(match[1])
|
||||
minor = int(match[2])
|
||||
patch = int(match[3])
|
||||
beta = int(match[4][1:]) if match[4] else 0
|
||||
dev = bool(match[5])
|
||||
return Version(
|
||||
major=major, minor=minor, patch=patch,
|
||||
beta=beta, dev=dev
|
||||
)
|
||||
|
||||
|
||||
def sub(path, pattern, repl, expected_count=1):
|
||||
with open(path) as fh:
|
||||
content = fh.read()
|
||||
content, count = re.subn(pattern, repl, content, flags=re.MULTILINE)
|
||||
if expected_count is not None:
|
||||
assert count == expected_count, f"Pattern {pattern} replacement failed!"
|
||||
with open(path, "wt") as fh:
|
||||
fh.write(content)
|
||||
|
||||
|
||||
def write_version(target: str, version: Version):
|
||||
# version: '1.14.5' # BETA
|
||||
# version: '1.14.5' # STABLE
|
||||
sub(
|
||||
'template/addon_config.yaml',
|
||||
r" version: '[^']+' # {}".format(target.upper()),
|
||||
f" version: '{version}' # {target.upper()}"
|
||||
)
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument('new_version', type=str)
|
||||
args = parser.parse_args()
|
||||
|
||||
version = Version.parse(args.new_version)
|
||||
assert not version.dev
|
||||
|
||||
print(f"Bumping to {version}")
|
||||
if version.beta:
|
||||
write_version('beta', version)
|
||||
generate.main(['beta'])
|
||||
else:
|
||||
assert not version.beta
|
||||
write_version('stable', version)
|
||||
write_version('beta', version)
|
||||
generate.main(['stable', 'beta'])
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main() or 0)
|
||||
57
script/generate.py
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import argparse
|
||||
import yaml
|
||||
from pathlib import Path
|
||||
from enum import Enum
|
||||
import json
|
||||
from shutil import copyfile
|
||||
import sys
|
||||
|
||||
class Channel(Enum):
|
||||
stable = 'stable'
|
||||
beta = 'beta'
|
||||
dev = 'dev'
|
||||
|
||||
|
||||
def main(args):
|
||||
parser = argparse.ArgumentParser(description='Generate ESPHome Home Assistant config.json')
|
||||
parser.add_argument('channels', nargs='+', type=Channel, choices=list(Channel))
|
||||
args = parser.parse_args(args)
|
||||
|
||||
root = Path(__file__).parent.parent
|
||||
templ = root / 'template'
|
||||
|
||||
with open(templ / "addon_config.yaml", 'r') as f:
|
||||
config = yaml.safe_load(f)
|
||||
|
||||
copyf = config['copy_files']
|
||||
|
||||
for channel in args.channels:
|
||||
conf = config[f'esphome-{channel.value}']
|
||||
base_image = conf.pop('base_image')
|
||||
dir_ = root / conf.pop('directory')
|
||||
path = dir_ / 'config.json'
|
||||
with open(path, 'w') as f:
|
||||
json.dump(conf, f, indent=2, sort_keys=True)
|
||||
|
||||
for file_, conf_ in copyf.items():
|
||||
copyfile(templ / file_, dir_ / file_)
|
||||
|
||||
path = dir_ / 'FILES ARE GENERATED DO NOT EDIT'
|
||||
with open(path, 'w') as f:
|
||||
f.write("Any edits should be made to the files in the 'template' directory")
|
||||
|
||||
if channel == Channel.dev:
|
||||
path = dir_ / 'build.json'
|
||||
build_conf = {
|
||||
"build_from": {arch: base_image.format(arch=arch) 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}")
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main(sys.argv[1:])
|
||||
1
script/requirements.txt
Normal file
@@ -0,0 +1 @@
|
||||
PyYAML==5.4
|
||||
81
template/DOCS.md
Normal file
@@ -0,0 +1,81 @@
|
||||
# Home Assistant Community Add-on: ESPHome
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in comparison to installing any other Home Assistant 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/
|
||||
|
||||
## 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: `ssl`
|
||||
|
||||
Enables or disables encrypted SSL/TLS (HTTPS) connections to the web server of this add-on.
|
||||
Set it to `true` to encrypt communications, `false` otherwise.
|
||||
Please note that if you set this to `true` you must also generate the key and certificate
|
||||
files for encryption. For example using [Let's Encrypt](https://www.home-assistant.io/addons/lets_encrypt/)
|
||||
or [Self-signed certificates](https://www.home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/).
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL. If this file doesn't exist, the add-on start will fail.
|
||||
|
||||
**Note**: The file MUST be stored in `/ssl/`, which is the default for Home Assistant
|
||||
|
||||
### Option: `leave_front_door_open`
|
||||
|
||||
Adding this option to the add-on configuration allows you to disable
|
||||
authentication by setting it to `true`.
|
||||
|
||||
### Option: `esphome_version`
|
||||
|
||||
Manually override which ESPHome version to use in the add-on.
|
||||
For example to install the latest development version, use `"esphome_version": "dev"`,
|
||||
or for version 1.14.0: `"esphome_version": "v1.14.0""`.
|
||||
|
||||
Please note that this does not always work and is only meant for testing, usually the
|
||||
ESPHome add-on and dashboard version must match to guarantee a working system.
|
||||
|
||||
### Option: `relative_url`
|
||||
|
||||
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 `/`.
|
||||
|
||||
### Option: `status_use_ping`
|
||||
|
||||
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.
|
||||
|
||||
Setting this to `true` will make ESPHome use ICMP ping requests to get the node status. Use this if all nodes always have offline status even when they're connected.
|
||||
|
||||
### Option: `streamer_mode`
|
||||
|
||||
If set to `true`, this will enable 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. Please note that you need to use
|
||||
the `!secret` tag in your YAML file to also prevent these from showing up
|
||||
while editing and validating.
|
||||
40
template/README.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# ESPHome Home Assistant Add-On
|
||||
|
||||
[](https://esphome.io/)
|
||||
|
||||
[](https://github.com/esphome/esphome)
|
||||
[![GitHub Release][releases-shield]][releases]
|
||||
[![Discord][discord-shield]][discord]
|
||||
|
||||
## About
|
||||
|
||||
This add-on allows you to manage and program your ESP8266 and ESP32 based microcontrollers
|
||||
directly through Home Assistant **with no programming experience required**. All you need to do
|
||||
is write YAML configuration files; the rest (over-the-air updates, compiling) is all
|
||||
handled by ESPHome.
|
||||
|
||||
<p align="center">
|
||||
<img title="ESPHome dashboard screenshot" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/screenshot.png" width="700px"></img>
|
||||
</p>
|
||||
|
||||
[View the ESPHome documentation](https://esphome.io/)
|
||||
|
||||
## Example
|
||||
|
||||
With ESPHome, you can go from a few lines of YAML straight to a custom-made
|
||||
firmware. For example, to include a [DHT22][dht22].
|
||||
temperature and humidity sensor, you just need to include 8 lines of YAML
|
||||
in your configuration file:
|
||||
|
||||
<img title="ESPHome DHT configuration example" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/dht-example.png" width="500px"></img>
|
||||
|
||||
Then just click UPLOAD and the sensor will magically appear in Home Assistant:
|
||||
|
||||
<img title="ESPHome Home Assistant MQTT discovery" src="https://raw.githubusercontent.com/esphome/hassio/master/esphome-dev/images/temperature-humidity.png" width="600px"></img>
|
||||
|
||||
[discord-shield]: https://img.shields.io/discord/429907082951524364.svg
|
||||
[dht22]: https://esphome.io/components/sensor/dht.html
|
||||
[discord]: https://discord.gg/KhAMKrd
|
||||
[releases-shield]: https://img.shields.io/github/release/esphome/esphome.svg
|
||||
[releases]: https://esphome.io/changelog/index.html
|
||||
[repository]: https://github.com/esphome/esphome
|
||||
73
template/addon_config.yaml
Normal file
@@ -0,0 +1,73 @@
|
||||
---
|
||||
base: &base
|
||||
url: https://esphome.io/
|
||||
arch:
|
||||
- amd64
|
||||
- armv7
|
||||
- aarch64
|
||||
# Uses Hass.io API (auth)
|
||||
hassio_api: true
|
||||
auth_api: true
|
||||
# Host network mode for mDNS
|
||||
host_network: true
|
||||
# Ingress settings
|
||||
ingress: true
|
||||
ingress_port: 0
|
||||
panel_icon: 'mdi:chip'
|
||||
# Automatically add UART devices to addon
|
||||
uart: true
|
||||
ports:
|
||||
'6052/tcp': null
|
||||
ports_description:
|
||||
'6052/tcp': "Web interface (Not required for Home Assistant Ingress)"
|
||||
map:
|
||||
- ssl:ro
|
||||
- config:rw
|
||||
schema:
|
||||
ssl: bool?
|
||||
certfile: str?
|
||||
keyfile: str?
|
||||
leave_front_door_open: bool?
|
||||
esphome_version: str?
|
||||
streamer_mode: bool?
|
||||
relative_url: str?
|
||||
status_use_ping: bool?
|
||||
base_image: esphome/esphome-hassio-base-{arch}:3.1.0
|
||||
|
||||
esphome-dev:
|
||||
<<: *base
|
||||
directory: esphome-dev
|
||||
name: ESPHome (dev)
|
||||
version: 'dev' # DEV
|
||||
slug: esphome-dev
|
||||
description: "Development Version! Manage and program ESP8266/ESP32 microcontrollers through YAML configuration files"
|
||||
url: https://next.esphome.io/
|
||||
stage: experimental
|
||||
options:
|
||||
esphome_version: dev
|
||||
|
||||
esphome-beta:
|
||||
<<: *base
|
||||
directory: esphome-beta
|
||||
name: ESPHome (beta)
|
||||
version: '1.19.0b2' # BETA
|
||||
slug: esphome-beta
|
||||
description: "Beta version of ESPHome add-on."
|
||||
url: https://beta.esphome.io/
|
||||
image: esphome/esphome-hassio-{arch}
|
||||
stage: experimental
|
||||
|
||||
esphome-stable:
|
||||
<<: *base
|
||||
directory: esphome
|
||||
name: ESPHome
|
||||
version: '1.18.0' # STABLE
|
||||
slug: esphome
|
||||
description: "ESPHome add-on for intelligently managing all your ESP8266/ESP32 devices."
|
||||
image: esphome/esphome-hassio-{arch}
|
||||
|
||||
copy_files:
|
||||
icon.png:
|
||||
logo.png:
|
||||
README.md:
|
||||
DOCS.md:
|
||||
BIN
template/icon.png
Normal file
|
After Width: | Height: | Size: 2.9 KiB |
BIN
template/logo.png
Normal file
|
After Width: | Height: | Size: 11 KiB |