touchpi Magic Mirror Custom Code
Start up code in /home/pi/mm.sh this shell scrip is run automatically at startup using pm2 (program manager 2) start
cd ~/MagicMirror
DISPLAY=:0 npm start
Start up code rpi-rgb-led-matrix in /etc/rc.local
sudo /home/pi/rpi-rgb-led-matrix/bindings/python/samples/text.sh 2>&1 > /home/pi/textlog.log &
Start shell /home/pi/rpi-rgb-led-matrix/bindings/python/samples/text.sh
sudo python /home/pi/rpi-rgb-led-matrix/bindings/python/samples/runtext.py --led-rows=16 --led-cols=32 --led-chain=2 --led-slowdown-gpio=2 --led-gpio-mapping=adafruit-hat-pwm --led-pwm-bits=11 --led-scan-mode=1 --led-brightness=75 --led-pixel-mapper=Rotate:180
Custom matrix code in /home/pi/rpi-rgb-led-matrix/bindings/python/samples/runtext.py
#!/usr/bin/env python
# Display a runtext with double-buffering.
from samplebase import SampleBase
from rgbmatrix import graphics
import time
import os, random
import feedparser
from random import shuffle
items=[]
feeds=[
#enter all news feeds you want here
"http://feeds.reuters.com/reuters/topNews",
"http://feeds.foxnews.com/foxnews/latest"
#"http://www.fda.gov/AboutFDA/ContactFDA/StayInformed/RSSFeeds/PressReleases/rss.xml",
#"http://www.fiercepharma.com/feed",
#"http://www.fiercebiotech.com/feed",
]
class RunText(SampleBase):
def __init__(self, *args, **kwargs):
super(RunText, self).__init__(*args, **kwargs)
self.parser.add_argument("-t", "--text", help="The text to scroll on the RGB LED panel", default="Hello world!")
def run(self):
offscreen_canvas = self.matrix.CreateFrameCanvas()
font = graphics.Font()
font.LoadFont("/home/pi/rpi-rgb-led-matrix/fonts/9x18B.bdf")
#font.LoadFont("/home/pi/rpi-rgb-led-matrix/fonts/9x18.bdf")
textColor = graphics.Color(255, 255, 0)
pos = offscreen_canvas.width
#createLinks()
my_text = self.args.text
while True:
try:
populateItems()
for idx, item in enumerate(items):
#print item["title"]
my_text = unicode(item["title"])
r,g,b = randCol(idx)
textColor = graphics.Color(r, g, b)
len = 0
pos = offscreen_canvas.width
while pos + len:
offscreen_canvas.Clear()
len = graphics.DrawText(offscreen_canvas, font, pos, 13, textColor, my_text)
#print("pos:", pos, "len:", len)
pos -= 1
if (pos + len < 0):
pos = offscreen_canvas.width
time.sleep(0.010)#org 0.05
offscreen_canvas = self.matrix.SwapOnVSync(offscreen_canvas)
except ValueError:
print("Bummer :( I couldn't make you 'dem links :(")
finally:
print("\nNews Feeds updated from:!\n\n")
def colorRed():
return (255, 0, 0)
def colorGreen():
return (0, 255, 0)
def colorBlue():
return (0, 0, 255)
def colorRandom():
return (random.randint(0,255), random.randint(0,255), random.randint(0,255))
def populateItems():
#first clear out everything
del items[:]
for url in feeds:
print url
feed=feedparser.parse(url)
posts=feed["items"]
for post in posts:
items.append(post)
shuffle(items)
def randCol(index = -1):
if index % 3 == 0:
return colorRed()
elif index % 3 == 1:
return colorGreen()
elif index % 3 == 2:
return colorBlue()
else:
return colorRandom()
# Main function
if __name__ == "__main__":
run_text = RunText()
if (not run_text.process()):
run_text.print_help()