From b981725265b8c6155b4cad85649562127fdd0fb4 Mon Sep 17 00:00:00 2001 From: Elisa <20030784@studenti.uniupo.it> Date: Thu, 29 Sep 2022 10:34:13 +0200 Subject: [PATCH] aggiunto messaggio iniziale da mandare agli scenari --- antifurtoMicroservizio/src/code/Antifurto.java | 7 +++++-- antifurtoMicroservizio/src/code/Esecutore.java | 9 +++++++-- antifurtoMicroservizio/src/code/SubscribeCallback.java | 7 +++++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/antifurtoMicroservizio/src/code/Antifurto.java b/antifurtoMicroservizio/src/code/Antifurto.java index c6ab2a3..206a5a2 100644 --- a/antifurtoMicroservizio/src/code/Antifurto.java +++ b/antifurtoMicroservizio/src/code/Antifurto.java @@ -100,7 +100,7 @@ public class Antifurto { } - public void startClient(Esecutore esec, Publisher publisher) throws MqttException { + public void startClient(Esecutore esec, Publisher publisher) throws MqttException, JSONException { String caFilePath = ""; String clientCrtFilePath = ""; String clientKeyFilePath = ""; @@ -130,12 +130,15 @@ public class Antifurto { e.printStackTrace(); } - mqttClient.setCallback(new SubscribeCallback(this, publisher, esec, automa)); + SubscribeCallback subCall = new SubscribeCallback(this, publisher, esec, automa); + mqttClient.setCallback(subCall); mqttClient.connect(options); for(String t: topicsSub) addTopicToSubscribe(t); + + subCall.sendOutAntifurto(); } // sottoscrive il topic passato come parametro diff --git a/antifurtoMicroservizio/src/code/Esecutore.java b/antifurtoMicroservizio/src/code/Esecutore.java index 9d5ac40..77fc65c 100644 --- a/antifurtoMicroservizio/src/code/Esecutore.java +++ b/antifurtoMicroservizio/src/code/Esecutore.java @@ -16,6 +16,7 @@ public class Esecutore extends Thread { private Automa automa; private Antifurto antifurto; private LocalDateTime tempoAllarme; //valorizzato solo quando l'allarme sta suonando. Contiene l'ora in cui l'allarme ha iniziato a suonare + private static boolean changedSoglia = false; public Esecutore(Publisher publisher, MyQueue<Integer> codaVal, Automa automa, Antifurto antifurto) throws JSONException, IOException { this.codaVal = codaVal; @@ -58,14 +59,17 @@ public class Esecutore extends Thread { JSONObject statoJson = new JSONObject(Helper.leggiFile(Automa.FILE_STATO)); statoJson.put("valore", valore); - if(valore >= soglia && (!automa.allarme()) && delta>0) { + if(valore >= soglia && (!automa.allarme()) && (delta>0 || changedSoglia)) { // DA FARE: controlla se e' corretto: ho aggiunto un booleano che dice se la soglia e' appena stata settata. + // Questo per mandare il messaggio di accensione della luce dell'out del suono se si cambia la soglia abbassandola + // e facendo in modo che dopo la modifica della soglia si abbia subito valore>soglia publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+antifurto.getNomeOutputSuono(), "{cmd:1}"); tempoAllarme = LocalDateTime.now(); statoJson.put("tempoAllarme",tempoAllarme.toString()); + changedSoglia = false; } else { if(automa.allarme()) { - LocalDateTime tempoAttuale = LocalDateTime.now(); + LocalDateTime tempoAttuale = LocalDateTime.now(); long durata = Math.abs(Duration.between(tempoAllarme, tempoAttuale).toMinutes()); if(valore < soglia || durata >= DURATA_SUONO || !automa.antifurtoAttivo() ) { publisher.aggiungiComando("to/"+Antifurto.getMqttTree()+"/gpio/"+antifurto.getNomeOutputSuono(), "{cmd:0}"); // l'allarme viene disattivato @@ -113,6 +117,7 @@ public class Esecutore extends Thread { js.put("soglia", newValue); Helper.scriviFile(js, Automa.FILE_STATO); soglia = newValue; + changedSoglia = true; } } diff --git a/antifurtoMicroservizio/src/code/SubscribeCallback.java b/antifurtoMicroservizio/src/code/SubscribeCallback.java index 71c0931..db78cb0 100644 --- a/antifurtoMicroservizio/src/code/SubscribeCallback.java +++ b/antifurtoMicroservizio/src/code/SubscribeCallback.java @@ -47,7 +47,7 @@ public class SubscribeCallback implements MqttCallback { try { client.startClient(esec, publisher); retry = false; - } catch (MqttException e) { + } catch (MqttException | JSONException e) { d2 = new Date(); time = Math.abs(d2.getTime() - d.getTime()); } @@ -295,7 +295,7 @@ public class SubscribeCallback implements MqttCallback { } } - private void sendOutAntifurto() throws JSONException { + public void sendOutAntifurto() throws JSONException { JSONObject js = new JSONObject(); js.put("attiva-scenari", client.getNomeOutputAntifurto()); publisher.aggiungiComando("to/" + Antifurto.getMqttTree() + "/scenari/luceAntifurto", js.toString()); @@ -393,4 +393,7 @@ public class SubscribeCallback implements MqttCallback { jsError.put("error", e.getMessage()); publisher.aggiungiComando("from/" + Antifurto.getMqttTree() + "/antifurto", jsError.toString()); } + + + // to/gruppo2/luci/antifurto/luceAntifurto } -- GitLab