mirror of
https://github.com/esphome/esphome.git
synced 2024-11-25 00:18:11 +01:00
HassIO add-on pre-built images
This commit is contained in:
parent
ee2c53585f
commit
17798dee1e
12 changed files with 164 additions and 17 deletions
43
esphomeyaml-edge/Dockerfile
Normal file
43
esphomeyaml-edge/Dockerfile
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
# Dockerfile for HassIO add-on
|
||||||
|
ARG BUILD_FROM=ubuntu:bionic
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
|
||||||
|
# Re-declare BUILD_FROM to fix weird docker issue
|
||||||
|
ARG BUILD_FROM
|
||||||
|
|
||||||
|
# On amd64 and alike, using ubuntu as the base is better as building
|
||||||
|
# for the ESP32 only works with glibc (and ubuntu). However, on armhf
|
||||||
|
# the build toolchain frequently procudes segfaults under ubuntu.
|
||||||
|
# -> Use ubuntu for most architectures, except alpine for armhf
|
||||||
|
#
|
||||||
|
# * python and related required because this is a python project
|
||||||
|
# * git required for platformio library dependencies downloads
|
||||||
|
# * libc6-compat and openssh required on alpine for weird reasons
|
||||||
|
# * disable platformio telemetry on install
|
||||||
|
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
python python-pip python-setuptools git && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/*; \
|
||||||
|
else \
|
||||||
|
apk add --no-cache python2 py2-pip git openssh libc6-compat; \
|
||||||
|
fi" && \
|
||||||
|
pip install --no-cache-dir platformio && \
|
||||||
|
platformio settings set enable_telemetry No
|
||||||
|
|
||||||
|
|
||||||
|
# Create fake project to make platformio install all depdencies.
|
||||||
|
# * Ignore build errors from platformio - empty project
|
||||||
|
# * On alpine, only install ESP8266 toolchain
|
||||||
|
COPY platformio.ini /pio/platformio.ini
|
||||||
|
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
|
||||||
|
platformio run -e espressif32 -e espressif8266 -d /pio; \
|
||||||
|
else \
|
||||||
|
echo \"\$(head -8 /pio/platformio.ini)\" >/pio/platformio.ini; \
|
||||||
|
platformio run -e espressif8266 -d /pio; \
|
||||||
|
fi"; rm -rf /pio
|
||||||
|
|
||||||
|
# Install latest esphomeyaml from git
|
||||||
|
RUN pip install --no-cache-dir \
|
||||||
|
git+git://github.com/OttoWinter/esphomeyaml.git
|
||||||
|
|
||||||
|
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
10
esphomeyaml-edge/build.json
Normal file
10
esphomeyaml-edge/build.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"squash": false,
|
||||||
|
"build_from": {
|
||||||
|
"aarch64": "arm64v8/ubuntu:bionic",
|
||||||
|
"amd64": "ubuntu:bionic",
|
||||||
|
"armhf": "homeassistant/armhf-base:latest",
|
||||||
|
"i386": "i386/ubuntu:bionic"
|
||||||
|
},
|
||||||
|
"args": {}
|
||||||
|
}
|
29
esphomeyaml-edge/config.json
Normal file
29
esphomeyaml-edge/config.json
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
{
|
||||||
|
"name": "esphomeyaml-edge",
|
||||||
|
"version": "dev",
|
||||||
|
"slug": "esphomeyaml-edge",
|
||||||
|
"description": "Development build of the esphomeyaml HassIO add-on.",
|
||||||
|
"url": "https://esphomelib.com/esphomeyaml/index.html",
|
||||||
|
"startup": "application",
|
||||||
|
"webui": "http://[HOST]:[PORT:6052]",
|
||||||
|
"boot": "auto",
|
||||||
|
"ports": {
|
||||||
|
"6052/tcp": 6052,
|
||||||
|
"6053/tcp": 6053
|
||||||
|
},
|
||||||
|
"arch": [
|
||||||
|
"aarch64",
|
||||||
|
"amd64",
|
||||||
|
"armhf",
|
||||||
|
"i386"
|
||||||
|
],
|
||||||
|
"auto_uart": true,
|
||||||
|
"map": [
|
||||||
|
"config:rw"
|
||||||
|
],
|
||||||
|
"options": {},
|
||||||
|
"environment": {
|
||||||
|
"ESPHOMEYAML_OTA_HOST_PORT": "6053"
|
||||||
|
},
|
||||||
|
"schema": {}
|
||||||
|
}
|
12
esphomeyaml-edge/platformio.ini
Normal file
12
esphomeyaml-edge/platformio.ini
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
; This file allows the docker build file to install the required platformio
|
||||||
|
; platforms
|
||||||
|
|
||||||
|
[env:espressif8266]
|
||||||
|
platform = espressif8266
|
||||||
|
board = nodemcuv2
|
||||||
|
framework = arduino
|
||||||
|
|
||||||
|
[env:espressif32]
|
||||||
|
platform = espressif32
|
||||||
|
board = nodemcu-32s
|
||||||
|
framework = arduino
|
|
@ -1,20 +1,46 @@
|
||||||
# Dockerfile for HassIO add-on
|
# Dockerfile for HassIO add-on
|
||||||
|
ARG BUILD_FROM=ubuntu:bionic
|
||||||
|
FROM ${BUILD_FROM}
|
||||||
|
|
||||||
|
# Re-declare BUILD_FROM to fix weird docker issue
|
||||||
ARG BUILD_FROM
|
ARG BUILD_FROM
|
||||||
FROM $BUILD_FROM
|
ARG BUILD_VERSION
|
||||||
|
|
||||||
ENV LANG C.UTF-8
|
# On amd64 and alike, using ubuntu as the base is better as building
|
||||||
|
# for the ESP32 only works with glibc (and ubuntu). However, on armhf
|
||||||
# Install requirements for add-on
|
# the build toolchain frequently procudes segfaults under ubuntu.
|
||||||
RUN apk add --no-cache python2 py2-pip git openssh libc6-compat && \
|
# -> Use ubuntu for most architectures, except alpine for armhf
|
||||||
|
#
|
||||||
|
# * python and related required because this is a python project
|
||||||
|
# * git required for platformio library dependencies downloads
|
||||||
|
# * libc6-compat and openssh required on alpine for weird reasons
|
||||||
|
# * disable platformio telemetry on install
|
||||||
|
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
|
||||||
|
apt-get update && apt-get install -y --no-install-recommends \
|
||||||
|
python python-pip python-setuptools git && \
|
||||||
|
rm -rf /var/lib/apt/lists/* /tmp/*; \
|
||||||
|
else \
|
||||||
|
apk add --no-cache python2 py2-pip git openssh libc6-compat; \
|
||||||
|
fi" && \
|
||||||
pip install --no-cache-dir platformio && \
|
pip install --no-cache-dir platformio && \
|
||||||
platformio platform install espressif8266 \
|
platformio settings set enable_telemetry No
|
||||||
--with-package tool-esptool \
|
|
||||||
--with-package framework-arduinoespressif8266 \
|
|
||||||
--with-package tool-mkspiffs \
|
|
||||||
--with-package tool-espotapy
|
|
||||||
|
|
||||||
|
|
||||||
|
# Create fake project to make platformio install all depdencies.
|
||||||
|
# * Ignore build errors from platformio - empty project
|
||||||
|
# * On alpine, only install ESP8266 toolchain
|
||||||
|
COPY platformio.ini /pio/platformio.ini
|
||||||
|
RUN /bin/bash -c "if [[ '$BUILD_FROM' = *\"ubuntu\"* ]]; then \
|
||||||
|
platformio run -e espressif32 -e espressif8266 -d /pio; \
|
||||||
|
else \
|
||||||
|
echo \"\$(head -8 /pio/platformio.ini)\" >/pio/platformio.ini; \
|
||||||
|
platformio run -e espressif8266 -d /pio; \
|
||||||
|
fi"; rm -rf /pio
|
||||||
|
|
||||||
|
# Install latest esphomeyaml from git
|
||||||
RUN pip install --no-cache-dir \
|
RUN pip install --no-cache-dir \
|
||||||
git+git://github.com/OttoWinter/esphomeyaml.git@v1.6.0 \
|
esphomeyaml==${BUILD_VERSION} \
|
||||||
tornado esptool
|
tornado \
|
||||||
|
esptool
|
||||||
|
|
||||||
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
|
||||||
|
|
10
esphomeyaml/build.json
Normal file
10
esphomeyaml/build.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"squash": false,
|
||||||
|
"build_from": {
|
||||||
|
"aarch64": "arm64v8/ubuntu:bionic",
|
||||||
|
"amd64": "ubuntu:bionic",
|
||||||
|
"armhf": "homeassistant/armhf-base:latest",
|
||||||
|
"i386": "i386/ubuntu:bionic"
|
||||||
|
},
|
||||||
|
"args": {}
|
||||||
|
}
|
|
@ -19,5 +19,6 @@
|
||||||
"environment": {
|
"environment": {
|
||||||
"ESPHOMEYAML_OTA_HOST_PORT": "6053"
|
"ESPHOMEYAML_OTA_HOST_PORT": "6053"
|
||||||
},
|
},
|
||||||
"schema": {}
|
"schema": {},
|
||||||
|
"image": "ottowinter/esphomeyaml-hassio-{arch}"
|
||||||
}
|
}
|
||||||
|
|
|
@ -407,11 +407,11 @@ def process_lambda(value, parameters, capture='=', return_type=None):
|
||||||
yield
|
yield
|
||||||
return
|
return
|
||||||
parts = value.parts[:]
|
parts = value.parts[:]
|
||||||
for i in range(1, len(parts), 2):
|
for i, id in enumerate(value.requires_ids):
|
||||||
var = None
|
var = None
|
||||||
for var in get_variable(parts[i]):
|
for var in get_variable(id):
|
||||||
yield
|
yield
|
||||||
parts[i] = var._
|
parts[i*2 + 1] = var._
|
||||||
yield LambdaExpression(parts, parameters, capture, return_type)
|
yield LambdaExpression(parts, parameters, capture, return_type)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
12
esphomeyaml/platformio.ini
Normal file
12
esphomeyaml/platformio.ini
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
; This file allows the docker build file to install the required platformio
|
||||||
|
; platforms
|
||||||
|
|
||||||
|
[env:espressif8266]
|
||||||
|
platform = espressif8266
|
||||||
|
board = nodemcuv2
|
||||||
|
framework = arduino
|
||||||
|
|
||||||
|
[env:espressif32]
|
||||||
|
platform = espressif32
|
||||||
|
board = nodemcu-32s
|
||||||
|
framework = arduino
|
|
@ -306,5 +306,5 @@ def wizard(path):
|
||||||
print(color('bold_white', " discovery: True"))
|
print(color('bold_white', " discovery: True"))
|
||||||
print()
|
print()
|
||||||
print(" > Then follow the rest of the getting started guide:")
|
print(" > Then follow the rest of the getting started guide:")
|
||||||
print(" > https://esphomelib.com/esphomeyaml/getting-started.html")
|
print(" > https://esphomelib.com/esphomeyaml/guides/getting_started_command_line.html")
|
||||||
return 0
|
return 0
|
||||||
|
|
|
@ -3,3 +3,5 @@ platformio==3.5.2
|
||||||
pyyaml==3.12
|
pyyaml==3.12
|
||||||
paho-mqtt==1.3.1
|
paho-mqtt==1.3.1
|
||||||
colorlog==3.1.2
|
colorlog==3.1.2
|
||||||
|
tornado==5.0.2
|
||||||
|
esptool==2.3.1
|
||||||
|
|
2
setup.py
2
setup.py
|
@ -27,6 +27,8 @@ REQUIRES = [
|
||||||
'pyyaml>=3.12',
|
'pyyaml>=3.12',
|
||||||
'paho-mqtt>=1.3.1',
|
'paho-mqtt>=1.3.1',
|
||||||
'colorlog>=3.1.2',
|
'colorlog>=3.1.2',
|
||||||
|
'tornado>=5.0.0',
|
||||||
|
'esptool>=2.3.1',
|
||||||
]
|
]
|
||||||
|
|
||||||
CLASSIFIERS = [
|
CLASSIFIERS = [
|
||||||
|
|
Loading…
Reference in a new issue