New GPIO for DHT11.
[hqdisplay.git] / genslide.sh
1 #!/bin/bash
2
3 # Add to /etc/rc.local:
4 # git clone git://git.ccc-ffm.de/hqdisplay.git /dev/shm/hqdisplay && bash /dev/shm/hqdisplay/runslides.sh &
5
6 mydir="$( cd "$(dirname "${0}")" &> /dev/null; pwd )"
7 fbicmd="fbi -noreadahead -cachemem 0 -noverbose -vt 1 -timeout 3 -blend 500"
8
9 slidesdir="/dev/shm/slides"
10 mkdir -p "${slidesdir}"
11
12 # git pull if repo was never or not updated in the last 10 minutes
13 if [ ! -f "${mydir}/.git/FETCH_HEAD" -o -n "$(find "${mydir}/.git/FETCH_HEAD" -mmin +10 2>/dev/null)" ]
14 then
15   (
16     cd "${mydir}"
17     LANG=C git pull | fgrep -q 'Already up-to-date.'
18     exit $?
19   )
20   if [ $? -ne 0 ]
21   then
22     # something happend in the repo; kill fbi, clean up & restart
23     pkill fbi
24     ${fbicmd} -once "${mydir}/static/testcard.png"
25     find "${slidesdir}" -name '*.png' | xargs --no-run-if-empty rm
26     exec bash "${0}" # expect ${0} to reside on an noexec-FS.
27   fi
28 fi
29
30 function numpath {
31   printf '%s%02d%s' "${slidesdir}/slide" ${1} '.png'
32 }
33
34 function tmpwriter {
35   tmpslide=$(TMPDIR="${slidesdir}" mktemp)
36   cat > "${tmpslide}"
37   mv "${tmpslide}" "${1}"
38 }
39
40 for static in "${mydir}/static/slide"*'.png'
41 do
42   tmpwriter "${slidesdir}/${static##*/}" < "${static}"
43 done
44
45 export LANG='de_DE.UTF-8'
46
47 ## SLIDE 0: static (ccc-ffm Logo)
48
49 ## SLIDE 1
50 test -f "$(numpath 1)" || convert -background black -fill '#00ff00' -pointsize 64 -gravity center label:'Willkommen im\nHackquarter\ndes\nChaos Computer Club\nFrankfurt' png: | tmpwriter "$(numpath 1)"
51
52 ## SLIDE 2: static (Club Mate)
53
54 ## SLIDE 3
55 test -f "$(numpath 3)" || convert -background black -fill '#e49341' -pointsize 64 -gravity center label:'Durst?\n\nWir haben\nClub Mate\nund weitere Getränke.\n\nFrage ein Mitglied.' png: | tmpwriter "$(numpath 3)"
56
57 ## SLIDE 4: static (power distribution)
58
59 ## SLIDE 5; see below
60
61 ## SLIDE 6
62 curl -sk "https://${rpisnhash}:${rpisn}@strom.ccc-ffm.de/powerdisplay.png" | tmpwriter "$(numpath 6)"
63
64 ## SLIDE 7: static (E-Mail & Twitter)
65
66 ## SLIDE 8
67 test -f "$(numpath 8)" || convert -background black -fill '#ff6600' -pointsize 64 -gravity center label:'Mailingliste, IRC\nhttp://ccc-ffm.de/\n\nTwitter\n@cccffm' png: | tmpwriter "$(numpath 8)"
68
69 ## SLIDE 9; see below
70
71 ## SLIDE 10
72 test -f "$(numpath 10)" || convert -background black -fill '#ff6600' -pointsize 64 -gravity center label:'Jeden 2. Dienstag\nim Monat:\nPython User Group\nFrankfurt\nhier im HQ!' png: | tmpwriter "$(numpath 10)"
73
74 ## SLIDE 11
75 test -f "$(numpath 11)" || convert -background black -fill '#ff6600' -pointsize 64 -gravity center label:'04.07.2015\n\nHQ 3.0\nEinweihungsparty' png: | tmpwriter "$(numpath 11)"
76
77
78
79 ## SLIDE 9
80 ## Always generate temperatue & humidity slide
81 ## Source: DHT11 Sensor on RPi GPIO9
82 ## needs: https://github.com/adafruit/Adafruit_Python_DHT
83 humitemp="$(PYTHON_EGG_CACHE=/var/tmp/.python-eggs python -c 'import Adafruit_DHT; print " ".join(map(str, Adafruit_DHT.read_retry(11, 4)))')"
84 convert -background black -fill '#ff6600' -pointsize 64 -gravity center label:'Temperatur: '"${humitemp#* }°C"'\nrel. Feuchte: '"${humitemp% *}%" png: | tmpwriter "$(numpath 9)"
85
86 ## SLIDE 5
87 ## Always generate slide with power usage
88 # Authenticate against https://strom.ccc-ffm.de/ with RPi serial
89 rpisn="$(while read line; do case "${line}" in Serial*) echo ${line#*: }; ;; esac; done < /proc/cpuinfo)"
90 rpisnhash="$(echo -n "${rpisn}" | sha512sum | cut -d' ' -f1)"
91 # echo htpasswd .htpasswd "$rpisnhash" "$rpisn" ## Update Webservers .htpasswd: 
92 powerusage="$(curl -sk "https://${rpisnhash}:${rpisn}@strom.ccc-ffm.de/power.log" | cut -d';' -f2)"
93 # save power usage for other tools...
94 echo "${powerusage}" | tmpwriter "/dev/shm/power.log"
95 convert -background black -fill '#ff0000' -pointsize 64 -gravity center label:'Aktuelle\nLeistungsaufnahme\ndes HQ:\n\n'"${powerusage}"' Watt' png: | tmpwriter "$(numpath 5)"
96
97 pgrep fbi &>/dev/null || ${fbicmd} "${slidesdir}/slide"*".png"
98