Giter Site home page Giter Site logo

drola's Introduction

Drola

A Drone Monitoring System using LORA

We are introducing a separate hardware unit for drones which can easily mount on any kind of non-commercial drone. DroLa End node consists of a GPS module, microcontroller, LoRa module and a separate battery.

Setting up Drola End Node

Setup the units according to the schematics given in the LoRa_End_Node. The End node microcontroller should contain the given firmware. The communication channel and addresses of Lora modules should be according to the given firmware.

Setting up Drola Web

  1. Clone the repository at the Base station.
  2. Run the following command to install the node module dependencies.
    cd Drola_Base_Node
    npm install
    
  3. Connect the configured base station LoRa module to the base station computer. You can start the node server by running following command-
    npm start
    
  4. Start the Websocket server and Websocket client to see the end node locations in the browser application.
    cd Drola_Base_Node/api
    python socket_server.py
    python read_serial.py
    
  5. Go to http://localhost:3000/ in your browser to see all the locations of the Live End Nodes.

Note: You can test the api by running socket_client.py instead of read_serial.py. It will show you some hard-coded locations. Trusted zones are not implemented yet to protect AES keys. The keys are hardcoded in this version.

Base Node Application

Base Node App

DroLa End Node

End Node


For more information please refer the Wiki page.

drola's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

drola's Issues

UI/UX, deprecated JS dependecies, Google Maps

  • The design(UI/UX) of the interface feels outdated and needs to be upgraded and improved.
  • The following dependencies are now deprecated and have to be updated-
    • constantinople
    • hoek
    • node-uuid
  • The Google Maps Interface has broken links and needs to be fixed.
  • Git Flow Workflow should be encouraged and used.

[GCI] Google Maps not working

Seems to be that the API key has been deleted. Possible fix is to migrate from google maps, to an opensource alternative

Repo should follow GitFlow workflow

This repos should follow Gitflow workflow and follow are the items you have to check.

  • There is a master branch and a develop branch.
  • master branch is locked for direct commits and,
    • Require pull request reviews before merging is active
    • Require status checks to pass before merging is active
      • Require branches to be up to date before merging
      • Appropriate Status checks are required
    • Enforce all configured restrictions for administrators is active
    • Restrict only maintainers group can push to the master branch
  • develop branch is locked for direct commits and,
    • Require pull request reviews before merging
      • Dismiss stale pull request approvals when new commits are pushed is active
    • Require pull request reviews before merging is active
    • Require status checks to pass before merging is active
      • Require branches to be up to date before merging
      • Appropriate Status checks are required
    • Enforce all configured restrictions for administrators is active
    • Restrict only maintainers group can push to the master branch

[GCI-2018] Some issues

Issues in code:

  • At line 298 and below there should not be asterisk as in the given code it is :
    <connect gate="G$1" pin="*10" pad="13"/><connectgate="G$1" pin="*11"pad="14"/>
    <connectgate="G$1" pin="*3"pad="6"/><connect gate="G$1" pin="*5" pad="8"/>

  • There should also be some kind of FAQ so that user can have a look before using the app.

  • Add Contributing guidelines and ISSUE SUBMITTING TEMPLATE for ease.

  • The website should be responsive, the code isn't supported with media query

  • Some dependencies are deprecated, kindly update them.

Deprecated Dependencies:

Design Issues in the Site

The Site is not responsive.
When the Site is switched to mobile view from the Desktop view, it is not responsive.

No ESLint Support

image

Expected Behavior

There should be a ".eslintignore" & ".eslintrc.json" File Available for code that doesn't adhere to certain style guidelines.

Current Behavior

There is no ".eslintignore" & ".eslintrc.json" Files Present

Possible Solution

All the commands that are required To Setup ESLint are present Here

Follow-up

Update the README.md accordingly.

Add requirements.txt in Drola_Base_Node/api | Update READ.ME

There aren't requirements.txt in Drola_Base_Node/api. I think project should add requirements.txt in Drola_Base_Node/api, people will install easily and convenient for user.

READ.ME should be added more information about Setting up Drola End Node & Hardware Settings

improvement

For the App

  • Make a smartphone app for the user to see the location easily
  • Make the project to be more user-friendly
  • Make a FAQ in the app
    • to make sure that the user not get confuse with DroLa project

For the project

  • Prepare a cover for DroLa end node
    • make a 3D sketch for the cover, make a 2D sketch for the user to make a cover by fold it and etc.
  • Prepare a website for the user on where to buy the componenets
  • Make a server for the user to see other's people drone
    • to make sure that their drone didn't crash

