Mijn eigen weerstation

Na een lange periode weer eens een blogje.

We zijn midden 2018 verhuisd naar een andere woning in Stadshagen (wijk van Zwolle) en nu hebben we niet meer een huis met vier verdiepingen maar met slechts twee. Dus geen dakterras meer met het gemak om antennes te plaatsen. Nu moet ik met een ladder het dak opklauteren. Gelukkig is het een plat dak en heb ik tevens een aan het huis vastgemaakte vlaggenmast. Hierdoor was er al vrij snel een draadantenne opgehangen. ūüôā

(more…)

RX320D-NY nog steeds on-line

‘onlinereceiver.net still going strong’.

Tot mijn groot genoegen kwam ik onlangs tot de ontdekking dat de oorspronkelijke onlinereceivers.net ontvanger in Rochester (NY) nog steeds operationeel is. Steve, KD2OM heeft er zelfs nog een antennekeuze bijgebouwd en de ontvangst is subliem. Vooral van LF en MF stations. De server is een Raspberry Pi en de set-up en werking nog steeds oud en vertrouwd.

rx320d-ny

De ontvanger is bereikbaar op rx320.doesntexist.org/rx320d en uiteraard ook via onlinereceivers.net.

Zeker de moeite waard om er nog eens een kijkje te nemen en te luisteren naar een ‘traditionele’ radio.

RPi Webcam update

Sterk vereenvoudigd script.

Na enige jaren onafgebroken een wolkencamera on line te hebben gehad, vond ik het tijd worden voor een ‘√ßlean-up’. De RPi Webcam was begonnen in mei 2013 met een eenvoudig script, maar werd later toch met de nodige extra’s¬†uitgebreid.¬†Ongeveer een jaar later¬†kwam daar nog een aanvullende Dropbox toepassing bij. Vorig jaar heb ik zelfs de hele software veranderd naar een geavanceerde Rpi¬†Cam Web Interface¬†met de nodige toeters en bellen.

Allemaal erg mooi, maar met de laatste applicatie merkte ik wel dat de WiFi verbinding regelmatig uitviel op de RPi versie 1 type A (een oude model dus). Hierdoor viel de camera regelmatig stil, vooral als ik niet thuis was. Lastig, dus maar op zoek gegaan naar een oplossing.

Om de WiFi regelmatig te testen op connectie kun je een programmaatje (shell script) maken wat door de crontab (robot) wordt aangeroepen:

#!/bin/sh

TESTIP=192.168.178.1

ping -c4 ${TESTIP} > /dev/null

if [ $? != 0 ]
then
echo “$(date) WiFi seems down, restarting…” >> /home/pi/wifi.log
ifdown –force wlan0
ifup wlan0
else
echo “$(date) WiFi seems up.” >> /home/pi/wifi.log
fi

De TESTIP is het adres van de router. In wifi.log schrijf ik het resultaat van de test. Dit script met de naam testwifi.sh wordt in de /etc/crontab (dit is de system-wide crontab) uitgevoerd met deze regel:

*/10 *  * * *   root    /home/pi/testwifi.sh

Elke 10 minuten wordt er dus gekeken of de WiFi nog verbinding heeft en zo niet dan wordt deze opnieuw gestart. Dus opnieuw verbinding zoeken met behulp van de gegevens in de file /etc/wpa_supplicant/wpa_supplicant.conf:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid=”PA3ANG”
psk=”wachtwoord”
key_mgmt=WPA-PSK
}

Nu ik toch bezig was wilde weer terug naar het eenvoudige webcam script van 2014. Ik had een script met de naam elapse.sh geschreven, met de mogelijkheid om verschillende formaten aan te kunnen bieden plus een website met php mogelijkheid. Redelijk zwaar. In eerste instantie met lighttpd en daarna zelfs met apache. Nou kan de RPi dat makkelijk aan, maar ik houd wel van KISS (Keep It Simple Stupied) en ik kwam een ‘ingebouwde’ webserver gebaseerd op Python¬†tegen die ook nog eens¬†onderdeel is van het standaard RPi pretpakket. Je hoeft dus geen aparte webserver te gebruiken, mits je html gebruikt (dus geen php) en simpele rechttoe rechtaan geschreven pagina’s gebruikt. Wel heb ik daarnaast een ftp mogelijkheid ge√Įnstalleerd¬†en via GitHub een Dropbox upload applicatie.

