new sensor manage code
diff --git a/sensors/api.py b/sensors/api.py
new file mode 100644
index 0000000..f78e6a9
--- /dev/null
+++ b/sensors/api.py
@@ -0,0 +1,47 @@
+import Queue
+import threading
+
+from contextlib import contextmanager
+
+from deploy_sensors import (deploy_and_start_sensors,
+                            stop_and_remove_sensors)
+from protocol import create_protocol, Timeout
+
+
+Empty = Queue.Empty
+
+
+def recv_main(proto, data_q, cmd_q):
+    while True:
+        try:
+            data_q.put(proto.recv(0.1))
+        except Timeout:
+            pass
+        try:
+            val = cmd_q.get(False)
+
+            if val is None:
+                return
+
+        except Queue.Empty:
+            pass
+
+
+@contextmanager
+def start_monitoring(uri, config):
+    deploy_and_start_sensors(uri, config)
+    try:
+        data_q = Queue.Queue()
+        cmd_q = Queue.Queue()
+        proto = create_protocol(uri, receiver=True)
+        th = threading.Thread(None, recv_main, None, (proto, data_q, cmd_q))
+        th.daemon = True
+        th.start()
+
+        try:
+            yield data_q
+        finally:
+            cmd_q.put(None)
+            th.join()
+    finally:
+        stop_and_remove_sensors(config)