From 341a27e56bc7f54524ec148beb5ebcd87c27ea57 Mon Sep 17 00:00:00 2001 From: Otto Winter Date: Sun, 6 Jan 2019 21:26:39 +0100 Subject: [PATCH] Update beta config (#305) * Update beta Hass.io add-on config * Add README --- esphomeyaml-beta/README.md | 109 +++++++++++++++++++++++++++++++++++ esphomeyaml-beta/config.json | 39 +++++++------ esphomeyaml-beta/logo.png | Bin 5605 -> 8763 bytes 3 files changed, 131 insertions(+), 17 deletions(-) create mode 100644 esphomeyaml-beta/README.md diff --git a/esphomeyaml-beta/README.md b/esphomeyaml-beta/README.md new file mode 100644 index 0000000000..1fb5d03ea8 --- /dev/null +++ b/esphomeyaml-beta/README.md @@ -0,0 +1,109 @@ +# Esphomeyaml Hass.io Add-On + +[![esphomeyaml logo](https://raw.githubusercontent.com/OttoWinter/esphomeyaml/dev/esphomeyaml-edge/logo.png)](https://esphomelib.com/esphomeyaml/index.html) + +[![GitHub stars](https://img.shields.io/github/stars/OttoWinter/esphomelib.svg?style=social&label=Star&maxAge=2592000)](https://github.com/OttoWinter/esphomelib) +[![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 Hass.io **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 esphomeyaml. + +

+ +

+ +[_View the esphomeyaml documentation here_](https://esphomelib.com/esphomeyaml/index.html) + +## Example + +With esphomeyaml, 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: + + + +Then just click UPLOAD and the sensor will magically appear in Home Assistant: + + + +## Installation + +To install this Hass.io add-on you need to add the esphomeyaml 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/OttoWinter/esphomeyaml in the "Add new repository by URL" field. +2. Now scroll down and select the "esphomeyaml" 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 esphomeyaml dashboard. You will be asked for your Home Assistant credentials - esphomeyaml 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 esphomeyaml docs here: https://esphomelib.com/esphomeyaml/index.html + +## 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: `esphomeyaml_version` + +Manually override which esphomeyaml version to use in the addon. +For example to install the latest development version, use `"esphomeyaml_version": "dev"`, +or for version 1.10.0: `"esphomeyaml_version": "v1.10.0""`. + +Please note that this does not always work and is only meant for testing, usually the +esphomeyaml add-on and dashboard version must match to guarantee a working system. + +[discord-shield]: https://img.shields.io/discord/429907082951524364.svg +[dht22]: https://esphomelib.com/esphomeyaml/components/sensor/dht.html +[discord]: https://discord.me/KhAMKrd +[releases-shield]: https://img.shields.io/github/release/OttoWinter/esphomeyaml.svg +[releases]: https://esphomelib.com/esphomeyaml/changelog/index.html +[repository]: https://github.com/OttoWinter/esphomeyaml diff --git a/esphomeyaml-beta/config.json b/esphomeyaml-beta/config.json index deb720cc7e..bfba2f3a30 100644 --- a/esphomeyaml-beta/config.json +++ b/esphomeyaml-beta/config.json @@ -4,30 +4,35 @@ "slug": "esphomeyaml-beta", "description": "Beta version of esphomeyaml Hass.io add-on.", "url": "https://beta.esphomelib.com/esphomeyaml/index.html", - "startup": "application", "webui": "http://[HOST]:[PORT:6052]", - "boot": "auto", - "ports": { - "6052/tcp": 6052, - "6053/tcp": 6053 - }, - "auto_uart": true, - "map": [ - "config:rw" - ], + "startup": "application", "arch": [ "amd64", "armhf", "i386" ], - "environment": { - "ESPHOMEYAML_OTA_HOST_PORT": "6053" - }, + "hassio_api": true, + "auth_api": true, + "hassio_role": "default", + "homeassistant_api": false, + "host_network": true, + "boot": "auto", + "map": [ + "ssl", + "config:rw" + ], "options": { - "password": "" + "ssl": false, + "certfile": "fullchain.pem", + "keyfile": "privkey.pem", + "port": 6052 }, "schema": { - "password": "str?" - }, - "image": "ottowinter/esphomeyaml-hassio-{arch}" + "ssl": "bool", + "certfile": "str", + "keyfile": "str", + "port": "int", + "leave_front_door_open": "bool?", + "esphomeyaml_version": "str?" + } } diff --git a/esphomeyaml-beta/logo.png b/esphomeyaml-beta/logo.png index a202ef0a28a0c097e95883599b51e2f733359936..cd37247307d32fce33fc7b6b1926d89b1316013a 100644 GIT binary patch literal 8763 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 R9~?cfR1`GiYh*3M{|~nq&&U7( literal 5605 zcmV004R>004l5008;`004mK004C`008P>0026e000+ooVrmw00002 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