示例#1
0
def env_test_01():
    admin_user = User(name="Administrator",
                      role=ROLE_ADMIN,
                      access_code="1234")
    admin_user.add_registration_code("1234")
    session.add_all([
        admin_user,
        User(name="Chuck Norris", role=ROLE_USER, access_code="1111")
    ])
    print(" - Created users")

    z1 = Zone(name="No delay", description="Alert with no delay")
    z2 = Zone(name="Tamper",
              disarmed_delay=0,
              away_alert_delay=None,
              stay_alert_delay=None,
              description="Sabotage alert")
    z3 = Zone(name="Away/stay delayed",
              away_alert_delay=5,
              stay_alert_delay=5,
              description="Alert delayed when armed AWAY or STAY")
    z4 = Zone(name="Stay delayed",
              stay_alert_delay=5,
              description="Alert delayed when armed STAY")
    z5 = Zone(name="Stay",
              stay_alert_delay=None,
              description="No alert when armed STAY")
    session.add_all([z1, z2, z3, z4, z5])
    print(" - Created zones")

    session.add_all(SENSOR_TYPES)
    print(" - Created sensor types")

    s1 = Sensor(channel=0,
                sensor_type=SENSOR_TYPES[0],
                zone=z3,
                description="Garage")
    s2 = Sensor(channel=1,
                sensor_type=SENSOR_TYPES[2],
                zone=z5,
                description="Test room")
    s3 = Sensor(channel=2,
                sensor_type=SENSOR_TYPES[1],
                zone=z2,
                description="Tamper")
    session.add_all([s1, s2, s3])
    print(" - Created sensors")

    kt1 = KeypadType(1, "DSC", "DSC keybus (DSC PC-1555RKZ)")
    kt2 = KeypadType(2, "WIEGAND", "Wiegand keypad")
    session.add_all([kt1, kt2])
    print(" - Created keypad types")

    k1 = Keypad(keypad_type=kt1)
    session.add_all([k1])
    print(" - Created keypads")

    session.commit()
示例#2
0
def initialize_database(app, db):
    """Drop and restore database in a consistent state"""
    with app.app_context():
        db.drop_all()
        db.create_all()
        first_network = Network(name='First Network', site='DEL18DT')
        first_network.sensors.extend([Sensor(name='Bulkhead 5 Water Level', value=50),
                                      Sensor(name='Bulkhead 7 Water Level', value=20),
                                      Sensor(name='Bulkhead 2 Water Level', value=40)])
        second_network = Network(name='Second Network', site='DEL23DT')
        second_network.sensors.extend([Sensor(name='Rain Sensor Front Level', value=250),
                                       Sensor(name='Rain  Sensor Back Level', value=620)])
        db.session.add(first_network)
        db.session.add(second_network)
        db.session.commit()
示例#3
0
文件: load.py 项目: megacell/phi
def _save_sensor(params):
    try:
        sensor = Sensor(**params)
        sensor.save()
    except:
        print params
        raise
示例#4
0
 def post(self):
     form = SensorCreateForm()
     if not form.validate_on_submit():
         return form.errors, 422
     sensor = Sensor(form.name.data, form.description.data)
     db.session.add(sensor)
     db.session.commit()
     return SensorSerializer(sensor).data, 201
示例#5
0
 def post(self):
     args = parser.parse_args()
     rpiId = int(args.rpiId)
     temp = float(args.temp)
     d = list(map(int, args.date.split('-')))
     d = date(d[0], d[1], d[2])
     t = list(map(int, args.time.split(':')))
     t = time(t[0], t[1])
     sensor = Sensor(rpiId=rpiId, temp=temp, date=d, time=t)
     db.session.add(sensor)
     db.session.commit()
     return {'status': 'OK'}
示例#6
0
def getTask(task_id):
    mariadb_connection = mariadb.connect(user='******',
                                         password='******',
                                         database='PlantHubDB')
    cursor = mariadb_connection.cursor()
    cursor.execute("SELECT * FROM Sensor WHERE ID={}".format(task_id))
    entry = cursor.fetchall()

    data = Sensor(entry[0][0], entry[0][1], entry[0][2])

    closeConnection()
    return data.data
