diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..a71571245c92274074a97e961c66d763e2e7e677 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,29 @@ +FROM debian:stable + +ENV DEBIAN_FRONTEND noninteractive + +LABEL org.label-schema.schema-version="1.0" +LABEL org.label-schema.name="timecube" +LABEL org.label-schema.description="Environment for i4 timecube" +LABEL org.label-schema.url="https://sys.cs.fau.de/" +LABEL org.label-schema.vcs-url="https://gitlab.cs.fau.de/i4/timecube" +LABEL org.label-schema.vendor="Friedrich-Alexander-Universität Erlangen-Nürnberg / Lehrstuhl für Informatik 4" + +ENV IDF_PATH="/timecube/firmware/esp-idf/" +ENV PATH="${PATH}:/timecube/firmware/xtensa-esp32-elf/bin" + +RUN ln -fs /usr/share/zoneinfo/Europe/Berlin /etc/localtime \ + && export DEBIAN_FRONTEND=noninteractive \ + && apt-get update -qq \ + && apt-get install -y -qq eatmydata \ + && eatmydata apt-get install -y -qq make cmake git wget flex bison gperf python3 python3-pip python3-setuptools python-is-python3 libffi-dev libssl-dev nginx php php-fpm php-pgsql \ + && git clone --recursive https://gitlab.cs.fau.de/i4/timecube.git /timecube \ + && git clone --depth=1 --recursive --branch v3.3.6 https://github.com/espressif/esp-idf.git /timecube/firmware/esp-idf \ + && pip3 install -r /timecube/firmware/esp-idf/requirements.txt \ + && sed -i '/^#include <protocomm_ble.h>$/d' /timecube/firmware/esp-idf/components/wifi_provisioning/include/wifi_provisioning/scheme_ble.h \ + && wget -qO- https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-97-gc752ad5-5.2.0.tar.gz | tar xvz -C /timecube/firmware \ + && mkdir -p /timecube/firmware/build + +WORKDIR /timecube/firmware/build + +CMD ["/bin/sh", "-c" , "cmake .. && make && make flash"] diff --git a/INSTALL.md b/INSTALL.md index 97dd1d667850994095edad657221fa6dd7827f61..0f7e2b50ef6c306efba02377ebda2a7379665e47 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -86,3 +86,26 @@ Hat man mehr als einen ESP32 angeschlossen, dann kann/muss man mittel Umgebungsv `ESPPORT=/dev/ttyUSB5 make flash` +Docker (mit ESP IDF) +-------------------- + +Wer weder *Arduino* noch das *Espressif IoT Development Framework* installieren will, kann auch alternativ Docker verwenden. + + +### Bauen des Docker Abbildes (optional) + +Wer das Docker Image selbst bauen will, kann dies mittels + + docker build -t inf4/timecube . + +im Hauptverzeichnis des Repos machen. + +Alternativ ist es aber auch fertig auf [Docker Hub](https://hub.docker.com/r/inf4/timecube/) verfügbar und wird im nachfolgenden Schritt automatisch geladen. + + +### Bauen der Firmware und Flashen des Zeitwürfels + +Auch hier muss zuerst eine Konfiguration (im Beispiel `config.h` im aktuellen Verzeichnis) erstellt werden, +wozu die Vorlage im Repo unter `firmware/main/example-config.h` verwendet werden kann. + + docker run --rm -it -v $(pwd)/config.h:/timecube/firmware/main/config.h --device=/dev/ttyUSB0 inf4/timecube