def seed_node(site_id = None, alias = None, latitude = None, longitude = None): if site_id: site = Site.query.filter_by(id = site_id).first() else: site = Site.create(name = 'Techrice site {}'.format(uuid4().hex)) if not alias: alias = 'Techrice node {}'.format(uuid4().hex) node = Node.create(name = alias, site = site, latitude = latitude, longitude = longitude) solar = Sensor.create(node = node, sensortype = SensorType.query.filter_by(name = 'solar voltage').first(), name = 'vsol') battery = Sensor.create(node = node, sensortype = SensorType.query.filter_by(name = 'battery voltage').first(), name = 'vbat') temperature = Sensor.create(node = node, sensortype = SensorType.query.filter_by(name = 'DHT11 temperature').first(), name = 'temperature') humidity = Sensor.create(node = node, sensortype = SensorType.query.filter_by(name = 'DHT11 humidity').first(), name = 'humidity') sonar = Sensor.create(node = node, sensortype = SensorType.query.filter_by(name = 'sonar HC SR-04').first(), name = 'sonar') header = Header.get_header(node_id = node.id) print header return { 'node': 'name: {}, id: {}, longitude: {}, latitude: {}'.format(node.name, node.id, node.longitude, node.latitude), 'sensors': map(lambda s: 'name: {}, id: {}'.format(s.name, s.id), node.sensors), 'header' : header }
def __init__(self, sensor_id, start_time, wait_interval = 60): Process.__init__(self) self.daemon = True self.wait_interval = wait_interval sensor = Sensor.query.filter(Sensor.id == sensor_id).first() if sensor: self.sensor = sensor else: self.sensor = Sensor.create(name = 'started at %s'%datetime.utcnow().ctime()) print '*********** Created new sensor' print self.sensor
def seed_site(sensors = 1, days = 7, interval_seconds = 3600): site = Site.create(name = 'seeded_site') node = Node.create(name = 'seeded_node', site = site, latitude = 35.146623 + random() / 100.0, longitude = 139.9835682 + random() / 100.0) sensortype = SensorType.create(name = 'HC SR-04', unit = 'cm') for i in range(sensors): sensor = Sensor.create(sensortype = sensortype, node = node, name = 'water distance %s'%i) timestamp = datetime.utcnow() - timedelta(days = 7) data = loggeobrowngen() n_readings = 0 while timestamp < datetime.utcnow(): Reading.create(sensor = sensor, value = data.next(), timestamp = timestamp) timestamp += timedelta(seconds = interval_seconds) n_readings += 1 data.close() return {'site': site, 'node': node}
def post(self): parser = reqparse.RequestParser(bundle_errors = True) parser.add_argument('node_id', type=int, location='form', required=True, help='<int> node_id required') parser.add_argument('sensortype_id', type=int, location='form', required=True, help='<int> sensortype_id required') parser.add_argument('name', type=int, location='form', required=False, help='<int> sensortype_id optional') args = parser.parse_args() node = Node.query.filter_by(id = args['node_id']).first() if not node: return jsonify(ApiError('node {} not found'.format(args['node_id']))) sensortype = SensorType.query.filter_by(id = args['sensortype_id']).first() if not sensortype: return jsonify(ApiError('sensortype {} not found'.format(args['sensortype_id']))) sensor = Sensor.create(node = node, sensortype = sensortype, name = args['name']) if sensor: return jsonify(ApiObjects(sensor.json())) else: return jsonify(ApiObjects())
from models import User, Sensor, Reading from time import sleep from datetime import datetime, timedelta import random sensors = { "Termometer (mock)": ("Celsius", "Temperature"), "Hygrometer (mock)": ("%", "Humidity"), "Manometer (mock)": ("bar", "Pressure") } users = ["John", "Alex", "Rob", "Matt"] for sensor_name, (unit, quantity) in sensors.items(): Sensor.create(sensor_name, quantity) # For the sake of tests for sensor_name, (unit, quantity) in sensors.items(): for i in range(120, 180, 1): t = datetime(2020, 11, 26, 17, i % 60, 0) Reading.create(str(random.randint(20, 27)), unit, Sensor.find(sensor_name).id, timestamp=t) # Let's have 4 readings per hour start_date = datetime.utcnow() - timedelta(days=4) now = datetime.utcnow() sampling_interval = timedelta(minutes=15) for sensor_name, (unit, quantity) in sensors.items(): sample_date = start_date