Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Backend sprint 2 #129

Closed
wants to merge 54 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
ed5d087
Added anydesk install
PrabhanshuAttri Mar 7, 2020
214d558
Merge pull request #53 from gcivil-nyu-org/master
daisycrego Mar 8, 2020
126b224
added vim temporary files to gitignore
PrabhanshuAttri Mar 8, 2020
ba9edbe
added display resolution for remote access
PrabhanshuAttri Mar 8, 2020
a490690
Added essentials packages to script
PrabhanshuAttri Mar 8, 2020
b0faeb9
Merge branch 'master' into feat/setup
PrabhanshuAttri Mar 8, 2020
068d79b
Move all changes from sprints 0 and 1 to class repo.
daisycrego Mar 9, 2020
d9f628a
Remove erroneous test.
daisycrego Mar 9, 2020
ac4560b
Black reformat.
daisycrego Mar 9, 2020
3c1e103
Add test of pit crew view.
daisycrego Mar 9, 2020
cb56609
Merge pull request #58 from gcivil-nyu-org/getOverChanges
daisycrego Mar 9, 2020
919778a
Remove unused piece of selenium test suite.
daisycrego Mar 9, 2020
86232f2
Merge branch 'frontend-team' into getOverChanges
daisycrego Mar 9, 2020
ea45c66
Merge pull request #61 from gcivil-nyu-org/getOverChanges
sunnybansal Mar 9, 2020
a355093
Updating event feature to conform to the new AGEvent model provided b…
daisycrego Mar 9, 2020
2a90576
Issue #11: Configure sensors feature:
daisycrego Mar 9, 2020
060fbeb
Merge branch 'frontend-team' into configureSensors
daisycrego Mar 9, 2020
2514eab
Fixed errorin test for create_event
dandipietrantonio Mar 10, 2020
6a221d6
Black & flake8 formatting.
daisycrego Mar 10, 2020
659dc6d
Remove jack's backend helper files.
daisycrego Mar 10, 2020
e7eb75e
Refactor sensor tests to be more modular by adding helper functions …
daisycrego Mar 10, 2020
6b02829
Add test for GET and POST to CreateEventView. Small refactor of event…
daisycrego Mar 10, 2020
70bfc2d
Remove TestEventModel class from event tests. These will be implement…
daisycrego Mar 10, 2020
d3c6fb2
Black and flake8
daisycrego Mar 10, 2020
7e6b6de
Merge pull request #72 from gcivil-nyu-org/configureSensors
sunnybansal Mar 10, 2020
b80c0e5
Issue #11: Add validation to Create Sensor form. Validations: sensor …
daisycrego Mar 10, 2020
52c4336
added grafana localhost
tianrunw Mar 11, 2020
1a85651
Merge pull request #79 from gcivil-nyu-org/grafana
daisycrego Mar 11, 2020
4cb82ca
Merge branch 'frontend-team' into configureSensors
daisycrego Mar 11, 2020
e8bb2b0
Merge pull request #80 from gcivil-nyu-org/configureSensors
tianrunw Mar 11, 2020
8f4ceaa
Merge pull request #56 from gcivil-nyu-org/feat/setup
PrabhanshuAttri Mar 11, 2020
c5a8b9c
Merge pull request #85 from gcivil-nyu-org/sync-master
PrabhanshuAttri Mar 11, 2020
0a4f1ff
Added port scanning script
PrabhanshuAttri Mar 11, 2020
effcd3c
clean up
PrabhanshuAttri Mar 11, 2020
804e060
Merge pull request #88 from gcivil-nyu-org/feat/radio-com
MichaelLally Mar 11, 2020
28ccbaa
added #! to the script
PrabhanshuAttri Mar 11, 2020
9109450
added nmap to pi setup
PrabhanshuAttri Mar 11, 2020
58b8683
Added after setup instructions
PrabhanshuAttri Mar 11, 2020
e604f90
Added hardware README.md
PrabhanshuAttri Mar 11, 2020
563fd89
Merge pull request #84 from gcivil-nyu-org/hardware-team
daisycrego Mar 11, 2020
3083247
Merge pull request #89 from gcivil-nyu-org/feat/setup
ab7289 Mar 11, 2020
2522cce
Merge pull request #91 from gcivil-nyu-org/hardware-team
daisycrego Mar 11, 2020
f2b8af5
Issue #67: Add tests of Configure Sensors View for invalid POST reque…
daisycrego Mar 12, 2020
a1e12fc
Reformatting.
daisycrego Mar 12, 2020
3c4af3b
Issue #67: Add test to Configure Sensors view: sensor name already ta…
daisycrego Mar 12, 2020
8c001c5
Merge pull request #105 from gcivil-nyu-org/configureSensors
dandipietrantonio Mar 12, 2020
a979e43
Issue #67: Fix error with test
daisycrego Mar 12, 2020
a87a75d
Issue #67: One more test fix.
daisycrego Mar 12, 2020
3ebbb88
Merge branch 'frontend-team' into configureSensors
daisycrego Mar 12, 2020
64488c8
Merge pull request #108 from gcivil-nyu-org/configureSensors
dandipietrantonio Mar 12, 2020
5d33a9f
Merge branch 'master' into frontend-team
daisycrego Mar 12, 2020
f1feb9b
Merge pull request #111 from gcivil-nyu-org/configureSensors
daisycrego Mar 12, 2020
c1e9c6a
Merge pull request #112 from gcivil-nyu-org/frontend-team
daisycrego Mar 12, 2020
aba80dc
Resolved conflicts by adding new features from backend/develop to master
Mar 14, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 4 additions & 1 deletion .gitignore
Expand Up @@ -133,4 +133,7 @@ env/