#!/bin/bash

picture=/var/www/webcam/stills/still.jpg

while [ true ]; do

directory=`date +%Y%m%d`
snaptime=`date +%H%M`
datetext=`date +%d/%m/%Y`
timetext=`date +%H:%M`

raspistill -o $picture -w 720 -h 405 -q 30 -awb auto -sa -70 -br 54

convert $picture -pointsize 20 -fill yellow -annotate +20+30 ‘RPi-Webcam|JO32am’ $picture
convert $picture -pointsize 16 -fill yellow -annotate +230+30 $datetext $picture
convert $picture -pointsize 16 -fill yellow -annotate +320+30 $timetext $picture
convert $picture -pointsize 16 -fill yellow -annotate +620+30 ‘¬©pa3ang’ $picture

ftp -n pa3ang.nl <<END_SCRIPT
quote USER ftp_user
quote PASS ftp_wachtwoord
binary
put $picture /public_html/webcam/stills/still.jpg
quit
END_SCRIPT

./dropbox_uploader.sh upload $picture $directory/$snaptime.jpg

while [ `date +%H%M` -eq $snaptime ]; do
sleep 1
done

done

Toen ik deze eenvoudige wijze van beeldopslag weer aanzette, merkte ik dat er geen tekst meer op de wolkenfoto was afgebeeld. Hiervoor maar weer google gebruiken en ja hoor, er is een speciaal programmaatje beschikbaar met de naam convert. Even met apt-get installeren en voila ik kan op de foto weer mijn eigen graffiti kwijt.

still

Het raam kan ook wel een schoonmaakbeurt gebruiken zie ik.

Ten slotte nog een toevoeging gemaakt in de /etc/rc.local zodat het programma automatisch start bij het aanzetten van de RPi:

#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Print the IP address
_IP=$(hostname -I) || true
if [ “$_IP” ]; then
printf “My IP address is %s\n” “$_IP”
fi

#START WEBCAM SESSION
cd /home/pi/webcam
python -m SimpleHTTPServer >/dev/null 2>&1 &
sudo -u pi /home/pi/elapse.sh &

exit 0

Zorg ervoor dat de SimpelHTTPServer naar /dev/null schrijft! anders stopt de server. Ook moet je even opletten met de eigenaarschap van scripts in de /home/pi directory. Ik roep overigens het elapse.sh script aan met -u pi (gebruik user pi) omdat de dropbox api bij mij is ingesteld op gebruiker pi.

Samenvattend heb ik dus nu een superlichte webcam / wolkencamera server, voorzien van een 10 minuten wifi waakhond. Je kunt de server vinden op pa3ang.xs4all.nl en dat is mijn hostnaam thuis. Via de router is de server veilig aangesloten op de buitenwereld.

Raspberry Pi Camera

De camara module is eindelijk leverbaar.

Na lang wachten is hij er dan: de Rapsberry Pi Camera Module. Te koop bij mijn hofleverancier onder het motto ‘kost een paar cent, maar dan heb je ook wat’. Hij is op dit moment (mei 2013) nog beperkt leverbaar, maar leuk!

Zo ziet het eruit op de transparante behuizing.

Om het aan de praat te krijgen moet je een Raspbian ‘wheezy’ update / upgrade doen. Alle informatie vind je hier. Door eerst even te experimenteren met een aangesloten HDMI scherm kun je ervaring krijgen met de twee nieuwe¬†programma’s¬†raspistill (voor¬†foto’s) en raspivid (voor¬†video’s). De¬†programma’s¬†hebben volwaardige ‘toestel’ functionaliteit met Exposure en AWB instellingen en je kunt het beeld roteren, flippen en wat al niet meer ¬†(hier een goed¬†overzicht uit¬†Maleisi√ę).

