Git Product home page Git Product logo

pi_director's Introduction

pi_director

Introduction

Raspberry Pis are wonderful tools to use for digital signage. They're inexpensive, they can be connected to commodity TVs and have reasonably good web rendering performance for most signage applications. This tool allows one to deploy a fleet of Raspberry Pis that can have centralized management, where one can specify which URL each Pi should display.

Getting Started

This app works best when run inside a Docker container.

  • Clone this repo to your system
  • Add your google oauth keys to production.ini in the velruse.google.* fields (https://console.developers.google.com)
  • Build the Docker image with docker build -t pifm .
  • Then run with docker run -d -p <port>:6543 pifm where is the tcp port you want the daemon to run on.
  • Go to http://your-server:port/api/v1/authorize/[email protected] to create a user for yourself that has admin rights. NOTE: this url will not work once there is at least one administrator in your database.
  • Once the Docker image is up and running, go to http://your-server:port - where your-server is your IP or hostname, and the port is what you specified above.

pi_director's People

Contributors

petergrace avatar poblabs avatar

Stargazers

Cat  avatar Zhao Zhi avatar Ned McClain avatar Wade Fields avatar Aurélien Gasser avatar Thomas Orozco avatar John Bubriski avatar Greg Bray avatar  avatar

Watchers

James Cloos avatar  avatar  avatar

pi_director's Issues

We need to add some kind of authentication

This is a very insecure app and I'd love to come up with a novel way of having it be more secure without being a pain in the butt to implement said security on a large fleet of Pis.

Pressing 'ESC' should be same effect as discard changes

Currently if you load a window (such as "edit") and press Escape on your keyboard it will vanish the window but the main page is still grayed out and cannot be clicked. You have to refresh to regain usage of the main page.

Humbly suggest that alternatively, pressing Escape should have the same effect as clicking "Discard Changes" and return the user to the main page with full use of it

PIFM versioning

Currently there's an issue where PIFM is aware of information recieved from pi_director, and information currently in its cache, but not aware of state.
(ex: cache and url say screen should be 180, but it happens to be 270)

I see this happen most often while testing changes to the pifm agent.

Suggested solution:
include a version hash of the pifm_agent file. The agent should compare its cached version to the servers version at each checkin. The servers version would update as part of the server init process.

We might be able to leverage this as a way of mass updating pi's to the newest PIFM in the future.

Add the ability to display customized just-in-time messages to display

If you were to have a visitor, for instance, and you wanted it to say "Welcome Spacely Sprockets!" on your displays, but didn't have time to make a new web view for it, it would be useful if one could have a precreated announcement route on pi_director where we could store a short message in the Pi data structure. When there is data in that field, the 302 in /go/ would redirect the pi to the generic route and show the message.

Public SSH Key push+populate to Pis

It would be nice if we could automatically add a given ssh public key to all of the pis so that we can directly ssh to them without remembering a password.

This would also enable us to change the password on the pi user to be randomized without too much concern.

Alter xsession so that it consults the pickle file for which command to execute

A user requested that we change the program slightly so that an alternative command could be specified for their pis instead of chromium. In their case, they are using a video player instead of a browser.

This could be accomplished by altering pifm_agent, xsession and the web interface to include extra configuration options that enable an alternative commandline, maybe something like:

Mode [ ] Chromium [X] Other : /usr/bin/vlc rtsp://{url}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.