示例#7
0
def new():
    """
  New sensor form to create a sensor.
  """
    form = SensorForm(request.form)
    if form.validate_on_submit():
        sensor = Sensor(form.name.data, form.attribute.data, form.comment.data,
                        form.c_1.data, form.c_2.data)
        db.session.add(sensor)
        db.session.commit()

        flash('You have successfully added a new sensor.', 'success')
        return redirect(url_for('sensors.view', id=sensor.id))
    return render_template('sensors/new.html', form=form)
示例#8
0
def create_sensor():
    data = request.json
    zone = db.session.query(Zone).get(request.json["zoneId"])
    sensor_type = db.session.query(SensorType).get(data["typeId"])
    sensor = Sensor(
        channel=data["channel"],
        zone=zone,
        sensor_type=sensor_type,
        description=data["description"],
    )
    db.session.add(sensor)
    db.session.commit()

    return process_ipc_response(IPCClient().update_configuration())
示例#9
0
def addsensor():
    form = AddSensorForm()
    if form.validate_on_submit():
        with create_session() as session:
            if not check_if_sensor_id_exists(form, session, Sensor):
                sensor = Sensor(place_id=form.sensor_place.data,
                                sensor_id=form.sensor_id.data,
                                gateway_id=form.sensor_gateway.data)
                session.add(sensor)
                update_record_status(form, session, Record)
                flash("Sensor added successfully", "success")
            else:
                flash("Sensor ID already registered in database", "error")
        return redirect(url_for('sensors'))
    return render_template("sensor-add.html", form=form)
示例#10
0
def getTasks(amount):
    mariadb_connection = mariadb.connect(user='******',
                                         password='******',
                                         database='PlantHubDB')
    cursor = mariadb_connection.cursor()
    all_data = []
    cursor.execute("SELECT * FROM Sensor")
    all_entries = cursor.fetchall()

    for row in all_entries:
        entry = Sensor(row[0], row[1], row[2])
        all_data.append(entry.data)

    closeConnection()
    return all_data
示例#11
0
def data(temp, hum, pres, pm2_5, pm10, pwd):
    if pwd == app.config['PASS']:
        now = datetime.now()
        sensor_names = ['temp', 'hum', 'pres', 'PM 2.5', 'PM 10']
        sensor_units = ['°C', '%', 'hPa', 'μg /m³', 'μg /m³']
        values = [temp, hum, pres, pm2_5, pm10]

        for (sensor_name, unit, value) in zip(sensor_names, sensor_units,
                                              values):
            sensor = Sensor.query.filter_by(name=sensor_name).first()
            if sensor is None:
                sensor = Sensor(name=sensor_name, unit=unit)
                db.session.add(sensor)
                db.session.commit()

            data = SensorData(date=time.mktime(now.timetuple()), value=value)
            sensor.data.append(data)
            db.session.add(data)
            db.session.commit()
    return redirect("/", code=303)
示例#12
0
def put_sql(name, value):
    """Connect to sql and put in values."""
    session = Session()

    sensor = session.query(Sensor).filter(Sensor.name == name).first()
    print(sensor)

    if sensor:
        """Make timesensor post."""
        time_data = SensorTimeData(data=value)
        sensor.timedata = sensor.timedata + [time_data]
        session.add(time_data)

        sensor.value = value
        session.add(sensor)
    else:
        sensor = Sensor(name=name, value=value)
        session.add(sensor)

    session.commit()
    session.close()
