Compare commits

...

15 Commits

Author SHA1 Message Date
clemens dcbf8d6b8c add payment information 2017-11-23 12:56:38 +01:00
clemens bbb5e484f7 Merge branch 'master' of https://git.wiai.de/cklug/iotnight 2017-11-23 12:13:44 +01:00
clemens 3570c5ffb8 fix #1 2017-11-23 12:13:14 +01:00
Clemens Klug 1d3473d6a1 Merge branch 'mac-commands' into 'master'
Add basic steps for macOS

See merge request cklug/iotnight!2
2017-11-23 11:09:19 +00:00
Clemens Klug 3cd7a58b63 Merge branch 'putty-spelling' into 'master'
Fix spelling of PuTTY

See merge request cklug/iotnight!3
2017-11-23 11:09:07 +00:00
clemens d6dc02a798 feature complete 2017-11-23 12:07:06 +01:00
Martin Müller a5ce6bcfd9 Fix spelling of PuTTY 2017-11-20 18:08:16 +01:00
Martin Müller da591e3759 Add basic steps for macOS 2017-11-20 18:02:38 +01:00
clemens a4d37b5002 Merge branch 'master' of https://git.wiai.de/cklug/iotnight 2017-11-20 17:47:21 +01:00
clemens 59aaad4152 add wiring images 2017-11-20 17:46:48 +01:00
Clemens Klug 6a1cc89856 Merge branch 'master' into 'master'
Fix spelling of WLAN and Euro symbol

See merge request cklug/iotnight!1
2017-11-20 16:45:53 +00:00
Martin Müller b3fa6788aa Fix Euro symbol 2017-11-20 17:40:46 +01:00
Martin Müller 09508b497c Fix spelling of WLAN 2017-11-20 17:37:25 +01:00
clemens 8e99d28423 add missing file 2017-11-20 16:44:15 +01:00
agp8x b69ceb9d54 add missing files 2017-10-14 14:28:32 +02:00
21 changed files with 9746 additions and 50 deletions

View File

@ -1,7 +0,0 @@
$pdf_mode = 1;
$pdflatex = 'pdflatex --shell-escape -interaction=nonstopmode %O %S -file-line-error -synctex=1';
# Custom dependency and function for nomencl package
add_cus_dep( 'nlo', 'nls', 0, 'makenlo2nls' );
sub makenlo2nls {
system( "makeindex -s nomencl.ist -o \"$_[0].nls\" \"$_[0].nlo\"" );
}

View File

@ -1,14 +0,0 @@
services:
- docker
script:
- make
- ls -la | grep pdf
deploy:
provider: releases
api_key:
secure: $GITHUB_TOKEN
file: presentation.pdf
skip_cleanup: true
on:
repo: uniba-ktr/PresTeX
tags: true

View File

@ -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

View File

@ -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}"]
CMD ["sh", "-c", "picocom -b 115200 ${PORT}"]

View File

