diff --git a/app/src/BluetoothJavaServer/.classpath b/app/src/BluetoothJavaServer/.classpath
new file mode 100644
index 0000000000000000000000000000000000000000..5cebf5cc1c6958b8801cd4dbb975da4c1c77b91f
--- /dev/null
+++ b/app/src/BluetoothJavaServer/.classpath
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="src" path="lib"/>
+	<classpathentry exported="true" kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="lib" path="lib/bluecove-2.1.1-SNAPSHOT.jar" sourcepath="lib/bluecove-2.1.1-SNAPSHOT-sources.zip"/>
+	<classpathentry kind="lib" path="lib/bluecove-gpl-2.1.1-SNAPSHOT.jar" sourcepath="lib/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/app/src/BluetoothJavaServer/.project b/app/src/BluetoothJavaServer/.project
new file mode 100644
index 0000000000000000000000000000000000000000..07df06987e1333593e726607b565c5811b0f8251
--- /dev/null
+++ b/app/src/BluetoothJavaServer/.project
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>BluetoothJavaServer</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/app/src/BluetoothJavaServer/.settings/org.eclipse.jdt.core.prefs b/app/src/BluetoothJavaServer/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000000000000000000000000000000000000..8000cd6ca6142c8827db81f47ca38a3d5d7e2eaf
--- /dev/null
+++ b/app/src/BluetoothJavaServer/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,11 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.6
diff --git a/app/src/BluetoothJavaServer/BluetoothJavaServer.iml b/app/src/BluetoothJavaServer/BluetoothJavaServer.iml
new file mode 100644
index 0000000000000000000000000000000000000000..c2518c9c0165950a5edbb7a702ef4603378f5031
--- /dev/null
+++ b/app/src/BluetoothJavaServer/BluetoothJavaServer.iml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+  <component name="NewModuleRootManager" inherit-compiler-output="true">
+    <exclude-output />
+    <content url="file://$MODULE_DIR$">
+      <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+    </content>
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+    <orderEntry type="library" name="bin" level="project" />
+    <orderEntry type="library" name="lib" level="project" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT-sources.zip b/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT-sources.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9c6cd413d27df787b905384383881e5e9f9ec156
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT-sources.zip differ
diff --git a/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT.jar b/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT.jar
new file mode 100644
index 0000000000000000000000000000000000000000..88f27886761f8a5c72734a685ee603f5d15644c0
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/bluecove-2.1.1-SNAPSHOT.jar differ
diff --git a/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip b/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip
new file mode 100644
index 0000000000000000000000000000000000000000..43c375cd3d17a0377e37007d6230c14b6dfe5e11
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip differ
diff --git a/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT.jar b/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT.jar
new file mode 100644
index 0000000000000000000000000000000000000000..58357e1ab6a0eb6b651d438f63fcbc44d1cca187
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/bluecove-gpl-2.1.1-SNAPSHOT.jar differ
diff --git a/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothConnection.class b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothConnection.class
new file mode 100644
index 0000000000000000000000000000000000000000..5c84c4bebc658a0df07d1bad2988406fedafdb78
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothConnection.class differ
diff --git a/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothServiceUuids.class b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothServiceUuids.class
new file mode 100644
index 0000000000000000000000000000000000000000..ba6e5100d1ab2d2c221bcd2e88ec96f0d4ec99e6
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothServiceUuids.class differ
diff --git a/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothStreamParseThread.class b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothStreamParseThread.class
new file mode 100644
index 0000000000000000000000000000000000000000..c40d496b80cf0a09aa9ca67745421174c5b15259
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/BluetoothStreamParseThread.class differ
diff --git a/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/MyDiscoveryListener.class b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/MyDiscoveryListener.class
new file mode 100644
index 0000000000000000000000000000000000000000..6524f9e70fc40ef59136e767ad0f88ae394bdaf4
Binary files /dev/null and b/app/src/BluetoothJavaServer/bin/edu/kufpg/bluetooth/server/MyDiscoveryListener.class differ
diff --git a/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT-sources.zip b/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT-sources.zip
new file mode 100644
index 0000000000000000000000000000000000000000..9c6cd413d27df787b905384383881e5e9f9ec156
Binary files /dev/null and b/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT-sources.zip differ
diff --git a/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT.jar b/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT.jar
new file mode 100644
index 0000000000000000000000000000000000000000..88f27886761f8a5c72734a685ee603f5d15644c0
Binary files /dev/null and b/app/src/BluetoothJavaServer/lib/bluecove-2.1.1-SNAPSHOT.jar differ
diff --git a/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip b/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip
new file mode 100644
index 0000000000000000000000000000000000000000..43c375cd3d17a0377e37007d6230c14b6dfe5e11
Binary files /dev/null and b/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT-sources.zip differ
diff --git a/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT.jar b/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT.jar
new file mode 100644
index 0000000000000000000000000000000000000000..58357e1ab6a0eb6b651d438f63fcbc44d1cca187
Binary files /dev/null and b/app/src/BluetoothJavaServer/lib/bluecove-gpl-2.1.1-SNAPSHOT.jar differ
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java
new file mode 100644
index 0000000000000000000000000000000000000000..cf567cf37fb6b52284750881469b839d9c6d3547
--- /dev/null
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothConnection.java
@@ -0,0 +1,34 @@
+package edu.kufpg.bluetooth.server;
+
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+
+public class BluetoothConnection {
+	private String deviceAddress;
+	private DataInputStream inputStream;
+	private DataOutputStream outputStream;
+	
+	public BluetoothConnection(String deviceAddress, DataInputStream inputStream) {
+		this.deviceAddress = deviceAddress;
+		this.inputStream = inputStream;
+	}
+	public String getDeviceAddress() {
+		return deviceAddress;
+	}
+	public void setBluetoothAddress(String deviceAddress) {
+		this.deviceAddress = deviceAddress;
+	}
+	public DataInputStream getInputStream() {
+		return inputStream;
+	}
+	public void setInputStream(DataInputStream inputStream) {
+		this.inputStream = inputStream;
+	}
+	public DataOutputStream getOutputStream() {
+		return outputStream;
+	}
+	public void setOutputStream(DataOutputStream outputStream) {
+		this.outputStream = outputStream;
+	}
+	
+}
\ No newline at end of file
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java
new file mode 100644
index 0000000000000000000000000000000000000000..560e813692cb83561c02fe19d184ab734731e3d9
--- /dev/null
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothServiceUuids.java
@@ -0,0 +1,28 @@
+package edu.kufpg.bluetooth.server;
+
+public enum BluetoothServiceUuids {
+	SDP(0x0001),
+	RFCOMM(0x0003),
+	OBEX(0x0008),	
+	HTTP(0x000C),	
+	L2CAP(0x0100),	
+	BNEP(0x000F),	
+	SERIAL_PORT(0x1101),
+//	ServiceDiscoveryServerServiceClassID	0x1000	16-bit
+//	BrowseGroupDescriptorServiceClassID	0x1001	16-bit
+	PUBLIC_BROWSE_GROUP(0x1002),
+	OBEX_OBJECT_PUSH(0x1105),
+	OBEX_FILE_TRANSFER(0x1106),
+	PERSONAL_AREA_NETWORKING_USER(0x1115),
+	NETWORK_ACCESS_POINT(0x1116),
+	GROUP_NETWORK(0x1117);
+	
+	long hexValue;
+	private BluetoothServiceUuids(long hexValue) {
+		this.hexValue = hexValue;
+	}
+	
+	public long getHexValue() {
+		return hexValue;
+	}
+}
\ No newline at end of file
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java
new file mode 100644
index 0000000000000000000000000000000000000000..4b8e57fe82733e29ea3bff44f2ffb9c356417048
--- /dev/null
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/BluetoothThread.java
@@ -0,0 +1,73 @@
+package edu.kufpg.bluetooth.server;
+
+import java.io.EOFException;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+import sun.misc.IOUtils;
+
+class BluetoothStreamParseThread extends Thread {
+	private BluetoothConnection connection;
+	private boolean keepGoing = true;
+	
+	public BluetoothStreamParseThread(BluetoothConnection connection) {
+		this.connection = connection;
+	}
+	
+	@Override
+	public void run() {
+		System.out.println("hey c parti");
+		// If there are custom settings to be written to each headset, add them at this point
+//		try {
+//			connection.getOutputStreamWriter().write(MindwaveSerialPacket.Codes.DISCONNECT.getHexValue());
+//		} catch (IOException e1) {
+//			// TODO Auto-generated catch block
+//			e1.printStackTrace();
+//		}
+		
+		while (keepGoing) {
+			System.out.println("hi");
+			byte b;
+			try {
+				// Each packet must start with two SYNC bytes in a row
+				
+
+				System.out.println("New packet found");
+				byte[] payload = new byte[100];
+				connection.getInputStream().read(payload);
+				String str = new String(payload, StandardCharsets.UTF_8);
+				System.out.println("payload : " + str);
+				
+				
+				connection.getOutputStream().write("SOUND".getBytes());
+
+			} catch (IOException e) {
+				System.out.println("Could not read stream" + e);
+			}
+		}
+		
+		// If we reach this point the thread is shutting down, so try to disconnect from the headset
+	}
+	
+	public void stopThread() {
+		keepGoing = false;
+	}
+	
+	@Override
+	protected void finalize() throws Throwable {
+		super.finalize();
+		
+		if(null != connection) {
+			if(null != connection.getInputStream()) {
+				connection.getInputStream().close();
+			}
+			if(null != connection.getOutputStream()) {
+				try {
+					connection.getOutputStream().flush();
+				} catch(IOException e) { e.printStackTrace(); }
+				connection.getOutputStream().close();
+			}
+		}
+	}
+	
+}
\ No newline at end of file
diff --git a/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java
new file mode 100644
index 0000000000000000000000000000000000000000..9c671c6ed3b10780639712140f936682fe7a1cab
--- /dev/null
+++ b/app/src/BluetoothJavaServer/src/edu/kufpg/bluetooth/server/MyDiscoveryListener.java
@@ -0,0 +1,177 @@
+package edu.kufpg.bluetooth.server;
+
+import java.io.BufferedReader;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.bluetooth.DataElement;
+import javax.bluetooth.DeviceClass;
+import javax.bluetooth.DiscoveryAgent;
+import javax.bluetooth.DiscoveryListener;
+import javax.bluetooth.LocalDevice;
+import javax.bluetooth.RemoteDevice;
+import javax.bluetooth.ServiceRecord;
+import javax.bluetooth.UUID;
+import javax.microedition.io.Connector;
+import javax.microedition.io.StreamConnection;
+import javax.obex.ClientSession;
+import javax.obex.HeaderSet;
+import javax.obex.Operation;
+import javax.obex.ResponseCodes;
+
+
+public class MyDiscoveryListener implements DiscoveryListener{
+    
+    private static Object lock=new Object();
+    public ArrayList<RemoteDevice> devices;
+    
+    public MyDiscoveryListener() {
+        devices = new ArrayList<RemoteDevice>();
+    }
+    
+
+
+    @Override
+    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass arg1) {
+        String name;
+        try {
+            name = btDevice.getFriendlyName(false);
+        } catch (Exception e) {
+            name = btDevice.getBluetoothAddress();
+        }
+        
+        devices.add(btDevice);
+        System.out.println("device found: " + name);
+        
+    }
+
+    @Override
+    public void inquiryCompleted(int arg0) {
+        synchronized(lock){
+            lock.notify();
+        }
+    }
+
+   
+    @Override
+    public void serviceSearchCompleted(int arg0, int arg1) {
+        synchronized (lock) {
+            lock.notify();
+        }
+    }
+
+    @Override
+    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
+    	System.out.println("hey ! " + servRecord);
+    	for(ServiceRecord s : servRecord) {
+    		System.out.println("-------"+ s + "-------");
+    	}
+    	serviceRecords.addAll(Arrays.asList(servRecord));
+       // for (int i = 0; i < servRecord.length; i++) {
+          //  String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
+          //  if (url == null) {
+            //    continue;
+          //  }
+          
+          /*
+        int i=0;
+    	System.out.println("enter the device number \n");
+    	BufferedReader br = new BufferedReader( new InputStreamReader(System.in));
+    	try {
+			String s = br.readLine();
+            i = Integer.parseInt(s);
+		} catch (IOException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		} 
+          
+          String url = servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
+            DataElement serviceName = servRecord[i].getAttributeValue(0x0100);
+            if (serviceName != null) {
+                System.out.println("service " + serviceName.getValue() + " found " + url);
+                
+                //if(serviceName.getValue().equals("OBEX Object Push")){
+                   if(true){
+                    sendMessageToDevice(url);                
+                }
+            } else {
+                System.out.println("service found " + url);
+            }
+            */
+          
+       // }
+    }
+    
+    private static void sendMessageToDevice(String serverURL){
+    	// TO DO
+    }
+
+    static DiscoveryListener listener = new MyDiscoveryListener();
+    final static List<ServiceRecord> serviceRecords = new ArrayList<ServiceRecord>();
+    final static List<BluetoothConnection> connections = new ArrayList<BluetoothConnection>();
+    
+    /******************MAIN********************/
+    
+    public static void main(String[] args) {
+        
+        try{
+        	UUID serialPortUuid = new UUID(BluetoothServiceUuids.SERIAL_PORT.getHexValue());
+    		UUID[] desiredServiceUuids = new UUID[] { serialPortUuid };
+            LocalDevice localDevice = LocalDevice.getLocalDevice();
+            DiscoveryAgent agent = localDevice.getDiscoveryAgent();
+            RemoteDevice[] devices = agent.retrieveDevices(DiscoveryAgent.PREKNOWN);
+            for(RemoteDevice d : devices) {
+            	if(d.getBluetoothAddress().equals("201611073171")) {
+            		System.out.println("Thingz trouvé");
+            		synchronized(lock) {
+        				int result = agent.searchServices(null, desiredServiceUuids, d, listener);
+        				if( DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE == result) {
+        					System.out.println(" but it could not be reached");
+        					continue;
+        				}
+        				lock.wait();
+        				
+        				
+        				System.out.println("service records found");
+        				
+        				if(null != serviceRecords && serviceRecords.size() > 0) {
+        					System.out.println("YA DES SERVICES");
+        					for(ServiceRecord serviceRecord: serviceRecords) {
+        						String connectionUrl = serviceRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); // I have no idea what these args are
+        						StreamConnection connection;
+        						try {
+        							connection = (StreamConnection)Connector.open(connectionUrl);
+        							DataInputStream inputStream = new DataInputStream(connection.openDataInputStream());
+        							BluetoothConnection bluetoothConnection = new BluetoothConnection(d.getBluetoothAddress(), inputStream);
+        							bluetoothConnection.setOutputStream(new DataOutputStream(connection.openOutputStream()));
+        							connections.add(bluetoothConnection);
+        							System.out.println("Connected to " + d.getBluetoothAddress());
+        						} catch (IOException e) {
+        							System.out.println("Could not connect to " + d.getBluetoothAddress() + ": " + e.getMessage());
+        							e.printStackTrace();
+        						}
+        					}
+        				}
+        			}
+            	}
+            }
+            
+            if(connections.size() > 0) { // we are connected
+            	System.out.println("start");
+            	BluetoothStreamParseThread t = new BluetoothStreamParseThread(connections.get(0));
+            	t.start();
+            }
+          } catch (Exception e) {
+            e.printStackTrace();
+        }
+        
+        
+    }  
+    
+}
\ No newline at end of file
diff --git a/core/thingz.ino.txt b/core/thingz.ino.txt
index 8331a8da2aff16585914d6ed31424f39aa41222b..35362afda2d71946877b1aac62be44d8e2c0ef2f 100644
--- a/core/thingz.ino.txt
+++ b/core/thingz.ino.txt
@@ -5,12 +5,18 @@
 #include "Luminosite.h"
 #include "Bluetooth.h"
 #include "Son.h"
