Giter Club home page Giter Club logo

dhalsim's Introduction

Digital HydrAuLic SIMulator (DHALSIM)

A Digital Twin for Water Distribution Systems. A work by the SUTD Resilient Water Systems Group, iTrust, and TU Delft Department of Water Management

DHALSIM uses the WNTR EPANET wrapper to simulate the behaviour of water distribution systems. In addition, DHALSIM uses Mininet and MiniCPS to emulate the behavior of industrial control system controlling a water distribution system. This means that in addition to physical data, DHALSIM can also provide network captures of the PLCs, SCADA server, and other network and industrial devices present in the a water distribution system.

DHALSIM was presented in the ICSS Workshop in ACSAC'20, with the paper: Co-Simulating Physical Processes and Network Data for High-Fidelity Cyber-Security Experiments

Installation

In order to offer a simple installation we have included an installation script which will install DHALSIM on an Ubuntu 20.04 machine. This script is located in the root of the repository and can be run with ./install.sh.

DHALSIM can also be installed manually for other Ubuntu versions. To this end you may use the following instructions.

Manual installation

Mininet and MiniCPS installation

The installation instructions for Mininet are found here. Please note that the cpppo install should be replaced by cpppo==4.0.4. MiniCPS should be pulled from this repository.

Python 2 and pip

DHALSIM requires Python 2, which no longer comes installed on newer versions of Ubuntu. Python 2 can be installed using sudo apt install python2. You can get pip for Python 2 by curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py and sudo python2 get-pip.py.

Other dependencies

Finally, DHALSIM needs pathlib and pyyaml installed. Other dependencies should be automatically installed using sudo python3 -m pip install -e in the root of the repository.

Running

DHALSIM can be run using the command sudo dhalsim <path/to/config.yaml>.

Replacing the text between "< >" with the path to one example topology or your own configuration files. For example, for the anytown example, you'd use: sudo dhalsim <examples/anytown_topology/anytown_config.yaml>

dhalsim's People

Contributors

afmurillo avatar daveonwave avatar lucjonker avatar maartenweyns avatar mohammad-ashrafi avatar noleti avatar robertdijk avatar rtaormina avatar simchavos avatar

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.