I just finished my first rpi project and I wanted to share it. I made a clock that works as usual until a production website runs into problems. Then intead of showing time, it blinks continuously to draw my attention to the problem. The website uses “normal.css” if everything is ok and “hot.css” if there is a problem. So the clock looks at the name of the css file the website is using and acts accordingly.
I don’t know much python so I recyled example code. Improvements or comments are welcome. Here is the /home/pi/clock.py I created:
#!/usr/bin/env python import os import time import signal import math import scrollphathd from scrollphathd.fonts import font3x5 def warning(): speed_factor = 10 scale = (math.sin(time.time() * speed_factor) + 1) / 2 offset = 0 for x in range(scrollphathd.width): for y in range(scrollphathd.height): offset += 1 color = 0.85 * scale * (offset % 2) scrollphathd.pixel(x, y, color) scrollphathd.show() def clock(): scrollphathd.rotate(180) scrollphathd.clear() str1 = time.strftime("%H%M") scrollphathd.write_string(str1, x=1, y=1, font=font3x5, brightness=0.01) scrollphathd.show() time.sleep(0.1) while True: web = os.popen("curl -s https://example.com | grep .css").read() t_end = time.time() + 60 * 1 if "hot.css" in web: while time.time() < t_end: warning() else: while time.time() < t_end: clock()
After this I created a cron job to make sure that the script above is running and to restart it if it is not working. Since the only python program running in this rpi0 is the above clock script, the restart script simply looks if any python program is running and if there is none, restarts the clock script. Here is /home/pi/restart.sh I created:
#!/bin/bash if [ "$(pidof python)" ] then exit else nohup /home/pi/clock.py &>/dev/null & fi
and add the line:
* * * * * /home/pi/restart.sh
I was not happy with the look of the font so I changed it a bit as well, see the forum_post about it.