Skip to content

Instantly share code, notes, and snippets.

GSoC 2017 Work Product, Vivek Singh Bhadauria - FOSSASIA

This summer, I worked on FOSSASIA's Pocket Science Lab Android App that exposes the various functionalities like Oscilliscope, Programmable Voltage and Current Source, etc of PSLab Hardware Device. It can be used to perform various experiments ranging from school level to engineering.
I added some additional functionalities like In-built oscilloscope and Wave Generation (WIP) using Audio Jack as data interface in Android.

Users need the following things to test app:

  • Android Device which supports USB-Host mode (most modern devices do).
  • OTG Cable
  • PSLab Hardware Device (for core functionalities and performing experiment)
  • Some add-on sensors like MPU6050, BMP180, etc. (for real-time data from sensors)
from flask import Flask, jsonify, request, Response
import json
app = Flask(__name__)
@app.route('/response', methods=['GET'])
def api_response():
data = {
'data': 'test data',
'id': 1
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/', methods=['GET'])
def index():
return jsonify({
'author': 'Vivek Singh Bhadauria',
'author_url': 'http://viveksb007.wordpress.com/',
'base_url': 'zeolearn.com/',
from flask import request
@app.route('/check, methods=['GET', 'POST', 'PUT', 'DELETE'])
def check():
if request.method == 'GET':
return "REQUEST TYPE: GET"
elif request.method == 'POST':
return "REQUEST TYPE: POST"
from flask import Response
import json
@app.route('/response', methods=['GET'])
def api_response():
data = {
'data': 'test data',
'id': 1
}
js = json.dumps(data)
@app.route('/magazines/photos/<number_of_images>', methods=['GET'])
def get_image_links(number_of_images):
image_list = []
# Code for scraping zeolearn magazine section and appending links in image_list
response = requests.get('https://www.zeolearn.com/magazine/')
soup = BeautifulSoup(response.text, 'html.parser')
for tag in soup.find_all('img'):
image_list.append(tag['src'])
image_data = {}
if int(number_of_images) < len(image_list):
from flask import json
@app.route('/messages', methods = ['POST'])
def api_message():
if request.headers['Content-Type'] == 'text/plain':
return "Text Message: " + request.data
elif request.headers['Content-Type'] == 'application/json':
return "JSON Message: " + json.dumps(request.json)
curl -H "Content-type: application/json" -X POST http://127.0.0.1:5000/messages -d '{ "message" : "Test Data" }'
from flask import Flask, request, jsonify
from flask_httpauth import HTTPBasicAuth
from flask_sqlalchemy import SQLAlchemy
import datetime
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:////tmp/test.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
db = SQLAlchemy(app)
auth = HTTPBasicAuth()
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(20), nullable=False)
email = db.Column(db.String(100), unique=True, nullable=False)
def __init__(self, username, password, email):
self.username = username
self.password = password
self.email = email