+#include "Potentiometer.h"
 #define SPAN 3000
 #define HEADER_LIGHT_ON "LIGHT"
 #define HEADER_SOUND_ON "SOUND"
-#define REMAINING_TIME 10000
+#define REMAINING_TIME 300000 // 5MIN
+#define DATASPAN 300000 // 5MIN
+#define ALARMSPAN 10000 // 10SEC
 #define FAb4 740
 #define LAb4 932
+#define BT_NAME "Thingz-INSA"
+#define BT_PASSWORD "1234"
+
 /*
 Thingz prend ses mesures et envoie les données à l'appli java (toutes les 5mins par ex)
 l'appli java est une IHM configurable qui :
@@ -30,32 +36,29 @@ Bouton monBouton1;
 Led maLed1;
 Meteo meteo;
 Screen monEcran1;
-Bluetooth bluetooth;
 Luminosite luminosite;
+Potentiometer pot;
 Son buzzer;
+Bluetooth bluetooth;
+
 int humi;
 int lumi;
 int temp;
+int humiTerre;
+int dataTimeStamp;
 unsigned long timeStamp;
-boolean ledHasToBeTurnedOn;
+boolean ledHasBeenTurnedOn;
+boolean alarmHasBeenTurnedOn;
 unsigned long timePushed;
 unsigned long alarmTimeStamp;
+unsigned long lightTimeStamp;
 
-void setup()
-{
-  temp = 0;
-  lumi = 0;
-  humi = 0;
-  timeStamp = 0;
-  ledHasToBeTurnedOn = false;
-  timePushed = 0;
-  alarmTimeStamp = 0;
-}
 
 void updateSensors(){
     temp = meteo.temperature();
     lumi = luminosite.etat();
     humi = meteo.getHumidity();
+    humiTerre = pot.etat();
 }
 void display(){
     monEcran1.setContrast(70, false);
@@ -64,18 +67,23 @@ void display(){
     monEcran1.printMsg(((String)"TEMP : ") + temp,2);
     monEcran1.printMsg(((String)"HUMI : ") + humi,3);
     monEcran1.printMsg(((String)"LUMI : ") + lumi,4);
+    monEcran1.printMsg(((String)"TERRE : ") + humiTerre,5);
 }
 
-void sendBluetoothDataToServer(){
-    
+void sendBluetoothDataToServer(int humi, int lumi, int temp, int humiTerre){
+    String msg = String(humi) + ";" + String(lumi) + ";" + String(temp) + ";" + String(humiTerre);
+    bluetooth.send(msg);
 }
 
-void dealWithSound(String data){
-    if(0){ // on weekend then water
-        
-    } else { // on weekday then trigger the alarm for 5min
+void dealWithSound(){
         alarmTimeStamp = millis();
-    }
+        alarmHasBeenTurnedOn = true;
+}
+
+void dealWithLight(){
+        lightTimeStamp = millis();
+        ledHasBeenTurnedOn = true;
+        maLed1.allume();
 }
 
 void receiveFromBluetooth() {
@@ -86,10 +94,10 @@ void receiveFromBluetooth() {
 	}
 
 	if (buffer.startsWith(HEADER_LIGHT_ON)){
-	    // DO NOTHING YET
+	    dealWithLight();
 	}
 	else if (buffer.startsWith(HEADER_SOUND_ON)){
-	    dealWithSound(buffer); // change
+	    dealWithSound();
 	}
 }
 
@@ -99,11 +107,49 @@ void fireAlarm(){
   buzzer.tone(LAb4,200);
 }
 
+
+void displayConnect() {
+	monEcran1.clear();
+	//monEcran1.printMsg(" CONNECT TO", 2);
+	Serial.println(" CONNECT TO");
+	//monEcran1.printMsg("  TABLET...", 3);
+	Serial.println("  PC...");
+}
+
+void connect() {
+	displayConnect();
+	bluetooth.acceptConnection(BT_NAME);
+}
+
+
+void setup()
+{
+  temp = 0;
+  lumi = 0;
+  humi = 0;
+  humiTerre = 0;
+  timeStamp = 0;
+  
+  ledHasBeenTurnedOn = false;
+  alarmHasBeenTurnedOn = false;
+  timePushed = 0;
+  alarmTimeStamp = 0;
+  dataTimeStamp = 0;
+  lightTimeStamp = 0;
+  
+  bluetooth.setPassword(BT_PASSWORD);
+  connect();
+}
+
+
 void loop()
 {
 
+receiveFromBluetooth();
+
+// IF WE PUSHED THE BUTTON IN THE LAST 5 MIN
 if(millis() - timePushed < REMAINING_TIME){
-  if(millis() - timeStamp > SPAN){
+  if(millis() - timeStamp > SPAN){ // REFRESH EVERY 3 SECONDS
       timeStamp = millis();
         display();
   }
@@ -114,13 +160,27 @@ if(millis() - timePushed < REMAINING_TIME){
   
   if (monBouton1.estTenuAppuye()) {
      timePushed = millis();
-     maLed1.inverse();
   }
   
-  if(millis() - alarmTimeStamp < REMAINING_TIME && millis() > REMAINING_TIME){
-      fireAlarm();
+  if(millis() - dataTimeStamp > DATASPAN){
+      dataTimeStamp = millis();
+      sendBluetoothDataToServer(humi,lumi,temp,humiTerre);
+  }
+  
+  if(alarmHasBeenTurnedOn){
+      if(millis() - alarmTimeStamp < ALARMSPAN){
+        fireAlarm();
+      } else {
+          alarmHasBeenTurnedOn = false;
+      }
+  }
+  
+    if(ledHasBeenTurnedOn){
+      if(millis() - lightTimeStamp > ALARMSPAN){
+          ledHasBeenTurnedOn = false;
+          maLed1.eteint();
+      }
   }
-
 }