
This is generated image. Each row represents a single day. Each box represents the color of a patch of sky above my house, sampled every 5 minutes. The program running on the Raspberry takes a picture, crops out a chunk of sky, finds the average color, and saves it as an RGB tuple. I can then run another python program that plots the rectangles in a black rectangle.
Here’s the script that takes the picture:
#!/bin/bash raspistill -ss 500 -o image.jpg convert image.jpg -crop 100x100+0+1600 cropped.jpg time=$(date '+%Y-%m-%d=%H:%M:%S') data=$(convert cropped.jpg -resize 1x1\! -format "%[fx:int(255*r+.5)],% \[fx:int(255*g+.5)],%[fx:int(255*b+.5)]" info:- ) text=$time"="$data echo "$text" >> /root/log.txt
Here’s the python code that generates the image:
#!/usr/bin/python3
import sys
from PIL import Image, ImageDraw
img = Image.new(mode="RGB", size=(1460, 800))
draw = ImageDraw.Draw(img)
x = 20
y = 20
oldday = 0
path = 'log.txt'
logfile = open(path,'r')
for line in logfile:
day,time,colors = line.split('=')
if day != oldday:
y = y + 50
x = 20
oldday = day
r,g,b=colors.split(',')
fill = (int(r),int(g),int(b),255)
x=x+10
shape = [(x, y), (x + 10, y + 50)]
draw.rectangle(shape, fill, outline=None, width=1)
logfile.close
img.save("stripes.jpg")
img.close
Here’s a bit of the log.txt file:
2022-01-28=15:40:09=217,224,232 2022-01-28=15:50:09=197,204,214 2022-01-28=16:00:09=182,191,199 2022-01-28=16:10:09=132,132,145 2022-01-28=16:20:09=145,143,153 2022-01-28=16:30:09=116,117,129 2022-01-28=16:40:09=81,79,90 2022-01-28=16:50:09=65,63,73 2022-01-28=17:00:09=40,41,47 2022-01-28=17:10:09=12,12,17 2022-01-28=17:20:09=3,12,55 2022-01-28=17:30:09=1,3,16 2022-01-28=17:40:09=2,1,1 2022-01-28=17:50:08=0,0,0
You can see how the sky gradually turns from grey to black. On sunny days, the tuples are bluer, 78,67,221.