Page 1 of 44

Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Wed Jul 25, 2012 10:17 am
by vpetersson
Hey guys,

I just released a complete turn-key digital signage solution for the Raspberry Pi called Screenly. While still in beta, I was hoping to tap into this vibrant community for beta testers.

The idea is for Screenly to be a 'set and forget' appliance. Once installed, you manage all the content remotely using your web-browser (with the built-in web-server).

Currently, Screenly support images, videos (using omxplayer) and web-sites.

Screenly is built for Raspbian and the full instructions can be found here:
https://github.com/wireload/screenly-ose

Looking forward to getting some feedback.

Ps. I know the management-pages are somewhat ugly at the moment, but we'll sort that out as we move forward. Ds.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Wed Jul 25, 2012 1:49 pm
by vpetersson
I've uploaded a (rough) video of Screenly in action here:
http://www.youtube.com/watch?v=yjDjEfhspxk

Screenshots and photos are available here:
https://picasaweb.google.com/1021123476 ... qp-j5vWUGQ

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Sat Jul 28, 2012 4:24 am
by tkerbavaz
I installed Screenly today. Some thoughts and questions:

1) Your git install instructions are predicated on the user having a github account. I ended up just downloading your source and then installing from there.

2) When I try to submit an asset, I get an Error 500: Internal Server Error. Mayhaps I have a bug in my install because I installed manually, but I'm not sure how to get around this.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Sat Jul 28, 2012 11:09 am
by vpetersson
tkerbavaz wrote:I installed Screenly today. Some thoughts and questions:

1) Your git install instructions are predicated on the user having a github account. I ended up just downloading your source and then installing from there.
Hmm, I don't think that is the case. Maybe if you try to clone using the git protocol. Try cloning using http.
tkerbavaz wrote: 2) When I try to submit an asset, I get an Error 500: Internal Server Error. Mayhaps I have a bug in my install because I installed manually, but I'm not sure how to get around this.
[/quote]

Please send me a PM and we should be able sort it out. It could be something to do with the content.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Sat Jul 28, 2012 11:36 am
by felix123
Cool! Do you plan on making the Pi store contents locally?

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Sat Jul 28, 2012 11:50 am
by vpetersson
felix123 wrote:Cool! Do you plan on making the Pi store contents locally?
Not at the moment, but there is still some local caching going on in the browser.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Mon Jul 30, 2012 4:27 am
by tkerbavaz
So I got it working, I created a github account and SSH key, and was able to install screenly.

Now, however, the viewer doesn't start automatically on boot. I have to manually activate the viewer python script to activate the sign.

Any ideas why that might be and how to fix it?

Do I need to add an rc.d script to make it run?

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Mon Jul 30, 2012 9:08 am
by vpetersson
tkerbavaz wrote: So I got it working, I created a github account and SSH key, and was able to install screenly.
Odd, that should not be needed.
tkerbavaz wrote: Now, however, the viewer doesn't start automatically on boot. I have to manually activate the viewer python script to activate the sign.

Any ideas why that might be and how to fix it?

Do I need to add an rc.d script to make it run?
No rc.d script is needed. The installation instruction adds Screenly to the autorun in LXDE, so if you follow them, Screenly should automatically start with X.

It's important that the paths are correctly set, otherwise it will not work. If Screenly doesn't reside in /home/pi/screenly it will not work. Also, if you don't have a fresh Raspbian installation, but one with prior modifications, this might very well interfere.

Try opening a terminal window inside of X and running:

Code: Select all

python ~/screenly/viewer.py

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Tue Jul 31, 2012 8:40 am
by tkerbavaz
Try opening a terminal window inside of X and running:

Code: Select all

python ~/screenly/viewer.py
That's what I've been doing to run the viewer (which does indeed start the viewer) but I thought it was supposed to autorun at boot? The server is starting automatically, but the viewer is not.

Edit:

This was installed per the readme file on a fresh install of Raspbian. I burned the image, booted, configured raspbian (expanded the image to fill the SD card), and installed Screenly.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Tue Jul 31, 2012 3:44 pm
by vpetersson
tkerbavaz wrote:That's what I've been doing to run the viewer (which does indeed start the viewer) but I thought it was supposed to autorun at boot? The server is starting automatically, but the viewer is not.

Edit:

