Intervallfotografering

Noen sa på internett at man kunne bruke «intervallfotografering» på norsk for den engelske «timelapse». Så her er et intervallfotografi fra 2014, året jeg begynte å automatisk generere ett intervallfotografi for hver dag!

  • 0:10 - dagen begynner
  • 0:15 - en fugl hopper rundt på plenen, og gjør det resten av sommeren på omtrent samme tid hver dag
  • 0:20 - farfar med hjåen
  • 0:30 - Tobias klipper gresset
  • 0:40 - traktorer legger egg
  • 0:45 - eggene blir hentet

Webcam på kvisten på Lekvam

Jeg har en Raspberry Pie på kvisten med et tilhørende kamera og pan/tilt-modul.

rasbicam2

Dette kan du styre fra lekvam.no. Men dessverre er ikke internettilkoblingen på Lekvam kjempebra, så du får bare stillbilder, óg bildene forminskes i prosessen.

raspicam_web

Kamera tar bilder i 2592 x 1944, ca 2.5MB i JPG, og det ville tatt 45 sek å overføre et stillbildet til deg. Derfor forminskes bildet på veien, men Raspberry Pie-en gjør det ikke, det tar også for lang tid på den stakkarslige ARM-en – jeg har tilfeldigvis en NAS (Ubuntu) som gjør dette.

webcamrrc

I første iterasjon SSH-et jeg fra NAS-en til Pie-en 3 ganger for å

1. sette pan/tilt til x og y,
2. ta bildet, og
3. scp-e bilde fra Pie-en til NAS-en.

Men dette blir mye krypto for den stakkars ARM-en, så partytrikset her er derfor å gjøre alt i en SSH-tilkobling som også cat-er bildet til stdout slik at NAS-en kan sende det til en fil lokalt.

ssh raspi 'pan-tilt.py x y; raspistill -o temp.jpg; cat temp.jpg' > temp.jpg

Jeg styrer pan/tilt-modulen med python-biblioteket pipan som bruker ServoBlaster i bunn.

Får du det du betaler for fra din internettleverandør?

Hjemme på Lekvam er ikke gode alternativene til internettoppkobling mange. Alt må via gamle kobberlinjer og maks ned-hastighet er 6mbit, og på en god dag 0.5mbit opp.

Kobberlinjene går tidvis i luftstrekk(!) mot den gamle telefonsentralen og i østavind med gode kast fører dette til en del pakketap til og fra Internettet. Det er forsåvidt ikke helt krise, men internettleverandøren vår har i tillegg automatiske mekanismer for å båndbreddebegrense kunder med dårlig signal på linjene sine! Derfor blir vi tidvis nedgradert til både 5 og 4 og 1.5 mbit, alt avhengig av uværets art.

For å bygge sak har jeg kjørte en speedtest (https://github.com/rsvp/speedtest-linux) hver tredje time siden problemene begynte å oppstå og grafet dette.

isp_bandwidth

I løpet av 5 mnd har vi 5 ganger bedt vår ISP om å ordne opp, og det er tydeligvis tid for å sende en ny epost... Denne gang skal de også få lov til å fortelle om hvilke preventive tiltak de har tenkt å iverksette for at dette ikke skal skje igjen.

Fordi jeg har en server på Internett™, har jeg også satt opp SmokePing som grafer latens og pakketap.

isp_smokeping

Det er viktig å sette opp monitorering mot et par referanse-noder også (som elg.no eller en pålitelig og åpen DNS-tjener). Slik kan du kryss-sjekke at uregelmessigheter ikke tilfeldigvis er på server-siden.

isp_smokeping_ref

Her er det du trenger for å sette opp din egen båndbredde-overvåking. Det er en god unnskyldning til å kjøpe seg en Raspberry Pie f.eks. Hver tredje time kjører jeg en speedtest, og to minutter etter oppdater jeg grafen.

0 */3 * * * ~/bin/speedtest.sh >> speedtest.log
2 */3 * * * cat speedtest.log > isp.csv && gnuplot plotisp.plot && cp isp.png /var/www/html/
torvald@vognskjul:~$ cat plotisp.plot
set xdata time
set timefmt "%Y-%m-%d, %H:%M"
set format x "%d. %b"
set xlabel 'Date'
set ylabel 'Mbit'
set grid
set term png
# From hardcoded start point - until today
set xrange ["2017-12-19, 00:00" : time(0)]
set title "Internett ISP-navn, updated ".strftime("%Y-%m-%d, %H:%M", time(0))

set output 'isp.png'
set xtics rotate by -45 offset -0.0,0 font ",10"

plot 'isp.csv' using 1:4 with lines title 'download',  'isp.csv' using 1:5 with lines title 'upload'

Cover photo by Taduuda on Unsplash

:~$ crop

  
Here is quick way of automaticly cropping images without fiddeling with image sizes.

You need imagemagick installed and this in you .bashrc. Run with crop selfie.jpg

function crop {
    x=$(identify $1 | awk '{print $3}' | cut -d 'x' -f1)
    y=$(identify $1 | awk '{print $3}' | cut -d 'x' -f2)
    smallest_side=$(( $x > $y ? $y : $x ))
    convert $1 -gravity center -crop ${smallest_side}x${smallest_side}+0+0 $1
}