Tja, wat gaan we ermee doen? Een webcam, weathercam of streaming ding-dong geval? Eerst maar eens snel een website-je in elkaar flansen om stilstaande beelden te streamen. Dat is namelijk het makkelijkste ūüôā en daar heb ik voldoende ervaring mee. Hier alvast de ¬†eerste beeldjes.

O ja, het is natuurlijk wel handig dat de inhoud van de ‘picture’ of stream interessant is. Ach een weerplaatje is altijd leuk. Kun je kijken hoe het weer thuis is als je op reis bent.

Het streamen van video blijkt even wat lastiger te zijn. Ik heb mezelf even in de wachtstand gezet. De beschikbare software en¬†idee√ęn¬†via het zoeken met gooooogle leverde nog iets te weinig op.

Het is dus nu voorlopig een ‘weathercam’ geworden op de bovenste verdieping van mijn huis, met uitzicht naar het noordoosten. Dus niet echt spectaculair, maar bij ons gebeurd niks in de straat en het enige wat de¬†cameramodule¬†niet heeft is een zoom functie. Dus ‘gluren bij de buren’ is ook geen optie :).

De opstelling is als volgt: RPi met camera (zoals boven op de foto). Deze neemt een aantal verschillende foto’s en stuurt die naar de RPi webserver 2 verdiepingen lager. Vandaar kun je op zowel pa3ang.nl (linksboven) als pa3ang-rpi.nl naar de beelden kijken. ¬†(NB: ‘s nachts is het donker!!)

Dit is het bash script dat op de camera RPi draait:

#!/bin/bash
SAVEDIR=stills
while [ true ]; do
datetime=$(date -u +”%d-%m-%Y %H:%M:%S”)
location=”52.53519, 6.053596″
echo $datetime”&nbsp;&nbsp;&nbspMap:”$location > stills/still.txt
filenamebig=still-big.jpg
filenamesmall=still-small.jpg
filenamerpi=still.jpg
raspistill -o $SAVEDIR/$filenamebig -w 1024 -h 640 -q 50 -hf
raspistill -o $SAVEDIR/$filenamesmall -w 240 -h 144 -q 10 -hf
raspistill -o $SAVEDIR/$filenamerpi -w 640 -h 384 -q 20 -hf
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamebig root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamesmall root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/$filenamerpi root@raspberry-black:/var/www/stills/
sshpass -p ‘xxxx’ scp $SAVEDIR/still.txt root@raspberry-black:/var/www/stills/
sleep 30
done;

Op de webserver is een klein php scriptje om de datum en tijd op de website te presenteren. Zodra ik een goed programma vind voor het streamen van beelden dan zie je dat hier wel weer verschijnen!

Met dank aan raspberrystore.nl voor de snelle levering.

En…. nog steeds groen. Het opgenomen vermogen van de RPi met camera is ca. 4 watt en van de RPi server idem dito. Ik denk dat de FritzBox modem / router en de NetGear HUB meer energie nemen :).

Raspberry Pi, versie 2.0, Type B, met 5Volt USB adaper en een LAN kabel aan de NetGear HUB. Beetje onbeschermd, maar er komt verder toch niemand in mijn ‘Home Office’ op de derde verdieping.

RTLSDR op onlinereceivers.net

Definitieve doorstart van onlinereceivers.net?

Als test is er een nieuwe afstembare ontvanger operationeel op http://pa3ang-rpi.nl/onlinereceivers/rtlsdr.php. Het is een RTL2832u dongle (de nieuwste dus van $10 :)) welke aan een Raspberry Pi verbonden is via een gevoede USB 2.0 hub.

In feite heb ik alles al beschreven in deze blog https://pa3ang.nl//archives/3559, alleen heb ik nu op de RPi een extra soundkaart aangesloten en met darkice wordt het gedemoduleerde signaal op internet aangeboden. Ook is een extra python controller programmaatje geschreven (dit keer niet door zoonlief maar zelf gedaan :)) zodat de RTL afgestemd kan worden.

Ondanks dat de nabuurkanaalselectiviteit (nog) niet optimaal is, kun je er best goed gebruik van maken om frequenties te monitoren.

