Hoe leuk is het om pictogrammen van het weer op de display te laten zien. Het idee is om 30 seconde de afbeelding van Radio Caroline te laten zien en de volgende 30 seconde een pictogram voor het weer. Ik heb de pictogrammen vast in een grafisch programma op mij computer gemaakt.

We gaan eerst een directory aanmaken waar we ze kunnen neerzetten.
cd
mkdir weerlive
cd weerlive
Nu halen we de pictogrammen op. Het zijn PNG bestanden van 128 x 128. Dit is het formaat van de display.
wget https://www.ph0dv.nl/ph0dv/weerlive/weerlive.zip
We gaan nu het programma zip installeren om de file te unzippen.
sudo apt-get install zip

En we unzippen de file.
unzip weerlive.zip
We hebben nu een lijstje met alle pictogrammen.
ls -alh

Omdat we maar 300x per dag op onze API key (gratis versie) het weer op mogen halen, haal ik ieder uur het actuele weerbericht op. De nauwkeurigheid van het weer is dus 1 uur. We gaan hiervoor een BASH file aanmaken.
sudo nano //etc/init.d/weerlive.sh
We maken de file leeg. Dit kun je doen door boven aan de file te gaan staan met de cursor en meerdere keren CTRL K in te geven totdat alle regels zijn gewist.
Onderstaande code plakken we in de file.
#!/bin/bash
curl -s “https://weerlive.nl/api/json-data-10min.php?key=XXXXXXXXXX&locatie=Huizen” | jq –raw-output .liveweer[].d0weer >/home/pi/weer.txt
exit 0
Let op, plaats je eigen key op de plek van de Xjes.

CTRL X en Y en file is opgeslagen.
Maak de file nu “executable” zodat hij kan worden uitgevoerd.
sudo chmod +x //etc/init.d/weerlive.sh
Met deze BASH file kunnen we het weerbericht ophalen en de informatie wordt opgeslagen in in de file weer.txt in de home directory. Je kunt dit testen.

We gaan dit script elk uur laten uitvoeren. We doen dit met een Cron job. We hebben al eerder in deel x een “Cronjob” aangemaakt die wordt uitgevoerd bij het opstarten van een Raspberry Pi.
crontab -e -u pi
Met “crontab” kunnen we de “cronjobs” aanpassen. -e staat voor edit en -u, dit is de “cronjob” van de user pi. Dus de “cronjob” wordt uitgevoerd alsof het de user pi is.
We plaatsen de volgende regel als onderste regel.
0 * * * * sudo -u pi nohup //etc/init.d/weerlive.sh >/dev/null 2>&1
De 0**** betekend dat iedere 0ste minuut van het uur dit commando wordt uitgevoerd. Dat is dus op het hele uur. Op de “>/dev/null 2>&1” kom ik in een later aflevering terug als we het gaan hebben over log files.
Met CTRL X en Y sla je de “Cronjob” op.
We gaan er nu voor zorgen dat de informatie in weer.txt wordt omgezet naar een plaatje. Dit wordt een iets uitgebreider script.
sudo nano //etc/init.d/displayoutput.sh
We gaan de file displayoutput.sh aanmaken en copieeren het volgende script in de file.
!/bin/bash
b=$(</home/pi/weer.txt)
echo “$b”
if [ -z “$b” ]
then
b=$(</home/pi/smile.txt)
echo “$b”
fi
ffmpeg -v 0 -y -i /home/pi/weerlive/$b.png -vf scale=128:128,transpose=1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 – > /dev/fb1
sleep 30
ffmpeg -v 0 -y -i /home/pi/caroline.png -vf scale=128:128,transpose=1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 – > /dev/fb1
exit 0
CTRL X en Y voor het opslaan.
Wat staat hier precies?
b=$(</home/pi/weer.txt)
echo “$b”
Hiermee maak je een variabele aan en vul dit met de inhoud van weer.txt
if [ -z “$b” ]
then
b=$(</home/pi/smile.txt)
echo “$b”
fi
Een if statement, hier staat dat wanneer de variabele $b leeg is (-z) dan halen we de informatie uit de file smile.txt (b=$(</home/pi/smile.txt)
echo “$b”). Het kan nl voorkomen dat het script geen contact kan krijgen door een storing o.i.d. met weerlive.nl. I.p.v. een weer pictogram plaatsen we dan een smiley 🙂

Met de ffmpeg comando’s en de sleep 30 wisselen we tussen de afbeelding van Radio Carloline en de weer pictogram in de variablele $b.
ffmpeg -v 0 -y -i /home/pi/weerlive/$b.png -vf scale=128:128,transpose=1 -vcodec rawvideo -f rawvideo -pix_fmt rgb565 – > /dev/fb1
De $b.png zet de variabelle om naar de afbeelding in png formaat.
Dit script willen we elke minuut uitvoeren. We gaan dus weer de cronjob aanpassen.
crontab -e -u pi
en we voegen de display output regel toe welke we iedere minuut laten uitvoeren.
*/1 * * * * sudo -u pi nohup //etc/init.d/displayoutput.sh >/dev/null 2>&1
De cronjob ziet er nu ongeveer zo uit.

*/1 **** betekend dat de cronjob iedere minuut wordt uitgevoerd.
We kunnen nu de cronjob reloaden zonder de Raspberry Pi te herstarten.
sudo service cron reload
Nu moeten we nog wel de file smile.txt aan maken.
cd
sudo nano smile.txt
Voeg het woord smile in de file
CTRLX en Y
Tot zover voor deze keer.