示例#13
0
def env_live_01():
    session.add_all([
        User(name="Administrator", role=ROLE_ADMIN, access_code="1234"),
        User(name="Chuck.Norris", role=ROLE_USER, access_code="1111"),
    ])
    print(" - Created users")

    z1 = Zone(name="No delay", description="Alert with no delay")
    z2 = Zone(name="Away delayed",
              away_alert_delay=20,
              description="Alert delayed when armed AWAY")
    z3 = Zone(name="Stay delayed",
              stay_alert_delay=20,
              description="Alert delayed when armed STAY")
    z4 = Zone(name="Stay",
              stay_alert_delay=None,
              description="No alert when armed STAY")
    z5 = Zone(name="Away/Stay delayed",
              away_alert_delay=40,
              stay_alert_delay=20,
              description="Alert delayed when armed AWAY/STAY")
    z6 = Zone(name="Tamper",
              disarmed_delay=0,
              away_alert_delay=None,
              stay_alert_delay=None,
              description="Sabotage alert")
    session.add_all([z1, z2, z3, z4, z5, z6])
    print(" - Created zones")

    session.add_all(SENSOR_TYPES)
    print(" - Created sensor types")

    s1 = Sensor(channel=0,
                sensor_type=SENSOR_TYPES[0],
                zone=z5,
                description="Garage")
    s2 = Sensor(channel=1,
                sensor_type=SENSOR_TYPES[0],
                zone=z5,
                description="Hall")
    s3 = Sensor(channel=2,
                sensor_type=SENSOR_TYPES[2],
                zone=z5,
                description="Front door")
    s4 = Sensor(channel=3,
                sensor_type=SENSOR_TYPES[0],
                zone=z3,
                description="Kitchen")
    s5 = Sensor(channel=4,
                sensor_type=SENSOR_TYPES[0],
                zone=z1,
                description="Living room")
    s6 = Sensor(channel=5,
                sensor_type=SENSOR_TYPES[0],
                zone=z4,
                description="Children's room")
    s7 = Sensor(channel=6,
                sensor_type=SENSOR_TYPES[0],
                zone=z4,
                description="Bedroom")
    s8 = Sensor(channel=7,
                sensor_type=SENSOR_TYPES[1],
                zone=z6,
                description="Tamper")
    session.add_all([s1, s2, s3, s4, s5, s6, s7, s8])
    print(" - Created sensors")

    kt1 = KeypadType(1, "DSC", "DSC keybus (DSC PC-1555RKZ)")
    session.add_all([kt1])
    print(" - Created keypad types")

    k1 = Keypad(keypad_type=kt1)
    session.add_all([k1])
    print(" - Created keypads")

    session.commit()
#initialize db with first tenants and sensors
import random
from models import engine, db_session, Base, Tenant, Data, Sensor
Base.metadata.create_all(bind=engine)

#add first user
kate = Tenant(name='kate')
db_session.add(kate)

#add second user
kate_multitenancy = Tenant(name='kate_multitenancy')
db_session.add(kate_multitenancy)

#add sensors
t = Sensor(name='temperature')
db_session.add(t)
e = Sensor(name='electricity')
db_session.add(e)
p = Sensor(name='pressure')
db_session.add(p)

users = [kate, kate_multitenancy]
sensors = [e,p,t]
#add 100 entries
n = 100


for i in range(n):

    v = random.randrange(200)
