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(); + } } - }