The script: 1) suspend capturing images at night for obvious reason
and 2) writes images to files named as:
image_<odd-or-even-week><day-of-week>_<hour><minute>.jpg
Thus only images from the last two weeks are stored and the older ones are deleted ``automatically''.
#!/bin/bash OUTPUT_DIR=/var/www/cam/fswebcam-output # Max resolution for C270 webcam is 1280x720 RESOLUTION="1280x720" QUALITY="85" MINUTE=`date +%M` HOUR=`date +%H` MONTH=`date +%m` DAY_OF_WEEK=`date +%u` WEEK=`date +%U` FILE_OUT=`date +%d%H%M` TODAY=`date +%Y/%m/%d` ## Suspend capturing pictures at night DAY_START=`sun_calc.py -date "$TODAY" -city Sopot -param dawn` DAY_STOP=`sun_calc.py -date "$TODAY" -city Sopot -param dusk` if [ "$DAY_START" = "False" -o "$DAY_STOP" = "True" ] ; then NIGHT="YES"; exit; fi fswebcam -r $RESOLUTION -S 11 --jpeg $QUALITY \ --title "Sopot/Abrahama Street (PL)" \ --subtitle "View from my window" \ --info "Logitech_Webcam_C270@raspberryPi ($RESOLUTION)" \ --save $OUTPUT_DIR/image.jpg -q ## Rotate photos every two weeks ## Week number modulo 2 (0 or 1) WEEK_NO=$(($WEEK % 2)) FILE_OUT="${WEEK_NO}${DAY_OF_WEEK}_$HOUR$MINUTE" ## Wundergound expects the file is `image.jpg'. ## To preserve from overwriting rename: cd $OUTPUT_DIR && cp image.jpg image_$FILE_OUT.jpg
./sun_calc.py
is a Python script (I am not
Python programmer BTW):
#!/usr/bin/python import datetime import argparse import pytz from astral import Astral city_name = 'Sopot' parser = argparse.ArgumentParser() parser.add_argument("-date", type=str, help="Date as yyyy/mm/dd") parser.add_argument("-city", type=str, help="City name") parser.add_argument("-param", type=str, help="dusk sunrise sunset or dawn") parser.add_argument("-verbose", help="Icrease verbosity", action="store_true") args = parser.parse_args() dat = args.date city_name = args.city param = args.param verb_level = args.verbose [year, month, day] = dat.split("/"); year = int(year) month = int(month) day = int(day) a = Astral() city = a[city_name] a.solar_depression = 6 ## sd can be: 6, 12, 18 timezone = city.timezone sun = city.sun(date=datetime.date(year, month, day), local=False) sun_local = city.sun(date=datetime.date(year, month, day), local=True) time_now = datetime.datetime.utcnow().replace(tzinfo = pytz.utc) if verb_level > 0: print('solar_depressions: ' + str(a.solar_depression)) print city_name + " " + str(time_now) + " " + str(sun[param]) \ + " (" + str(sun_local[param]) + ")" print time_now > sun[param]
The script based on astral
package can compute
dusk/dawn time (among other things) and compares it to the current time.
If current time is past dusk/dawn (specified as a command line parameter)
./sun_calc.py
returns True
.
Otherwise it returns False
.
The astral
package does not contains Sopot but it is easy
to add it just
by editing astral.py
(before installation of course):
Sopot,Poland,54°44'N,18°55'E,Europe/Warsaw
A short test demonstrating that for Sopot and Warsow the script returns significantly different results:
./sun_calc.py -date 2013/01/21 -city Sopot -param dawn -verbose solar_depressions: 6.0 Sopot 2013-01-21 09:17:11.368979+00:00 2013-01-21 06:09:47+00:00 (2013-01-21 07:09:47+01:00) ./sun_calc.py -date 2013/01/21 -city Warsaw -param dawn -verbose solar_depressions: 6.0 Warsaw 2013-01-21 09:17:46.172157+00:00 2013-01-21 05:53:22+00:00 (2013-01-21 06:53:22+01:00) True
So there is circa 15 minutes difference between Sopot which is some 300 km to the North from Warsaw.
Yesterday I have got a letter containing BMP085 pressure sensor which I bought on ebay on November 20th 2012 (yes the post made a history with +50 days delivery from China).
To connect BMP085 to RPI first one has to install (in case both packages are not installed yet):
pi@raspberrystar ~ $ sudo apt-get install i2c-tools pi@raspberrystar ~ $ sudo apt-get install python-smbus
Now one has to enable i2c in raspbian. First one has to add the user pi to the group i2c:
pi@raspberrystar ~ $ sudo adduser pi i2c
Next one has to check the contents of
/etc/modprobe.d/raspi-blacklist.conf
and /etc/modules
:
pi@raspberrystar ~ $ less /etc/modprobe.d/raspi-blacklist.conf # blacklist spi and i2c by default (many users don't need them) blacklist spi-bcm2708 blacklist i2c-bcm2708 pi@raspberrystar ~ $ less /etc/modules ... i2c-dev i2c-bcm2708
Some users advocate to remove i2c-bcm2708 from blacklisted modules but this seems unneccessary as:
pi@raspberrystar ~ $ lsmod | grep i2c i2c_bcm2708 3542 0 i2c_dev 5587 0
so I have i2c_bcm270
w/o modifying
/etc/modprobe.d/raspi-blacklist.conf
Reboot now to activate the new settings
The board my sensor came on has eight pins. There are boards
with 6 pins as well which seems to be more popular.
Only four out of 8 pins are used and the connections
are as follows (see pictures):
GND goes to Ground on the Pi (P1-05)
3.3 goes to 3V3 on the Pi (P1-01)
SDA goes to SDA on the Pi (P1-02)
SCL goes to SCL on the Pi (P1-03)
In Reading data from a Bosch BMP085 with a Raspberry Pi 6-ping sensor is used and the pins connections are different. I have tried but it does not work for my sensor.
I connect sensor to RPI using wires with female jumpers on both ends.
To check if the sensor (or other i2c device) is connected correctly,
one can run i2cdetect
:
pi@raspberrystar ~ $ i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 70: -- -- -- -- -- -- -- 77
77 in the last row indicates that sensor is connected properly (otherwise the output will consists of rows of '--' only).
To get data from the sensor one has to install Adafruit-Raspberry-Pi-Python-Code or compile small C program available here:
## Download john.geek's C application: wget http://www.john.geek.nz/wp-content/uploads/2012/08/testBMP085.c wget http://www.john.geek.nz/wp-content/uploads/2012/12/smbus.c wget http://www.john.geek.nz/wp-content/uploads/2012/12/smbus.h ## Compile & run it gcc -Wall -o testBMP085 ./smbus.c ./testBMP085.c ./testBMP085 ## Download >Adafruit's one: git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code.git cd Adafruit-Raspberry-Pi-Python-Code cd Adafruit_BMP085 ## Run python Adafruit_BMP085_example.py
Note: testBMP085
works with sensor connected to RPi as described in this post
(not as described by
john geek).
BTW: the pressure is identical as reported by my WH 2080 weather station. Perhaphs WH 2080 use exactly the same sensor!
Dziś uruchomiłem starą kamerę Logitech Webcam C200 na Raspberry Pi (bez
żadnych problemów--wystarczy wsadzić kabel USB). Chcę cyklicznie
robić zdjęcia tego co widzę z mojego okna i publikować je na wunderground.com
.
Spróbowałem zastosować do tego celu program fswebcam
.
BTW dobry opis kilku popularnych programów służących do obsługi kamer video jest tutaj.
Aby zainstalować fswebcam
należy wykonać:
# apt-get install fswebcam
Uruchamiam fswebcam
za pomocą następującego skryptu
(cf. Raspberry Pi --
Webcam streaming):
#!/bin/bash OUTPUT_DIR=/var/www/cam/fswebcam-output fswebcam -r 640x480 -S 11 --jpeg 95 \ --title "Sopot/Abrahama Street (PL)" \ --subtitle "View from my window" \ --info "Hardware: Logitech_Webcam_C200@raspberryPi" \ --save $OUTPUT_DIR/image.jpg -q
Aby publikować obrazki na wunderground.com
należy
kamerę zarejestrować do czego służy prosty formularz. Obrazki mogą być
wysyłane na konto ftp na wunderground.com
albo pobierane
z udostępnionego publicznego konta (w tym drugim przypadku należy
podczas rejestracji podać adres URL tegoż konta).
Ja wybrałem ftp
i rejestracja zakończyła się podaniem nazwy serwera ftp + nazwy
użytkownika. Hasło jest takie samo jak to używane do logowania się na
konto WWW na wunderground.com
.
Do ładowania obrazków używam skryptu (cf. tutaj):
REMOTE='webcam.wunderground.com' USER='hrpunioCAM1' PASSWORD='#####' FTPLOG='/tmp/ftplog' date >> $FTPLOG ftp -n $REMOTE <<_FTP>>$FTPLOG quote USER $USER quote PASS $PASSWORD bin lcd /var/www/cam/fswebcam-output put image.jpg quit _FTP
Obrazki są generowane i wysyłane co kilka minut dzięki stosownemu
wpisowi w pliku crontab
.
Link do obrazków z mojej kamery wunderground.com
jest tutaj.
Today I connected old Logitech Webcam C200 to my Raspberry Pi.
I just wanted to capture single
frames (at a specified time interval, say every 10 minutes) and upload
resulting images to wunderground.com
.
I tried to use fswebcam
for that purpose.
BTW a good description of available software for WebCams can be found here.
To install fswebcam
one have to execute:
# apt-get install fswebcam
I run fswebcam
with the following bash
script (borrowed from
Raspberry Pi --
Webcam streaming):
#!/bin/bash OUTPUT_DIR=/var/www/cam/fswebcam-output fswebcam -r 640x480 -S 11 --jpeg 95 \ --title "Sopot/Abrahama Street (PL)" \ --subtitle "View from my window" \ --info "Hardware: Logitech_Webcam_C200@raspberryPi" \ --save $OUTPUT_DIR/image.jpg -q
To display one's images at wunderground.com
one have to
register the camera with a simple form.
The images can be uploaded to ftp account at
wunderground.com
or they can be retrieved from the
public URL. As I have decided to upload them I have got ftp
account credentials upon sucessfull registration
(server and user name). The password is the same as for my
wunderground.com
WWW account.
I upload images withe following bash script borrowed from here:
REMOTE='webcam.wunderground.com' USER='hrpunioCAM1' PASSWORD='#####' FTPLOG='/tmp/ftplog' date >> $FTPLOG ftp -n $REMOTE <<_FTP>>$FTPLOG quote USER $USER quote PASS $PASSWORD bin lcd /var/www/cam/fswebcam-output put image.jpg quit _FTP
Images are produced and uploaded every few minutes---the scripts are executed with appropriate crontab entries.
A link to my webcam at wunderground.com
is here.