Web-based home info screen optimized for vertical Full HD displays (1080x1920) and modern web browsers.
Features:
- Display current time and date
- Display current location's sunrise and sunset times (from MET Norway)
- Show weather forecast from Yr.no
- Show weather observations from Finnish Meteorological Institute
- Show custom IoT sensor data from MQTT (e.g. current temperature and humidity)
- Public transportation information from Digitransit API (for e.g. Helsinki Region)
- Localization for Finnish and English
Made with React and Express (Node.js).
Prerequisites: Node.js (18.14 LTS or later) and npm
# Install dependencies
npm install
# Start app for development
npm run watch
# Install dependencies
npm install
# Build the frontend application
npm run build
# Start the Node backend
NODE_ENV=production npm start
Open in web browser: http://localhost:3000/
Copy config.sample.json as config.json and make your own changes there.
In config.json you can configure:
- Display language (
fi-FIoren-US) - Locations for weather observations and forecasts
- Public transportation stops to display (and Digitransit API key to use)
- MQTT sensor details
Restart the backend (and refresh the browser window) after changing the file.
The public transportation data from Digitransit is licensed with CC BY 4.0. Fetching the data requires a free registration by the user and adding your API key to config.json (as digitransitKey). More information about the API: https://digitransit.fi/en/developers/
The weather observation data from The Finnish Meteorological Institute is licenced with CC BY 4.0 and the API has a usage limit of 10000 request per day (<7 per minute) per user. More information: https://en.ilmatieteenlaitos.fi/open-data-manual
The weather forecast data from Yr (Norwegian Meteorological Institute and NRK) is licensed with CC BY 4.0 and it must be cached to prevent unnecessary requests (maximum limit 20 request/second per application and usage of HTTP caching headers). API requests must also include an identifying "User-Agent" header. More information: https://developer.yr.no/doc/TermsOfService
(The aforementioned request limits have been taken into account in this application by caching requests in the Infoscreen's Node.js backend.)
The source code in this repository is licenced with MIT License.
