OpenADMS
The Open Automatic Deformation Monitoring System (OpenADMS) is a free and open-source software for sensor control, observation data processing, data storage, and data exchange in the Internet of Things (IoT).
OpenADMS is written in Python 3 and consists of three projects:
The development of the software has been halted in favour of DMPACK.
OpenADMS Node
The OpenADMS Node software is used for automating geodetical and geotechnical control measurements within sensor networks.
Some of the features of OpenADMS Node are:
- platform-independent
- supports geodetic, geotechnical, and meteorological sensors
- enables IoT sensor networks based on the MQTT messaging protocol
- compatible to the Raspberry Pi and other single-board computers
- export of observation data to CSV files
- support for NoSQL databases (PostgreSQL, Apache CouchDB, TinyDB)
- automated alarming system (e-mail, SMS, IRC, RSS, Mastodon, optical/acoustical)
- processing of total station measurements (polar transformation, Helmert transformation, atmospheric distance correction, serial measurements in two faces)
- virtual sensors
- JSON-based configuration and data exchange
- data validation with JSON Schema
- web-based user interface
- transmission of observations, log messages, and heartbeats to OpenADMS Server
- open source (BSD-2-Clause)
Download
The latest development version is available on GitHub:
$ git clone https://github.com/dabamos/openadms-node
Or download the master branch directly as a Zip file. Release versions are available for download as well, but slightly outdated.
Please refer to the OpenADMS Node manual for further instructions.
Platforms and Operating Systems
OpenADMS Node runs on a broad range of computer platforms, like x86, x86-64, ARM, and MIPS. The software is compatible to all modern operating systems, including:
- GNU/Linux
- Unix (FreeBSD, NetBSD, OpenBSD, …)
- Microsoft Windows Vista/7/8/10
- macOS
- Android
OpenADMS Node requires a recent Python 3 interpreter, either CPython 3.6+ or PyPy3.5+.
Versions
A list of all versions of OpenADMS Node.
Version | Code Name | Date | Description |
---|---|---|---|
0.1 | Anchorage | 28.02.2014 | First implementation in Go |
0.2 | Brisbane | 19.09.2015 | Scheduler, FTP and SMTP support |
0.3 | Copenhagen | 19.11.2016 | Re-implementation in Python 3 |
0.4 | Dar es Salaam | 24.04.2017 | Minor improvements and fixes |
0.5 | Eindhoven | 06.09.2017 | JSON schema, graphical launcher |
0.6 | Fukuyama | 05.10.2017 | Apache CouchDB, further means of alerting |
0.7 | Geneva | 29.08.2018 | Database caching, signal handler |
Screen Shots
Some screen shots of different versions of OpenADMS Node.
OpenADMS Server
OpenADMS Server is a set of scripts and configuration files to run an HTTP service for time series data, obtained from IoT sensor networks based on OpenADMS Node or 3rd party applications. A HTTP-RPC API is provided for accessing sensor data, log messages, and heartbeats. OpenADMS UI is a web-based user interface to OpenADMS Server.
Access the API from your web browser, with command-line tools like cURL or HTTPie, or directly from within your programming language (for instance, by using jQuery or Python Requests).
OpenADMS Server is based on PostgreSQL and nginx. Time series are stored in JSONB format. Please see the documentation for installation notes and API descriptions.
Quick Start
- Install PostgreSQL 11 (or higher).
- Configure PostgreSQL.
- Install and configure nginx or OpenResty.
- Test the HTTP RPC API.
- Run OpenADMS Node to store observation data in the PostgreSQL database.
- Retrieve transmitted data from the server.
OpenADMS UI
OpenADMS UI is a single-page application for access to OpenADMS Server instances. It is written in ECMAScript 2015 and relies on jQuery, Backbone.js, Underscore.js, Papa Parse, and Plotly.js. Please see the GitHub repository for the latest version.