This was installed per the readme file on a fresh install of Raspbian. I burned the image, booted, configured raspbian (expanded the image to fill the SD card), and installed Screenly.
Yes, the idea is that viewer should start automatically with X.

Can you run

Code: Select all

cat ~/.config/lxsession/LXDE/autostart
That should come out as:
@~/screenly/misc/xloader.sh

If that isn't the case, the installation failed somehow. Try to fix that, run:

Code: Select all

echo "@~/screenly/misc/xloader.sh" > ~/.config/lxsession/LXDE/autostart
Also, please run

Code: Select all

ls -l ~/screenly/misc/xloader.sh
and verify that it is executable.

If it isn't executable, run

Code: Select all

chmod +x ~/screenly/misc/xloader.sh

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Wed Aug 01, 2012 9:25 am
by vpetersson
I found a pretty big issue with the installation instructions. Turns out I was using the 'read-write' Github URL instead of the 'read-only' one. This explains the issue some of you reported about not being able to clone the repository.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Wed Aug 01, 2012 12:20 pm
by Clifor
Hi all

First of all, thank you for your effort and sharing :)

I have managed to install Screenly without problems but I get the following error when trying to add new contents with a local URL (i.e. http://192.168.1.60:7070)

Error 500: Internal Server Error
Sorry, the requested URL 'http://192.168.1.48:8080/process_asset' caused an error:
Internal Server Error


I can add an external web site http://www.yahoo.com without problems though...

Any ideas?

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Wed Aug 01, 2012 1:42 pm
by vpetersson
Clifor wrote: I have managed to install Screenly without problems but I get the following error when trying to add new contents with a local URL (i.e. http://192.168.1.60:7070)
Can you ping the address from the Raspberry Pi?
Clifor wrote: Error 500: Internal Server Error
Sorry, the requested URL 'http://192.168.1.48:8080/process_asset' caused an error:
Internal Server Error
What kind of asset are you trying to add? Is it just a plain HTML-page?

Could you also post the content of /var/log/supervisor/screenly*.log ?

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Thu Aug 02, 2012 8:42 am
by Clifor
Thanks for the prompt answer :)
vpetersson wrote:
Can you ping the address from the Raspberry Pi?

What kind of asset are you trying to add? Is it just a plain HTML-page?

Could you also post the content of /var/log/supervisor/screenly*.log ?
And yes, I was able to ping the address and the asset was just a plain HTML-page with a small javascript to do some kind of slideshow.

The first problem I had was the rootfs was full, as I had not extended my partition to use the full SD card space. After rearranging partitions it failed again once, but then it worked fine.

That's the trace of the error as shown in the log file:

192.168.1.40 - - [01/Aug/2012 13:26:56] "GET /add_asset HTTP/1.1" 200 1157
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 744, in _handle
return route.call(**args)
File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 1479, in wrapper
rv = callback(*a, **ka)
File "/home/pi/screenly/server.py", line 77, in process_asset
conn = sqlite3.connect(database, detect_types=sqlite3.PARSE_DECLTYPES)
OperationalError: unable to open database file


We are testing it with a couple of RasPi attached to 46'' Samsung screens and it looks terrific :)

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Thu Aug 02, 2012 9:20 am
by vpetersson
Clifor wrote: And yes, I was able to ping the address and the asset was just a plain HTML-page with a small javascript to do some kind of slideshow.

The first problem I had was the rootfs was full, as I had not extended my partition to use the full SD card space. After rearranging partitions it failed again once, but then it worked fine.

That's the trace of the error as shown in the log file:

192.168.1.40 - - [01/Aug/2012 13:26:56] "GET /add_asset HTTP/1.1" 200 1157
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 744, in _handle
return route.call(**args)
File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 1479, in wrapper
rv = callback(*a, **ka)
File "/home/pi/screenly/server.py", line 77, in process_asset
conn = sqlite3.connect(database, detect_types=sqlite3.PARSE_DECLTYPES)
OperationalError: unable to open database file