We hebben dus nu een SDR gebaseerde breedbandontvanger met een Raspberry Pi en dat alles op een webserver die ook op een Raspberry Pi draait. O ja er staan dus nu twee RPi-en op de plank. Een zwarte en een rode . Zwart is voor de RX320 besturing, de webserver, icecast2 en darkice stream nr 1 (RX320). Rood is voor de RTL2832u besturing, demodulatieprogramma (rtl_fm) en darkice stream nr2. Beetje rustig laten draaien en zelf niet met teveel RF in de lucht komen.

Mooie bende die kabels, maar ach het is op een plank onder het bureau dus je hebt er veder geen last van. O ja het bromt, blaast of trilt niet. All solid state!

 

Doorstart onlinereceivers.net !?

Compleet op een Raspberry Pi ge√Įnstalleerde RX320D server.

Gedurende de jaren dat ik mijn PCR100, RX320D, FT-817 en soms een extra audio stream op internet aanbood werd daarvoor een laptop gebruikt. Eerst een oude IBM Thinkpad 390 (P2/450MHz), daarna een Asus S1300 (P3/1000MHz) en beide draaiden op Windows. Het stroomverbruik was niet extreem hoog en zeker niet in vergelijk met een Desktop, maar ik had wel steeds 3 wensen. Eigenlijk wilde ik op Linux omschakelen en ook wilde ik geen draaiende (en dus geluidmakende, hoe zacht ook) delen meer in de server hebben en een zo laag mogelijk stroomverbruik.

Tja, en dan dient de Raspberry Pi zich aan. Een Linux systeem dat vergelijkbaar is met een P2, 300Mhz, maar qua architectuur en opbouw wel eens best goed zou kunnen performen als een RX320D server. Misschien dan wel niet 2 of 3 ontvangers en bijbehorende audiostream tegelijk, maar dat is toch niet meer van belang, want op VHF/UHF is weinig meer te beleven, de PCR100 is niet meer te gebruiken en mijn extra audiostreams zijn vaak niet 24/7 dus kunnen ook wel door een andere pc gestreamed worden.

Maar hoe ga je te werk, wat is er allemaal nodig? Na enig speurwerk met de bekende google machine blijkt er een lichtgewicht webserver te bestaan genaamd lighttpd. Hierop kun je tevens¬†php5 en mysql installeren. Dus zo gezegd zo gedaan. Wat testen en experimenteren en vervolgens de code van onlinereceivers.net testen op de nieuwe RPi omgeving. Speciaal een domein aangevraagd http://pa3ang-rpi.nl en ja hoor het werkt. Goede performance en de RPi geeft geen krimp. Vervolgens icecast2 installeren. Ook geen probleem. Dat gaat allemaal lekker makkelijk met de sudo apt-get install commando’s overigens. Ik ga mooi niet vertellen hier hoe je alles moet doen. Google maar en als je een beetje gezond verstand hebt kom je al een heel eind. Alleen de moeilijke zaken zal ik in dit blog belichten.

Ondertussen ziet onlinereceivers.net (of eigenlijk pa3ang-rpi.nl) er zo uit:

Een lichtgewicht layout op een micro server. Zoals je ziet een nieuwe player. Dit is een Flash player met minder dan 2 seconden vertraging. Hij werkt vooralsnog niet op Internet Explorer, maar tja wie gebruikt die Microsoft meuk nog. Op FF en Chrome en ja ja op mijn Samsung Tab2 10.1 Android werkt het voortreffelijk. Dat laatste was een vereiste en daarom is de nieuwe layout ook passend op het Samsung scherm en heeft de pagina weinig overhead (lees pictures en java scripts) voor mobiel gebruik. Ook is de shoutbox groter geworden. Er komt nog wat betere navigatie, want je kunt ook naar de RX320D ontvanger in New York en naar een pagina met vaste repeater streams surfen / luisteren.

Okay terug naar de RPi installatie.

