package Services.Controller;
import java.awt.Color;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import org.springframework.boot.SpringApplication;
import org.springframework.web.client.*;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication
@RequestMapping("/controller/")
public class ControllerApplication {
private final String captMouvURI = "http://localhost:8081/CaptMouv/";
private final String captTempURI = "http://localhost:8082/CaptTemp/";
private final String captCO2URI = "http://localhost:8083/CaptCO2/";
private final String captHumURI = "http://localhost:8084/";
private final String automPorteURI = "http://localhost:8085/AutomPorteApplication/";
private final String automFenetreURI = "http://localhost:8086/AutomFenetreApplication/";
private final String automLumiereURI = "http://localhost:8087/AutomLumiereApplication/";
private final String automChauffageURI = "http://localhost:8088/AutomChauffageApplication/";
private final String simulationURI = "http://localhost:8089/Simulation/";
boolean ControlLumiereAutomatique = false;
boolean PorteFenetreAutomatique_TemperatureCO2 = false;
boolean PorteFenetreAutomatique_CO2 = false;
//Controle de la lumiere automatique
//Controle en fonction du mouvement
@GetMapping("isControlLumiereAutomatiqueActivated/")
private final boolean isControlLumiereAutomatique() {
return ControlLumiereAutomatique;
}
@GetMapping("setControlLumiereAutomatique/")
private final void setControlLumiereAutomatique(boolean controlLumiereAutomatique) {
ControlLumiereAutomatique = controlLumiereAutomatique;
}
//Control de l'ouverture de la porte et fenetre
//Control en fonction de la temperature et CO2
@GetMapping("isPorteFenetreAutomatique_TemperatureCO2Activated/")
private final boolean isPorteFenetreAutomatique_TemperatureCO2() {
return PorteFenetreAutomatique_TemperatureCO2;
}
@GetMapping("setPorteFenetreAutomatique_TemperatureCO2/")
private final void setPorteFenetreAutomatique_TemperatureCO2(boolean porteFenetreAutomatique_TemperatureCO2) {
PorteFenetreAutomatique_TemperatureCO2 = porteFenetreAutomatique_TemperatureCO2;
}
//Controle en fonction du CO2
@GetMapping("isPorteFenetreAutomatique_CO2Activated/")
private final boolean isPorteFenetreAutomatique_CO2() {
return PorteFenetreAutomatique_CO2;
}
@GetMapping("setPorteFenetreAutomatique_CO2/")
private final void setPorteFenetreAutomatique_CO2(boolean porteFenetreAutomatique_CO2) {
PorteFenetreAutomatique_CO2 = porteFenetreAutomatique_CO2;
}
public void ControlLumiereAutomatique() {
String url_getDetection = captMouvURI + "getDetection/";
String url_allumerLumiere = automLumiereURI + "setON/?oN=true";
String url_eteindreLumiere = automLumiereURI + "setON/?oN=false";
RestTemplate restTemplate = new RestTemplate();
//return restTemplate.getForObject(test, String.class);
if (restTemplate.getForObject(url_getDetection,boolean.class)) {
restTemplate.getForObject(url_allumerLumiere,boolean.class);
}
else {
restTemplate.getForObject(url_eteindreLumiere,boolean.class);
}
}
public void PorteFenetreAutomatique_TemperatureCO2() {
String url_getTemp = captTempURI + "getTemp/";
String url_getCO2 = captCO2URI + "getCO2/";
String url_setOuvertureFenetre = automFenetreURI + "setOpen/?open=true";
String url_setFermetureFenetre = automFenetreURI + "setOpen/?open=false";
String url_setOuverturePorte = automPorteURI + "setOpen/?open=true";
String url_setFermeturePorte = automPorteURI + "setOpen/?open=false";
RestTemplate restTemplate = new RestTemplate();
if (((restTemplate.getForObject(url_getTemp,double.class)) > 30) | ((restTemplate.getForObject(url_getCO2,int.class)) > 500)) {
restTemplate.getForObject(url_setOuvertureFenetre,double.class);
restTemplate.getForObject(url_setOuverturePorte,double.class);
}
else {
restTemplate.getForObject(url_setFermetureFenetre,double.class);
restTemplate.getForObject(url_setFermeturePorte,double.class);
}
}
public void PorteFenetreAutomatique_CO2() {
String url_getCO2 = captCO2URI + "getCO2/";
String url_setOuvertureFenetre = automFenetreURI + "setOpen/?open=true";
String url_setFermetureFenetre = automFenetreURI + "setOpen/?open=false";
String url_setOuverturePorte = automPorteURI + "setOpen/?open=true";
String url_setFermeturePorte = automPorteURI + "setOpen/?open=false";
RestTemplate restTemplate = new RestTemplate();
if (((restTemplate.getForObject(url_getCO2,int.class)) > 500)) {
restTemplate.getForObject(url_setOuvertureFenetre,double.class);
restTemplate.getForObject(url_setOuverturePorte,double.class);
}
else {
restTemplate.getForObject(url_setFermetureFenetre,double.class);
restTemplate.getForObject(url_setFermeturePorte,double.class);
}
}
@GetMapping("getSalleOccupee/")
public String SalleOccupe() {
String url_getDetection = captMouvURI + "getDetection/";
RestTemplate restTemplate = new RestTemplate();
boolean salle_occupe = restTemplate.getForObject(url_getDetection,boolean.class);
return ("La salle est:" + String.valueOf(salle_occupe)) ;
}
@GetMapping("setTemperatureHeatingSystem/")
public void setTemperatureHeatingSystem(int temp) {
String url_setTemp = automChauffageURI + "setTemperatureSet/?temperatureSet=" + String.valueOf(temp);
RestTemplate restTemplate = new RestTemplate();
restTemplate.getForObject(url_setTemp,void.class);
}
@GetMapping("run")
public int run() throws Exception {
/*
if (ControlLumiereAutomatique) {
ControlLumiereAutomatique();
}
if (PorteFenetreAutomatique_TemperatureCO2) {
PorteFenetreAutomatique_TemperatureCO2();
}
if (PorteFenetreAutomatique_CO2) {
PorteFenetreAutomatique_CO2();
}
*/
return 0;
//Communication avec OneM2M
/*
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.set("X-M2M-ORIGIN", "admin:admin");
headers.set("Content-Type", "application/xml;ty=4");
//headers.set("Accept", "application/xml");
String parameters = " \n"
+ "\n"
+ " message\n"
+ " \n"
+ " <obj>\n"
+ " <str name="presence" val="1"/>\n"
+ " \n"
+ " </obj>\n"
+ " \n"
+ "";
HttpEntity entity = new HttpEntity (parameters,headers);
String url = "http://127.0.0.1:8080/~/in-cse/in-name/Capteur_Mouvement/DATA/";
ResponseEntity respEntity = restTemplate.exchange(url,HttpMethod.POST,entity,String.class);
String resp = (String) respEntity.getBody();
return resp;
*/
}
public static void main(String[] args) {
SpringApplication.run(ControllerApplication.class, args);
}
}