Important Files Missing

Here should be
code_of_conduct.md
issue_template.md
pull_request_template.md

please add them in the repository to guide the developers.So please add it.

Manually installed dependencies, port number error

  • The application is supposed to handle its dependencies on its own and download the required modules, but-
    • 4 dependencies had to be installed manually before the process could start-
      • Cron - I had to run npm install cron because it was not downloaded automatically(see below)-
        CronIssue
      • Twisted - I had to run pip install twisted manually because python socket_server.py produced module error(see below)-
        TwistedIssue
      • Autobahn - I had to again run pip install autobahn for the same command python socket_server.py(see below)-
        AutobahnIssue
      • Serial - The serial module had to installed manually on my end (python read_serial.py)(see below)-
        SerialIssue
    • All these module errors must be addressed and files should be configured to get downloaded automatically.
  • Even after I had installed all the dependencies, running python read_serial.py gave the following error about port number, and there was no documentation to troubleshoot it. (see below)-
    PortIssue

Improvements and issues

=>The graphical user interface could be improved
=>The UI/UX is also isn't that good
=>There are several broken links like google maps, sign in/up aren't handled bt index.js
=>The website should be responsive, the code isn't supported with media query
=>The repository should follow git flow workflow

Some Environments and Code improvements.

  1. There should be some kind of environment with which the app is supported by Windows and Mac itself or there should be inbuilt or some settings should be send that could be installed while running the application.

  2. At line 298 and below there should not be asterisk as in the given code it is :
    <connect gate="G$1" pin="*10" pad="13"/> <connectgate="G$1" pin="*11"pad="14"/> <connectgate="G$1" pin="*3"pad="6"/> <connect gate="G$1" pin="*5" pad="8"/>

  3. Also the connect value should also get regulated time to time so that MAP API should not crash.
    This can be done by having a "For Loop" by iterating through each Pin and Pad.

  4. The following dependencies are now deprecated and have to be updated in order to get a real time
    working application:
    a) Constantinople
    b) Hoek
    c) Node-Uuid

  5. There should also be some kind of FAQ so that user can have a look before using the app.

  6. Also there should be an option regarding asking questions and queries so that user can deal with it.

Google Code-In 2017: Getting Started Issue

THIS IS A NOT A REAL ISSUE BUT A PLACEHOLDER.

All the practising PRs for Google Code-In 2017 should refer this issue. PRs referring this issue will be closed without merging. Do not refer this issue if you are NOT submitting a practice PR and need your work merged.

[Bug] Missing or unrecognized module causing process to stop

After installing all of the dependencies in Drola_Base_Node, I executed npm start and got an error saying my node version was not updated. So I quickly updated my node to the latest version and tried it again and got another error stating that there is a missing module:

15

I tried a few such as updating some of the dependencies and researching on cron but nothing worked. Is there any fix for this?


First command: npm install details

npm WARN deprecated [email protected]: Jade has been renamed to pug, please install the latest version of pug instead of jade
npm WARN deprecated [email protected]: Please update to at least constantinople 3.1.1
npm WARN deprecated [email protected]: Deprecated, use jstransformer
npm WARN notice [SECURITY] uglify-js has the following vulnerability: 2 low. Go here for more details: https://nodesecurity.io/advisories?search=uglify-js&version=2.2.5 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN deprecated [email protected]: Use uuid module instead
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN notice [SECURITY] hoek has the following vulnerability: 1 moderate. Go here for more details: https://nodesecurity.io/advisories?search=hoek&version=2.16.3 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN deprecated [email protected]: This version is no longer maintained. Please upgrade to the latest version.
npm WARN notice [SECURITY] constantinople has the following vulnerability: 1 critical. Go here for more details: https://nodesecurity.io/advisories?search=constantinople&version=3.0.2 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN notice [SECURITY] njwt has the following vulnerability: 1 low. Go here for more details: https://nodesecurity.io/advisories?search=njwt&version=0.3.2 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN notice [SECURITY] tunnel-agent has the following vulnerability: 1 moderate. Go here for more details: https://nodesecurity.io/advisories?search=tunnel-agent&version=0.4.3 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN notice [SECURITY] njwt has the following vulnerability: 1 low. Go here for more details: https://nodesecurity.io/advisories?search=njwt&version=0.4.0 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.
npm WARN notice [SECURITY] deep-extend has the following vulnerability: 1 low. Go here for more details: https://nodesecurity.io/advisories?search=deep-extend&version=0.4.2 - Run `npm i npm@latest -g` to upgrade your npm version, and then `npm audit` to get more info.

