def SetSecondaryVent():
    v2 = request.form.get('v2Control')
    v2 = int(v2)
    SpiMaster.control(MasterCommands['SetV2'], v2)
    data = {
        'v2Control': v2
    }
    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SetMainVent():
    v1 = request.form.get('v1Control')
    v1 = int(v1)
    SpiMaster.control(MasterCommands['SetV1'], v1)
    data = {
        'v1Control': v1
    }
    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def GetSecurity():
    s1 = 0  #sensor1 security
    s2 = 0  #sensor2 security

    s1 = SpiMaster.request(MasterRequests['GetSS'])
    time.sleep(0.1)
    s2 = SpiMaster.request(MasterRequests['GetSF'])

    data = {
        's1MonitorSecurity': s1[1],
        's2MonitorFlood': s2[1]
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SetT1Temp():
    t1 = request.form.get('t1Control')
    t1 = int(t1)
    if (t1 >= 0) & (t1 <= 40):
        SpiMaster.control(MasterCommands['SetT1'], t1)
        response = 'OK'
    else:
        response = 'FAIL'

    data = {
        'response': response,
        't1Control': t1
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def GetLight():
    l1 = 0  #sensor1
    l2 = 0  #sensor2
    l3 = 0  #sensor3

    l1 = SpiMaster.request(MasterRequests['GetL1'])
    l2 = SpiMaster.request(MasterRequests['GetL2'])
    l3 = SpiMaster.request(MasterRequests['GetL3'])

    data = {
        'l1Monitor': l1[1],
        'l2Monitor': l2[1],
        'l3Monitor': l3[1]
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def GetTemp():
    t1 = 0  #sensor1
    t2 = 0  #sensor2
    t3 = 0  #sensor3

    t1 = SpiMaster.request(MasterRequests['GetT1'])
    time.sleep(0.1)
    t2 = SpiMaster.request(MasterRequests['GetT2'])
    time.sleep(0.1)
    t3 = SpiMaster.request(MasterRequests['GetT3'])

    data = {
        't1Monitor': t1[1],
        't2Monitor': t2[1],
        't3Monitor': t3[1]
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SendSpiDebugMessage():
    global SerialDebugResponse
    print "SendSpiDebugMessage function entered..."
    send_delay = 2  #use such a large value only for tesing with shift register, final walue will have to be much smaller!!!
    varSpiByte0 = request.form.get('sendSpiByte0')
    varSpiByte0 = int(varSpiByte0)
    varSpiByte1 = request.form.get('sendSpiByte1')
    varSpiByte1 = int(varSpiByte1)
    if (varSpiByte0 >= 0) & (varSpiByte0 <= 255) & (varSpiByte1 >=
                                                    0) & (varSpiByte1 <= 255):
        #valid input detected
        SerialDebugResponse = SpiMaster.control(varSpiByte0, varSpiByte1)
    data = {
        'sendSpiByte0': varSpiByte0,
        'sendSpiByte1': varSpiByte1,
        'receiveSpiByte0': SerialDebugResponse[0],
        'receiveSpiByte1': SerialDebugResponse[1],
        'receiveCrc': SerialDebugResponse[2]
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SetL3Light():
    l3r = request.form.get('l3Red')
    l3g = request.form.get('l3Green')
    l3b = request.form.get('l3Blue')
    l3r = int(l3r)
    l3g = int(l3g)
    l3b = int(l3b)
    SpiMaster.control(MasterCommands['SetL3Red'], l3r)
    SpiMaster.control(MasterCommands['SetL3Green'], l3g)
    SpiMaster.control(MasterCommands['SetL3Blue'], l3b)
    data = {
        'l3Red': l3r,
        'l3Green': l3g,
        'l3Blue': l3b
    }
    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SetL2Light():
    l2r = request.form.get('l2Red')
    l2g = request.form.get('l2Green')
    l2b = request.form.get('l2Blue')
    l2r = int(l2r)
    l2g = int(l2g)
    l2b = int(l2b)
    SpiMaster.control(MasterCommands['SetL2Red'], l2r)
    SpiMaster.control(MasterCommands['SetL2Green'], l2g)
    SpiMaster.control(MasterCommands['SetL2Blue'], l2b)
    data = {
        'l2Red': l2r,
        'l2Green': l2g,
        'l2Blue': l2b
    }
    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
def SetL1Light():
    l1r = request.form.get('l1Red')
    l1g = request.form.get('l1Green')
    l1b = request.form.get('l1Blue')
    l1r = int(l1r)
    l1g = int(l1g)
    l1b = int(l1b)

    SpiMaster.control(MasterCommands['SetL1Red'], l1r)
    SpiMaster.control(MasterCommands['SetL1Green'], l1g)
    SpiMaster.control(MasterCommands['SetL1Blue'], l1b)

    data = {
        'l1Red': l1r,
        'l1Green': l1g,
        'l1Blue': l1b
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response
    s2 = SpiMaster.request(MasterRequests['GetSF'])

    data = {
        's1MonitorSecurity': s1[1],
        's2MonitorFlood': s2[1]
    }

    response = app.response_class(response=json.dumps(data),
                                  status=200,
                                  mimetype='application/json')
    return response


#######################################################################

GPIO.cleanup()
GPIO.setmode(GPIO.BCM)
SpiMaster.init()

try:
    if __name__ == "__main__":
        app.run(host='0.0.0.0', port=8080, debug=True)
    while True:
        print "1"
except KeyboardInterrupt:
    SpiMaster.deinit()
    print "GPIO Cleanup..."
    GPIO.cleanup()
    print "Closing Server..."
#ajunge aici dupa ce opresti server-ul