Git Product home page Git Product logo

situationboard's Introduction

SituationBoard

Alarm Display for Fire Departments

Description

SituationBoard is a web-based application that provides an alarm and information display for fire departments and emergency services. It consists of a Python backend (that is extendable via plugins) and an HTML/JavaScript frontend. SituationBoard offers a lot of configuration options and supports different alarm sources. In addition, an alarm can trigger several actions (e.g. sending alarm messages via an external service or controlling outlets / alarm lights).

Keywords: Alarm, Emergency, Operation, Fire, Rescue, Mission, Situation, Incident, Briefing, Display, Monitor, Screen, Dashboard, Board, View, Panel, Visualization, Einsatz, Lage, Feuerwehr, FW, FFW, THW, Technisches Hilfswerk, Rettungsdienst, Alarmierung, Visualisierung, Anzeige, Bildschirm, Alarmmonitor, Einsatzmonitor, Alarmanzeige, Einsatzanzeige, Alarmdisplay, Einsatzdisplay

Features

  • supports multiple sources (e.g. SMS and binary sources)
  • alarm view with optional support for maps (showing route and fire hydrants at location)
  • enables forwarding of alarms to external alarm services
  • can trigger a variety of other alarm actions (e.g. turn on lights)
  • stores alarms in a database with CSV import/export support
  • standby view with recent alarms, statistics and upcoming calendar events
  • support for an arbitrary number of screens/monitors
  • extensive configuration options for frontend and backend
  • robust handling of alarms (fallback to raw mode if messages cannot be parsed)
  • extendable via plugins (alarm sources/parsers, alarm actions)
  • setup script, systemd service and extensive documentation

Screenshots

Standby View Standby View (showing recent alarms, statistics and upcoming calendar events)

Alarm View with Maps Alarm View with Maps (showing nearby fire hydrants, water tanks etc.)

Simplified Alarm View Simplified Alarm View (for improved readability)

System Overview

System Overview Overview of SituationBoard (with a selection of source and action plugins)

License and Credits

This project is licensed unter the terms of the GNU Affero General Public License, version 3 (AGPLv3). See LICENSE file for more details.

The credits in form of a list of contributors and used third-party projects can be found in CREDITS.md.

AGPLv3

Hardware Requirements

  • Raspberry Pi or another Linux box
  • Huawei E303 UMTS-Modem (for alarm reception via SMS)
  • HDMI TV/Display (with optional CEC support)
  • Internet access (optional for calendar updates, maps and external alarm services)

Software Requirements

Installation

To install SituationBoard, checkout this GIT repository to the target machine and use the install command of the sbctl tool:

# Clone GIT with SSH key:
git clone [email protected]:SituationBoard/SituationBoard.git

# Clone GIT without SSH key:
git clone https://github.com/SituationBoard/SituationBoard.git

# Install SituationBoard:
cd SituationBoard
sudo ./sbctl install

The automatic setup should work on Debian-based Linux distros (like Raspbian or Ubuntu). It first asks some questions on required features and then installs all the required dependencies. It also makes several adjustments to the system depending on the selected features (e.g. enables autostart of the browser, disables screensaver, ...). After the installation, it is necessary to adjust the configuration in the situationboard.conf file before the first start.

In addition to the setup script, there is also a guide on how to install SituationBoard manually.

Depending on your needs it might also be useful to enable the SSH daemon for remote command line access and the automatic GUI login on startup. On Raspbian both these settings can be configured with the command sudo raspi-config.

Getting started

To interact with the backend server the sbctl command line tool is used. It allows debugging, importing/exporting data and controlling the systemd service. For a full list of available commands run the sbctl command line tool (without any parameter).

Starting the server (for testing/debugging)

Before running the server for the first time, make sure you adjusted the configuration in the situationboard.conf file according to your needs. An extensive documentation on the configuration options is available here.

Afterwards, test your setup by executing:

sbctl run

The server should now be running in the background and the website of the frontend should be available under: http://localhost:5000

All console output of the backend server is also written to situationboard.log.

To kill the server use the command sbctl kill.

Sending test alarms

