Coder Social home page Coder Social logo

simplificator / sitincator Goto Github PK

View Code? Open in Web Editor NEW
55.0 28.0 30.0 1.74 MB

Simplificator's meeting room display system

Home Page: https://www.simplificator.com

HTML 1.21% JavaScript 68.87% CSS 27.84% Shell 2.08%
raspberry-pi meeting-rooms organization display

sitincator's Introduction

Sitincator

Warning

We are no longer actively maintaining this. You are welcome to fork the repository and contribute there.

Sitincator

Sitincator is Simplificator's meeting room display system. It consists of a React/Electron app running on a Raspberry Pi 3, which is connected to a touch screen display.

The system shows the current occupancy of the meeting room on the display, all meetings of the current day and allows to make a reservation for 15 or 30 minutes. Sitincator reads the meeting information from Google Calendar (once every minute).

Hardware

Required components for the displays:

Software

Installation on the Raspberry Pi

To install the binary:

curl -ssL https://github.com/simplificator/sitincator/raw/master/scripts/automatic_updates.sh | bash

Configuration

  • Follow Google's guide to obtain the OAuth JSON file and store it in config/client_secret.json.
  • Start the application: /home/pi/Sitincator/Sitincator
  • You are asked to enter the calendar ID (the calendar ID can be found on the settings page of your calendar in Google Calendar)
  • Open the link printed in your terminal, login with the same user as before to obtain the OAuth JSON file and authorize the app to access Google's API. You now get a token in the browser. Enter that token in the terminal's prompt.
  • If your Raspberry Pi is not already in portrait mode, append the following to your /boot/config.txt: display_rotate=1 90 degrees
  • To add a custom title to the screens (e.g. to identify a specific room this display is for), edit sitincator.json (created during the calendar ID setup) and modify the title entry.

Start the Application

Run the following in a terminal:

/home/pi/Sitincator/Sitincator

Development Environment Setup and Startup

It is not recommended to run the following setup on a Raspberry Pi. The installation of the correct node version and the required npm packages is quite a burden for the Raspberry Pi and takes a long time to complete, if successful. The setup has been tested on recent versions of OS X.

Node requirement: v6

git clone git://github.com/simplificator/sitincator.git
cd sitincator
npm install

Follow the instructions above (Installation on the Raspberry Pi -> Configuration).

Start webpack (note that this process is blocking, you could also start it in the background):

npm run watch

Start the application in development mode (windowed, with debugging information):

npm start

Local Production Environment

To start the application in production environment on your development machine:

npm run build
npm run start-prod

Building the Package for the Raspberry Pi

It is recommended to build the package for the Raspberry Pi on an x86 machine:

scripts/pack_pi.sh

The package for the Raspberry Pi now resides in /tmp/sitincator/Sitincator-linux-armv7l. You can launch the app by copying the directory to your Raspberry Pi 3 and calling ./Sitincator-linux-armv7l/Sitincator.

Note that you need to configure config and credentials as outlined in Configuration.

Configuration of the Raspberry Pi

Below you find some starting points to configure the Raspberry Pi for Sitincator.

Create a script start_meeting_room_app using the following command to start Sitincator and initialize the Raspberry Pi's touch screen to portrait format. It also prevents the display from going into sleep mode.

cat > /home/pi/start_meeting_room_app << EOF
DISPLAY=":0" xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix'  0 1 0 -1 0 1 0 0 1

DISPLAY=":0" xset s off
DISPLAY=":0" xset -dpms
DISPLAY=":0" xset s noblank

cd /home/pi/Sitincator/
DISPLAY=":0" /home/pi/Sitincator/Sitincator --disable-pinch
EOF
chmod +x /home/pi/start_meeting_room_app

To automatically start Sitincator when the Raspberry Pi boots, run the following command to add the script start_meeting_room_app to autostart:

echo '@/home/pi/start_meeting_room_app' >> /home/pi/.config/lxsession/LXDE-pi/autostart

To save some power, add the following cronjobs to automatically turn the display on and off:

# Cronjobs definition: crontab -e
0 7    *   *   *   /home/pi/display_turn_on
0 18   *   *   *   /home/pi/display_turn_off

cat > /home/pi/display_turn_on << EOF
DISPLAY=":0" xset dpms force on

DISPLAY=":0" xset s off
DISPLAY=":0" xset -dpms
DISPLAY=":0" xset s noblank
EOF
chmod +x /home/pi/display_turn_on

cat > /home/pi/display_turn_off << EOF
DISPLAY=":0" xset dpms force off
EOF
chmod +x /home/pi/display_turn_off

sitincator's People

Contributors

