Skip to content

Commit

Permalink
HassIO add-on pre-built images
Browse files Browse the repository at this point in the history
  • Loading branch information
OttoWinter committed Jun 3, 2018
1 parent ee2c535 commit 17798de
Show file tree
Hide file tree
Showing 12 changed files with 164 additions and 17 deletions.
43 changes: 43 additions & 0 deletions esphomeyaml-edge/Dockerfile
Original file line number Diff line number Diff line change
@@ -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 changes: 10 additions & 0 deletions esphomeyaml-edge/build.json
Original file line number Diff line number Diff line change
@@ -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 changes: 29 additions & 0 deletions esphomeyaml-edge/config.json
Original file line number Diff line number Diff line change
@@ -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 changes: 12 additions & 0 deletions esphomeyaml-edge/platformio.ini
Original file line number Diff line number Diff line change
@@ -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
50 changes: 38 additions & 12 deletions esphomeyaml/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,20 +1,46 @@
# Dockerfile for HassIO add-on
ARG BUILD_FROM
FROM $BUILD_FROM
ARG BUILD_FROM=ubuntu:bionic
FROM ${BUILD_FROM}

ENV LANG C.UTF-8
# Re-declare BUILD_FROM to fix weird docker issue
ARG BUILD_FROM
ARG BUILD_VERSION

# Install requirements for add-on
RUN apk add --no-cache python2 py2-pip git openssh libc6-compat && \
# 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 platform install espressif8266 \
--with-package tool-esptool \
--with-package framework-arduinoespressif8266 \
--with-package tool-mkspiffs \
--with-package tool-espotapy
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/[email protected] \
tornado esptool
esphomeyaml==${BUILD_VERSION} \
tornado \
esptool

CMD ["esphomeyaml", "/config/esphomeyaml", "dashboard"]
10 changes: 10 additions & 0 deletions esphomeyaml/build.json
Original file line number Diff line number Diff line change
@@ -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": {}
}
3 changes: 2 additions & 1 deletion esphomeyaml/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,5 +19,6 @@
"environment": {
"ESPHOMEYAML_OTA_HOST_PORT": "6053"
},
"schema": {}
"schema": {},
"image": "ottowinter/esphomeyaml-hassio-{arch}"
}
6 changes: 3 additions & 3 deletions esphomeyaml/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -407,11 +407,11 @@ def process_lambda(value, parameters, capture='=', return_type=None):
yield
return
parts = value.parts[:]
for i in range(1, len(parts), 2):
for i, id in enumerate(value.requires_ids):
var = None
for var in get_variable(parts[i]):
for var in get_variable(id):
yield
parts[i] = var._
parts[i*2 + 1] = var._
yield LambdaExpression(parts, parameters, capture, return_type)
return

Expand Down
12 changes: 12 additions & 0 deletions esphomeyaml/platformio.ini
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion esphomeyaml/wizard.py
Original file line number Diff line number Diff line change
Expand Up @@ -306,5 +306,5 @@ def wizard(path):
print(color('bold_white', " discovery: True"))
print()
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
2 changes: 2 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ platformio==3.5.2
pyyaml==3.12
paho-mqtt==1.3.1
colorlog==3.1.2
tornado==5.0.2
esptool==2.3.1
2 changes: 2 additions & 0 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@
'pyyaml>=3.12',
'paho-mqtt>=1.3.1',
'colorlog>=3.1.2',
'tornado>=5.0.0',
'esptool>=2.3.1',
]

CLASSIFIERS = [
Expand Down

0 comments on commit 17798de

Please sign in to comment.