> [email protected] install /home/kalyan/drola/Drola_Base_Node/node_modules/websocket
> (node-gyp rebuild 2> builderror.log) || (exit 0)

make: Entering directory '/home/kalyan/drola/Drola_Base_Node/node_modules/websocket/build'
  CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
  SOLINK_MODULE(target) Release/obj.target/bufferutil.node
  COPY Release/bufferutil.node
  CXX(target) Release/obj.target/validation/src/validation.o
  SOLINK_MODULE(target) Release/obj.target/validation.node
  COPY Release/validation.node
make: Leaving directory '/home/kalyan/drola/Drola_Base_Node/node_modules/websocket/build'

> [email protected] postinstall /home/kalyan/drola/Drola_Base_Node/node_modules/nodemon
> node bin/postinstall || exit 0

npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN [email protected] No description
npm WARN [email protected] No repository field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 514 packages in 65.502s```

Use of old ES code

In the index.js file we're using old var syntax (const and let would be a better choice) and normal anonymous functions, instead of shorter and better arrow functions:

  • Now:
    router.use(function (req, res, next) { next() })
  • What we could use:
    router.use((req, res, next) => next())

Those changes won't affect the app at all, but the code would become more readable.

No Travis CI Support Available

image

Expected Behavior

There should be Travis CI Integration In Project Which runs tests every time Anyone commits to Repository.

Current Behavior

There is no Travis CI Integration Available

Possible Solution

All the commands/Documentation that are required To integrate Travis CI are present Here

Follow-up

Update the README.md accordingly.

Deprecated dependancies

You are using outdated dependencies like

  • hoek (No longer supported)
  • jade (Now renamed as pug)
  • constantinople
  • transformers (now jstransformer)
  • node-uuid
    Consider updating them

[GCI2018] Got Cannot find module 'cron' error when tried running , Deprecated Nodejs Dependencies , requirements.txt missing

Problem 1 :

When Installing NodeJs dependencies , got lots of deprecation warning and the dependencies also contains 13 vulnerabilities

Deprecated dependancies :

Problem 2 :

When Tried Running the program on Drola_Base_Node , using the steps below ,

  • ~$ npm install
  • ~$ npm start

I got the following error :

CLICK TO EXPAND
$ npm start

> [email protected] start /home/palash/Downloads/drola-master/Drola_Base_Node
> node index.js

module.js:549
    throw err;
    ^

Error: Cannot find module 'cron'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/home/palash/Downloads/drola-master/Drola_Base_Node/index.js:5:15)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `node index.js`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/palash/.npm/_logs/2018-10-27T11_38_43_796Z-debug.log

Problem 3 :

Missing requirements.txt in Drola_Base_Node/api folder , which causes several ModuleNotFoundError

Possible Improvement :

  • Add way to track the speed of drone
  • Improve the web interface

Backend with Realtime Database

Drones use their radio link to communicate with their ground stations and controllers. Those radio links can communicate for a limited range. When a drone fly automatically through way points it may go away from radio link. Then ground station unable to monitor that drone any more. We want a system to monitor automatically flying drones using long range communication network β€œLORA” . Its mandatory to uniquely identifying each drone, for that we want to bind unique key to each drone. The final product should be a separate unit which can externally mound on any kind of drone.

Currently we have a system consisting with seperate devices to mount on drones and web system to monitor their locations. That device send data like location, timestamp, and nodeid with AES encryption. This is an one way communication system which sends messages only from drones to the DroLa web System. For further developments we are seeking to improve the system as follows.

We want a new platform to send messages in more general way instead of current fixed message format. Then we can introduce this system to other tracking solutions also. We want to design a bidirectional communication protocol and implement it including message passers for both Lora Node side and web server side.

Current system is running on web sockets, drone locations are collected by Lora receivers and send them to the web server through a web socket server. we want to move to a realtime database instead of using web-sockets.

Required Knowledge: C++, Node Js, Python and ReactJs

MODULE NOT FOUND

While trying to run the program it shows module not found. Due to this issue, it is not possible to run the program. The screenshots of the error are attached below.

capture
capture 2
capture 3

Redesign Drola Web Portal

Drola Web Portal is for Drola registrations and monitoring. According to the system we need to develop separate admin portal for register drones, approve drones and monitor flying drones on real time. Plan is to develop another website for public users to register their drones by themselves and obtaining an unique key for their registered drones.

Drola Admin Web Portal should be communicate with Dlora backend and update the locations of flying drone locations in real time. System should receive real time notifications on when drones entering to restricted area.

Required Knowledge: React, CSS, Node js

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.