diff --git a/restserver.py b/restserver.py
new file mode 100755
index 0000000000000000000000000000000000000000..9df8c40689cda2eb915b9519616eb6642a61c1aa
--- /dev/null
+++ b/restserver.py
@@ -0,0 +1,140 @@
+#!flask/bin/python
+# -*- coding: utf-8 -*-
+from flask import Flask, jsonify, abort, request
+from pymongo import MongoClient
+from bson.json_util import dumps
+from pprint import pprint
+
+import os
+import json
+import sys
+import time
+import datetime 
+
+#from OpenSSL import SSL
+
+#SECRET_KEY = 'GBT93m!$.2_mDs245XcV-eWZ'
+#context = SSL.Context(SSL.SSLv23_METHOD)
+#context.use_privatekey_file('server.key')
+#context.use_certificate_file('server.cert')
+
+#Global vars
+app = Flask(__name__)
+PASSWORD = "labolabo"
+USER = "labo"
+CLIENT = None
+DB = None
+COLLECTION = {}
+CONTAINER_NAME = 'smarthepia'
+ip_addr = sys.argv[1]
+
+#openstack_user     = sys.argv[2] # username:tenant
+#openstack_pwd      = sys.argv[3] # password :)
+#openstack_region   = 'RegionOne' # default region of HepiaCloud
+#openstack_auth_url = 'http://hepiacloud.hesge.ch:5000/v3'
+
+def cleanIds(t):
+    for el in t:
+        del el["_id"]
+        return t
+
+def getControllersTable(controller):
+    try:
+        return COLLECTION[controller]
+    except:
+        return None
+
+@app.route('/getLastSensorValue/<string:controller>/<int:sensor_id>', methods=['GET'])
+def routeGetLast(controller,sensor_id):
+    return dumps(cleanIds(list(getLastSensorValue(controller,sensor_id))))
+
+@app.route('/getLastSensorsValues/<string:controller>', methods=['GET'])
+def routeGetLastValues(controller):
+    if controller=='pi1':
+        nb=[2,3,4,5,6,7,14,15,16,17,18,19,28]
+    elif controller=='pi2':
+        nb=[2,3,4,5,6,7,8,9,10,11]
+    else:
+        nb=[2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]
+    list1="["+dumps(cleanIds(list(getLastSensorValue(controller,nb[0]))))
+    for sensor in nb[1:]:
+        list1+=","+dumps(cleanIds(list(getLastSensorValue(controller,sensor))))
+    return list1+"]"
+
+@app.route('/getSensorValuesInLastHours/<string:controller>/<int:sensor_id>/<int:hours>', methods=['GET'])
+def routeGetInLastHours(controller,sensor_id, hours):
+    return dumps([cleanIds(list(getSensorValuesInLastNHours(controller,sensor_id,hours))[::5]),cleanIds(list(getLastSensorValue(controller,sensor_id)))])
+
+def getSensorValuesBetweenDates(controller, sensor_id, from_date, to_date):
+    col = getControllersTable(controller)
+    if col == None:
+        return []
+    from_ts = time.mktime(time.strptime(from_date, '%d-%m-%Y:%H:%M'))
+    to_ts   = time.mktime(time.strptime(to_date, '%d-%m-%Y:%H:%M'))
+    print from_ts, to_ts
+    if from_ts >= to_ts:
+        return []
+    return col.find({
+        "sid":sensor_id ,
+        "ts" : { 
+            "$gt" : from_ts,
+            "$lt" : to_ts
+            }
+    }).sort("ts", 1)
+
+
+def getSensorValuesInLastNHours(controller,sensor_id, nhours):
+    col = getControllersTable(controller)
+    if col == None:
+        return []
+    if nhours > 72:
+        nhours = 72
+    ts = time.time() - nhours*3600
+    print datetime.datetime.fromtimestamp(int(ts))
+    return col.find({
+        "sid":sensor_id ,
+        "ts" : { 
+            "$gt" : ts
+            }
+    }).sort("ts", 1)
+
+def getLastSensorValue(controller,sensor_id):
+    col = getControllersTable(controller)
+    if col == None:
+        return []
+    return col.find({"sid":sensor_id}).sort("_id" , -1).limit(1)
+
+
+@app.after_request
+def after_request(response):
+    response.headers.add('Access-Control-Allow-Origin', '*')
+    return response
+
+if __name__ == '__main__':
+    CLIENT = MongoClient(ip_addr, 27017)
+    #CLIENT.labo.authenticate(USER,PASSWORD)
+    DB = CLIENT.smarthepia
+
+    #DB COLLECTIONS WHITELIST
+    COLLECTION["pi1"] = DB.pi1
+    COLLECTION["pi2"] = DB.pi2
+    COLLECTION["pi3"] = DB.pi3
+
+#    context = ('server.cert', 'server.key')
+    app.run(debug=False,host='0.0.0.0',port=18000,threaded=True)
+    '''
+            #24h -> 60kb w/ ids, 40 w/o
+            #48h -> 120kb w/ids, 80 w/o
+            # => ids en string = 33% string length
+            a = list(getLastSensorValue("9"))[0]
+            print "Last value : "
+            print str(a["ts"]) +" "+ str(datetime.datetime.fromtimestamp(int(a["ts"])))
+            
+            b = list(getSensorValuesInLastNHours("6",48))
+            print len(b)
+            print sys.getsizeof(dumps(b))
+            print sys.getsizeof(dumps(cleanIds(b)))
+            
+            for i in b:
+            print str(int(i["ts"]))+ " "+ str(datetime.datetime.fromtimestamp(int(i["ts"])))
+    '''