Dies ist eine alte Version des Dokuments!
Siehe FHEM-Wiki http://www.fhemwiki.de/wiki/Digitaler_Bilderrahmen_mit_lcd4linux
Die Installation kann auf dem raspberry Pi selbst erfolgen oder auf einem dedizierten Rechner. Bei der Installation auf einem raspberry pi (2) sind mögliche Auswirkungen auf die Perfomance zu berücksichtigen.
Für diesen Fall benötigte Software:
lcd4linux sollte beim Hochfahren des Raspberry Pi automatisch starten.
In /opt/fhem wird zunächst die Datei getFHEM.sh angelegt und den individuellen Ansprüchen nach modifiziert:
#!/bin/bash
#
# script to read FHEM values
#
round()
{
echo $(LANG=C printf %.$2f $(echo "scale=$2;(((10^$2)*$1)+0.5)/(10^$2)" | bc))
};
#
arg=$1
#
#-- get FHEM values
alarm='{Value("WZ.SPF.alarm")."|"}'
warn='{Value("WZ.SPF.warn")."|"}'
scharf='{AttrVal("AAA","level6xec","")}'
aowb='{Value("A.OWB")}'
aowbt='{Value("A.OWB.T")}'
wzowm='{Value("WZ.OWM")}'
nt5000a='{$defs{"nt5000"}{"STATE"}}'
nt5000b='{$defs{"nt5000"}{"READINGS"}{"Wd"}{"VAL"}}'
everb='{Value("E.Verb")}'
gverb='{Value("G.Verb")}'
FHEM=`echo -e "$alarm;$warn;$scharf;$aowb;$aowbt;$wzowm;$everb;$gverb;$nt5000b;$nt5000a" | socat -t50 - TCP:<IP-Adresse von FHEM>
#
#--isolate separate values
alarm=`echo $FHEM | cut -d '|' -f1`
warn=`echo $FHEM | cut -d '|' -f2 | sed 's/^ *//'`
FHEM3=`echo $FHEM | cut -d '|' -f3`
scharf=`echo $FHEM3 | awk '{print $1}' | sed 's/sharp/scharf/'`
rHa=$(round `echo $FHEM3 | awk '{print $3}'` 0)
Ta=$(round `echo $FHEM3 | awk '{print $15}'` 1)
pa=$(round `echo $FHEM3 | awk '{print $12}'` 0)
rHi=$(round `echo $FHEM3 | awk '{print $18}'` 0)
Ti=$(round `echo $FHEM3 | awk '{print $21}'` 1)
evp=$(round `echo $FHEM3 | awk '{print $27}'` 2)
evw=$(round `echo $FHEM3 | awk '{print $24}'` 1)
gvp=$(round `echo $FHEM3 | awk '{print $36}'` 2)
gvw=$(round `echo $FHEM3 | awk '{print $33}'` 2)
pvpraw=`echo $FHEM3 | awk '{print $42}'`
pvp=$(round $pvpraw 2)
pvw=$(round `echo $FHEM3 | awk '{print $41}'` 1)
#
if [ "$arg" == "show" ]; then
echo "alarm=$alarm warn=$warn => $scharf; Climate=>$rHa $Ta $pa $rHi $Ti; PV=> $pvpraw $pvp $pvw; EV=> $evp $evw; GV=>$gvp $gvw"
fi
#
#--create bar graphs
./createAlarm.sh "$alarm" "$warn" $scharf &
./createBar.sh $pvw 35 kWh $pvp kW 200x150 green PV solar.png &
./createBar.sh $evw 35 kWh $evp kW 200x150 blue EV strom.png &
./createBar.sh $gvw 20 m³ $gvp m³/h 200x150 red GV gas.png &
./createTemp.sh $Ti $rHi $Ta $rHa $pa &
./createDate.sh &
Diese Datei wird nun mit
crontab -e
in die Tabelle des cron-Dämons eingetragen (Ausführung hier minütlich):
/etc/lcd4linux.conf
Display dpf {
Driver 'SamsungSPF'
Port 'usb0'
Model 'SPF-85H'
Font '96x128'
Foreground 'ffffff'
Background '000000'
Basecolor '000000'
Backlight 7
Orientation 1
}
Variables {
tick 1000
dick 2000
pick 10000
minute 60000
hminute 30000
}
Widget Foto {
class 'Image'
file '/root/back.png'
update hminute
reload 1
visible 1
inverted 0
}
Widget Alarm {
class 'Image'
file '/root/alarm.png'+
update hminute
reload 1
visible 1
inverted 0
}
Widget Solar {
class 'Image'
file '/root/solar.png'
update hminute
reload 1
visible 1
inverted 0
}
Widget Strom {
class 'Image'
file '/root/strom.png'
update hminute
reload 1
visible 1
inverted 0
}
Widget Gas {
class 'Image'
file '/root/gas.png'
update hminute
reload 1
visible 1
inverted 0
Widget Temp {
class 'Image'
file '/root/temp.png'
update hminute
reload 1
visible 1
inverted 0
}
Widget Date {
class 'Image'
file '/root/date.png'
update hminute
reload 1
visible 1
inverted 0
}
#####################################################################
Display 'DPF'
#####################################################################
Layout Normal {
# X/Y exchanged !!
Layer 1 {
X0.Y0 'Foto'
X450.Y0 'Alarm'
X0.Y600 'Date'
X150.Y600 'Temp'
X450.Y600 'Strom'
X450.Y400 'Solar'
X450.Y200 'Gas'
}
}
#!/bin/bash # # script to produce a photo PNG file using ImageMagick convert # #-- Directory Containing Pictures DIR="/root/Bilder" # # Command to Select a random jpg file from directory pic=$(ls $DIR | shuf -n1) # #-- Correct the size convert $DIR/$pic -resize 600x450 back.png #convert $DIR/$pic -rotate -90 -resize 450x600 back.png
Erzeugung eines Bildes mit dem gegenwärtigen Datum und der jetzigen Zeit. Dazu wird im Verzeichnis /opt/fhem die Datei createDate.sh angelegt:
#!/bin/bash
#
# script to produce a date PNG file using ImageMagick convert
#
#--date pieces
ddate=`date +%a%_3e.%_4b%_5Y`
dtime=`date +%k:%M`
#
convert -size 320x240 canvas:none -stroke snow4 -size 1x90 -tile gradient:white-snow4 \
\( +clone -background snow4 -shadow 80x3+3+3 \) \
+swap -background none -layers merge \
\( +size -font Helvetica \
-pointsize 75 -strokewidth 1 -fill red label:"$dtime" -trim -repage 0x0+25+60 \
\( +clone -background firebrick3 -shadow 80x3+3+3 \) \
+swap -background none -layers merge \) \
-insert 1 -layers merge \
\( +size -font Helvetica \
-pointsize 35 -strokewidth 1 -fill blue label:"$ddate" -trim -repage 0x0+25+150 \
\( +clone -background slateblue4 -shadow 80x1+2+2 \) \
+swap -background none -layers merge \) \
-insert 1 -layers merge \
-append -background white -gravity center -extent 320x240 \
b_date.png
#
#-- correct the size
convert b_date.png -resize 200x150 date.png