MagicMirror
Um Informationen auf dem e-Paper Display anzuzeigen könnte man anhand des Beispiels vom Hersteller ein Programm schreiben um die gewünschten Daten auf das Display zu bringen. Sofern ich es richtig verstanden habe sendet man dem e-Paper Display immer ein Bild und tauscht es dann je nach Anzeige aus. Um etwas schneller zum Ergebnis zu kommen greife ich auf die Software Magic Mirror zurück die für smarte Spiegel gedacht ist, über eine Erweiterung, aber auch unser e-Paper Display bespielen kann.
Die Erweiterung macht dabei einen Screenshot der Weboberfläche von Magic Mirror und sendet das Bild an das e-Paper Display. Außerdem gibt es bereits viele Module zum Thema Wetter die nutzbar sind. Meine Anleitung basiert auf der Anleitung von maker-tutorials.de und ist nur für die Version 2 des e-Papers angepasst.
Installation Browser / Python Bibliotheken
Die Erweiterung benötigt den Chromium Browser und einige Python Bibliotheken die in diesem Schritt installiert werden.
sudo apt-get install -y git chromium-browser
sudo apt-get install -y python-dev python-smbus python-rpi.gpio python-serial python-spidev python-pil fonts-freefont-ttf
sudo apt-get install -y python-dev python-smbus python-rpi.gpio python-serial python-spidev python-pil fonts-freefont-ttf
Installation Node.js
MagicMirror benötigt die JavaScript Laufzeitumgebung Node.js die in diesem Schritt installiert wird. Die Versionen können sich verändert, falls es zu einer Fehlermeldung kommt einfach mal hier schauen, welche Version gerade aktuell ist. Mit uname -m kann man schauen, welche Architektur benötigt wird. Für den Raspberry Pi Zero WH ist das "arm6l".
wget https://nodejs.org/dist/latest-v10.x/node-v10.24.1-linux-armv6l.tar.xz
tar xvf node-v10.24.1-linux-armv6l.tar.xz
cd node-v10.24.1-linux-armv6l/
sudo cp -R bin/* /usr/bin/ && sudo cp -R lib/* /usr/lib/
node -v
npm -v
tar xvf node-v10.24.1-linux-armv6l.tar.xz
cd node-v10.24.1-linux-armv6l/
sudo cp -R bin/* /usr/bin/ && sudo cp -R lib/* /usr/lib/
node -v
npm -v
Der Prozessmanager PM2 sorgt dafür das Node.js Prozesse nach dem Neustart verfügbar sind und endlos laufen.
sudo npm install -g pm2pm2 startup && pm2 save
Virtueller X-Server
Der virtuelle X-Server Xvfb wird dazu benutzt um die grafische Anzeige des MagicMirror umzulenken und dann einen Screenshot davon zu machen.
sudo apt install xvfb imagemagick
Xvfb :1 -screen 0 800x480x24 -fbdir /home/icke &
Xvfb :1 -screen 0 800x480x24 -fbdir /home/icke &
Installation MagicMirror
Nun kommt die eigentliche Installation des MagicMirror² Paketes. Unklar bin ich mir noch über die Architektur in der Originalanleitung wird arm7l angegeben, für de RPi Zero benötige ich aber eigentlich arm6l. Bei mir geht beides, hatte aber zuerst arm7l installiert und es dann nochmal mit arm6l versucht.
cd ~/ && git clone https://github.com/MichMich/MagicMirror
cd MagicMirror/
npm install -arch=armv7l
cd MagicMirror/
npm install -arch=armv7l
cp config/config.js.sample config/config.js
nano config/config.js
address: "0.0.0.0",
DISPLAY=:1 nohup npm start &
Die Weboberfläche erreicht man in meinem Fall mit http://dufte:8080. Dort wird das aktuelle Datum und ein Kalender mit Feiertagen angezeigt.
cat /home/icke/Xvfb_screen0 | convert xwd:- bmp:/home/icke/screenshot.bmp
sudo python /home/icke/ePaper/epd_7in5_V2_test.py
Installation e-Paper Erweiterung
Nun geht es endlich zur Erweiterung rpi-magicmirror-eink, die das e-Paper Display ansteuert. Der Programmierer BenRoe hat allerdings das Waveshare e-Paper 7,5 Zoll Version 1, welches nicht kompatible zur Version 2 ist. Daher müssen im Anschluss an die Installation einige Anpassungen vorgenommen werden, die der Nutzer Silvio in den Kommentaren der Anleitung angemerkt hat.
cd ~/ && git clone https://github.com/BenRoe/rpi-magicmirror-eink.git
cd rpi-magicmirror-eink
npm install
cp -a magicmirror-files/css/. ~/MagicMirror/css
cp magicmirror-files/config.js ~/MagicMirror/config/
cd ~/MagicMirror
pm2 start node serveronly
cd ~/rpi-magicmirror-eink
pm2 start index.js --name "eink-update"
pm2 save
cd rpi-magicmirror-eink
npm install
cp -a magicmirror-files/css/. ~/MagicMirror/css
cp magicmirror-files/config.js ~/MagicMirror/config/
cd ~/MagicMirror
pm2 start node serveronly
cd ~/rpi-magicmirror-eink
pm2 start index.js --name "eink-update"
pm2 save
Anpassungen an Version 2 B
Die Anpassungen sind notwendig, da die Version 2 B anders angesteuert, eine höhere Auflösung und neben SchwarzWeiß auch noch Rot kann.
cp ~/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epd7in5b_V2.py ~/rpi-magicmirror-eink/ePaperPython
cp ~/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py ~/rpi-magicmirror-eink/ePaperPython
cd rpi-magicmirror-eink/ePaperPython
nano epd7in5b_V2.py
cp ~/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd/epdconfig.py ~/rpi-magicmirror-eink/ePaperPython
cd rpi-magicmirror-eink/ePaperPython
nano epd7in5b_V2.py
Ändern der Zeile 32 „from . import epdconfig“ zu „import epdconfig“, also ohne den Punkt.
nano main.py
Ändern der Zeile "epd.display_frame(epd.get_frame_buffer(image))" zu "epd.display(epd.getbuffer(image))". Ändern der Zeilenfolge "epd7in5" zu "epd7in5b_V2". Einmal bei "import" und einmal nach dem Aufruf "main()".
cd ~/rpi-magicmirror-eink/
nano config.js
nano config.js
Ändern der Werte von "display_width" zu 800 und "display_height" zu 480.
sudo reboot
Hinweis: Problem ist aktuell, dass ich dem Display noch ein Bild schicken muss, was rot ist.