@ -0,0 +1,250 @@
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
\usetheme{Rochester}
\RequirePackage{pgf}
\RequirePackage{tikz}
\tikzset{
rectangle with rounded corners north west/.initial=4pt,
rectangle with rounded corners south west/.initial=4pt,
rectangle with rounded corners north east/.initial=4pt,
rectangle with rounded corners south east/.initial=4pt,
}
%\makeatletter
\pgfdeclareshape{rectangle with rounded corners}{
\inheritanchorborder[from=rectangle]
\savedmacro{\neoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\let\neoffset\pgf@rectc
}
\savedmacro{\nwoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\let\nwoffset\pgf@rectc
}
\savedmacro{\seoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\let\seoffset\pgf@rectc
}
\savedmacro{\swoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\let\swoffset\pgf@rectc
}
\savedanchor{\north}{
\pgf@y=.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\south}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\savedanchor{\east}{
\pgf@y=0pt
\pgf@x=.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
}
\savedanchor{\west}{
\pgf@y=0pt
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
}
\savedanchor{\northeast}{
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\southwest}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
% \pgf@x=0pt
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\anchor{text}{%
\northeast%
\pgf@x=-.5\wd\pgfnodeparttextbox%
\pgfmathsetlength{\pgf@y}{-.5ex}
}
\anchor{north east}{
\northeast
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
\addtolength{\pgf@x}{-\nw pt}
\addtolength{\pgf@y}{-\nw pt}
}
\anchor{center}{
\pgf@x=0pt
\pgf@y=0pt
}
\anchor{south west}{
\southwest
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
\addtolength{\pgf@x}{\nw pt}
\addtolength{\pgf@y}{\nw pt}
}
\anchor{north west}{
\northeast
\pgfmathsetmacro{\temp@x}{\pgf@x}
\southwest
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\northeast
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
\def\pgf@xaa{\pgf@xa+\nw}
\def\pgf@yaa{\pgf@y-\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south east}{
\southwest
\pgfmathsetmacro{\temp@x}{\pgf@x}
\northeast
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\southwest
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
\def\pgf@xaa{\pgf@xa-\nw}
\def\pgf@yaa{\pgf@y+\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south}{\south}
\anchor{north}{\north}
\anchor{east}{\east}
\anchor{west}{\west}
\backgroundpath{% this is new
% store lower right in xa/ya and upper right in xb/yb
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
% construct main path
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathclose
}
}
%\makeatother
\pgfdeclareimage[width=0.115\textwidth]{uniheader}{\meta/config/images/logow}
\setbeamertemplate{blocks}[shadow=false]
\setbeamercovered{transparent}
\beamer@headheight=0.13\paperwidth
\setbeamercolor*{Title bar}{fg=white}
\setbeamercolor*{Location bar}{fg=unibablueI,bg=unibagrayV}
\setbeamercolor*{frametitle}{parent=Title bar}
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
\setbeamercolor*{normal text}{bg=white,fg=black}
\setbeamercolor*{alerted text}{fg=nounibaredII}
\setbeamercolor*{section in head/foot}{bg=unibablueI,fg=white}
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
\usecolortheme[named=nounibagreenII]{structure}
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
\setbeamerfont{frametitle}{size=\large}
\setbeamertemplate{frametitle}
{
\vskip-0.3\beamer@headheight
\vskip-\baselineskip
\vskip-0.2cm
\hskip-0.5cm\usebeamerfont*{frametitle}\insertframetitle
\vskip+0.1cm
\hskip-0.25cm\usebeamerfont*{framesubtitle}\insertframesubtitle
\vskip+0.15cm
}
\setbeamertemplate{headline}
{
\begin{tikzpicture}
\node[
anchor=south west,
draw=unibablueI,
thin,
fill=unibablueI,
shape=rectangle with rounded corners,
minimum height=\beamer@headheight, minimum width=\textwidth,
rectangle with rounded corners north west=0pt,
rectangle with rounded corners south west=0pt,
rectangle with rounded corners north east=25pt,
rectangle with rounded corners south east=0pt,
] at (0,0) (b) {};
\draw (b.east) +(-.7em,0) node(logo) [anchor=east] { \pgfuseimage{uniheader} };
\draw[white] node(uniba) [left of=logo, anchor=east]{\scriptsize\uni};
\end{tikzpicture}
\vskip -1.75cm
\linethickness{0pt}
\framelatex{
\begin{beamercolorbox}[wd=\paperwidth,ht=0.3\beamer@headheight]{Title bar}
\usebeamerfont{section in head/foot}%
\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
\end{beamercolorbox}}
\framelatex{
\begin{beamercolorbox}[wd=\paperwidth,ht=0.7\beamer@headheight]{Title bar}
\end{beamercolorbox}}
}
\setbeamertemplate{footline}
{
\linethickness{0.2pt}
\framelatex{
\begin{beamercolorbox}[leftskip=.3cm,wd=\paperwidth,ht=0.25\beamer@headheight,sep=0.1cm]{Location bar}
\usebeamerfont{section in head/foot}%
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
\end{tikzpicture}
\end{beamercolorbox}}
}

View File

@ -2,7 +2,7 @@
%Necessary Information
\author[C\&F]{Clemens, Franz}
\title{IoT Night}
\subtitle{ESP8266 \& parts}
\subtitle{S stands for security}
%The day of the presentation
\date{\today}

View File

@ -7,3 +7,11 @@
@misc{micropython-doc,
url={https://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html}
}
@misc{node-dht,
url={https://www.mikrocontroller.net/topic/389850}}
@misc{node-led,
url={https://www.pinterest.de/pin/658088564269958262/}}
@misc{node-button,
url={https://alexbloggt.com/esp8266-pushover/}}
@misc{mp-interrupt,
url={{https://docs.micropython.org/en/latest/esp8266/reference/isr_rules.html}}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
presentation/images/qr.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 712 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@ -151,3 +151,4 @@
\usepackage{pifont}
\usepackage{fourier}
\usepackage{menukeys}
\usepackage{eurosym}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,315 @@
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
\usetheme[hideothersubsections]{Goettingen}
\RequirePackage{pgf}
\RequirePackage{tikz}
\RequirePackage{pdfrender}
\tikzset{
rectangle with rounded corners north west/.initial=4pt,
rectangle with rounded corners south west/.initial=4pt,
rectangle with rounded corners north east/.initial=4pt,
rectangle with rounded corners south east/.initial=4pt,
}
%\makeatletter
\pgfdeclareshape{rectangle with rounded corners}{
\inheritanchorborder[from=rectangle]
\savedmacro{\neoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\let\neoffset\pgf@rectc
}
\savedmacro{\nwoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\let\nwoffset\pgf@rectc
}
\savedmacro{\seoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\let\seoffset\pgf@rectc
}
\savedmacro{\swoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\let\swoffset\pgf@rectc
}
\savedanchor{\north}{
\pgf@y=.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\south}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\savedanchor{\east}{
\pgf@y=0pt
\pgf@x=.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
}
\savedanchor{\west}{
\pgf@y=0pt
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
}
\savedanchor{\northeast}{
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\southwest}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
% \pgf@x=0pt
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\anchor{text}{%
\northeast%
\pgf@x=-.5\wd\pgfnodeparttextbox%
\pgfmathsetlength{\pgf@y}{-.5ex}
}
\anchor{north east}{
\northeast
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
\addtolength{\pgf@x}{-\nw pt}
\addtolength{\pgf@y}{-\nw pt}
}
\anchor{center}{
\pgf@x=0pt
\pgf@y=0pt
}
\anchor{south west}{
\southwest
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
\addtolength{\pgf@x}{\nw pt}
\addtolength{\pgf@y}{\nw pt}
}
\anchor{north west}{
\northeast
\pgfmathsetmacro{\temp@x}{\pgf@x}
\southwest
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\northeast
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
\def\pgf@xaa{\pgf@xa+\nw}
\def\pgf@yaa{\pgf@y-\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south east}{
\southwest
\pgfmathsetmacro{\temp@x}{\pgf@x}
\northeast
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\southwest
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
\def\pgf@xaa{\pgf@xa-\nw}
\def\pgf@yaa{\pgf@y+\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south}{\south}
\anchor{north}{\north}
\anchor{east}{\east}
\anchor{west}{\west}
\backgroundpath{% this is new
% store lower right in xa/ya and upper right in xb/yb
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
% construct main path
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathclose
}
}
\pgfdeclareimage[width=1.4em]{uniheader}{\meta/config/images/logo}
\pgfdeclareimage[width=2.8em]{uniheadertitle}{\meta/config/images/logo}
\setbeamertemplate{blocks}[shadow=false]
\setbeamercovered{transparent}
\beamer@headheight=0.1\paperheight
\setbeamercolor*{Title bar}{fg=unibablueI}
\setbeamercolor*{Location bar}{fg=unibablueI,bg=white}
\setbeamercolor*{frametitle}{parent=Title bar}
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
\setbeamercolor*{normal text}{bg=white,fg=black}
\setbeamercolor*{alerted text}{fg=nounibaredII}
\setbeamercolor*{section in head/foot}{fg=unibablueI}
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
\usecolortheme[named=unibablueI]{structure}
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
\setbeamerfont{frametitle}{size=\large}
\setbeamertemplate{title page}{
\begin{tikzpicture}[remember picture,overlay]
\node[
anchor=south east,
draw=unibablueV,
thin,
fill=unibablueV,
shape=rectangle with rounded corners,
minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm,
rectangle with rounded corners north west=0pt,
rectangle with rounded corners south west=0pt,
rectangle with rounded corners north east=18pt,
rectangle with rounded corners south east=0pt,
] at ($(current page.south east)+(-.1,.1)$) (b) {};
\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} };
%\draw[unibablueI] node(uniba) [below of=logo, anchor=center]{\scriptsize\unibastring};
\end{tikzpicture}
\vskip-0.3\beamer@headheight
\begin{beamercolorbox}[sep=8pt]{institute}
\usebeamerfont{institute}\insertinstitute
\end{beamercolorbox}
\vskip2em\par
\begin{beamercolorbox}[sep=16pt]{title}
\usebeamerfont{title}\inserttitle\par%
\ifx\insertsubtitle\@empty%
\else%
\vskip0.25em%
{\usebeamerfont{subtitle}\usebeamercolor[fg]{subtitle}\insertsubtitle\par}%
\fi%
\end{beamercolorbox}%
\vskip2em\par
\begin{beamercolorbox}[sep=16pt]{date}
\usebeamerfont{date}\insertdate
\end{beamercolorbox}\vskip-0.5em
\begin{beamercolorbox}[sep=16pt]{author}
\usebeamerfont{author}\insertauthor
\end{beamercolorbox}
\vfill
}
\setbeamertemplate{frametitle}
{
\ifx\insertframesubtitle\empty
\vskip+0.1cm
\usebeamerfont*{frametitle}\insertframetitle
\vskip+0.15cm
\else
\usebeamerfont*{frametitle}\insertframetitle
\vskip+0.1cm
\hskip+0.5cm\usebeamerfont*{framesubtitle}\insertframesubtitle
\vskip+0.15cm
\fi
}
%\setbeamertemplate{headline}
%{
% \vskip -\beamer@headheight
% \linethickness{0pt}
% \framelatex{
% \begin{beamercolorbox}[wd=\paperwidth,ht=\beamer@headheight]{Title bar}
% \usebeamerfont{section in head/foot}
% %\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
% \end{beamercolorbox}}
%}
\setbeamertemplate{footline}
{
\begin{tikzpicture}[remember picture, overlay]
\draw[thick, unibablueI] ($(current page.south west)+(.1,0.37\beamer@headheight)$) -- ($(current page.south east)+(-.1,0.37\beamer@headheight)$);
\end{tikzpicture}
\linethickness{0pt}
\framelatex{
\begin{beamercolorbox}[leftskip=0.2cm, rightskip=0.2cm, wd=\paperwidth,ht=0.35\beamer@headheight,sep=0.05cm]{Location bar}
\usebeamerfont{section in head/foot}%
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
\end{tikzpicture}
\end{beamercolorbox}}
}
\setbeamertemplate{sidebar canvas \beamer@sidebarside}[vertical shading]
[top=white,bottom=white]
\setbeamertemplate{sidebar \beamer@sidebarside}
{
\begin{tikzpicture}[remember picture,overlay]
\node[
anchor=south east,
draw=unibablueV,
thin,
fill=unibablueV,
shape=rectangle with rounded corners,
minimum height=\paperheight-.2cm, minimum width=\beamer@sidebarwidth-.2cm,
rectangle with rounded corners north west=0pt,
rectangle with rounded corners south west=0pt,
rectangle with rounded corners north east=18pt,
rectangle with rounded corners south east=0pt,
] at ($(current page.south east)+(-.1,.1)$) (b) {};
\draw[anchor=north east] node(logo) at ($(b.north east)+(.15,.15)$) { \pgfuseimage{uniheadertitle} };
\end{tikzpicture}
\vskip12em%
\hskip1em\insertverticalnavigation{\beamer@sidebarwidth}%
\vfill
\ifx\beamer@sidebarside\beamer@lefttext%
\else%
\usebeamercolor{normal text}%
\llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}%
\vskip2pt%
\fi%
%
\ifx\beamer@sidebarside\beamer@lefttext%
\defbeamertemplate*{sidebar right}{sidebar theme}
{%
\vfill%
\llap{\usebeamertemplate***{navigation symbols}\hskip0.1cm}%
\vskip2pt}
\fi
}

View File

@ -0,0 +1,250 @@
%Berkeley / Goettingen / Hannover / Marburg / PaloAlto / Rochester
\usetheme{Rochester}
\RequirePackage{pgf}
\RequirePackage{tikz}
\tikzset{
rectangle with rounded corners north west/.initial=4pt,
rectangle with rounded corners south west/.initial=4pt,
rectangle with rounded corners north east/.initial=4pt,
rectangle with rounded corners south east/.initial=4pt,
}
%\makeatletter
\pgfdeclareshape{rectangle with rounded corners}{
\inheritanchorborder[from=rectangle]
\savedmacro{\neoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\let\neoffset\pgf@rectc
}
\savedmacro{\nwoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\let\nwoffset\pgf@rectc
}
\savedmacro{\seoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\let\seoffset\pgf@rectc
}
\savedmacro{\swoffset}{
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\let\swoffset\pgf@rectc
}
\savedanchor{\north}{
\pgf@y=.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\south}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=0pt
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\savedanchor{\east}{
\pgf@y=0pt
\pgf@x=.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
}
\savedanchor{\west}{
\pgf@y=0pt
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
}
\savedanchor{\northeast}{
\pgf@y=.5\ht\pgfnodeparttextbox % height of the box
\pgf@x=.5\wd\pgfnodeparttextbox % width of the box
\addtolength{\pgf@x}{2ex}
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x<.5\pgf@xa
\pgf@x=.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y<.5\pgf@ya
\pgf@y=.5\pgf@ya
\fi
}
\savedanchor{\southwest}{
\pgf@y=-.5\ht\pgfnodeparttextbox
\pgf@x=-.5\wd\pgfnodeparttextbox
\addtolength{\pgf@x}{-2ex}
% \pgf@x=0pt
\setlength{\pgf@xa}{\pgfshapeminwidth}
\ifdim\pgf@x>-.5\pgf@xa
\pgf@x=-.5\pgf@xa
\fi
\setlength{\pgf@ya}{\pgfshapeminheight}
\ifdim\pgf@y>-.5\pgf@ya
\pgf@y=-.5\pgf@ya
\fi
}
\anchor{text}{%
\northeast%
\pgf@x=-.5\wd\pgfnodeparttextbox%
\pgfmathsetlength{\pgf@y}{-.5ex}
}
\anchor{north east}{
\northeast
\pgfmathsetmacro{\nw}{(1-sin(45))*\neoffset}
\addtolength{\pgf@x}{-\nw pt}
\addtolength{\pgf@y}{-\nw pt}
}
\anchor{center}{
\pgf@x=0pt
\pgf@y=0pt
}
\anchor{south west}{
\southwest
\pgfmathsetmacro{\nw}{(1-sin(45))*\swoffset}
\addtolength{\pgf@x}{\nw pt}
\addtolength{\pgf@y}{\nw pt}
}
\anchor{north west}{
\northeast
\pgfmathsetmacro{\temp@x}{\pgf@x}
\southwest
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\northeast
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\
\pgfmathsetmacro{\nw}{(1-sin(45))*\nwoffset}
\def\pgf@xaa{\pgf@xa+\nw}
\def\pgf@yaa{\pgf@y-\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south east}{
\southwest
\pgfmathsetmacro{\temp@x}{\pgf@x}
\northeast
\pgfmathsetmacro{\temp@xtwo}{\pgf@x}
\southwest
\pgfmathsetmacro{\xdiff}{\temp@x-\temp@xtwo}
\def\pgf@xa{\pgf@x-\xdiff}
\pgfmathsetmacro{\nw}{(1-sin(45))*\seoffset}
\def\pgf@xaa{\pgf@xa-\nw}
\def\pgf@yaa{\pgf@y+\nw}
\pgfpoint{\pgf@xaa}{\pgf@yaa}
}
\anchor{south}{\south}
\anchor{north}{\north}
\anchor{east}{\east}
\anchor{west}{\west}
\backgroundpath{% this is new
% store lower right in xa/ya and upper right in xb/yb
\southwest \pgf@xa=\pgf@x \pgf@ya=\pgf@y
\northeast \pgf@xb=\pgf@x \pgf@yb=\pgf@y
% construct main path
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathmoveto{\pgfpoint{\pgf@xa}{\pgf@ya}}
\pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners north east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@yb}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south east}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathlineto{\pgfpoint{\pgf@xb}{\pgf@ya}}
\pgfkeysgetvalue{/tikz/rectangle with rounded corners south west}{\pgf@rectc}
\pgfsetcornersarced{\pgfpoint{\pgf@rectc}{\pgf@rectc}}
\pgfpathclose
}
}
%\makeatother
\pgfdeclareimage[width=0.115\textwidth]{uniheader}{\meta/config/images/logow}
\setbeamertemplate{blocks}[shadow=false]
\setbeamercovered{transparent}
\beamer@headheight=0.13\paperwidth
\setbeamercolor*{Title bar}{fg=white}
\setbeamercolor*{Location bar}{fg=unibablueI,bg=unibagrayV}
\setbeamercolor*{frametitle}{parent=Title bar}
\setbeamercolor*{block title}{bg=unibablueI,fg=white}
\setbeamercolor*{block body}{bg=unibagrayV,fg=black}
\setbeamercolor*{block title alerted}{bg=nounibaredII,fg=white}
\setbeamercolor*{block body alerted}{bg=unibaredV,fg=black}
\setbeamercolor*{block title example}{bg=unibayellowII,fg=black}
\setbeamercolor*{block body example}{bg=unibayellowV,fg=black}
\setbeamercolor*{normal text}{bg=white,fg=black}
\setbeamercolor*{alerted text}{fg=nounibaredII}
\setbeamercolor*{section in head/foot}{bg=unibablueI,fg=white}
\setbeamercolor*{item}{fg=unibablueI, bg=unibagrayV}
\usecolortheme[named=nounibagreenII]{structure}
\setbeamerfont{section in head/foot}{size=\tiny,series=\normalfont}
\setbeamerfont{frametitle}{size=\large}
\setbeamertemplate{frametitle}
{
\vskip-0.3\beamer@headheight
\vskip-\baselineskip
\vskip-0.2cm
\hskip-0.5cm\usebeamerfont*{frametitle}\insertframetitle
\vskip+0.1cm
\hskip-0.25cm\usebeamerfont*{framesubtitle}\insertframesubtitle
\vskip+0.15cm
}
\setbeamertemplate{headline}
{
\begin{tikzpicture}
\node[
anchor=south west,
draw=unibablueI,
thin,
fill=unibablueI,
shape=rectangle with rounded corners,
minimum height=\beamer@headheight, minimum width=\textwidth,
rectangle with rounded corners north west=0pt,
rectangle with rounded corners south west=0pt,
rectangle with rounded corners north east=25pt,
rectangle with rounded corners south east=0pt,
] at (0,0) (b) {};
\draw (b.east) +(-.7em,0) node(logo) [anchor=east] { \pgfuseimage{uniheader} };
\draw[white] node(uniba) [left of=logo, anchor=east]{\scriptsize\uni};
\end{tikzpicture}
\vskip -1.75cm
\linethickness{0pt}
\framelatex{
\begin{beamercolorbox}[wd=\paperwidth,ht=0.3\beamer@headheight]{Title bar}
\usebeamerfont{section in head/foot}%
\insertsectionnavigationhorizontal{0pt}{\hskip0.22cm}{}%
\end{beamercolorbox}}
\framelatex{
\begin{beamercolorbox}[wd=\paperwidth,ht=0.7\beamer@headheight]{Title bar}
\end{beamercolorbox}}
}
\setbeamertemplate{footline}
{
\linethickness{0.2pt}
\framelatex{
\begin{beamercolorbox}[leftskip=.3cm,wd=\paperwidth,ht=0.25\beamer@headheight,sep=0.1cm]{Location bar}
\usebeamerfont{section in head/foot}%
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=south west] at ($(current page.south west)+(.1,0)$){\insertshorttitle \ | \insertshortauthor \ | \insertshortinstitute};
\node[anchor=south] at (current page.south){\ifgit\gitMarkFormat{\gitMarkPref\,\textbullet{}\,\gitMark}\fi};
\node[anchor=south east] at ($(current page.south east)+(-.1,0)$){\insertframenumber/\inserttotalframenumber};
\end{tikzpicture}
\end{beamercolorbox}}
}

View File

@ -0,0 +1,138 @@
% gitexinfo.sty
% Copyright 2015 Brent Longborough
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% The Current Maintainer of this work is Brent Longborough.
%
% This work consists of these files:
% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf,
% gitinfo2test.tex, post-xxx-sample.txt,
% and gitHeadLocal.gin
% -----------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{gitexinfo}[2015/11/22 v2.0.7 Auxiliary package for gitinfo2]
\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@}
\DeclareStringOption{shash}
\DeclareStringOption{lhash}
\DeclareStringOption{authname}
\DeclareStringOption{authemail}
\DeclareStringOption{authsdate}
\DeclareStringOption{authidate}
\DeclareStringOption{authudate}
\DeclareStringOption{commname}
\DeclareStringOption{commemail}
\DeclareStringOption{commsdate}
\DeclareStringOption{commidate}
\DeclareStringOption{commudate}
\DeclareStringOption{refnames}
\DeclareStringOption{firsttagdescribe}
\DeclareStringOption{reltag}
\ProcessKeyvalOptions*
\renewcommand{\gitAbbrevHash}{\gitInf@shash}
\renewcommand{\gitHash}{\gitInf@lhash}
\renewcommand{\gitAuthorName}{\detokenize\expandafter{\gitInf@authname}}
\renewcommand{\gitAuthorEmail}{\gitWrapEmail{\gitInf@authemail}}
\renewcommand{\gitAuthorDate}{\gitInf@authsdate}
\renewcommand{\gitAuthorIsoDate}{\gitInf@authidate}
\renewcommand{\gitAuthorUnixDate}{\gitInf@authudate}
\renewcommand{\gitCommitterName}{\detokenize\expandafter{\gitInf@commname}}
\renewcommand{\gitCommitterEmail}{\gitWrapEmail{\gitInf@commemail}}
\renewcommand{\gitCommitterDate}{\gitInf@commsdate}
\renewcommand{\gitCommitterIsoDate}{\gitInf@commidate}
\renewcommand{\gitCommitterUnixDate}{\gitInf@commudate}
\renewcommand{\gitFirstTagDescribe}{\detokenize\expandafter{\gitInf@firsttagdescribe}}
\renewcommand{\gitReferences}{\detokenize\expandafter{\gitInf@refnames}}
\newcommand{\git@vtag}[1]{%
\def\do##1{%
\StrCut{##1}{tag: }\lcut\rcut%
\IfEq{\rcut}{}{%
\IfDecimal{\lcut}{% case where we have decimal e.g. 1.0
\renewcommand{\gitVtag}{\lcut}
\renewcommand{\gitVtags}{\space\lcut}
\renewcommand{\gitVtagn}{\space\lcut}
\listbreak
}{}%
}{%
\IfDecimal\rcut{% case where we have string: decimal e.g. tag: 1.0
\renewcommand{\gitVtag}{\rcut}
\renewcommand{\gitVtags}{\space\rcut}
\renewcommand{\gitVtagn}{\space\rcut}
\listbreak
}{}%
}%
}%
\expandafter\docsvlist\expandafter{#1}%
\StrDel{#1}{(}[\bcut]%
\StrDel{\bcut}{)}[\bcut]%
\IfSubStr{\bcut}{->}{% git version 2+?
\StrBetween{\bcut,}{HEAD -> }{,}[\bcut]% yes - no problem
}{%
\StrCount{\bcut}{, }[\xcut]%
\IfEq{\xcut}{0}{% detached head?
}{% no
\StrCut[\xcut]{\bcut}{, }{\lcut}{\bcut}% git vv < 2 - take last token
}% (not always accurate)
}
\IfEq{\bcut}{}{}{%
\IfEq{\bcut}{HEAD}{% detached head?
}{% no - we have the branch name
\renewcommand{\gitBranch}{\detokenize\expandafter{\bcut}}%
}%
}%
}%
\newcommand{\git@taglist}[1]{%
\def\do##1{%
\StrCut{##1}{tag: }\llcut\rrcut%
\IfEq{\rrcut}{}{%
\IfDecimal{\llcut}{% case where we have decimal e.g. 1.0
\StrGobbleLeft{\gitTags,\space\llcut}{0}[\gitTags]
}{}%
}{%
\StrGobbleLeft{\gitTags,\space\rrcut}{0}[\gitTags]
}%
}%
\expandafter\docsvlist\expandafter{#1}%
\StrGobbleLeft{\gitTags}{2}[\gitTags]
}%
\newcommand{\git@rtag}[1]{%
\IfEq{#1}{}{}{%
\StrRight{#1}{2}[\gitInf@dirtflag]
\StrDel{#1}{-*}[\gitInf@describe]
\IfEq{\gitInf@dirtflag}{-*}{\renewcommand{\gitDirty}{\gitInf@dirty}}{}
\StrGobbleRight{\gitInf@describe}{9}[\gitInf@describe]% Remove -g<hash>
\StrCount{\gitInf@describe}{-}[\gitInf@mcount]% Find last -
\StrCut[\gitInf@mcount]{\gitInf@describe}{-}{\gitInf@rel}{\gitInf@off}
\renewcommand{\gitRel}{\detokenize\expandafter{\gitInf@rel}}
\renewcommand{\gitRels}{\space\gitRel}
\renewcommand{\gitReln}{\space\gitRel}
\renewcommand{\gitRoff}{\gitInf@off}
\renewcommand{\gitDescribe}{#1}
}%
}%
\git@vtag{\gitInf@refnames}
\git@taglist{\gitInf@refnames}
\git@rtag{\gitInf@reltag}
\newcommand{\git@tagmark}{}
\IfEq{\gitTags}{}{%
\renewcommand{\gitTags}{\gitInf@notags}
\ifbool{gitInf@marknotags}{%
\renewcommand{\git@tagmark}{\\Head tags: \gitTags}
}{%
}
}{%
\renewcommand{\git@tagmark}{\\Head tags: \gitTags}
}
\renewcommand{\gitMark}{%
Branch: \gitBranch\,@\,\gitAbbrevHash{}
\textbullet{}
Release:\gitReln{}
(\gitAuthorDate)\git@tagmark%
}

View File

@ -0,0 +1,218 @@
% gitinfo2.sty
% Copyright 2015 Brent Longborough
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
% of this license or (at your option) any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status `maintained'.
% The Current Maintainer of this work is Brent Longborough.
%
% This work consists of these files:
% gitinfo2.sty, gitexinfo.sty, gitinfo2.tex, gitinfo2.pdf,
% gitinfo2test.tex, post-xxx-sample.txt,
% and gitHeadLocal.gin
% -----------------------------------------------------
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{gitinfo2}[2015/11/22 v2.0.7 git revision information]
\RequirePackage{etoolbox}
\RequirePackage{xstring}
\RequirePackage{kvoptions}
\RequirePackage{eso-pic}
\SetupKeyvalOptions{family=gitinfo,prefix=gitInf@}
\DeclareBoolOption{draft}
\DeclareBoolOption{grumpy}
\DeclareBoolOption{local}
\DeclareBoolOption{pcount}
\DeclareBoolOption{footinfo}
\DeclareBoolOption{mark}
\DeclareBoolOption{markifdraft}
\DeclareBoolOption{markifdirty}
\DeclareBoolOption{marknotags}
\DeclareStringOption[(None)]{missing}
\DeclareStringOption[(None)]{notags}
\DeclareStringOption[(*)]{dirty}
\DeclareStringOption[4]{maxdepth}
\DeclareStringOption[1.5\baselineskip]{raisemark}
\ProcessKeyvalOptions*
\newcommand{\gitAbbrevHash}{\gitInf@missing}
\newcommand{\gitHash}{\gitInf@missing}
\newcommand{\gitAuthorName}{\gitInf@missing}
\newcommand{\gitAuthorEmail}{\gitInf@missing}
\newcommand{\gitAuthorDate}{\gitInf@missing}
\newcommand{\gitAuthorIsoDate}{\gitInf@missing}
\newcommand{\gitAuthorUnixDate}{\gitInf@missing}
\newcommand{\gitCommitterName}{\gitInf@missing}
\newcommand{\gitCommitterEmail}{\gitInf@missing}
\newcommand{\gitCommitterDate}{\gitInf@missing}
\newcommand{\gitCommitterIsoDate}{\gitInf@missing}
\newcommand{\gitCommitterUnixDate}{\gitInf@missing}
\newcommand{\gitTags}{}
\newcommand{\gitFirstTagDescribe}{\gitInf@missing}
\newcommand{\gitReferences}{\gitInf@missing}
\newcommand{\gitBranch}{\gitInf@missing}
\newcommand{\gitVtag}{}
\newcommand{\gitVtags}{}
\newcommand{\gitVtagn}{\space\gitInf@missing}
\newcommand{\gitRel}{}
\newcommand{\gitRels}{}
\newcommand{\gitReln}{\space\gitInf@missing}
\newcommand{\gitDirty}{}
\newcommand{\gitRoff}{}
\newcommand{\gitDescribe}{(None)}
\newcommand{\gitMarkPref}{[git]}
\@ifpackageloaded{xcolor}{%
\newcommand{\gitMarkFormat}{\color{gray}\small\sffamily}%
}{%
\newcommand{\gitMarkFormat}{\small\sffamily}%
}
\newcommand{\gitMark}{}
\newcommand{\gitWrapEmail}[1]{#1}
% private values
\newif\ifGI@is@a@repo@
% private constants
\providecommand{\GI@repo@prefix}{}
\ifbool{gitInf@local}{%
\providecommand{\GI@githeadinfo@file}{gitHeadLocal.gin}
\def\gitInf@maxdepth{0}
}{%
\providecommand{\GI@githeadinfo@file}{\GI@repo@prefix.git/gitHeadInfo.gin}
}
\newcommand{\gitInf@dirtflag}{}
\newcommand{\gitInf@describe}{}
\newcommand{\gitInf@mcount}{}
\newcommand{\gitInf@rel}{}
\newcommand{\gitInf@off}{}
% \TeX{}nical tools
\newcommand\GI@export@macro[1]{%
\edef\@tempa{\endgroup
\def\noexpand#1{#1}}%
\@tempa}
% finding the .git directory
\newcommand\GI@check@repo@prefix{%
\GI@is@a@repo@true
\IfFileExists{./\GI@githeadinfo@file}{%
\edef\GI@repo@prefix{./}%
}{%
\GI@set@repo@prefix}}
\newcommand\GI@set@repo@prefix{%
\begingroup \count@\gitInf@maxdepth\relax
\GI@set@repo@prefix@}
\newcommand\GI@set@repo@prefix@{%
\advance\count@\m@ne
\ifnum\count@<\z@
% \expandafter\GI@not@a@git@repo
\endgroup\relax
\else
\edef\GI@repo@prefix{../\GI@repo@prefix}%
\IfFileExists{\GI@githeadinfo@file}{%
\PackageInfo{gitinfo2}{%
gitinfo2 found : \GI@githeadinfo@file \MessageBreak
}%
\GI@export@macro\GI@githeadinfo@file
}{%
\expandafter\GI@set@repo@prefix@}%
\fi}
\GI@check@repo@prefix
\InputIfFileExists{\GI@githeadinfo@file}{}{%
\ifbool{gitInf@grumpy}{%
\PackageError{gitinfo2}{I can't find the file '\GI@githeadinfo@file'\MessageBreak
Please check the manual (gitinfo2.pdf) \MessageBreak
if you need more details}{}
}{%
\PackageWarningNoLine{gitinfo2}{I can't find the file '\GI@githeadinfo@file'.\MessageBreak
All git metadata has been set to '\gitInf@missing'}
}
}
% ---------------------------------------------------------------------
% Memoir support
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\@ifclassloaded{memoir}{%
\ifbool{gitInf@pcount}{
\newcommand{\@gitPage}{\thepage/\thelastpage}
\addtodef{\frontmatter}{\renewcommand{\@gitPage}{\thepage}}{}
\addtodef{\mainmatter}{}{\renewcommand{\@gitPage}{\thepage/\thelastpage}}
}{%
\newcommand{\@gitPage}{\thepage}
}
\newcommand{\@gitFootRev}{Release\gitRels: \gitAbbrevHash{} (\gitAuthorDate)}
\newcommand{\@gitrFootRev}{%
\tiny\textsf{\raggedleft \@gitFootRev}%
}%
\newcommand{\@gitlFootRev}{%
\tiny\textsf{\@gitFootRev}%
}%
\copypagestyle{giplain}{plain}
\copypagestyle{giruled}{ruled}
\copypagestyle{giheadings}{headings}
\makeevenfoot{giplain}{\@gitPage}{}{\@gitrFootRev}
\makeoddfoot{giplain}{\@gitlFootRev}{}{\@gitPage}
\makeevenfoot{giruled}{\@gitPage}{}{\@gitrFootRev}
\makeoddfoot{giruled}{\@gitlFootRev}{}{\@gitPage}
\makeevenfoot{giheadings}{\@gitPage}{}{\@gitrFootRev}
\makeoddfoot{giheadings}{\@gitlFootRev}{}{\@gitPage}
\makeevenhead{giheadings}{}{}{\slshape\leftmark}
\makeoddhead{giheadings}{\slshape\rightmark}{}{}
}{}%
% ---------------------------------------------------------------------
% Watermarking
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\ifbool{gitInf@markifdirty}{%
\IfEq{\gitDirty}{}{}{%
\booltrue{gitInf@mark}
\renewcommand{\gitMarkPref}{[Dirty]}
}%
}{}%
\ifbool{gitInf@markifdraft}{%
\ifbool{gitInf@draft}{%
\booltrue{gitInf@mark}
\renewcommand{\gitMarkPref}{[Draft]}
}{}%
}{}%
\ifbool{gitInf@mark}{%
\AddToShipoutPictureBG{%
\AtPageLowerLeft{%
\raisebox{\gitInf@raisemark}{%
\makebox[\paperwidth]{%
\begin{minipage}[b]{\paperwidth}%
\renewcommand{\baselinestretch}{1}%
\centering{\gitMarkFormat\gitMarkPref{} \textbullet{} \gitMark}%
\end{minipage}%
}%
}%
}%
}%
}{}%
% ---------------------------------------------------------------------
% Datetime integration
% - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
\@ifpackageloaded{datetime2}{%
\IfEq{\gitAuthorDate}{\gitInf@missing}{%
\DTMsavedate{gitdate}{\THEDAY-\THEMONTH-\THEYEAR}
}{%
\StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
\StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
\DTMsavenoparsedate{gitdate}{\gitInf@year}{\gitInf@month}{\gitInf@day}{-1}
}
}{}%
\@ifpackageloaded{datetime}{%
\IfEq{\gitAuthorDate}{\gitInf@missing}{%
\newdate{gitdate}{\THEDAY}{\THEMONTH}{\THEYEAR}
}{%
\StrCut{\gitAuthorDate}{-}{\gitInf@year}{\gitInf@md}
\StrCut{\gitInf@md}{-}{\gitInf@month}{\gitInf@day}
\newdate{gitdate}{\gitInf@day}{\gitInf@month}{\gitInf@year}
}
}{}%

View File

@ -81,6 +81,25 @@ compress
\section*{}
\phantomsection
\begin{frame}{First things first}\framesubtitle{Hardwareausgabe}
\begin{itemize}
\item Verfügbare Sets: 20
\item Reserviert: ~19
\item Kosten: \EUR{8} pro Set
\begin{itemize}
\item Bank of WIAI
\item \url{https://www.paypal.me/clkl/8}
\item Cash
\end{itemize}
\end{itemize}
\begin{figure}[H]
%\centering
%\flushright
\includegraphics[width=.3\textwidth]{qr}
\label{img:qr}
\end{figure}
\end{frame}
\begin{frame}{Content}
\tableofcontents
\end{frame}
@ -118,6 +137,7 @@ Cooler: \href{https://micropython.org/}{MicroPython}
\item Frei \& Open Source
\item Einige Funktionalität eingeschränkt (z.B. Multithreading)
\item Verscheidene Boards/Controller unterstützt: PyBoard, ESP32, \dots
\item Doku: \url{http://docs.micropython.org/en/latest/esp8266/index.html} (\url{http://iot.wiai/doc})
\end{itemize}
Lowlevel: C, Arduino Studio
\end{frame}
@ -143,7 +163,7 @@ Windows
\end{itemize}
Mac
\begin{itemize}
\item Irgendwie so ähnlich\dots
\item Homebrew (\url{https://brew.sh}) installieren + \texttt{brew install python3 \&\& pip install esptool}
\end{itemize}
Offline pip: \textit{pip install -f http://iot.wiai/webrepl/}%TODO: --no-index?
\end{frame}
@ -153,12 +173,15 @@ Offline pip: \textit{pip install -f http://iot.wiai/webrepl/}%TODO: --no-index?
Windows-Spezial:
\begin{itemize}
\item Portbezeichner: Gerätemanager $\rightarrow$ Serielle Geräte (COM+LPT) $\rightarrow$ COM$X$
\item python -m esptool
\end{itemize}
Flashen:
\begin{itemize}
\item \url{https://micropython.org/download\#esp8266} %TODO: WIAI-link
\item \texttt{esptool.py --port /dev/ttyUSB0 erase\_flash}
\item \texttt{esptool.py --port /dev/ttyUSB0 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
\item[*nix] \texttt{esptool.py --port /dev/ttyUSB0 erase\_flash}
\item[win] \texttt{python -m esptool --port COM12 erase\_flash}
\item[*nix] \texttt{esptool.py --port /dev/ttyUSB0 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
\item[win] \texttt{python -m esptool --port COM12 --baud 460800 write\_flash --flash\_size=detect 0 esp8266-20170823-v1.9.2.bin}
\item reset
\end{itemize}
\end{frame}
@ -170,27 +193,27 @@ Flashen:
\item \texttt{picocom -b 115200 /dev/ttyUSB0}
\item $n$ beherzte \textit{<ENTER>}-Drücke
\item Docker: \texttt{docker-compose run esp} (evtl. TTY anpassen)
\item[exit] Ctrl-a Ctrl-x
\end{itemize}
Windows:
\begin{itemize}
\item puTTY
\item PuTTY
\item Serielle Verbindung
\item 115200 Baud
\item $n$ beherzte \textit{<ENTER>}-Drücke
\end{itemize}
%TODO: bild mit REPL (inkl ENTERs)
\end{frame}
\lstset{language=Python,captionpos=b}
\begin{frame}{REPL}
\framesubtitle{Hello World!}
%TODO: bild
\image{.7\textwidth}{repl}{REPL}{img:repl}
\end{frame}
\subsection{Wlan}
\begin{frame}[fragile]{Wlan}\framesubtitle{Put the I in IoT}
\subsection{WLAN}
\begin{frame}[fragile]{WLAN}\framesubtitle{Put the I in IoT}
\begin{lstlisting}[caption={Descriptive Caption Text},label=DescriptiveLabel]
import network
sta_if = network.WLAN(network.STA_IF)
@ -211,13 +234,30 @@ import webrepl_setup
\end{lstlisting}
\begin{itemize}
\item \textit{import webrepl\_setup}
\item reset/start webrepl (import webrepl \& webrepl.start())
\item reset/start webrepl (\textit{import webrepl \& webrepl.start()})
\item visit \url{http://iot.wiai/webrepl/} or \url{http://micropython.org/webrepl/}
\item enter your ESP's IP (\textit{sta\_if.ifconfig()}) \& connect
\end{itemize}
\end{frame}
\subsection{Init}
\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}
\begin{frame}[fragile]{Gegenseite: Flask}
\begin{lstlisting}[caption={C\&C Server},label=cnc]
@ -234,15 +274,16 @@ Starten:
\begin{itemize}
\item[!] pip install Flask
\item python server.py
\item docker-compose up (server.py in src/)
\item FLASK\_APP=server.py flask run
\item[||] docker-compose up (server.py in src/)
\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
host = "http://your.host.ip.here:5000"
response = urequests.get(host)q
response = urequests.get(host)
print(response)
import machine
@ -258,19 +299,21 @@ urequests.post(post_url, data=data, headers=json_header)
\section{Basteln}
\subsection{Blinkende LED}
\begin{frame}{LED anschließen}
TODO schema
\image{.4\textwidth}{node-led}{LED \cite{node-led}}{img:led}
\end{frame}
\begin{frame}[fragile]{LEDs}
\begin{lstlisting}[caption={LED},label=led]
\setbeamercovered{invisible}
\lstset{tabsize=6}
\begin{lstlisting}[caption={LED},label=led,escapeinside={(*@}{@*)}]
import machine, time, math
pin = machine.Pin(0, machine.Pin.OUT)
pin.on()
pin.off()
(*@\onslide<2->@*)
pwm = machine.PWM(pin)
pwm.duty(512)
pwm.deinit()
(*@\onslide<3->@*)
def pulse(l, t):
for i in range(20):
l.duty(int(math.sin(i / 10 * math.pi) * 500 + 500))
@ -280,24 +323,23 @@ pulse(led, 50)
for i in range(10):
pulse(led, 20)
\end{lstlisting}
\end{frame}
\subsection{Schalter und Taster}
\begin{frame}[fragile]{Input}
TODO: schema
\image{.35\textwidth}{button-nodemcu}{Taster \cite{node-button}}{img:button}
\begin{lstlisting}[caption={Input},label=input]
import machine
pin = machine.Pin(0, machine.Pin.IN, machine.Pin.PULL_UP)
status = pin.value()
# status = pin.value()
def callback(p):
print('changed', p)
pin.irq(trigger=machine.Pin.IRQ_RISING | machine.Pin.IRQ_FALLING, handler=callback)
\end{lstlisting}
\end{frame}
\subsection{Sensoren}
\begin{frame}[fragile]{Sensoren}
TODO: schema
\image{.35\textwidth}{nodemcu-dht22}{DHT22 \cite{node-dht}}{img:dht}
\begin{lstlisting}[caption={Sensoren},label=senors]
import dht
import machine
@ -308,6 +350,16 @@ d.humidity()
\end{lstlisting}
\end{frame}
\subsection{Interrupts}
\begin{frame}{Here be dragons}
\begin{itemize}
\item Z.B. Callbacks von Tastern
\item pausieren main
\item dürfen keinen Speicher allozieren
\item Emergency exception buffer: \textit{micropython.alloc\_emergency\_exception\_buf(100)}
\end{itemize}
\cite{mp-interrupt}
\end{frame}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% References %%%%%%%%%%
@ -327,7 +379,9 @@ d.humidity()
\item \url{https://learn.adafruit.com/micropython-hardware-i2c-devices/overview}
\item \url{http://luftdaten.info/}
\item \url{https://micropython-on-esp8266-workshop.readthedocs.io/en/latest/index.html}
\item \url{http://micropython-iot-hackathon.readthedocs.io/en/latest/index.html}
\item MQTT, \href{http://nsq.io/}{nsq.io}
\item Dateisystem
\end{itemize}
\end{frame}