示例#1
0
	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
			}
示例#2
0
	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
示例#3
0
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}
示例#4
0
	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