By default, SituationBoard is configured for testing/development purposes and therefore uses the dummy driver as source for events. This allows you to send test alarms to the running server with one of the following two commands.

To simulate regular (text) alarms use:

sbctl dalarm

To simulate binary alarms use:

sbctl dbinary

Exporting alarms to CSV

To export all alarms from the database and store them into a CSV file use the following command:

sbctl export <csv-file>

This export functionality is handy for example to backup alarm events in a human-readable format, to allow processing of alarm events with external tools, or to analyze received alarm events manually.

More details on alarm events, their information and the CSV format can be found in docs/CSV.md.

Importing alarms from CSV

To import alarms from a CSV file and add them to an existing database use the following command:

sbctl import <csv-file>

This import functionality is handy for example to restore CSV backups or to add/edit alarm events manually.

To also reset the database before importing the alarms from the CSV file use the following command instead:

sbctl rimport <csv-file>

Permanently enabling the service (for production use)

After adjusting the configuration and extensive testing, the following commands can be used to permanently enable the service:

sbctl enable
sbctl start

Updating SituationBoard

To update the local installation with a git pull of the newest version use the command:

sbctl update

After an update it might be necessary to adjust your situationboard.conf configuration file (see CHANGELOG.md and docs/Configuration.md for details).

Backing up configuration and data (to a remote machine)

To backup the configuration, the database and a CSV to a remote machine use:

sbctl backup <HOST>:<PATH>

Update standby view (via SMS)

If you use the SMS source driver, the information on the standby view can be updated via SMS. To update the header or news line you can simply write an SMS in the format

header=<HEADER_TEXT>

or

news=<NEWS_TEXT>

If there is no text specified for header/news the corresponding lines will be hidden from the standby view.

Custom Plugins

SituationBoard comes with a variety of source drivers, message parsers and action handlers. However, you can always add additional sources, parsers and actions in form of plugins (and share them with others).

Pull requests (e.g. with new plugins or other improvements) are always welcome.

Write your own source driver or message parser

Depending on the alarm source (SMS, Binary, Dummy, ...) and the format of the alarm messages it might be necessary to create your own source driver or parser. When writing your own driver or parser, you can use an existing source driver or parser as a template and adjust it according to your needs.

Write your own action plugin

An alarm can already trigger a variety of actions (e.g. it can be forwarded to external services or activate external devices). However, if you need to trigger different actions feel free to add a new action plugin. Most of the time, the integration of additional actions in form of a new plugin is only a matter of minutes.

Getting started

The plugins are subclasses of SourceDriver, MessageParser or Action. An extensive documentation of the different plugin types (and an overview of the interfaces those plugins implement) can be found in the aforementioned files.

Important: To use new plugins they also have to be added to the PluginManager.

situationboard's People

Contributors

sebastian-maier 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

Watchers

 avatar  avatar  avatar  avatar  avatar

situationboard's Issues

Communication platform

For direct communication, github is not so suitable. What do you think about creating a Slack workspack?

Alarm via POCSAG

Moin,

als Verbesserung für das SituationBoard wäre die Erweiterung um die Quellressource "POCSAG", für den Empfang von digitalen Meldeempfängern, eine interessante Methode.

Hierdurch können dann sicherlich auch noch mehr Feuerwehren den Anschluss an das SituationBoard finden um im Ernstfall mithilfe dieser Software noch besser Planen und Agieren zu können.

Gruß Lucas


Hello,

as an improvement for the SituationBoard, adding the source resource "POCSAG" to receive digital message receivers would be an interesting method.

This means that even more firestations will be able to connect to the SituationBoard in order to be able to plan and act even better with the help of this software in an emergency.

Greetings Lucas

Fix automatic line breaking in alarm view

Automatic line breaking does no longer work for the comments of alarm events shown in the alarm view.
Long lines within comments therefore destroy the overall layout of the alarm view.

This bug was actually found by @poccix.
Thank you for reporting. 🙂

Alarm via Mail

Hi,

is it possible to trigger via a mail?

Ist es möglich, einen Alarm aus einer Mail auszulesen. Wir bekommen von unserer Leitstelle für jeden Einsatz eine Mail mit den genauen Angaben zugeschickt.

Thanks Grave

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.