- Notifications
You must be signed in to change notification settings - Fork6
Alarm Display for Fire Departments
License
SituationBoard/SituationBoard
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
Alarm Display for Fire Departments
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, Divera 24/7
- supports multiple sources (e.g. SMS, binary sources, and web APIs)
- 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
Standby View (showing recent alarms, statistics and upcoming calendar events)
Alarm View with Maps (showing nearby fire hydrants, water tanks etc.)
Simplified Alarm View (for improved readability)
Overview of SituationBoard (with a selection of source and action plugins)
This project is licensed unter the terms of the GNU Affero General Public License, version 3 (AGPLv3).SeeLICENSE file for more details.
The credits in form of a list of contributors and used third-party projects can be found inCREDITS.md.
- Raspberry Pi or another Linux box
- Huawei E303 UMTS-Modem (optional, required only for alarm reception via SMS)
- HDMI TV/Display (with optionalCEC support)
- Internet access (optional for calendar updates, maps and external alarm services)
- Linux (withsystemd and GUI)
- Gammu (SMS/Phone Library, optional)
- Python (Version >= 3.7)
- Flask (Webserver)
- Flask-SocketIO (Socket IO for Webserver)
- some other Python, JavaScript and Linux packages
To install SituationBoard, checkout this GIT repository to the target machine and use theinstall command of thesbctl tool:
# Clone GIT with SSH key:git clone git@github.com:SituationBoard/SituationBoard.git# Clone GIT without SSH key:git clone https://github.com/SituationBoard/SituationBoard.git# Install SituationBoard:cd SituationBoardsudo ./sbctl installThe automatic setup should work on Debian-based Linux distros (likeRaspberry Pi OS orUbuntu).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 theconfiguration in thesituationboard.conf file before the first start.
In addition to the setup script, there is also aguide on how to install SituationBoard manually.
Depending on your needs it might also be useful to enable the SSH daemonfor remote command line access and the automatic GUI login on startup.In addition, you should probably also make sure that the standby mode (screen blanking) is disabled.On Raspberry Pi OS these settings can be configured with the commandsudo raspi-config.
To interact with the backend server thesbctl command line tool is used.It allows debugging, importing/exporting data and controlling the systemd service.For a full list of available commands run thesbctl command line tool (without any parameter).
Before running the server for the first time, make sure you adjusted the configuration in thesituationboard.conf file according to your needs.An extensive documentation on the configuration options is availablehere.
Afterwards, test your setup by executing:
sbctl runThe 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 tosituationboard.log.
To kill the server use the commandsbctl kill.
By default, SituationBoard is configured for testing/development purposes and therefore uses thedummy 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 dalarmTo simulate binary alarms use:
sbctl dbinaryTo export all alarms from the database and store them into aCSVfile 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 indocs/CSV.md.
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>After adjusting the configuration and extensive testing, the following commands can be used to permanently enable the service:
sbctl enablesbctl startTo update the local installation with agit pull of the newest version use the command:
sbctl updateAfter an update it might be necessary to adjust yoursituationboard.conf configuration file(seeCHANGELOG.md anddocs/Configuration.md for details).
To backup the configuration, the database and a CSV to a remote machine use:
sbctl backup <HOST>:<PATH>If you use theSMS 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.
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.
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.
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.
The plugins are subclasses ofSourceDriver,MessageParser orAction.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 thePluginManager.
About
Alarm Display for Fire Departments
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Uh oh!
There was an error while loading.Please reload this page.
