GithubHelp home page GithubHelp logo

mpolden / jarvis2 Goto Github PK

View Code? Open in Web Editor NEW
184.0 13.0 70.0 2.56 MB

Awesome dashboard built with Flask and Mithril

License: MIT License

Makefile 1.24% Python 67.24% CSS 6.32% JavaScript 19.87% HTML 4.06% Jinja 1.28%
dashboard python widget raspberry-pi

jarvis2's Introduction

JARVIS

Build Status

JARVIS is a dashboard framework designed to run on the Raspberry Pi.

It features live-updating widgets using server-sent events and can be easily extended to fit your needs.

Screenshots

Screenshot 1 Screenshot 2

Dependencies

JARVIS requires Python 3.6+ to run.

Install requirements:

pip install -r requirements.txt

For development it's recommended to use virtualenv.

Configuration

All configuration of widgets is done in a single Python source file. The configuration is specified by setting the JARVIS_SETTINGS environment variable.

A sample config (jarvis/config.py.sample) is provided. This file can be used as a starting point for your own configuration.

Copy jarvis/config.py.sample to jarvis/config.py and edit it to suit your needs.

Usage

After installing dependencies and creating a config file, the app can be started by running:

JARVIS_SETTINGS=config.py make run

To start the app in debug mode, use:

JARVIS_SETTINGS=config.py make debug

Run a job standalone and pretty-print output (useful for debugging):

JARVIS_SETTINGS=config.py make run-job

Create Google API credentials (required for calendar and gmail widget):

JARVIS_SETTINGS=config.py make google-api-auth

Create a new widget:

make widget

Create a new dashboard:

make dashboard

Widgets

See WIDGETS.md for documentation on available widgets.

Deployment

See INSTALL.md for a basic deployment guide.

License

Licensed under the MIT license. See the LICENSE file if you've never seen it before.

jarvis2's People

Contributors

dependabot[bot] avatar mpolden avatar skandix avatar unstad avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

jarvis2's Issues

jarvis2 without uwsgi

Hi, I like your jarvis2 project so I wanted to run it on my fun_plug 0.5 NAS server with python 2.7. Since I can not install uwsgi (but nginx is running) I wanted to ask for ideas to run it in a different way. Any help would be awesome!

yr not properly working if you change the xml url to another place.

Appeared in Console When refreshing page

Job "yr (trigger: interval[0:05:00], next run at: 2016-02-01 08:38:59.568695)" raised an exception
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/apscheduler/scheduler.py", line 512, in _run_job
retval = job.func(_job.args, *_job.kwargs)
File "/home/negus/jarvis2/app/main.py", line 179, in _run_job
body = job.get()
File "/home/negus/jarvis2/app/jobs/yr.py", line 52, in get
return self._parse(r.content)
File "/home/negus/jarvis2/app/jobs/yr.py", line 44, in _parse
'today': self._parse_tree(tree),
File "/home/negus/jarvis2/app/jobs/yr.py", line 28, in _parse_tree
windSpeed = data_root.xpath('windSpeed').pop()
IndexError: pop from empty list

Debug Mode


INFO in main [/home/negus/jarvis2/app/main.py:158]:

Scheduling job: [name=yr, interval=300, timeout=1, start_date=2016-02-01 08:33:59.568695]

/app/config.py #yr

JOBS['yr'] = {

Enable job

'enabled': True,

Run job every N seconds

'interval': 300,

URL for data

'url': ('http://www.yr.no/sted/Norge/Aust-Agder/Grimstad/'
'Grimstad/varsel.xml'),
# Job timeout in seconds
'timeout': 1
}

Everything should be dynamic!

I spent a few days with Jarvis and made a infoscreen for Creativia that ran through the course of The Gathering 2015. Pretty awesome project!

Few of the problems i had:

I essentially ripped out the calendar tiles and added something that read from an .ics file. The problem however was that nothing in the javascript was very dynamic. I had to manually write a little bit to make sure the text was enough for the tiles.
https://github.com/Foxboron/Frank/blob/master/app/static/widgets/creativiascene/creativiascene.js#L29

The project also does not handle different screen sizes very well in my experience. This could be PEBCAK and i'm just horrible with CSS and Javascript.

Result: http://pr0n.sesse.net/tg15/original/DSC_4278.JPG

Awesome project, might be using it again next year!

Add support for locales

Consider adding support for different locales, or atleast add English templates for existing widgets.

Maybe the widget template (widgets/calendar/calendar.html) could be in English, and localized versions could be provided as calendar_<language shortname>.html, e.g. calendar_nb_no.html

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.