From d6dc02a7988564a1319b9113a39e1a58577b2023 Mon Sep 17 00:00:00 2001 From: clemens Date: Thu, 23 Nov 2017 12:07:06 +0100 Subject: [PATCH] feature complete --- docker/docker-compose.yml | 8 ++++---- docker/esp/Dockerfile | 4 ++-- presentation/images/repl.png | Bin 0 -> 60732 bytes presentation/presentation.tex | 22 ++++++++++++++++++---- 4 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 presentation/images/repl.png diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index 6294081..6c7019a 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -4,9 +4,9 @@ services: esp: image: iot.wiai:1337/esp8266 build: ./esp - volumes: + devices: - /dev/ttyUSB0:/dev/ttyUSB0 - env: + environment: - PORT=/dev/ttyUSB0 @@ -15,7 +15,7 @@ services: image: iot.wiai:1337/flask volumes: - ./src/:/flask/ - env: + environment: - FLASK_APP=server.py ports: - - 5000:5000 \ No newline at end of file + - 5000:5000 diff --git a/docker/esp/Dockerfile b/docker/esp/Dockerfile index 5f7d486..cba2f82 100644 --- a/docker/esp/Dockerfile +++ b/docker/esp/Dockerfile @@ -1,4 +1,4 @@ FROM alpine:edge -RUN apk --update --no-cache-dir add picocom esptool +RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing/" >> /etc/apk/repositories && apk --update add picocom esptool ENV PORT /dev/ttyUSB0 -CMD ["picocom", "-b", "115200", "${PORT}"] \ No newline at end of file +CMD ["sh", "-c", "picocom -b 115200 ${PORT}"] diff --git a/presentation/images/repl.png b/presentation/images/repl.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc64b998157e4ae7b3237ee15db8b4e39539502 GIT binary patch literal 60732 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 BrlJ4< literal 0 HcmV?d00001 diff --git a/presentation/presentation.tex b/presentation/presentation.tex index 28923f7..13283da 100644 --- a/presentation/presentation.tex +++ b/presentation/presentation.tex @@ -179,6 +179,7 @@ Flashen: \item \texttt{picocom -b 115200 /dev/ttyUSB0} \item $n$ beherzte \textit{}-Drücke \item Docker: \texttt{docker-compose run esp} (evtl. TTY anpassen) + \item[exit] Ctrl-a Ctrl-x \end{itemize} Windows: \begin{itemize} @@ -193,7 +194,7 @@ Windows: \begin{frame}{REPL} \framesubtitle{Hello World!} -%TODO: bild mit REPL (inkl ENTERs) +\image{.7\textwidth}{repl}{REPL}{img:repl} \end{frame} @@ -226,8 +227,21 @@ import webrepl_setup \end{frame} \subsection{Init} -\begin{frame}{main.py} +\begin{frame}[fragile]{main.py} + Wird beim starten ... gestartet +\begin{lstlisting}[caption={main.py},label=mainpy] +def connect_wifi(ssid, passphrase): + #TODO ;) + pass + +def setup(): + #TODO configure sensors, ... + pass + +connect_wifi() +setup() +\end{lstlisting} \end{frame} \subsection{Exkurs: Flask-Server} @@ -250,6 +264,7 @@ Starten: \item[||] FLASK\_APP=server.py flask run \end{itemize} \end{frame} + \begin{frame}[fragile]{Daten übertragen} \begin{lstlisting}[caption={HTTP Requests},label=http] import urequests @@ -325,9 +340,8 @@ d.humidity() \begin{itemize} \item Z.B. Callbacks von Tastern \item pausieren main - \item dürf + \item dürfen keinen Speicher allozieren \item Emergency exception buffer: \textit{micropython.alloc\_emergency\_exception\_buf(100)} - \item \end{itemize} \cite{mp-interrupt} \end{frame}