This repository contains the code for a Python-Django web application enabling users to upload, share, and display data from their environmental monitoring sites. Data can either be automatically streamed from Internet of Things (IoT) devices, manually uploaded via CSV files, or manually entered into forms.
The ODM2 Data Sharing Portal is built on the Observations Data Model Version 2 (ODM2) information model and supporting software ecosystem, includuing an ODM2 database instance in PostgreSQL for data storage in the backend.
Any environmental IoT device or computer can upload data to the web app via HTTP POST.
Complete documentation is available in our open-access journal article "Low-Cost, Open-Source, and Low-Power: But What to Do With the Data?".
The ODM2 Data Sharing Portal was initially designed to support the EnviroDIY community for do-it-yourself environmental science and monitoring and their network of open-source monitoring stations built with Arduino-framework dataloggers such as the EnviroDIY Mayfly Datalogger.
The ODM2 Data Sharing Portal was extended to also support the Leaf Pack Network of teachers, students, and citizen monitors who assess aquatic ecosystem health through aquatic macroinvertebrate surveys using Leaf Pack Experiment stream ecology kits.
The main instance of this application is currently hosted at http://monitormywatershed.org.
A guide for deploying the data sharing portal is available here.
The ODM2DataSharingPortal relies on devices that can push data to the web using HTTP POST requests. We've included some documentation where you can view example POST requests to learn the syntax.
There are example notebooks for accessing data stored within Monitor My Watershed using both R and python. These notebooks use the time series visualization (TSV) endpoint to access the data. Once a more formal API is developed, a python client to access that API will be in the MonitorMW-Client repo.
Any device that can connect to the internet and make a HTTP POST request can publish data to Monitor My Watershed using the syntax linked to above. The primary firmware library developed for the EnviroDIY Mayfly, Stonefly, and other Arduino-based devices to collect sensor data and post it to Monitor My Watershed is Modular Sensors. The Modular Sensors library supports is designed for low-power environmental data loggers. It supports dozens of different sensors. In addition to Monitor My Watershed, Modular Sensors can also be used to publish data to AWS IoT Core, ThingSpeak, and several other endpoints.
Funding for this work was provided by the William Penn Foundation under grant 158-15.
The authors gratefully acknowledge the work and contributions of the EnviroDIY community and those who participated in testing and advancing the Monitor My Watershed Data Sharing Portal software.
