From e7dd9162c2a2a3347337cdac139ea89d771e5827 Mon Sep 17 00:00:00 2001 From: DawitG96 <20013954@studenti.uniupo.it> Date: Thu, 6 Sep 2018 15:02:43 +0200 Subject: [PATCH] Fixing - final version of build.gradle - fixed colors - removed Todos --- build.gradle | 2 +- src/main/java/device/DialogFlowWebHook.java | 2 +- src/main/java/device/Hue.java | 44 +++++++------- src/main/java/main/Main.java | 63 ++++++++++++++++++-- src/main/java/oauth/LocalServerReceiver.java | 2 - src/test/java/test/TestLights.java | 2 +- 6 files changed, 83 insertions(+), 32 deletions(-) diff --git a/build.gradle b/build.gradle index d17e623..0a4781d 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,7 @@ dependencies { // Z-way compile files('lib/zway-lib-0.2.9-SNAPSHOT.jar') + compile 'org.apache.commons:commons-lang3:3.8' // Logger compile 'org.slf4j:slf4j-simple:1.7.25' @@ -33,7 +34,6 @@ dependencies { compile "com.sparkjava:spark-core:2.7.2" // Oauth -// compile group: 'org.pac4j', name: 'spark-pac4j', version: '2.3.0' //todo use this insted? compile ( group: 'com.google.oauth-client', name: 'google-oauth-client-jetty', version: '1.23.0') { // don't pull in an old ancient jetty version exclude group: 'org.mortbay.jetty', module: 'jetty' diff --git a/src/main/java/device/DialogFlowWebHook.java b/src/main/java/device/DialogFlowWebHook.java index 2dae642..06e60e9 100644 --- a/src/main/java/device/DialogFlowWebHook.java +++ b/src/main/java/device/DialogFlowWebHook.java @@ -23,7 +23,7 @@ public class DialogFlowWebHook { /** * Un logger per vedere le cose piu' easy */ - private static final Logger LOG = LoggerFactory.getLogger(DialogFlowWebHook.class); + private static final Logger LOG = LoggerFactory.getLogger("WebHook"); /** * Stringa che viene usata se l'azione esiste ma lancia un qualche tipo di errore diff --git a/src/main/java/device/Hue.java b/src/main/java/device/Hue.java index 5e1148f..9ed98df 100644 --- a/src/main/java/device/Hue.java +++ b/src/main/java/device/Hue.java @@ -47,17 +47,17 @@ public class Hue { /** * Riempimento della mappa con i vari colori */ - static { // todo set right colors (in the simulation they are off, maybe in reality are ok) - COLORS.put("giall[oae]", new Double[]{0.475, 0.475}); //wrong + static { + COLORS.put("giall[oae]", new Double[]{0.45, 0.45}); COLORS.put("ross[oae]", new Double[]{0.7, 0.25}); COLORS.put("verd[ei]", new Double[]{0.1, 0.55}); - COLORS.put("blu", new Double[]{0.15, 0.175}); //wrong + COLORS.put("blu", new Double[]{0.12, 0.125}); COLORS.put("rosa", new Double[]{0.45, 0.275}); COLORS.put("viola", new Double[]{0.25, 0.1}); COLORS.put("azzurr[oae]", new Double[]{0.15, 0.25}); - COLORS.put("arancio(ne|ni)?", new Double[]{0.6, 0.35}); //wrong + COLORS.put("arancio(ne|ni)?", new Double[]{0.55, 0.4}); //COLORS.put("nero", new Double[]{1.0, 1.0}); - COLORS.put("bianc(o|a|he)", new Double[]{0.3, 0.25}); //wrong + COLORS.put("bianc(o|a|he)", new Double[]{0.275, 0.3}); } /** @@ -81,24 +81,22 @@ public class Hue { if(allLights.isEmpty()) throw new NullPointerException("Non e' stato possibile connettersi alle luci"); - if(allLights.size() != 0) { - double bri = 0; - double hue = 0; - for (String name: allLights.keySet()) { - Map state = (Map)allLights.get(name).get("state"); - bri += (Double) state.get("bri"); - hue += (Double) state.get("hue"); - } - bri = bri/allLights.size(); - hue = hue/allLights.size(); - - Map map = new HashMap<>(); - map.put("bri", (int)bri); - map.put("hue", (int)hue); - setState(map); - - brightness = (bri*MAX_BRIGHTNESS)/100; + double bri = 0; + double hue = 0; + for (String name: allLights.keySet()) { + Map state = (Map)allLights.get(name).get("state"); + bri += (Double) state.get("bri"); + hue += (Double) state.get("hue"); } + bri = bri/allLights.size(); + hue = hue/allLights.size(); + + Map map = new HashMap<>(); + map.put("bri", (int)bri); + map.put("hue", (int)hue); + setState(map); + + brightness = (bri*MAX_BRIGHTNESS)/100; } /** @@ -220,7 +218,7 @@ public class Hue { Map map = new HashMap<>(); map.put(attribute, value); if(transition) - map.put("transition", 20); + map.put("transition", 200); setState(map); } diff --git a/src/main/java/main/Main.java b/src/main/java/main/Main.java index 9dec698..50c1c58 100644 --- a/src/main/java/main/Main.java +++ b/src/main/java/main/Main.java @@ -5,6 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import support.Database; +import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; @@ -25,7 +26,16 @@ public class Main { private static Sensor sensor = null; /** - * Funzione principale, qui si creano tutte le classi che verranno utilizzate. + * Funzione principale, qui si creano tutte le classi che verranno utilizzate.
+ * Si possono passare dei parametri usando -(nome parametro)::(valore parametro)
+ * Ogni parametro deve esser separato da uno o piu spazi
+ * Parametri possibili:
+ *
    + *
  • hueAddress
  • + *
  • hueUser
  • + *
  • sensorNode
  • + *
  • sensorLog
  • + *
* @param args per ora nulla, ma forse in futuro si potrebbe mettere roba */ public static void main(String[] args) { @@ -46,7 +56,8 @@ public class Main { sensor = new Sensor(sensorNode); if(sensorLog>0) - startSensorLog(sensorLog); + startSensorLog(sensorLog); + startHueAutoBrightness(); } catch (Exception e) { LOG.warn(e.getMessage()); } @@ -64,7 +75,6 @@ public class Main { e.printStackTrace(); } - startHueAutoBrightness(); startWebhook(); } catch (Exception e) { LOG.error(e.getMessage()); @@ -132,7 +142,7 @@ public class Main { while(notInterrupted) { try { sensor.update((seconds/2) * 1000); - LOG.info("Luminosità rilevata: " + sensor.getBrightnessLevel()); + LOG.info("Luminosita' rilevata: " + sensor.getBrightnessLevel()); } catch (InterruptedException e) { e.printStackTrace(); notInterrupted = false; @@ -151,6 +161,51 @@ public class Main { // se troppo bassa alzare la luci di poco // se troppo alta abbassare le luci // se l'utente modifica la luminosita' delle luci allora non fare nulla per almeno 20/30 minuti o di piu + /* + Thread thread = new Thread(new Runnable() { + @Override + public synchronized void run() { + boolean notInterrupted = true; + Calendar calendar = Calendar.getInstance(); + while(notInterrupted) { + calendar.setTimeInMillis(System.currentTimeMillis()); + int bright = sensor.getBrightnessLevel(); + int hour = calendar.get(Calendar.HOUR_OF_DAY); + + if(hour >= 21 && hour<7) { + lights.setBrightness(5); + } + else if(hour >= 19 && hour<21) { + lights.setBrightness(99); + } + else if(hour >= 7 && hour<19) { + lights.setBrightness(0); + } + + try { + wait(120000); + } catch (InterruptedException e) { + e.printStackTrace(); + notInterrupted = false; + } + + if(hour >= 21 && hour<7) + lights.setBrightness(5); + else if(bright >= 0 && bright <= 20) + lights.setBrightness(90); + else if(bright >= 21 && bright <= 40) + lights.setBrightness(60); + else if(bright >= 41 && bright <= 60) + lights.setBrightness(40); + else + lights.turnOff(); + + } + } + }, "auto-brightness"); + + thread.start(); + */ } // TODO AUTO:{C} Gestione luci a seconda del battito cardiaco diff --git a/src/main/java/oauth/LocalServerReceiver.java b/src/main/java/oauth/LocalServerReceiver.java index 73bdfb2..72d7423 100644 --- a/src/main/java/oauth/LocalServerReceiver.java +++ b/src/main/java/oauth/LocalServerReceiver.java @@ -12,8 +12,6 @@ * the License. */ -// todo test if fitbit request still works with this class - package oauth; import com.google.api.client.extensions.java6.auth.oauth2.VerificationCodeReceiver; diff --git a/src/test/java/test/TestLights.java b/src/test/java/test/TestLights.java index edab853..6e16c37 100644 --- a/src/test/java/test/TestLights.java +++ b/src/test/java/test/TestLights.java @@ -40,7 +40,7 @@ public class TestLights { } lights.setBrightness(Hue.MAX_BRIGHTNESS); - lights.colorLoop(); // todo not working in simulator + lights.colorLoop(); this.wait(TIMEOUT*10); // change colors