.vscode/
staticfiles/
db.sqlite3
db.sqlite3

# Vim temporary files
*.swp
18 changes: 14 additions & 4 deletions .travis.yml
Expand Up @@ -3,9 +3,22 @@ language: python
python:
- '3.6'

addons:
firefox: latest

dist: xenial
services:
- xvfb

services:
- postgresql

before_install:
- wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
- mkdir geckodriver
- tar -xzf geckodriver-v0.26.0-linux64.tar.gz -C geckodriver
- export PATH=$PATH:$PWD/geckodriver

install:
- pip install --upgrade pip
- pip install -r requirements.txt
Expand All @@ -23,7 +36,4 @@ script:

after_script:
- coveralls

notifications:
slack: gcivil-nyu:ahgpmz0a0XgrrUU3E9kPk9kZ

- cat geckodriver.log
130 changes: 130 additions & 0 deletions hardware/CommunicationsPi/find_port.py
@@ -0,0 +1,130 @@
#!/usr/bin/env python3
import sys
import argparse
import serial
import serial.tools.list_ports

def is_usb_serial(port, args):
if port.vid is None:
return False
if not args.vid is None:
if port.vid != args.vid:
return False
if not args.pid is None:
if port.pid != args.pid:
return False
if not args.vendor is None:
if not port.manufacturer.startswith(args.vendor):
return False
if not args.serial is None:
if not port.serial_number.startswith(args.serial):
return False
if not args.intf is None:
if port.interface is None or not args.intf in port.interface:
return False
return True


def extra_info(port):
extra_items = []
if port.manufacturer:
extra_items.append("vendor '{}'".format(port.manufacturer))
if port.serial_number:
extra_items.append("serial '{}'".format(port.serial_number))
if port.interface:
extra_items.append("intf '{}'".format(port.interface))
if extra_items:
return ' with ' + ' '.join(extra_items)
return ''

def getPort():
for port in serial.tools.list_ports.comports():
if is_usb_serial(port, None):
print(port)
print(port.device)
return
return

def main():
"""The main program."""
parser = argparse.ArgumentParser(
prog="find-port.py",
usage="%(prog)s [options] [command]",
description="Find the /dev/tty port for a USB Serial devices",
)
parser.add_argument(
"-l", "--list",
dest="list",
action="store_true",
help="List USB Serial devices currently connected"
)
parser.add_argument(
"-s", "--serial",
dest="serial",
help="Only show devices with the indicated serial number",
default=None,
)
parser.add_argument(
"-n", "--vendor",
dest="vendor",
help="Only show devices with the indicated vendor name",
default=None
)
parser.add_argument(
"--pid",
dest="pid",
action="store",
help="Only show device with indicated PID",
default=None
)
parser.add_argument(
"-v", "--verbose",
dest="verbose",
action="store_true",
help="Turn on verbose messages",
default=False
)
parser.add_argument(
"--vid",
dest="vid",
action="store",
help="Only show device with indicated VID",
default=None
)
parser.add_argument(
'-i', '--intf',
dest='intf',
action='store',
help='Shows devices which conatin the indicated interface string',
default=None
)
args = parser.parse_args(sys.argv[1:])

if args.verbose:
print('pyserial version = {}'.format(serial.__version__))
print(' vid =', args.vid)
print(' pid =', args.pid)
print('serial =', args.serial)
print('vendor =', args.vendor)

if args.list:
detected = False
for port in serial.tools.list_ports.comports():
if is_usb_serial(port, args):
print('USB Serial Device {:04x}:{:04x}{} found @{}\r'.format(
port.vid, port.pid,
extra_info(port), port.device))
detected = True
if not detected:
print('No USB Serial devices detected.\r')
return

for port in serial.tools.list_ports.comports():
if is_usb_serial(port, args):
print(port)
print(port.device)
return
sys.exit(1)

if __name__ == "__main__":
main()
16 changes: 16 additions & 0 deletions hardware/README.md
@@ -0,0 +1,16 @@
# Hardware Firmware

This directory contains the firmware for data collection.

Sub-directories and their usage