We are testing it with a couple of RasPi attached to 46'' Samsung screens and it looks terrific :)
Sounds like an issue with the database (it's probably corrupt). It may stem from the issue with a full disk as you described. Try deleting the database and reboot:

Code: Select all

rm  -rf ~/.screenly
sudo shutdown -r now
That should hopefully take care of the issue.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Thu Aug 02, 2012 10:13 am
by Clifor
This is just a comment about the duration of the assets.

If you set duration up as a large number, it would take that long for the viewer to realize there has been a change in the playlist.

Am I right?

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Thu Aug 02, 2012 10:26 am
by vpetersson
Clifor wrote:This is just a comment about the duration of the assets.

If you set duration up as a large number, it would take that long for the viewer to realize there has been a change in the playlist.

Am I right?
Yes, the playlist will run through five times and then refresh. Hence if you only have one asset scheduled and set the duration to, let's say 3600s (1h), the playlist would only refresh every 5th hour.

Screenly - errors adding assets

Posted: Fri Aug 03, 2012 6:45 am
by nreicher
Hi,
I get Screenly set up but get 500 - Internal Server errors on adding assets. I read through the posts and tried trashing the db and recreating with no luck...
It seems a database access problem like one of the other posts. What was the fix for that?

My big question: If ALL content is loaded from external source, a la URL, why does it make a difference if you pick "image" or "video" or "website"?

I'd love this concept and it would be great to get this working. Thanks for all the hard work.
Attached: logs.
screenly access log:

Code: Select all

10.0.0.25 - - [03/Aug/2012 12:50:31] "GET /add_asset HTTP/1.1" 200 1157
10.0.0.25 - - [03/Aug/2012 12:50:31] "GET /static/css/style.css HTTP/1.1" 304 0
10.0.0.25 - - [03/Aug/2012 13:09:36] "GET / HTTP/1.1" 200 679
10.0.0.25 - - [03/Aug/2012 13:09:36] "GET /static/css/style.css HTTP/1.1" 304 0
10.0.0.25 - - [03/Aug/2012 13:09:38] "GET /add_asset HTTP/1.1" 200 1157
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 744, in _handle
    return route.call(**args)
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 1479, in wrapper
    rv = callback(*a, **ka)
  File "/home/pi/screenly/server.py", line 121, in process_asset
    conn = sqlite3.connect(database, detect_types=sqlite3.PARSE_DECLTYPES)
OperationalError: unable to open database file
10.0.0.25 - - [03/Aug/2012 13:09:52] "POST /process_asset HTTP/1.1" 500 754
10.0.0.25 - - [03/Aug/2012 13:11:09] "GET / HTTP/1.1" 200 679
10.0.0.25 - - [03/Aug/2012 13:11:10] "GET /add_asset HTTP/1.1" 200 1157
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/bottle.py", line 744, in _handle
    return route.call(**args)
supervisord.log

Code: Select all

2012-08-03 13:19:42,250 CRIT Supervisor running as root (no user in config file)
2012-08-03 13:19:42,255 WARN Included extra file "/etc/supervisor/conf.d/screenly.conf" during parsing
2012-08-03 13:19:43,561 INFO RPC interface 'supervisor' initialized
2012-08-03 13:19:43,562 WARN cElementTree not installed, using slower XML parser for XML-RPC
2012-08-03 13:19:43,564 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2012-08-03 13:19:43,579 INFO daemonizing the supervisord process
2012-08-03 13:19:43,602 INFO supervisord started with pid 1518
2012-08-03 13:19:44,661 INFO spawned: 'screenly' with pid 1527
2012-08-03 13:19:45,704 INFO success: screenly entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
Screenly isn't actually writing to the error log as defined in the screenly.conf file... anyway to turn on debug mode?

Re: Screenly - errors adding assets

Posted: Fri Aug 03, 2012 8:55 am
by vpetersson
nreicher wrote:Hi,
I get Screenly set up but get 500 - Internal Server errors on adding assets. I read through the posts and tried trashing the db and recreating with no luck...
It seems a database access problem like one of the other posts. What was the fix for that?
What kind of asset did you try to add?

Also, could you send the file ~/.screenly/screenly.db?
nreicher wrote: My big question: If ALL content is loaded from external source, a la URL, why does it make a difference if you pick "image" or "video" or "website"?
Because there are different handlers for them (ie. they use different methods for displaying). For instance, videos aren't displayed using a browser. Images are, but with some custom handling.
nreicher wrote: Screenly isn't actually writing to the error log as defined in the screenly.conf file... anyway to turn on debug mode?
Well, so there are two logs-file: one for viewer.py and one for server.py. The one you attached above is for server.py. The other log-file is irrelevant for this case.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Sat Aug 04, 2012 4:18 pm
by vpetersson
Update: I pushed a major fix to Screenly today that fixes video playback. It must have broken in some earlier update.

To update, simply do:
cd ~/screenly
git pull
pkill -f "viewer.py"

Re: Screenly - errors adding assets

Posted: Mon Aug 06, 2012 2:35 am
by nreicher
vpetersson wrote: What kind of asset did you try to add?
first a url, then an image. I decided that was broken enough.
vpetersson wrote: Also, could you send the file ~/.screenly/screenly.db?
No. There's 0 bytes in ~/.screenly... and it's not a directory, so no db in there.
Permissions are 777 now (I tried), and owner/group is pi/pi.

Obviously Screenly hadn't created the database properly, therefore not writing to it, therefore not able to do the processing. (ipso facto... Internal Server Error)...
Upon further investigation, I'm showing there's no space left on device:
$ mkdir ~/.screenly
mkdir: cannot create directory `/home/pi/.screenly': No space left on device
$ df -l
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 1804128 1804124 0 100% /
/dev/root 1804128 1804124 0 100% /
tmpfs 18808 220 18588 2% /run
tmpfs 5120 0 5120 0% /run/lock
tmpfs 37616 0 37616 0% /tmp
tmpfs 10240 0 10240 0% /dev
tmpfs 37616 0 37616 0% /run/shm
/dev/mmcblk0p1 57288 34552 22736 61% /boot
I think I need to expand this rootfs to fill the 4GB card and that may do it?
Thoughts...?

Re: Screenly - errors adding assets

Posted: Mon Aug 06, 2012 9:09 am
by vpetersson
nreicher wrote: I think I need to expand this rootfs to fill the 4GB card and that may do it?
Thoughts...?
Sure, if the disk is full, Screenly cannot write any data to disk. Hence, the issue you described is to be expected.

At this point, I'd strongly advise you to reinstall Respbian from scratch, expand the rootfs on the first boot (which will require another reboot) and first then install Screenly.

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Mon Aug 06, 2012 1:42 pm
by atmosx
Hello from Greece,

I want to make a digital signage for our store. I will order a Raspberry Pi today. Hope it arrives asap.

I need to display some adds but also informations about which pharmacy is open in the city, with address and phone number. Meaning I'll need to display dynamic content.

I wrote a ruby script that tweets this info. Can I use the same script to somehow make this info available daily for this system?

Another question is, can I display the info a different channel and have maybe 2 or 3 channels at the same time? One displaying a JPEG (HD) or video (480p or 720p is fine) in one channel and an upper channel displaying the info or Screenly OSE is for displaying 1 signal at the time?

Best Regards

Re: Screenly OSE -- Digital Signage for the Raspberry Pi

Posted: Mon Aug 06, 2012 2:43 pm
by vpetersson
atmosx wrote: I need to display some adds but also informations about which pharmacy is open in the city, with address and phone number. Meaning I'll need to display dynamic content.

I wrote a ruby script that tweets this info. Can I use the same script to somehow make this info available daily for this system?
I guess you could display the twitter feed from Twitter, but that wouldn't be very pretty. I recommend that write something that renders a web-page (optimized for 1920x1080) and use that.
atmosx wrote: Another question is, can I display the info a different channel and have maybe 2 or 3 channels at the same time? One displaying a JPEG (HD) or video (480p or 720p is fine) in one channel and an upper channel displaying the info or Screenly OSE is for displaying 1 signal at the time?
No, you can't display multiple channels at the same time with Screenly. I know there are digital signage solutions that can do this, but first of all I don't think it provides a very good user experience (generally speaking) and second I doubt the Raspberry Pi is powerful to do this in the first place (unless they're super lightweight or uses the GPU).

Re: Screenly - errors adding assets

Posted: Mon Aug 06, 2012 11:52 pm
by nreicher
vpetersson wrote: At this point, I'd strongly advise you to reinstall Respbian from scratch, expand the rootfs on the first boot (which will require another reboot) and first then install Screenly.
That did the trick... in fact, it was easier since there were a few more code fixes since the first time. Awesome use of my Raspberry guys! Thanks!