示例#15
0
def init(db):
    try:
        db.session.query(SensorType).delete()
        db.session.query(Device).delete()
        db.session.query(Sensor).delete()
        db.session.query(Contact).delete()
        db.session.query(Relay).delete()
    except:
        pass

    st_t = SensorType(unit=u'°C',
                      description=u'Temperatura',
                      name='temperature')
    st_h = SensorType(unit=u'%', description=u'Vlažnost', name='humidity')
    st_b = SensorType(unit=u'V', description=u'Baterija', name='battery')

    d_zg = Device(description='Zgoraj')
    d_sp = Device(description='Spodaj')

    zgt = Sensor(sensor_code='ZGT',
                 description='Temperatura (zgoraj)',
                 max_possible_value=40,
                 max_warning_value=33,
                 min_possible_value=-10,
                 min_warning_value=20,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=True,
                 device=d_zg,
                 type=st_t,
                 emit_every=5)

    zgb = Sensor(sensor_code='ZGB',
                 description='Baterija (zgoraj)',
                 max_possible_value=6,
                 min_possible_value=0,
                 min_warning_value=3.3,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=True,
                 device=d_zg,
                 type=st_b,
                 emit_every=10)

    spb = Sensor(sensor_code='SPB',
                 description='Baterija (spodaj)',
                 max_possible_value=6,
                 min_possible_value=0,
                 min_warning_value=3.3,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=True,
                 device=d_sp,
                 type=st_b,
                 emit_every=10)

    spt = Sensor(sensor_code='SPT',
                 description='Temperatura (spodaj)',
                 max_possible_value=40,
                 max_warning_value=34,
                 min_possible_value=-10,
                 min_warning_value=20,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=True,
                 device=d_sp,
                 type=st_t,
                 emit_every=5)

    zgh = Sensor(sensor_code='ZGH',
                 description=u'Vlažnost (zgoraj)',
                 max_possible_value=100,
                 max_warning_value=90,
                 min_possible_value=0,
                 min_warning_value=10,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=False,
                 device=d_zg,
                 type=st_h,
                 emit_every=5)

    sph = Sensor(sensor_code='SPH',
                 description=u'Vlažnost (spodaj)',
                 max_possible_value=100,
                 max_warning_value=90,
                 min_possible_value=0,
                 min_warning_value=10,
                 observable_measurements=3,
                 observable_alarming_measurements=2,
                 enable_warnings=False,
                 device=d_sp,
                 type=st_h,
                 emit_every=5)

    c = Contact(name='Admin', phone='+123456789', email='admin')
    user = User(email='admin')
    user.password = '******'
    user.ping()

    for l in ['A', 'B']:
        for i in range(8):
            code = '%s%d' % (l, i)
            description = 'Rele %s' % code
            db.session.add(
                Relay(description=description,
                      switch_on_text='ON',
                      switch_off_text='OFF'))

    db.session.add(zgt)
    db.session.add(spt)
    db.session.add(zgh)
    db.session.add(sph)
    db.session.add(spb)
    db.session.add(zgb)
    db.session.add(c)
    db.session.add(user)

    db.session.commit()
示例#16
0
from models import Player
from models import Sensor
import datetime, time

bob = Player(0, "Bob", {"name": "Bob","age": 25,"weight": 180,"height": 6.3})
sensor = Sensor(1, "arduino101", "Bob's Helmet")
bob.associate_sensor(sensor)

from flask import Flask, request, jsonify
app = Flask("Sports Medicine Manager")

@app.route('/api/send_event', methods=["POST"])
def send_event():
	sensor.add_datapoint(int(time.time()*1000), float(request.get_data().decode("ascii", "ignore").strip()))
	return 'OK'

@app.route("/api/get_datapoints")
def get_datapoints():
	return jsonify({"data":sensor.data})

@app.route("/api/get_player_bio")
def get_player_bio():
	return jsonify({"info":bob.info})

@app.route('/static/<path:path>')
def send_js(path):
    return send_from_directory('static', path)

if __name__ == '__main__':
	app.run("0.0.0.0")
示例#17
0
import serial
import time
from sys import exit
from models import Arduino, Sensor  #Import models from models.py

try:
    arduino = Arduino()
except Exception as e:
    #Print the erro if it occurs
    print(e)
    exit()

try:
    ldrs = []  #This array stores all of the sensors
    ldrs.append(Sensor(1, arduino))
    ldrs.append(Sensor(2, arduino))

except Exception as e:
    print("Error occured creating sensor")

try:
    #Wait for the arduino to return startup message
    time.sleep(1)
    print(arduino.readBuffer())
    while True:
        req_id = int(input(">>> "))
        if req_id == 0:
            arduino.closeConnection()
            exit()
        #Look if uid exists
        for ldr in ldrs:
示例#18
0
if __name__ == '__main__':

    if len(sys.argv[1:]) != 3:
        raise Exception(
            'the length of the parameters must be 3: Type Name Port')

    # get args
    type_ = sys.argv[1]
    name = sys.argv[2]
    port = int(sys.argv[3])

    if type_ == 'actuator':
        eq = Actuator(external_ip, port, name)
    elif type_ == 'sensor':
        eq = Sensor(external_ip, port, name)
    else:
        raise Exception(f'Received: {type_} must be: actuator or sensor')

    # Run a gRPC server with one thread.
    server = grpc.server(futures.ThreadPoolExecutor(max_workers=1))

    # Adds the servicer class to the server.
    messages_pb2_grpc.add_EquipmentServiceServicer_to_server(eq, server)

    server.add_insecure_port(f'{ip}:{port}')

    server.start()

    print(f'API server started. Listening at {ip}:{port}.')
示例#19
0
def create_sensor():
    sensor = request.get_json()
    sos_res = Sensor().create(sensor)
    response = make_response(sos_res.text, sos_res.status_code)
    response.headers['Content-Type'] = 'application/json; charset=utf-8'
    return response
示例#20
0
def create_update_sensor(message, address, signal_strength):
    try:
        current_time = datetime.datetime.now().replace(microsecond=0)
        name = message[0]
        float = True if message[1] == 'UP' else False
        trip_time = current_time if float else None
        battery = int(message[2]) / 10
        temperature = int(message[3]) / 10

        # delete the sensor if there is data when the same sensor name but different address
        sensor = Sensor.query.filter(Sensor.name == name,
                                     Sensor.address != address).first()
        if sensor:
            db.session.delete(sensor)
            db.session.commit()

        sensor = Sensor.query.filter_by(address=address).first()

        if not sensor:
            # does not exist, create one
            land = Land.query.filter_by(number=1).first()
            sensor = Sensor(name=name,
                            battery=battery,
                            float=float,
                            temperature=temperature,
                            signal_strength=signal_strength,
                            land_id=land.id,
                            address=address,
                            last_update=current_time,
                            trip_time=trip_time)
            db.session.add(sensor)
            db.session.commit()

            # add sensor configs for each config page
            config_pages = Config.query.all()
            for config_page in config_pages:
                sensor_config = SensorConfig(sensor_id=sensor.id,
                                             config_id=config_page.id)
                db.session.add(sensor_config)
        else:
            # exists, update the name and the date
            sensor.name = name
            sensor.status = True
            sensor.float = float
            sensor.trip_time = trip_time
            sensor.battery = battery
            sensor.temperature = temperature
            sensor.signal_strength = signal_strength
            sensor.last_update = current_time
        db.session.commit()

        return {
            'id': sensor.id,
            'name': name,
            'last_update': str(current_time),
            'battery': battery,
            'float': float,
            'temperature': temperature,
            'signal_strength': signal_strength
        }, sensor
    except Exception as e:
        print(e)
        print("INVALID DATA FROM SENSORS")
示例#21
0
from models import Sensor, Arduino, storeReadings
from cred import *
import time
import json
import boto3


def toTemp(current):
    return ((400/61)*float(current)) - (1636/61)

client = boto3.client('kinesis')
arduino = Arduino()

ldrs = [] #This array stores all of the sensors
ldrs.append(Sensor(1, arduino, "sensor1"))
ldrs.append(Sensor(2, arduino, "sensor2"))
ldrs.append(Sensor(3, arduino, "sensor3"))
ldrs.append(Sensor(4, arduino, "sensor4"))

sensor = Sensor(1, arduino, "test")

time.sleep(2)
try:
    while True:
        readings = sensor.getReading()
        reading_dict = json.dumps({'sensor1':toTemp(readings[0]), 'sensor2':toTemp(readings[1]), 'sensor3':toTemp(readings[2]), 'sensor4':toTemp(readings[3])})
        response = client.put_record(StreamName="testStream", Data=reading_dict, PartitionKey="partitionkey")
        print(reading_dict)
except KeyboardInterrupt:
    print("exiting")
    arduino.closeConnection()