- `CommunicationsPi`: files related to radio and internet communications

- `SensorPi`: files related to Sensors

- `setup`: files related to initial setup


#### Credits

- [Dave Hylands](https://github.com/dhylands/dotfiles/blob/master/bin/find_port.py)
52 changes: 51 additions & 1 deletion hardware/setup/raspberrypi-common.sh
@@ -1,13 +1,63 @@
#!/bin/bash

function showStatus() {
printf "\n${1}\n"
}

showStatus 'Running Raspberry Pi Common Setup'

cd ~/Downloads

showStatus 'Updating system...'
sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get autoremove -y

showStatus 'Enabling VNC'
sudo raspi-config nonint do_vnc 0

showStatus 'Enabling SSH'
sudo raspi-config nonint do_ssh 0

showStatus 'Completed Raspberry Pi Common Setup'
showStatus 'Setting screen resolution for remote access'
sudo raspi-config nonint do_resolution 2 16

showStatus 'Installing essentials'

showStatus 'Installing vim'
sudo apt-get install vim -y

showStatus 'Installing curl and wget'
sudo apt-get install curl wget -y

showStatus 'Installing htop'
sudo apt-get install git htop -y

showStatus 'Installing screen'
sudo apt-get install screen -y

showStatus 'Installing nmap'
sudo apt-get install nmap -y

showStatus 'Installing AnyDesk'
wget https://download.anydesk.com/rpi/anydesk_5.5.4-1_armhf.deb
sudo dpkg -i anydesk*.deb
sudo apt-get install -f
sudo systemctl daemon-reload

cd ~/

echo "Completed Raspberry Pi Common Setup

Your Raspberry Pi is update to date. The following packages were installed and enabled:
- SSH: remote secure shell
- VNC: remote access on the same network, works without internet
- AnyDesk: remote access via internet
- Vim: file editing in SSH
- curl and wget: for file downloads and ping, Rasbian comes with these.
- htop: an interactive process viewer for Unix systems
- screen: virtual terminals to run tasks in background
- nmap: for scanning IP of devices connected in the network


NOTE!!!

- Changing HOSTNAME of Raspberry Pi from raspberrypi would also change url for communication server. Default URL for communication server is http://raspberrypi.local"
16 changes: 10 additions & 6 deletions mercury/forms.py
Expand Up @@ -2,7 +2,7 @@
engine to accept input for various features of the site"""
from django import forms
from mercury.models import (
Event,
AGEvent,
TemperatureSensor,
AccelerationSensor,
WheelSpeedSensor,
Expand All @@ -13,18 +13,22 @@

class EventForm(forms.ModelForm):
class Meta:
model = Event
model = AGEvent
fields = "__all__"
widgets = {
"name": forms.TextInput(attrs={"id": "post-event-name", "required": True}),
"location": forms.TextInput(
attrs={"id": "post-event-location", "required": True}
"event_name": forms.TextInput(
attrs={"id": "post-event-name", "required": True}
),
"date": forms.DateInput(
"event_date": forms.DateInput(
attrs={"id": "post-event-date", "required": True, "type": "date"}
),
"comments": forms.Textarea(
attrs={"id": "post-event-comments", "required": False}
"event_description": forms.Textarea(
attrs={"id": "post-event-description", "required": False},
),
"event_location": forms.TextInput(
attrs={"id": "post-event-location", "required": True}
),
}

Expand Down
23 changes: 15 additions & 8 deletions mercury/migrations/0007_event.py
Expand Up @@ -6,19 +6,26 @@
class Migration(migrations.Migration):

dependencies = [
('mercury', '0006_delete_simulateddata'),
("mercury", "0006_delete_simulateddata"),
]

operations = [
migrations.CreateModel(
name='Event',
name="Event",
fields=[
('id', models.AutoField(auto_created=True, primary_key=True,
serialize=False, verbose_name='ID')),
('event_name', models.CharField(max_length=100, unique=True)),
('event_location', models.CharField(max_length=100, null=True)),
('date', models.DateTimeField()),
('comments', models.TextField(null=True)),
(
"id",
models.AutoField(
auto_created=True,
primary_key=True,
serialize=False,
verbose_name="ID",
),
),
("event_name", models.CharField(max_length=100, unique=True)),
("event_location", models.CharField(max_length=100, null=True)),
("date", models.DateTimeField()),
("comments", models.TextField(null=True)),
],
),
]
8 changes: 4 additions & 4 deletions mercury/migrations/0008_auto_20200225_1553.py
Expand Up @@ -6,14 +6,14 @@
class Migration(migrations.Migration):

dependencies = [
('mercury', '0007_event'),
("mercury", "0007_event"),
]

operations = [
migrations.AlterField(
model_name='event',
name='event_location',
field=models.CharField(default='Mexico', max_length=100),
model_name="event",
name="event_location",
field=models.CharField(default="Mexico", max_length=100),
preserve_default=False,
),
]