Lights, Doc, Db
- Now lights works with DialogFlow - Database automatically update data from user's fitbit - Doc is written well (well.. it is ok) - Added logging here and there - Removed unused code - Improved code reading and code quality
This commit is contained in:
@@ -22,36 +22,36 @@ public class Hue {
|
||||
*/
|
||||
public static final Map<String, Double[]> COLORS = new HashMap<>();
|
||||
|
||||
// todo set right colors
|
||||
static {
|
||||
COLORS.put("giallo", new Double[]{0.55, 0.45});
|
||||
COLORS.put("rosso", new Double[]{0.7, 0.25});
|
||||
COLORS.put("verde", new Double[]{0.15, 0.65});
|
||||
COLORS.put("blu", new Double[]{0.0, 0.0});
|
||||
COLORS.put("rosa", new Double[]{0.45, 0.15});
|
||||
COLORS.put("viola", new Double[]{0.25, .1});
|
||||
COLORS.put("azzurro", new Double[]{0.15, 0.25});
|
||||
COLORS.put("arancione", new Double[]{0.63, 0.35});
|
||||
//COLORS.put("nero", new Double[]{1.0, 1.0});
|
||||
COLORS.put("bianco", new Double[]{0.35, 0.3});
|
||||
}
|
||||
|
||||
//private String baseURL = "192.168.0.2";
|
||||
//private String username = "C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx";
|
||||
/**
|
||||
* L'url in cui si possono trovare le luci
|
||||
*/
|
||||
private String lightsURL; // = baseURL+"/api/"+username+"/lights/";
|
||||
private final String lightsURL;
|
||||
|
||||
/**
|
||||
* Tutte le luci che sono state registrate dall'url
|
||||
*/
|
||||
private Map<String, ?> allLights;
|
||||
private final Map<String, Map<String, Object>> allLights;
|
||||
|
||||
/**
|
||||
* L'ultima luminosita' impostata
|
||||
*/
|
||||
private int brightness = 0;
|
||||
private double brightness = 0;
|
||||
|
||||
/**
|
||||
* 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});
|
||||
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});
|
||||
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});
|
||||
//COLORS.put("nero", new Double[]{1.0, 1.0});
|
||||
COLORS.put("bianc(o|a|he)", new Double[]{0.3, 0.25});
|
||||
}
|
||||
|
||||
/**
|
||||
* Cerca le luci Philips Hue a ll'indirizzo <a href="http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/">http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/</a>
|
||||
@@ -61,23 +61,31 @@ public class Hue {
|
||||
}
|
||||
|
||||
/**
|
||||
* Cerca le luci Philips Hue nell'indirizzo specificato e con l'utente specificato
|
||||
* @param ip l'indirizzo IP
|
||||
* Cerca le luci Philips Hue nell'indirizzo specificato e con l'utente specificato.<br>
|
||||
* Una volta trovate le luci le setta tutte alla stessa luminosita' e allo stesso colore<br>
|
||||
* (per ora fa una media e poi assegna il valore risultante a tutte)
|
||||
* @param ip l'indirizzo IP (seguito dalla porta se e' diversa dalla solita 8000)
|
||||
* @param user l'utente
|
||||
*/
|
||||
public Hue(String ip, String user) {
|
||||
this("http://" + ip + "/api/" + user + "/lights/");
|
||||
}
|
||||
lightsURL = "http://" + ip + "/api/" + user + "/lights/";
|
||||
allLights = (Map<String, Map<String, Object>>)Rest.get(lightsURL);
|
||||
|
||||
/**
|
||||
* Inizializza la classe cercando tutte le luci all'indirizzo url specificato
|
||||
*
|
||||
* @param url l'indirizzo da inserire delle luci Hue
|
||||
*/
|
||||
public Hue (String url) {
|
||||
lightsURL = url;
|
||||
allLights = Rest.get(lightsURL);
|
||||
// Todo brightness initial, maybe by default 50% or 75% of the total
|
||||
if(allLights.size() != 0) {
|
||||
double bri = 0;
|
||||
double hue = 0;
|
||||
for (String name: allLights.keySet()) {
|
||||
Map<String, Object> state = (Map<String, Object>)allLights.get(name).get("state");
|
||||
bri += (Double) state.get("bri");
|
||||
hue += (Double) state.get("hue");
|
||||
}
|
||||
bri = bri/allLights.size();
|
||||
hue = hue/allLights.size();
|
||||
setState("bri", String.valueOf(bri));
|
||||
setState("hue", String.valueOf(hue));
|
||||
|
||||
brightness = (bri*MAX_BRIGHTNESS)/100;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -85,9 +93,7 @@ public class Hue {
|
||||
*
|
||||
* @return l'insieme dei nomi delle luci
|
||||
*/
|
||||
public Set<String> getNameLights() {
|
||||
return allLights.keySet();
|
||||
}
|
||||
public Set<String> getNameLights() { return allLights.keySet(); }
|
||||
|
||||
/**
|
||||
* Rimuove dal controllo tutte le luci che hanno il nome uguale ad uno contenuto nell'insieme passato
|
||||
@@ -102,95 +108,90 @@ public class Hue {
|
||||
/**
|
||||
* Accende tutte le luci controllate
|
||||
*/
|
||||
public void turnOn() {
|
||||
setState("on", "true");
|
||||
}
|
||||
public void turnOn() { setState("on", "true"); }
|
||||
|
||||
/**
|
||||
* Spegne tutte le luci controllate
|
||||
*/
|
||||
public void turnOff() {
|
||||
setState("on", "false");
|
||||
}
|
||||
public void turnOff() { setState("on", "false"); }
|
||||
|
||||
/**
|
||||
* Ritorna la liminosita' attuale delle luci controllate
|
||||
* @return
|
||||
*/
|
||||
public int getCurrentBrightness() {
|
||||
return brightness;
|
||||
}
|
||||
public double getCurrentBrightness() { return brightness; }
|
||||
|
||||
/**
|
||||
* Modifica la luminosita' delle luci a seconda del valore inserito
|
||||
* @param num la luminosita' che si vuole
|
||||
* @param num la luminosita' che si vuole da (0 a 100)
|
||||
*/
|
||||
public void setBrightness(int num) {
|
||||
public void setBrightness(double num) {
|
||||
if (num<0)
|
||||
num=0;
|
||||
setState("bri", String.valueOf(num));
|
||||
else if (num>100)
|
||||
num=100;
|
||||
|
||||
setState("bri", String.valueOf( (num*MAX_BRIGHTNESS)/100) );
|
||||
brightness = num;
|
||||
}
|
||||
|
||||
/**
|
||||
* Dinuisce la luminosita' delle luci controllate della percentuale che viene passata
|
||||
* @param percentage la percentuale di diminuzione
|
||||
* Aumenta la luminosita' delle luci controllate della percentuale che viene passata
|
||||
* @param percentage la percentuale di aumento della luminosita'
|
||||
*/
|
||||
public void increaseBrightness(int percentage) {
|
||||
public void increaseBrightness(double percentage) {
|
||||
if (percentage<0)
|
||||
percentage = 0;
|
||||
else if (percentage>100)
|
||||
percentage = 100;
|
||||
setBrightness(brightness + (percentage*MAX_BRIGHTNESS)/100);
|
||||
setBrightness(brightness + percentage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Aumenta la luminosita' delle luci controllate del 10%
|
||||
* Aumenta la luminosita' delle luci controllate del 15%
|
||||
*/
|
||||
public void increaseBrightness() {
|
||||
increaseBrightness(10);
|
||||
}
|
||||
public void increaseBrightness() { increaseBrightness(15); }
|
||||
|
||||
/**
|
||||
* Dinuisce la luminosita' delle luci controllate della percentuale che viene passata
|
||||
* @param percentage la percentuale di diminuzione
|
||||
* @param percentage la percentuale di diminuzione della luminosita'
|
||||
*/
|
||||
public void decreaseBrightness(int percentage) {
|
||||
if (percentage<0)
|
||||
percentage = 0;
|
||||
else if (percentage>100)
|
||||
percentage = 100;
|
||||
setBrightness(brightness - (percentage*MAX_BRIGHTNESS)/100);
|
||||
setBrightness(brightness - percentage);
|
||||
}
|
||||
|
||||
/**
|
||||
* Dinuisce la luminosita' delle luci controllate del 10%
|
||||
* Dinuisce la luminosita' delle luci controllate del 15%
|
||||
*/
|
||||
public void decreaseBrightness() {
|
||||
decreaseBrightness(10);
|
||||
}
|
||||
public void decreaseBrightness() { decreaseBrightness(15); }
|
||||
|
||||
public void changeColor(String colorName) {
|
||||
String hueColor = GsonFactory.getDefaultFactory().getGson().toJson(COLORS.get(colorName));
|
||||
setState("xy", hueColor);
|
||||
for (String regex: COLORS.keySet())
|
||||
if(colorName.matches("(?i)" + regex))
|
||||
setState("xy", GsonFactory.getDefaultFactory().getGson().toJson(COLORS.get(regex)));
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifica il colore delle luci in modo da fare un bel effetto arcobaleno continuo
|
||||
*/
|
||||
public void colorLoop() {
|
||||
setState("effect", "colorloop");
|
||||
}
|
||||
public void colorLoop() { setState("effect", "colorloop"); }
|
||||
|
||||
/**
|
||||
* Funzione generale per poter utilizzare qualunque valore, ma non funziona<br>
|
||||
* Da testare, visto che mi sembra strano che non funzi...
|
||||
* Da testare, visto che mi sembra strano che non funzi...<br>
|
||||
* e invece funziona.
|
||||
*/
|
||||
public void setState(String attribute, String value){
|
||||
for (String light : allLights.keySet())
|
||||
for (String light : allLights.keySet()) {
|
||||
Map<String, Object> state = (Map<String, Object>)allLights.get(light).get("state");
|
||||
Rest.put(lightsURL + light + "/state",
|
||||
"{ \"" + attribute + "\" : " + value + " }",
|
||||
"application/json");
|
||||
"{ \"" + attribute + "\" : " + value + ", \"transitiontime\": 10 }", // todo check transition
|
||||
"application/json");
|
||||
state.put(attribute, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user