lxxxvi avatar marcusegues avatar phylor avatar seasilvia avatar zinggi 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

Watchers

 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

sitincator's Issues

Connect to Office 365

It would be great to be able to make this development support the connection to Office 365

Customise quick booking lengths

Installed your software successfully, great so far thanks!

Took a bit of tweaking to get the touchscreen re-calibrated after rotation, had to include:

xinput --set-prop 'FT5406 memory based driver' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1

in /etc/xdg/lxsession/LXDE-pi/autostart to get it working correctly.

Quick questions if you don't mind - Is it possible/easy to change the quick bookings from 15/30 to 30/60 minutes?

Sitincator got slow on RPI3

Hi all,

we tried Sitincator in June and decided to use it for our Meeting-Rooms. Now I had time to further that project and am very happy about the development that happened since then!

In June however any screen transition was fluid. Now its very laggy. I tried both the release build and built it myself.

Is anyone else seeing this problem? Is there anything I can do to debug this? How easy would it to be to disable animated transitions?

Thanks!

Philipp

TUTORIAL

Hi,
i really like your project and i would implement it in my office at work, but i would appreciate a video tutorial showing the installation process because i'm not that skilled in programming and i would prefer to follow the tutorial step by step

No Upcoming Events

Hello there!

I have successfully installed Sitincator. I used my own personal calendar as a proof of concept before rolling it out at our company. But when I launch the app, it shows a screen that simply announces that the meeting room is free. I check the rest of the day and that too is blank. Even when I book a meeting scheduled for 5 minutes from the booking time, it fails to show up on the screen. What seems to be the problem here?

I did the install on Raspian Stretch. Should it have been done on Raspian Jessie instead?

Thanks in advance for your help.

Cannot build for Raspberry Pi

Hi,
When I try to run scripts/pack-pi It consistently errors out at:
screen shot 2018-11-30 at 1 38 13 pm

When running npm run pack:pi, however it builds successfully, but when it is loaded onto the Pi, the app launches a white screen and never changes.

The app runs successfully with the latest binary provided, just cant run any compiled myself.

Trying to compile on OSX 10.14 with node 8.12.0 and npm 6.4.1

Feature Request: Add Calendar ID or Alias to main screen

It'd be great to have a logo and text on the screen in addition to the calendar. Many meeting rooms have an alias in addition to an official room number that may not match the actual calendar ID too. It'd be great to display the calendar ID so people know where to send invite requests on top of a common name.

Title

Your README.ME states

To add a custom title to the screens (e.g. to identify a specific room this display is for), edit sitincator.json (created during the calendar ID setup) and modify the title entry.

However the json genereated Sitincator/resources/app/config/sitincator.json only contains
{"calendar_id":"MyCalendarID"}

What json element do I need to add?

Full Schedule / Back to Booking footer doesn't go away. Screen display is off.

Fresh install, I added a quick 15min booking and added a dummy entry to my calendar. Those work, but now the screen display is off (RPi official touchscreen in landscape mode).

The footer doesn't disappear to switch between full schedule and back to booking. So on the main screen where the up/down arrow shows on the right, it's kicked up a bit. So the "+15" and "+30" selections don't quite show.
2017-11-19 13 46 07

Will it work on Zero?

Hello, I am interested in this project. Does anyone know if it could work in a raspberry pi zero? Thanks.

Installation on Raspbian Lite

Hey,

We are using this app as our meeting room displays and absolutely love the look and use of it. Thank you so much for creating it.

We have had some issues with the speed the app is running at and i would like to run it on raspbian lite and only use the window manager for the application to save some processing power and RAM space.

I get to the stage of putting the calendar id in to the terminal and it stalls out, i dont get the link to authorise access to the calendar.

Any help would be greatly appreciated :)

Can't execute after packaging

I can't get this to work. Documentation is quite "lean". Here's what I did:

...

[email protected] install /home/pi/sitincator/node_modules/node-sass
node scripts/install.js

Downloading binary from https://github.com/sass/node-sass/releases/download/v3.13.1/linux-arm-48_binding.node
Cannot download "https://github.com/sass/node-sass/releases/download/v3.13.1/linux-arm-48_binding.node":

HTTP error 404 Not Found

Hint: If github.com is not accessible in your location
try setting a proxy via HTTP_PROXY, e.g.

  export HTTP_PROXY=http://example.com:1234

or configure npm proxy via

  npm config set proxy http://example.com:8080

[email protected] postinstall /home/pi/sitincator/node_modules/electron
node install.js

[email protected] postinstall /home/pi/sitincator/node_modules/node-sass
node scripts/build.js
...

  • npm run build:pi