De webserver werkt, icecast2 was een ‘piece of cake’ en voor onderhoud van de mysql database heb ik phpmyadmin adminer ge√Įnstalleerd. Verder webalizer voor de site statistiek en nog wat Linux tooltjes (o.a.¬†chkconfig). Maar nu moet ik nog een goede audio encoder hebben die werkt met een USB soundkaart en de RX320D controller die op java draait en praat met een USB<>RS232 convertor.

Allereerst java….. even zoeken om vervolgens gewoon met apt-get install de laatste java-7 versie te installeren. Ik heb een 16GB SD card en die heb je ook wel nodig met al dat ‘ge√Įnstalleer’. Ergens halverwege zul je met raspi-config het commando expand rootfs moeten uitvoeren om weer voldoende ruimte te hebben voor alle software. Vervolgens met een beetje hulp van zoonlief de RX320D controllersoftware uitgepakt en tenslotte, om via de USB<>RS232 poort te communiceren, de library libRXTX-java ge√Įnstalleerd. Hierna kon ik met de ontvanger praten en zoals ik dat vaker doe, weer live testen uitgevoerd met gebruikers. Tot nu gaat het goed. De laatste hobbel is de stream encoder.

Ik had namelijk al wat getest met Darkice. Dit is een Linux programma dat mp3 gecodeerde live audio kan streamen. Hiervoor moet je wel een lame library hebben. Dus weer googlen en ook dat varkentje gewassen. Echter, de RPi gaat door de knie√ęn. Te zwaar?¬† De CPU loopt naar 98% en niks gaat meer. Echter… lang verhaal kort…. ik heb de configuratie van Darkice als volgt:

[general]
duration=0
bufferSecs=10
reconnect=yes

[input]
device=plughw:1,0
sampleRate=11025
bitsPerSample=16
channel=1

[icecast2-0]
format=mp3
bitrateMode=cbr
bitrate=16
#quality=0.4
server=localhost
mountPoint=rx320
port=8000
name=RX320D Zwolle – Netherlands
description=Tunable HF receiver
url=http://pa3ang-rpi.nl/onlinereceivers/rx320a.php
genre=Talk
public=yes

Hiermee heb je een goed verstaanbare stream waarbij de cpu belasting slecht 10% is! O ja… je moet misschien nog een alsa-mixer installeren om de USB Audiokaart te kunnen be√Įnvloeden. Hier een top beeldje van de belasting.

Kortom het is gelukt. Een Raspberry Pi, type B + gevoede USB hub + USB<>RS232 + USB Audio. De RPi wordt overigens ook gevoed vanuit de USB hub. Nog een paar foto’s van onder de tafel waar de opstelling te vinden is.

Wel een beetje rommelig, maar de verschillende onderdelen zijn goed te zien. De RPi, USB hub met USB audio en RS232. Op de andere foto zie je de RX320 met bovenop een coax splitter om de WL1030 loop antenne ook op mijn eigen set (Rx antenne ingang) te gebruiken en het kastje op de plank is de voeding voor de WL1030 loop.

Ondertussen (mei 2013) de boel een beetje gefatsoeneerd. Alleen op 20 meter (en hoog vermogen) gaat de RX232<>USB convertor nog plat.

Ik ben we wel blij mee. Geen tikkende harddisk meer en slechts 4 Watt energieverbruik. Maximaal gebruik van de nieuwe ARM processor technologie en ook nog eens  ecologisch verantwoord. Ik ga er denk ik een groene stikker op plakken.

UPDATE (30 maart 2013)

Tom, mijn in Linux denkende zoon, heeft mooi ingespeeld op de ‘voorkeur programmeertaal’ voor de RPi, namelijk Python en heeft de RX320 controller / server herschreven. Hierdoor is de cpu belasting teruggegaan van 12% naar minder dan 2%. Vermoedelijk omdat de RXTX-library nogal belastend de RS232 poort afvraagt. Hij heeft er een eigen blog over geschreven dat je hier kunt lezen.¬† Het top plaatje ziet er nu zo uit.

Zo verbruiken we nog minder stroom en wordt de ARM processor ook minder warm, wat ook weer voordeel biedt voor de levensduur etc. etc.