Added some Docs
This commit is contained in:
38
README.md
38
README.md
@@ -1,16 +1,22 @@
|
||||
# SeniorAssistant
|
||||
|
||||
## Membri del gruppo
|
||||
|
||||
- Giacomo Bertolazzi, 20015159@studenti.uniupo.it, [Berack96][Jack]
|
||||
- Giulia Vago, 20015091@studenti.uniupo.it, [Giuliavago][Giulia]
|
||||
- Dawit Gulino, 20013954@studenti.uniupo.it, [DawitG96][D]
|
||||
- Stefano Fioretti, 20013886@studenti.uniupo.it, [f19stefano96][Ste]
|
||||
|
||||
## Descrizione
|
||||
Il nostro progetto nasce per aiutare nella quotidianità persone anziane che non possono essere seguite da assistenti e che quindi possono trarre vantaggio da un sistema automatizzato che interagisca attraverso un assistente vocale in modo da permettere al soggetto di controllare i dispositivi collegati alla Home Station. In caso di stress (rilevato attraverso battito cardiaco), le luci vengono soffuse così da creare un ambiente più rilassante e nel caso in cui la situazione non migliori contatti medico o familiari; inoltre viene consigliata in questo caso musica rilassante che il soggetto può avviare con comando vocale. Inoltre il soggetto viene sollecitato vocalmente in caso di sedentarietà. Si mantiene anche il contatto con persone esterne, medico e familiari, i quali possono controllare le attività del soggetto poiché verranno mantenute statistiche su di esse.
|
||||
|
||||
[Jack]:<https://github.com/Berack96>
|
||||
[Giulia]:<https://github.com/Giuliavago>
|
||||
[D]:<https://github.com/DawitG96>
|
||||
[Ste]:<https://github.com/f19stefano96>
|
||||
# SeniorAssistant
|
||||
|
||||
## Membri del gruppo
|
||||
|
||||
- Giacomo Bertolazzi, 20015159@studenti.uniupo.it, [Berack96][Jack]
|
||||
- Giulia Vago, 20015091@studenti.uniupo.it, [Giuliavago][Giulia]
|
||||
- Dawit Gulino, 20013954@studenti.uniupo.it, [DawitG96][D]
|
||||
- Stefano Fioretti, 20013886@studenti.uniupo.it, [f19stefano96][Ste]
|
||||
|
||||
## Descrizione
|
||||
Il nostro progetto nasce per aiutare nella quotidianità persone anziane che non possono essere seguite da assistenti e che quindi possono trarre vantaggio da un sistema automatizzato che interagisca attraverso un assistente vocale in modo da permettere al soggetto di controllare i dispositivi collegati alla Home Station. In caso di stress (rilevato attraverso battito cardiaco), le luci vengono soffuse così da creare un ambiente più rilassante e nel caso in cui la situazione non migliori contatti medico o familiari; inoltre viene consigliata in questo caso musica rilassante che il soggetto può avviare con comando vocale. Inoltre il soggetto viene sollecitato vocalmente in caso di sedentarietà. Si mantiene anche il contatto con persone esterne, medico e familiari, i quali possono controllare le attività del soggetto poiché verranno mantenute statistiche su di esse.
|
||||
|
||||
# TODO
|
||||
- Aggiungere url generato da ngrok sul Webhook di DialogFlow
|
||||
- Implementare la funzione getCurrentBrightness() nella classe Hue
|
||||
- Documentazione per capire meglio (Sensor per esempio manca)
|
||||
|
||||
|
||||
[Jack]: <https://github.com/Berack96>
|
||||
[Giulia]: <https://github.com/Giuliavago>
|
||||
[D]: <https://github.com/DawitG96>
|
||||
[Ste]: <https://github.com/f19stefano96>
|
||||
81
build.gradle
81
build.gradle
@@ -1,39 +1,42 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group 'SeniorAssistant'
|
||||
version '1.0-SNAPSHOT'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
// compile "com.sparkjava:spark-core:2.5.5"
|
||||
compile "com.google.code.gson:gson:2.8.0"
|
||||
// compile "org.xerial:sqlite-jdbc:3.15.1"
|
||||
compile 'org.apache.httpcomponents:httpclient:4.5.3'
|
||||
compile 'com.google.api-client:google-api-client:1.23.0'
|
||||
compile group: 'com.google.oauth-client', name: 'google-oauth-client-jetty', version: '1.11.0-beta'
|
||||
|
||||
|
||||
// z-way-lib and all its dependencies (from https://github.com/pathec/ZWay-library-for-Java)
|
||||
compile files('lib/zway-lib-0.2.9-SNAPSHOT.jar')
|
||||
|
||||
compile 'org.apache.commons:commons-lang3:3.4'
|
||||
compile 'org.eclipse.jetty:jetty-client:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-http:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-io:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-util:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-api:9.3.12.v20160915'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-client:9.3.12.v20160915'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-common:9.3.12.v20160915'
|
||||
compile 'org.slf4j:slf4j-simple:1.7.21'
|
||||
|
||||
//for objectMapper
|
||||
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.5'
|
||||
}
|
||||
plugins {
|
||||
id 'java'
|
||||
}
|
||||
|
||||
group 'SeniorAssistant'
|
||||
version '1.0-SNAPSHOT'
|
||||
|
||||
sourceCompatibility = 1.8
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
testCompile group: 'junit', name: 'junit', version: '4.12'
|
||||
// compile "com.sparkjava:spark-core:2.5.5"
|
||||
compile "com.google.code.gson:gson:2.8.0"
|
||||
// compile "org.xerial:sqlite-jdbc:3.15.1"
|
||||
compile 'org.apache.httpcomponents:httpclient:4.5.3'
|
||||
compile 'com.google.api-client:google-api-client:1.23.0'
|
||||
compile group: 'com.google.oauth-client', name: 'google-oauth-client-jetty', version: '1.11.0-beta'
|
||||
|
||||
|
||||
// z-way-lib and all its dependencies (from https://github.com/pathec/ZWay-library-for-Java)
|
||||
compile files('lib/zway-lib-0.2.9-SNAPSHOT.jar')
|
||||
|
||||
compile 'org.apache.commons:commons-lang3:3.4'
|
||||
compile 'org.eclipse.jetty:jetty-client:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-http:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-io:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty:jetty-util:9.3.11.v20160721'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-api:9.3.12.v20160915'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-client:9.3.12.v20160915'
|
||||
compile 'org.eclipse.jetty.websocket:websocket-common:9.3.12.v20160915'
|
||||
compile 'org.slf4j:slf4j-simple:1.7.21'
|
||||
|
||||
//DialogFlow
|
||||
// compile "ai.api:libai:1.6.12"
|
||||
|
||||
//for objectMapper
|
||||
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.5'
|
||||
}
|
||||
|
||||
9
src/main/java/device/DialogFlow.java
Normal file
9
src/main/java/device/DialogFlow.java
Normal file
@@ -0,0 +1,9 @@
|
||||
package device;
|
||||
|
||||
public class DialogFlow {
|
||||
|
||||
public DialogFlow() {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
package device;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import device.FITBITData.HeartRate;
|
||||
import device.FITBITData.Sleep;
|
||||
import device.FITBITData.Steps;
|
||||
import oauth.AuthFITBIT;
|
||||
|
||||
public class FitBit {
|
||||
|
||||
public static final String BASIC_URL = "https://api.fitbit.com/";
|
||||
public static final String USER = "/user/-/";
|
||||
private static final long MINUTE = 60000; /* 5 minutes in millisec */
|
||||
|
||||
private final AuthFITBIT auth;
|
||||
private final Map<Class<?>, Long> latestRequest = new HashMap<>();
|
||||
private final Calendar calendar = Calendar.getInstance();
|
||||
|
||||
private HeartRate heart = null;
|
||||
private Sleep sleep = null;
|
||||
private Steps steps = null;
|
||||
|
||||
public FitBit() throws Exception {
|
||||
this(new AuthFITBIT());
|
||||
}
|
||||
|
||||
public FitBit(AuthFITBIT auth) {
|
||||
if(auth == null)
|
||||
throw new NullPointerException("I must have an Auth for the FitBit");
|
||||
this.auth = auth;
|
||||
}
|
||||
|
||||
/* passi */
|
||||
public int getSteps() throws IOException {
|
||||
if(shouldUpdateFor(Steps.class)) {
|
||||
long currentMillisec = System.currentTimeMillis();
|
||||
|
||||
steps = auth.run(BASIC_URL + "1" + USER + "activities/steps/date/today/1w.json", Steps.class);
|
||||
latestRequest.put(steps.getClass(), currentMillisec);
|
||||
}
|
||||
return steps.getSteps();
|
||||
}
|
||||
|
||||
/* battito */
|
||||
public double getHeartRate() throws IOException {
|
||||
if(shouldUpdateFor(HeartRate.class)) {
|
||||
long currentMillisec = System.currentTimeMillis();
|
||||
|
||||
String now = getHourMinutes(currentMillisec);
|
||||
String ago = getHourMinutes(currentMillisec-(MINUTE*15));
|
||||
|
||||
if(now.compareTo(ago) < 0)
|
||||
ago = "00:00";
|
||||
|
||||
heart = auth.run(BASIC_URL + "1" + USER + "activities/heart/date/today/1d/1sec/time/"+ago+"/"+now+".json", HeartRate.class);
|
||||
latestRequest.put(heart.getClass(), currentMillisec);
|
||||
}
|
||||
return heart.getAverage();
|
||||
}
|
||||
|
||||
/* sonno */
|
||||
public Object getHoursSleep() throws IOException {
|
||||
if(shouldUpdateFor(Sleep.class)) {
|
||||
long currentMillisec = System.currentTimeMillis();
|
||||
|
||||
sleep = auth.run(BASIC_URL + "1.2" + USER + "sleep/date/today.json", Sleep.class);
|
||||
latestRequest.put(sleep.getClass(), currentMillisec);
|
||||
}
|
||||
return sleep.getMinutesAsleep();
|
||||
}
|
||||
|
||||
private boolean shouldUpdateFor(Class<?> type) {
|
||||
try {
|
||||
long current = System.currentTimeMillis();
|
||||
long latest = latestRequest.get(type);
|
||||
|
||||
if (current - latest > MINUTE * 5)
|
||||
return true;
|
||||
return false;
|
||||
} catch (NullPointerException e) {}
|
||||
return true;
|
||||
}
|
||||
|
||||
private String getHourMinutes(long milliseconds) {
|
||||
calendar.setTimeInMillis(milliseconds);
|
||||
|
||||
int hour = calendar.get(Calendar.HOUR_OF_DAY);
|
||||
int minu = calendar.get(Calendar.MINUTE);
|
||||
return String.format("%02d:%02d", hour, minu);
|
||||
}
|
||||
|
||||
// Device dev = auth.run(BASIC_URL + "devices.json", Device.class);
|
||||
}
|
||||
170
src/main/java/device/Fitbit.java
Normal file
170
src/main/java/device/Fitbit.java
Normal file
@@ -0,0 +1,170 @@
|
||||
package device;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Calendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import device.fitbitdata.HeartRate;
|
||||
import device.fitbitdata.Sleep;
|
||||
import device.fitbitdata.Steps;
|
||||
import oauth.AuthFitbit;
|
||||
|
||||
/**
|
||||
* Classe che permette di ricevere i dati di un particolare account FitBit
|
||||
*/
|
||||
public class Fitbit {
|
||||
|
||||
/**
|
||||
* Url da dove si possono prendere i dati dai vari dispositivi fitbit
|
||||
*/
|
||||
public static final String BASIC_URL = "https://api.fitbit.com/";
|
||||
/**
|
||||
* Utente del fitbit<br>
|
||||
* In questo caso e' universale e prende l'utente che e' attualmente loggato
|
||||
*/
|
||||
public static final String USER = "/user/-/";
|
||||
/**
|
||||
* Un minuto in millisecondi
|
||||
*/
|
||||
private static final long MINUTE = 60000; /* 5 minutes in millisec */
|
||||
|
||||
/**
|
||||
* L'oauth per l'account fitbit
|
||||
*/
|
||||
private final AuthFitbit auth;
|
||||
/**
|
||||
* Una mappa contenente le ultime classi usate nelle richieste effettuate<br>
|
||||
* Una sorta di cache
|
||||
*/
|
||||
private final Map<Class<?>, Long> latestRequest = new HashMap<>();
|
||||
/**
|
||||
* Un calendario in modo da sapere la data per i dati
|
||||
*/
|
||||
private final Calendar calendar = Calendar.getInstance();
|
||||
|
||||
/**
|
||||
* La classe per sapere i dati sul battito cardiaco
|
||||
*/
|
||||
private HeartRate heart = null;
|
||||
/**
|
||||
* La classe per sapere i dati sul sonno
|
||||
*/
|
||||
private Sleep sleep = null;
|
||||
/**
|
||||
* La classe per sapere i dati sui passi effettuati
|
||||
*/
|
||||
private Steps steps = null;
|
||||
|
||||
/**
|
||||
* Crea una istanza di fitbit<br>
|
||||
* Se l'utente non ha ancora accettato i dati richiesti o l'utente non e'
|
||||
* loggato,<br>
|
||||
* verra' aperto il browser in modo che si possano inserire i dati
|
||||
*
|
||||
* @throws Exception Nel caso qualunque cosa andasse storta (vedi messaggio)
|
||||
*/
|
||||
public Fitbit() throws Exception {
|
||||
this.auth = new AuthFitbit();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi i passi che l'utente ha effettuato nell'ultimo giorno
|
||||
*
|
||||
* @return un intero rappresentante i passi effettuati
|
||||
* @throws IOException nel caso la richiesta non vada a buon fine
|
||||
*/
|
||||
public int getSteps() throws IOException {
|
||||
if (shouldUpdateFor(Steps.class))
|
||||
steps = auth.run(BASIC_URL + "1" + USER + "activities/steps/date/today/1w.json", Steps.class);
|
||||
return steps.getSteps();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi il battito cardiaco dell'utente<br>
|
||||
* Il risultato e' una media del battito che l'utente ha avuto negli ultimi 15 minuti
|
||||
*
|
||||
* @return un intero rappresentante la media del battito cardiaco degli ultimi 15 minuti
|
||||
* @throws IOException nel caso la richiesta non vada a buon fine
|
||||
*/
|
||||
public double getHeartRate() throws IOException {
|
||||
return getHeartRate(15);
|
||||
}
|
||||
/**
|
||||
* Ricevi il battito cardiaco dell'utente<br>
|
||||
* Il risultato e' una media del battito che l'utente ha avuto negli ultimi minuti
|
||||
*
|
||||
* @param lastMinutes fino a quanti minuti bisogna tenere conto (positivi se no ritorno -1)
|
||||
* @return un intero rappresentante la media del battito cardiaco degli ultimi minuti specificati
|
||||
* @throws IOException nel caso la richiesta non vada a buon fine
|
||||
*/
|
||||
public double getHeartRate(int lastMinutes) throws IOException {
|
||||
if(lastMinutes<=0)
|
||||
return -1;
|
||||
if (shouldUpdateFor(HeartRate.class)) {
|
||||
long currentMillisec = System.currentTimeMillis();
|
||||
|
||||
String now = getHourMinutes(currentMillisec);
|
||||
String ago = getHourMinutes(currentMillisec - (MINUTE * lastMinutes));
|
||||
|
||||
if (now.compareTo(ago) < 0)
|
||||
ago = "00:00";
|
||||
|
||||
heart = auth.run(
|
||||
BASIC_URL + "1" + USER + "activities/heart/date/today/1d/1sec/time/" + ago + "/" + now + ".json",
|
||||
HeartRate.class);
|
||||
}
|
||||
return heart.getAverage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Ricevi le ore di sonno che l'utente ha fatto nell'ultimo giorno
|
||||
*
|
||||
* @return un intero rappresentante le ore passate a dormire
|
||||
* @throws IOException nel caso la richiesta non vada a buon fine
|
||||
*/
|
||||
public Object getHoursSleep() throws IOException {
|
||||
if (shouldUpdateFor(Sleep.class))
|
||||
sleep = auth.run(BASIC_URL + "1.2" + USER + "sleep/date/today.json", Sleep.class);
|
||||
return sleep.getMinutesAsleep();
|
||||
}
|
||||
|
||||
/**
|
||||
* Semplice classe che controlla che si possa fare l'update o meno di una specifica classe<br>
|
||||
* Se e' possibile fare l'update inserisce la classe nella mappa<br>
|
||||
* In questo modo se questa funzione viene chiamata una seconda volta con lo stesso parametro restituira' falso<br>
|
||||
* a meno che non si aspetti 5 minuti
|
||||
*
|
||||
* @param type la classe da fare l'update
|
||||
* @return vero se si puo' fare l'update
|
||||
*/
|
||||
private boolean shouldUpdateFor(Class<?> type) {
|
||||
try {
|
||||
long current = System.currentTimeMillis();
|
||||
long latest = latestRequest.get(type);
|
||||
|
||||
if(current - latest < MINUTE * 5)
|
||||
return false;
|
||||
} catch (NullPointerException e) {
|
||||
}
|
||||
|
||||
latestRequest.put(heart.getClass(), System.currentTimeMillis());
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Funzione che transforma i millisecondi nel formato "hh:mm"
|
||||
*
|
||||
* @param milliseconds millisecondi da trasformare
|
||||
* @return una stringa nel formato "hh:mm"
|
||||
*/
|
||||
private String getHourMinutes(long milliseconds) {
|
||||
calendar.setTimeInMillis(milliseconds);
|
||||
|
||||
int hour = calendar.get(Calendar.HOUR_OF_DAY);
|
||||
int minu = calendar.get(Calendar.MINUTE);
|
||||
return String.format("%02d:%02d", hour, minu);
|
||||
}
|
||||
|
||||
// Device dev = auth.run(BASIC_URL + "devices.json", Device.class);
|
||||
}
|
||||
@@ -5,30 +5,58 @@ import java.util.Set;
|
||||
|
||||
import support.Rest;
|
||||
|
||||
/**
|
||||
* Classe che permette di controllare le luci Philips Hue
|
||||
*/
|
||||
public class Hue {
|
||||
//private String baseURL = "192.168.0.2";
|
||||
//private String username = "C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx";
|
||||
private String lightsURL;// = baseURL+"/api/"+username+"/lights/";
|
||||
/**
|
||||
* L'url in cui si possono trovare le luci
|
||||
*/
|
||||
private String lightsURL; // = baseURL+"/api/"+username+"/lights/";
|
||||
|
||||
/**
|
||||
* Tutte le luci che sono state registrate dall'url
|
||||
*/
|
||||
private Map<String, ?> allLights;
|
||||
|
||||
public Hue () {
|
||||
this("http://172.30.1.138/api/C0vPwqjJZo5Jt9Oe5HgO6sBFFMxgoR532IxFoGmx/lights/");
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ritorna un insieme contenente tutti i nomi delle luci che si sono trovate
|
||||
*
|
||||
* @return l'insieme dei nomi delle luci
|
||||
*/
|
||||
public Set<String> getNameLights() {
|
||||
return allLights.keySet();
|
||||
}
|
||||
|
||||
/**
|
||||
* Rimuove dal controllo tutte le luci che hanno il nome uguale ad uno contenuto nell'insieme passato
|
||||
*
|
||||
* @param toRemove le luci da rimuovere
|
||||
*/
|
||||
public void removeLights(Set<String> toRemove) {
|
||||
for(String string : toRemove)
|
||||
allLights.remove(string);
|
||||
}
|
||||
|
||||
/**
|
||||
* Accende tutte le luci controllate
|
||||
*/
|
||||
public void turnOn() {
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
@@ -37,9 +65,9 @@ public class Hue {
|
||||
}
|
||||
}
|
||||
|
||||
public int getCurrentLuminiscence() {
|
||||
return 0;
|
||||
}
|
||||
/**
|
||||
* Spegne tutte le luci controllate
|
||||
*/
|
||||
public void turnOff() {
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
@@ -47,8 +75,22 @@ public class Hue {
|
||||
Rest.put(callURL, body, "application/json");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Ritorna la liminosita' attuale delle luci controllate
|
||||
* @return
|
||||
*/
|
||||
public int getCurrentBrightness() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Modifica la luminosita' delle luci a seconda del valore inserito
|
||||
* @param num la luminosita' che si vuole
|
||||
*/
|
||||
public void setBrightness(int num) {
|
||||
if (num<0)
|
||||
num=0;
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
String body = "{ \"bri\" : "+num+" }";
|
||||
@@ -56,14 +98,9 @@ public class Hue {
|
||||
}
|
||||
}
|
||||
|
||||
/*public void setAttribute(String attribute, String value){
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
String body = "{ \""+attribute+"\" : "+value+" }";
|
||||
Rest.put(callURL, body, "application/json");
|
||||
}
|
||||
}*/
|
||||
|
||||
/**
|
||||
* Modifica il colore delle luci in modo da fare un bel effetto arcobaleno continuo
|
||||
*/
|
||||
public void colorLoop() {
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
@@ -72,5 +109,14 @@ public class Hue {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Funzione generale per poter utilizzare qualunque valore, ma non funziona
|
||||
*/
|
||||
/*public void setAttribute(String attribute, String value){
|
||||
for (String light : allLights.keySet()) {
|
||||
String callURL = lightsURL + light + "/state";
|
||||
String body = "{ \""+attribute+"\" : "+value+" }";
|
||||
Rest.put(callURL, body, "application/json");
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
@@ -9,8 +9,14 @@ import support.ZWaySimpleCallback;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
/**
|
||||
* Sensore che permette di registrare vari dati dell'ambiente
|
||||
*/
|
||||
public class Sensor {
|
||||
// init logger
|
||||
|
||||
/**
|
||||
* Logger?
|
||||
*/
|
||||
Logger logger = LoggerFactory.getLogger(Sensor.class);
|
||||
|
||||
// sample RaZberry IP address
|
||||
@@ -24,6 +30,9 @@ public class Sensor {
|
||||
private DeviceList allZWaveDevices;
|
||||
private DeviceList devices;
|
||||
|
||||
/**
|
||||
* Crea un sensore contenente tutti i nodi
|
||||
*/
|
||||
public Sensor() {
|
||||
this(null);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package device.FITBITData;
|
||||
package device.fitbitdata;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package device.FITBITData;
|
||||
package device.fitbitdata;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
@@ -1,4 +1,4 @@
|
||||
package device.FITBITData;
|
||||
package device.fitbitdata;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
@@ -1,4 +1,4 @@
|
||||
package device.FITBITData;
|
||||
package device.fitbitdata;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
@@ -20,7 +20,7 @@ public class Steps {
|
||||
|
||||
for(Map<String, String> map : array)
|
||||
if(map.get("dateTime").equals(strDate))
|
||||
steps = Integer.parseInt(map.get("value"))+1;
|
||||
steps = Integer.parseInt(map.get("value"));
|
||||
}
|
||||
|
||||
public int getSteps() {
|
||||
@@ -24,11 +24,11 @@ import com.google.api.client.util.store.DataStoreFactory;
|
||||
import com.google.api.client.util.store.FileDataStoreFactory;
|
||||
|
||||
|
||||
public class AuthFITBIT {
|
||||
public class AuthFitbit {
|
||||
|
||||
private final HttpRequestFactory requestFactory;
|
||||
|
||||
public AuthFITBIT() throws Exception {
|
||||
public AuthFitbit() throws Exception {
|
||||
DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR);
|
||||
final Credential credential = authorize();
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import org.junit.Test;
|
||||
|
||||
import device.FitBit;
|
||||
import device.Fitbit;
|
||||
|
||||
public class TestFitbit {
|
||||
|
||||
@Test
|
||||
public void test01() throws Exception {
|
||||
FitBit fitBit = new FitBit();
|
||||
Fitbit fitBit = new Fitbit();
|
||||
fitBit.getHoursSleep();
|
||||
|
||||
System.out.println("Today's average heart-rate: "+fitBit.getHeartRate());
|
||||
|
||||
@@ -29,7 +29,7 @@ import java.util.Set;
|
||||
|
||||
while(i<999999) {
|
||||
if (sensor.luminiscenceLevel() < 200) {
|
||||
lights.getCurrentLuminiscence();
|
||||
lights.getCurrentBrightness();
|
||||
lights.setBrightness(200);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user