[email protected] build:pi /home/pi/sitincator
electron-packager . Sitincator --platform=linux --arch=armv7l

sh: 1: electron-packager: not found

npm ERR! Linux 4.4.50-v7+
npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "run" "build:pi"
npm ERR! node v6.10.3
npm ERR! npm v3.10.10
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! [email protected] build:pi: electron-packager . Sitincator --platform=linux --arch=armv7l
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the [email protected] build:pi script 'electron-packager . Sitincator --platform=linux --arch=armv7l'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the sitincator package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR! electron-packager . Sitincator --platform=linux --arch=armv7l
npm ERR! You can get information on how to open an issue for this project with:
npm ERR! npm bugs sitincator
npm ERR! Or if that isn't available, you can get their info via:
npm ERR! npm owner ls sitincator
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR! /home/pi/sitincator/npm-debug.log

  • npm i electron-packager

  • npm run build:pi

--> build runs
--> execute Sitincator-linux-armv7l/Sitincator
--> Nothing happens... no error .. no output.

error on startup

hi
cool project, tahnk you so much for sharing it

i have followed the readme to install this and am running into an issue
im trying to put our room calendars on this
i get asked for a calendar-id when i fill this in i get a error

any idea what might be wrong here ?

Error while trying to retrieve access token with code { Error: invalid_request
at Request._callback (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/lib/transporters.js:81:15)
at Request.self.callback (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:187:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:194:7)
at Request. (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:1044:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:191:7)
at IncomingMessage. (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:965:12)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:188:7) code: 400 }
{ Error: invalid_request
at Request._callback (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/lib/transporters.js:81:15)
at Request.self.callback (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:187:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:194:7)
at Request. (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:1044:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:191:7)
at IncomingMessage. (/home/pi/Sitincator/resources/app/node_modules/google-auth-library/node_modules/request/request.js:965:12)
at emitNone (events.js:91:20)
at IncomingMessage.emit (events.js:188:7) code: 400 }

Quick Booking buttons register touch but don't book.

Hi guys, looking to use Sitincator in our offices at Raspberry Pi but the final hurdle I'm having is that the quick booking buttons won't book the room. They register the press from the user, but nothing changes.

Is there something about needing to be the owner of the calendar using the token, rather than my work account? The account it is currently using has access to add events to the calendar in question.

Cheers,

M.

Rejects Client Secret JSON

I'm trying to use the quick install method, and after getting the api key which looks like:

{"web":{"client_id":"(redacted).apps.googleusercontent.com","project_id":"(redacted)","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://accounts.google.com/o/oauth2/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"(redacted)"}}

When placed in resources/app/config/client_secret.json, the following error occurs:

$ ./Sitincator
TypeError: Cannot read property 'client_secret' of undefined
    at readCredentials.then.credentials (/home/pi/Sitincator/resources/app/src/gcal/index.js:122:49)

Is my client_secret misformatted? Any idea what's causing the problem?

electron.asar missing

Thank you so much for this app. So useful!

After using the new build, I tried running the executable, I get this error:

pi@raspberrypi:~/Sitincator $ ./Sitincator
module.js:472
throw err;
^

Error: Cannot find module '/home/pi/Sitincator/resources/electron.asar/browser/init.js'
at Function.Module._resolveFilename (module.js:470:15)
at Function.Module._load (module.js:418:25)
at Module.runMain (module.js:605:10)
at run (bootstrap_node.js:428:7)
at startup (bootstrap_node.js:147:9)
at bootstrap_node.js:548:3

I do have a /resources/ directory but it does not have any files.

Any suggestions?

Thanks again!

I need help - Please advise

Hi dear,

I need some help. I am asked at my college to build a MEETING ROOM Status DISPLAY.

my college have provided me all the Hardware - Raspberry pi3, 7inch touch display and memory card. i would like to learn from the scratch that what do i need to do. i read loads of thread and post on different website and also got a full package of software on GITHUB but it is not enough as i am missing somewhere.

if you can help me to build this - it would be great.

I like this one and this is exactly what i need that i have 3 meetings rooms and have to prepare 3 calendars for all the rooms and entered the meeting details in the calendar and it should display. see below:

There is only one thing - i am asked that if possible then i should be able to do this if there is no internet but all the Raspberry will be in the network and if i would still be able to display - possibly by using fullcalendar.io or google offline calendar. i do have a lot of ideas but i don't know how to put things in order.

what i need is to someone guide me and help me while i am stuck in the middle as this is very important for me to do it.

i can follow the guidance easily.

Looking forward for some support,

Thank you,

Best Regards

Faheem W.

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.