[ Storm | StormServer | StormPI ]
Screen Shots
StormPI(Sends weather data via sockets) |
Storm Server(Has a socket interface and a RMI interface) |
StormServer(RMI/Sockets server) and StormPI( The sensor module) |
Client Module |
GITHUB REPO : - https://github.com/rama41222/weather-monitor---rmi
Introduction
“Storm” is a fully distributed weather monitoring system. It consists of mainly 3 main applications
- Strom Server - Server which provides services to monitoring stations and sensors
- Socket interface - Provides communication with the sensor devices.
- Java RMI interface - Exposes methods which can be used by Monitoring Stations.
- StormPI - A sensor emulator which contains
- Temperature sensor
- Pressure Sensor(Barometer)
- Rainfall Sensor(Rain Gauge)
- Humidity Sensor
3. StormApp - Client for weather monitoring,. Live weather data can be visualized in given time.
Features
- StormApp Monitoring Stations receives live weather data and alerts on separated views.
- StormApp Supports on demand weather.
- Monitoring Stations receives an available list of sensor locations when connected to the server.
- User can select a location and subscribe to the weather.
Non Functional Requirements
- Storm uses the Distributed Computing principles in the architecture and the design.
- Architecture - Client Server
- Server Communicates with the Monitoring stations through the RMI interface
- Sensors sends weather data to Storm server through sockets.
- Adoption of appropriate security/authentication mechanisms
- Sensors has to be registered with the server.
- Registered Data is stored in a file which is present inside the server.
- Monitoring Stations can log into the server only using a secured key.
- Thread Safety
- Use of ConcurrentMaps to store data
- Use of CopyOnWriteArrayLists
- Object null checks before accessing the object.
- Synchronized file access methods
- Performance
- Use of multithreaded programming in order to utilize the maximum performance in sensors client and the server.
High Level Architectural Diagram (Physical Diagram[2]).
Requirements
Storm can be deployed on any hardware device which supports the following software requirements.
- Mac OSX
- Windows 10
- Java 1.8
- Ubuntu 16.4
Assumptions
- StormPI which used to simulate a real world sensor is nearly identical to a real system.
- On demand weather data of the StormAPP client(monitor) outputs the latest weather update of that particular location, not the history of weather data.
- Using a file to store registration won’t affect the efficiency of the server.
- Garbage collector will automatically destroy all daemon threads, if exist any.
Known Issues.
- Client throws null pointer exceptions when running on fedora linux and ubuntu 16.4
References
[1] ”Object Exportation”, http://www.fitc.unc.edu.ar/javadev/rmi/sequence_diagrams.html#callExec
GOOD UI :)
ReplyDelete:D Thank you!
Delete