ADD : NEW Format for all the code with prettier

master
Kevin Shehu 2022-02-08 16:36:39 +01:00
parent 64e7af7f13
commit 504baa1962
26 changed files with 721 additions and 428 deletions

View File

@ -1,39 +1,51 @@
package Credentials; package Credentials;
public class UserCredentials { public class UserCredentials {
private final String username = "kevin.shehu@hochschule-rhein-waal.de";
private final String password = "DK7SxFkGJgnLhnU3";
private final String baseURL = "https://api.whysor.com/";
private final String devUrl = "https://api.dev.whysor.com/";
private static final String homeRoot = "D:\\WORK\\GGD\\src\\main\\java\\Data\\";
public static String getHomeRoot() { private final String username = "kevin.shehu@hochschule-rhein-waal.de";
return homeRoot; private final String password = "DK7SxFkGJgnLhnU3";
} private final String baseURL = "https://api.whysor.com/";
private final String devUrl = "https://api.dev.whysor.com/";
private static final String homeRoot =
"D:\\WORK\\GGD\\src\\main\\java\\Data\\";
public String getUsername() { public static String getHomeRoot() {
return username; return homeRoot;
} }
public String getPassword() { public String getUsername() {
return password; return username;
} }
public String getBaseURL() { public String getPassword() {
return baseURL; return password;
} }
public String getDevUrl() { public String getBaseURL() {
return devUrl; return baseURL;
} }
@Override public String getDevUrl() {
public String toString() { return devUrl;
return "UserCredentials{" + }
"username='" + username + '\'' +
", password='" + password + '\'' + @Override
", baseURL='" + baseURL + '\'' + public String toString() {
", devUrl='" + devUrl + '\'' + return (
'}'; "UserCredentials{" +
} "username='" +
username +
'\'' +
", password='" +
password +
'\'' +
", baseURL='" +
baseURL +
'\'' +
", devUrl='" +
devUrl +
'\'' +
'}'
);
}
} }

View File

@ -1,28 +1,26 @@
package Files; package Files;
import java.io.File; // Import the File class import java.io.File; // Import the File class
import java.io.FileNotFoundException; // Import this class to handle errors import java.io.FileNotFoundException; // Import this class to handle errors
import java.util.Scanner; // Import the Scanner class to read text files import java.util.Scanner; // Import the Scanner class to read text files
public class ReadFile { public class ReadFile {
public String data;
public String ReadFromFile(String path){ public String data;
try { public String ReadFromFile(String path) {
File myObj = new File(path); try {
Scanner myReader = new Scanner(myObj); File myObj = new File(path);
while (myReader.hasNextLine()) { Scanner myReader = new Scanner(myObj);
data = myReader.nextLine(); while (myReader.hasNextLine()) {
System.out.println(data); data = myReader.nextLine();
} System.out.println(data);
myReader.close(); }
} catch (FileNotFoundException e) { myReader.close();
System.out.println("An error occurred."); } catch (FileNotFoundException e) {
e.printStackTrace(); System.out.println("An error occurred.");
} e.printStackTrace();
return data;
} }
return data;
}
} }

View File

@ -1,38 +1,34 @@
package Files; package Files;
import java.io.*; import java.io.*;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
public class WriteFile { public class WriteFile {
BufferedWriter buffer = null;
public void WriteFile(String path, String input) throws Exception{ BufferedWriter buffer = null;
try {
File file = new File(path);
if (!file.exists()) {
file.createNewFile();
}
FileWriter fileWriter = new FileWriter(path); public void WriteFile(String path, String input) throws Exception {
buffer = new BufferedWriter(fileWriter); try {
buffer.write(input); File file = new File(path);
if (!file.exists()) {
} catch (FileNotFoundException e) { file.createNewFile();
e.printStackTrace(); }
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (buffer != null)
buffer.flush();
// buffer.close();
} catch (Exception ex) {
System.out.println("Error in closing the BufferedWriter" + ex);
}
}
FileWriter fileWriter = new FileWriter(path);
buffer = new BufferedWriter(fileWriter);
buffer.write(input);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (buffer != null) buffer.flush();
// buffer.close();
} catch (Exception ex) {
System.out.println("Error in closing the BufferedWriter" + ex);
}
} }
}
} }

View File

@ -11,30 +11,36 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
public class HttpGet { public class HttpGet {
public String HttpGetCall (String baseURL, String token) throws InterruptedException, ExecutionException, TimeoutException {
var client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.followRedirects(HttpClient.Redirect.ALWAYS)
.build();
HttpRequest request = null;
try {
request = HttpRequest.newBuilder(new URI(baseURL))
.setHeader("Authorization", token)
// .setHeader("access_token", token)
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.header("Authority", "https://api.dev.whysor.com/")
.build();
} catch (URISyntaxException e) {
e.printStackTrace();
}
CompletableFuture<HttpResponse<String>> response = client.sendAsync(request, HttpResponse.BodyHandlers.ofString());
String result = response.thenApply(HttpResponse::body).get(5, TimeUnit.SECONDS);
return result;
public String HttpGetCall(String baseURL, String token)
throws InterruptedException, ExecutionException, TimeoutException {
var client = HttpClient
.newBuilder()
.version(HttpClient.Version.HTTP_1_1)
.followRedirects(HttpClient.Redirect.ALWAYS)
.build();
HttpRequest request = null;
try {
request =
HttpRequest
.newBuilder(new URI(baseURL))
.setHeader("Authorization", token)
// .setHeader("access_token", token)
.setHeader("Content-Type", "application/json")
.setHeader("Accept", "application/json")
.header("Authority", "https://api.dev.whysor.com/")
.build();
} catch (URISyntaxException e) {
e.printStackTrace();
} }
CompletableFuture<HttpResponse<String>> response = client.sendAsync(
request,
HttpResponse.BodyHandlers.ofString()
);
String result = response
.thenApply(HttpResponse::body)
.get(5, TimeUnit.SECONDS);
return result;
}
} }

View File

@ -9,26 +9,33 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
public class HttpPost { public class HttpPost {
public String HttpCallPost(String baseUrl, String body) throws Exception {
var client = HttpClient.newBuilder() public String HttpCallPost(String baseUrl, String body) throws Exception {
.version(HttpClient.Version.HTTP_1_1) var client = HttpClient
.followRedirects(HttpClient.Redirect.ALWAYS) .newBuilder()
.build(); .version(HttpClient.Version.HTTP_1_1)
HttpRequest request = null; .followRedirects(HttpClient.Redirect.ALWAYS)
try { .build();
request = HttpRequest.newBuilder(new URI(baseUrl)) HttpRequest request = null;
.POST(HttpRequest.BodyPublishers.ofString(body)) try {
.setHeader("Content-Type", "application/json") request =
.setHeader("Accept", "application/json") HttpRequest
.build(); .newBuilder(new URI(baseUrl))
.POST(HttpRequest.BodyPublishers.ofString(body))
} catch (URISyntaxException e) { .setHeader("Content-Type", "application/json")
e.printStackTrace(); .setHeader("Accept", "application/json")
} .build();
} catch (URISyntaxException e) {
CompletableFuture<HttpResponse<String>> response = client.sendAsync(request, HttpResponse.BodyHandlers.ofString()); e.printStackTrace();
String result = response.thenApply(HttpResponse::body).get(5, TimeUnit.SECONDS);
return result;
} }
CompletableFuture<HttpResponse<String>> response = client.sendAsync(
request,
HttpResponse.BodyHandlers.ofString()
);
String result = response
.thenApply(HttpResponse::body)
.get(5, TimeUnit.SECONDS);
return result;
}
} }

View File

@ -121,4 +121,4 @@
// return iriResolver; // return iriResolver;
// } // }
// //
//} //}

View File

@ -7,19 +7,23 @@ import org.json.JSONArray;
//Get a list of all devices //Get a list of all devices
public class GeneralCall4AllDevices { public class GeneralCall4AllDevices {
public static String FetchAll(String token) throws Exception {
String extension = "devices";
UserCredentials userCredentials = new UserCredentials();
WriteFile writingIntoFile = new WriteFile();
String baseURL = userCredentials.getBaseURL(); public static String FetchAll(String token) throws Exception {
String homeRoot = UserCredentials.getHomeRoot(); String extension = "devices";
String devUrl = userCredentials.getDevUrl(); UserCredentials userCredentials = new UserCredentials();
HttpGet httpCall = new HttpGet(); WriteFile writingIntoFile = new WriteFile();
String fetchAll = httpCall.HttpGetCall(devUrl + extension + "?access_token=" + token, token); String baseURL = userCredentials.getBaseURL();
writingIntoFile.WriteFile(homeRoot + extension + "Output.json", fetchAll); String homeRoot = UserCredentials.getHomeRoot();
String devUrl = userCredentials.getDevUrl();
HttpGet httpCall = new HttpGet();
return fetchAll; String fetchAll = httpCall.HttpGetCall(
} devUrl + extension + "?access_token=" + token,
token
);
writingIntoFile.WriteFile(homeRoot + extension + "Output.json", fetchAll);
return fetchAll;
}
} }

View File

@ -1,75 +1,87 @@
package JSON_Unpack; package JSON_Unpack;
import Credentials.UserCredentials; import Credentials.UserCredentials;
import Files.WriteFile; import Files.WriteFile;
import HttpCall.HttpGet; import HttpCall.HttpGet;
import java.util.ArrayList;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList;
///url/sensors/id/read ///url/sensors/id/read
public class ReadSensors4Partner { public class ReadSensors4Partner {
public ArrayList<String> FetchSensor4Box(String companyName, String token) throws Exception {
switch (companyName) { public ArrayList<String> FetchSensor4Box(String companyName, String token)
case "Germes": throws Exception {
return SensorRead("Germes", token); switch (companyName) {
case "Heufs": case "Germes":
return SensorRead("Heufs", token); return SensorRead("Germes", token);
case "Jacobs": case "Heufs":
return SensorRead("Jacobs", token); return SensorRead("Heufs", token);
case "Nica": case "Jacobs":
return SensorRead("Nica", token); return SensorRead("Jacobs", token);
case "Nica":
return SensorRead("Nica", token);
}
return null;
}
protected ArrayList<String> SensorRead(String cName, String token)
throws Exception {
UserCredentials userCredentials = new UserCredentials();
HttpGet httpCall = new HttpGet();
WriteFile writingIntoFile = new WriteFile();
String baseURL = userCredentials.getBaseURL();
String devUrl = userCredentials.getDevUrl();
String homeRoot = UserCredentials.getHomeRoot();
ArrayList<String> list = new ArrayList<String>();
char par = '"';
BoxCall4Partner boxCall4Partner = new BoxCall4Partner();
ArrayList<String> outputBox = boxCall4Partner.FetchBox(cName, token);
for (int i = 0; i < outputBox.size(); i++) {
JSONArray jsonArray = new JSONArray(outputBox.get(i));
for (int j = 0; j < jsonArray.length(); j++) {
JSONObject jsonobject = jsonArray.getJSONObject(j);
String jsonID = jsonobject.getString("id");
String jsonTag = jsonobject.getString("tag");
String deviceID = jsonobject.getString("deviceId");
String finalTag =
"," +
par +
"deviceId" +
par +
":" +
deviceID +
"," +
par +
"sensorTag" +
par +
":" +
jsonTag +
"}]";
String sensorOutput = httpCall.HttpGetCall(
devUrl + "sensors/" + jsonID + "/read" + "?access_token=" + token,
token
);
if (sensorOutput.contains("error")) {
System.out.println(sensorOutput);
} else {
String modification = sensorOutput.replace("}]", "");
String finalSensorOutput = modification + finalTag;
list.add(finalSensorOutput);
writingIntoFile.WriteFile(
homeRoot + jsonID + ".json",
sensorOutput + jsonTag + "," + deviceID
);
} }
return null; }
} }
protected ArrayList<String> SensorRead(String cName, String token) throws Exception { return list;
UserCredentials userCredentials = new UserCredentials(); }
HttpGet httpCall = new HttpGet();
WriteFile writingIntoFile = new WriteFile();
String baseURL = userCredentials.getBaseURL();
String devUrl = userCredentials.getDevUrl();
String homeRoot = UserCredentials.getHomeRoot();
ArrayList<String> list=new ArrayList<String>();
char par = '"';
BoxCall4Partner boxCall4Partner = new BoxCall4Partner();
ArrayList<String> outputBox = boxCall4Partner.FetchBox(cName,token);
for (int i=0;i<outputBox.size();i++){
JSONArray jsonArray = new JSONArray(outputBox.get(i));
for(int j=0; j<jsonArray.length(); j++){
JSONObject jsonobject = jsonArray.getJSONObject(j);
String jsonID = jsonobject.getString("id");
String jsonTag = jsonobject.getString("tag");
String deviceID = jsonobject.getString("deviceId");
String finalTag = ","+par+"deviceId"+par+":"+deviceID+","+par+"sensorTag"+par+":"+jsonTag+"}]";
String sensorOutput = httpCall.HttpGetCall(devUrl + "sensors/" + jsonID + "/read" + "?access_token=" + token, token);
if (sensorOutput.contains("error")){
System.out.println(sensorOutput);
}
else {
String modification = sensorOutput.replace("}]","");
String finalSensorOutput = modification+finalTag;
list.add(finalSensorOutput);
writingIntoFile.WriteFile(homeRoot + jsonID + ".json", sensorOutput + jsonTag+","+deviceID);
}
}
}
return list;
}
} }

View File

@ -3,75 +3,76 @@ package eu.hsrw.ias.ggd;
import Credentials.UserCredentials; import Credentials.UserCredentials;
import Files.WriteFile; import Files.WriteFile;
import JSON_Unpack.ReadSensors4Partner; import JSON_Unpack.ReadSensors4Partner;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import org.json.JSONArray;
import org.json.JSONObject;
public class ApiCall { public class ApiCall {
private static String token = "0";
private static String oldId = "1";
private static String token = "0";
private static String oldId = "1";
public static HashMap<String, SensorData> FetchDataFromApi() throws Exception { public static Greenhouse FetchDataFromApi() throws Exception {
UserCredentials userCredentials = new UserCredentials();
final String username = userCredentials.getUsername();
final String password = userCredentials.getPassword();
final String homeRoot = UserCredentials.getHomeRoot();
String outputToken;
WriteFile writingIntoFile = new WriteFile();
Date now; // to display current time
now = new Date();
HashMap<String, Device> devices = new HashMap();
if (token.equals(oldId)) {
//do nothing
} else {
try {
outputToken = SecurityToken.OnCallMethod(username, password);
JSONObject obj = new JSONObject(outputToken);
token = obj.getString("id");
UserCredentials userCredentials = new UserCredentials(); writingIntoFile.WriteFile(homeRoot + "securityToken.txt", token);
final String username = userCredentials.getUsername(); oldId = token;
final String password = userCredentials.getPassword(); } catch (Exception e) {
final String homeRoot = UserCredentials.getHomeRoot(); e.printStackTrace();
String outputToken; }
WriteFile writingIntoFile = new WriteFile();
Date now; // to display current time
now = new Date();
HashMap<String,
SensorData> finalOutput = new HashMap();
if (token.equals(oldId)) {
//do nothing
} else {
try {
outputToken = SecurityToken.OnCallMethod(username, password);
JSONObject obj = new JSONObject(outputToken);
token = obj.getString("id");
writingIntoFile.WriteFile(homeRoot + "securityToken.txt", token);
oldId = token;
} catch (Exception e) {
e.printStackTrace();
}
}
ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner();
ArrayList<String> outputValue = (readSensors4Partner.FetchSensor4Box("Germes", token));
for(int i=0;i<outputValue.size();i++){
Device device;
JSONArray sensorDatas = new JSONArray(outputValue.get(i));
for(int j=0; j<sensorDatas.length(); j++) { //15
JSONObject sensorData = sensorDatas.getJSONObject(j);
String deviceId = sensorData.getString("deviceId");
double value = sensorData.getDouble("value");
String sensorTag = sensorData.getString("sensorTag");
String sensorId = sensorData.getString("sensorId");
SensorData sd = new SensorData(sensorId, value, sensorTag);
if(devices.containsKey(deviceId)) {
device = devices.get(deviceId);
device.addSensorData(sd);
} else {
device = new Device(deviceId);
device.addSensorData(sd);
devices.put(deviceId, device);
}
}
}
return finalOutput;
} }
ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner();
ArrayList<String> outputValue =
(readSensors4Partner.FetchSensor4Box("Germes", token));
for (int i = 0; i < outputValue.size(); i++) {
Device device;
JSONArray sensorDatas = new JSONArray(outputValue.get(i));
for (int j = 0; j < sensorDatas.length(); j++) { //15
JSONObject sensorData = sensorDatas.getJSONObject(j);
String deviceId = sensorData.getString("deviceId");
double value = sensorData.getDouble("value");
String sensorTag = sensorData.getString("sensorTag");
String sensorId = sensorData.getString("sensorId");
SensorData sd = new SensorData(sensorId, value, sensorTag);
if (devices.containsKey(deviceId)) {
device = devices.get(deviceId);
device.addSensorData(sd);
} else {
device = new Device(deviceId);
device.addSensorData(sd);
devices.put(deviceId, device);
}
}
}
Greenhouse greenhouse = new Greenhouse();
for (Device device : devices.values()) {
greenhouse.addDevice(device);
}
return greenhouse;
}
} }

View File

@ -4,80 +4,102 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
public class Device { public class Device {
private String id;
private List<SensorData> data;
public Device(String identifier) { private String id;
this.id = identifier; private String externalID;
this.data = new LinkedList<SensorData>(); private List<SensorData> data;
private Severity state = Severity.Unknown;
public Device(String identifier) {
this.id = identifier;
this.data = new LinkedList<SensorData>();
}
public void addSensorData(SensorData d) {
this.data.add(d);
}
public List<SensorData> getSensorData() {
return data;
}
public String getId() {
return id;
}
public String setId(String id) {
this.id = id;
return id;
}
public void setExternalID(String externalID) {
this.externalID = externalID;
}
public String getExternalID() {
return externalID;
}
public String IdMapper(String id) {
switch (id) {
case "fd694041-581e-4c2c-9810-505e62b762e6":
return setId("70B3D570500042D7");
case "e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0":
return setId("70B3D57050004EF4");
case "f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632":
return setId("70B3D57050006223");
case "6c9efd4a-db04-453d-8ab8-d480ec97dd26":
return setId("70B3D5705000623C");
default:
return "NO Working id was found";
}
}
public Boolean hasTag(String tag) {
for (SensorData sensorData : data) {
if (sensorData.getTag() == tag) return true;
}
return false;
}
public SensorData getSensorDataByTag(String tag) {
for (SensorData sd : data) {
if (sd.getTag() == tag) return sd;
}
return null;
}
public SensorData getSensorDataById(String id) {
for (SensorData sd : data) {
if (sd.getSensorId() == id) return sd;
}
return null;
}
public String toString() {
String str = "Device: '" + id + "', data: [";
for (SensorData sd : data) {
str += "SensorData(id: '" + sd.getSensorId() + "',";
str += " tag: '" + sd.getTag() + "',";
str += " value: " + sd.getValue() + ")";
} }
public void addSensorData(SensorData d) { return str + "]";
this.data.add(d); }
}
public List<SensorData> getSensorData() { public Device(String id, List<SensorData> data) {
return data; this.id = id;
} this.data = data;
}
public String getId() { public void setState(Severity state) {
return id; if (this.state != Severity.Critical) {
this.state = state;
} }
}
public String setId(String id) { public Severity getState() {
this.id = id; return state;
return id; }
}
public String IdMapper(String id){
switch (id) {
case "fd694041-581e-4c2c-9810-505e62b762e6":
return setId("70B3D570500042D7");
case "e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0":
return setId("70B3D57050004EF4");
case "f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632":
return setId("70B3D57050006223");
case "6c9efd4a-db04-453d-8ab8-d480ec97dd26":
return setId("70B3D5705000623C");
default:
return "NO Working id was found";
}
}
public Boolean hasTag(String tag) {
for (SensorData sensorData : data) {
if (sensorData.getTag() == tag) return true;
}
return false;
}
public SensorData getSensorDataByTag(String tag) {
for (SensorData sd : data) {
if (sd.getTag() == tag) return sd;
}
return null;
}
public SensorData getSensorDataById(String id) {
for (SensorData sd : data) {
if (sd.getSensorId() == id) return sd;
}
return null;
}
public String toString() {
String str = "Device: '"+ id +"', data: [";
for(SensorData sd: data) {
str += "SensorData(id: '"+ sd.getSensorId() +"',";
str += " tag: '"+ sd.getTag() +"',";
str += " value: "+ sd.getValue() +")";
}
return str + "]";
}
public Device(String id, List<SensorData> data) {
this.id = id;
this.data = data;
}
} }

View File

@ -0,0 +1,50 @@
package eu.hsrw.ias.ggd;
import java.util.ArrayList;
import java.util.List;
public class Greenhouse {
private String id = "8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
private Severity state = Severity.Unknown;
public Greenhouse() {
this.devices = new ArrayList<>();
}
public Greenhouse(List<Device> devices) {
this.devices = devices;
}
public void addDevice(Device device) {
this.devices.add(device);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Severity getState() {
return state;
}
public void setState(Severity state) {
if (this.state != Severity.Critical) {
this.state = state;
}
}
public List<Device> getDevices() {
return devices;
}
public void setDevices(List<Device> devices) {
this.devices = devices;
}
private List<Device> devices;
}

View File

@ -3,23 +3,30 @@ package eu.hsrw.ias.ggd;
import HttpCall.HttpPost; import HttpCall.HttpPost;
public class Isis { public class Isis {
public static String OnCallMethod(String deviceName, String sensorName) throws Exception {
//CONFIG PARAMETERS:
//BEGIN------------CONFIG PARAMETERS BELOW TO YOUR ENVIRONMENT---------------------------------------
String baseURL = "https://api.dev.whysor.com/devices/readValueFromSpeech?access_token=2MreqC9fqXxFHJBEcrCL38LKhEaVcEHmEi6o45CwTV9SSgTAuZ93oiMfY3HVc2fj";
final String body = String.format("{\"deviceName\": \"%s\", \"sensorName\": \"%s\", \"domain\": \"my.yookr.org\"}", deviceName, sensorName);
HttpPost httpMethodPost = new HttpPost();
httpMethodPost.HttpCallPost(baseURL,body);
return httpMethodPost.HttpCallPost(baseURL, body); public static String OnCallMethod(String deviceName, String sensorName)
} throws Exception {
public static void main(String[] args){ //CONFIG PARAMETERS:
try { //BEGIN------------CONFIG PARAMETERS BELOW TO YOUR ENVIRONMENT---------------------------------------
String output = OnCallMethod("Greenhouse 1", "status"); String baseURL =
System.out.println(output); "https://api.dev.whysor.com/devices/readValueFromSpeech?access_token=2MreqC9fqXxFHJBEcrCL38LKhEaVcEHmEi6o45CwTV9SSgTAuZ93oiMfY3HVc2fj";
} catch (Exception e) { final String body = String.format(
e.printStackTrace(); "{\"deviceName\": \"%s\", \"sensorName\": \"%s\", \"domain\": \"my.yookr.org\"}",
} deviceName,
sensorName
);
HttpPost httpMethodPost = new HttpPost();
httpMethodPost.HttpCallPost(baseURL, body);
return httpMethodPost.HttpCallPost(baseURL, body);
}
public static void main(String[] args) {
try {
String output = OnCallMethod("Greenhouse 1", "status");
System.out.println(output);
} catch (Exception e) {
e.printStackTrace();
} }
}
} }

View File

@ -1,14 +1,12 @@
package eu.hsrw.ias.ggd; package eu.hsrw.ias.ggd;
import java.util.Timer; import java.util.Timer;
//Before pushing files to the git run : npx prettier --write "**/*.java"
public class MainExe { public class MainExe {
public static void main(String[] args){
Timer time = new Timer(); // Instantiate Timer Object
ScheduledTask scheduledTask = new ScheduledTask(); // Instantiate SheduledTask class
time.schedule(scheduledTask, 0, 1000 * 60 * 1 ); // Create Repetitively task for every 2 min
}
public static void main(String[] args) {
Timer time = new Timer(); // Instantiate Timer Object
ScheduledTask scheduledTask = new ScheduledTask(); // Instantiate SheduledTask class
time.schedule(scheduledTask, 0, 1000 * 60 * 1); // Create Repetitively task for every 2 min
}
} }

View File

@ -1,37 +1,38 @@
package eu.hsrw.ias.ggd; package eu.hsrw.ias.ggd;
public class Notification { public class Notification {
private Severity severity = Severity.Optimal;
private String type;
private SensorData cause;
public Notification(String t, SensorData d, Severity s) { private Severity severity = Severity.Optimal;
this.type = t; private String type;
this.cause = d; private SensorData cause;
this.severity = s;
}
public String getType() { public Notification(String t, SensorData d, Severity s) {
return type; this.type = t;
} this.cause = d;
this.severity = s;
}
public void setType(String type) { public String getType() {
this.type = type; return type;
} }
public SensorData getCause() { public void setType(String type) {
return cause; this.type = type;
} }
public void setCause(SensorData cause) { public SensorData getCause() {
this.cause = cause; return cause;
} }
public Severity getSeverity() { public void setCause(SensorData cause) {
return this.severity; this.cause = cause;
} }
public void setSeverity(Severity severity) { public Severity getSeverity() {
this.severity = severity; return this.severity;
} }
public void setSeverity(Severity severity) {
this.severity = severity;
}
} }

View File

@ -1,23 +1,23 @@
package eu.hsrw.ias.ggd; package eu.hsrw.ias.ggd;
import HttpCall.HttpPost; import HttpCall.HttpPost;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException; import java.util.concurrent.TimeoutException;
public class SecurityToken { public class SecurityToken {
public static String OnCallMethod(String username, String password) throws Exception {
//CONFIG PARAMETERS: public static String OnCallMethod(String username, String password)
//BEGIN------------CONFIG PARAMETERS BELOW TO YOUR ENVIRONMENT--------------------------------------- throws Exception {
String baseURL = "https://api.whysor.com/users/login"; //CONFIG PARAMETERS:
String devURL = "https://api.dev.whysor.com/users/login"; //BEGIN------------CONFIG PARAMETERS BELOW TO YOUR ENVIRONMENT---------------------------------------
final String body = String.format("{\"email\": \"%s\", \"password\": \"%s\", \"domain\": \"my.dev.yookr.org\"}", username, password); String baseURL = "https://api.whysor.com/users/login";
HttpPost httpMethodPost = new HttpPost(); String devURL = "https://api.dev.whysor.com/users/login";
return httpMethodPost.HttpCallPost(devURL, body); final String body = String.format(
} "{\"email\": \"%s\", \"password\": \"%s\", \"domain\": \"my.dev.yookr.org\"}",
username,
password
);
HttpPost httpMethodPost = new HttpPost();
return httpMethodPost.HttpCallPost(devURL, body);
}
} }

View File

@ -2,34 +2,48 @@ package eu.hsrw.ias.ggd;
public class SensorData { public class SensorData {
private String sensorId; private String sensorId;
private double value; private String tag;
private String deviceId; private double value;
private Severity state = Severity.Unknown;
public SensorData(String sensorId, double value,String deviceId) { public SensorData(String sensorId, double value, String tag) {
this.sensorId = sensorId; this.sensorId = sensorId;
this.value = value; this.value = value;
this.deviceId = deviceId; this.tag = tag;
} }
public String getSensorTag() { public String getTag() {
return sensorId; return tag;
} }
public void setSensorTag(String sensorTag) { public void setTag(String tag) {
this.sensorId = sensorTag; this.tag = tag;
} }
public double getValue() { public double getValue() {
return value; return value;
} }
public void setValue(double value) { public void setValue(double value) {
this.value = value; this.value = value;
} }
public String getDeviceId() {return deviceId;} public String getSensorId() {
return sensorId;
public void setDeviceId(String deviceTag){ this.deviceId = deviceTag; }
public void setSensorId(String id) {
this.sensorId = id;
}
public Severity getState() {
return state;
}
public void setState(Severity state) {
if (this.state != Severity.Critical) {
this.state = state;
} }
}
} }

View File

@ -3,15 +3,14 @@ package eu.hsrw.ias.ggd;
import java.util.HashMap; import java.util.HashMap;
public class SensorMap { public class SensorMap {
private HashMap<String, Double> sensors = new HashMap<String, Double>();
public HashMap<String, Double> getSensors() { private HashMap<String, Double> sensors = new HashMap<String, Double>();
return sensors;
}
public void setSensors(HashMap<String, Double> sensors) {
this.sensors = sensors;
}
public HashMap<String, Double> getSensors() {
return sensors;
}
public void setSensors(HashMap<String, Double> sensors) {
this.sensors = sensors;
}
} }

View File

@ -1,9 +1,10 @@
package eu.hsrw.ias.ggd; package eu.hsrw.ias.ggd;
public enum Severity { public enum Severity {
Optimal, Optimal,
Info, Info,
Warning, Warning,
Error, Error,
Critical Critical,
} Unknown,
}

View File

@ -0,0 +1,31 @@
import eu.hsrw.ias.ggd.Device;
import eu.hsrw.ias.ggd.Severity;
import eu.hsrw.ias.ggd.SensorData;
rule "Sensor of device gone critical"
when
sensorData: SensorData(state == Severity.Critical)
device: Device(sensorData contains(sensorData))
then
modify(device){
setState(Severity.Critical)
}
System.out.println("Device: \n" +
"\tID: '" + device.getId() + "'" +
"\tState: '" + device.getState().toString() + "'"
);
// Do something the info that a device is gone critical
end
rule "Sensor of device gone optimal"
when
sensorData: SensorData(state == Severity.Optimal)
device: Device(sensorData contains(sensorData))
then
modify(device){
setState(Severity.Optimal)
}
// Device is gone optimal
end

View File

@ -0,0 +1,25 @@
import eu.hsrw.ias.ggd.Greenhouse;
import eu.hsrw.ias.ggd.Device;
import eu.hsrw.ias.ggd.Severity;
rule "Device of greenhouse gone critical"
when
device: Device(state == Severity.Critical)
greenhouse: Greenhouse(devices contains(device))
//greenhouse: Greenhouse(devices contains(Device(state == Severity.Critical)))
then
modify(greenhouse){
setState(Severity.Critical)
}
System.out.println("Greenhouse: '" + greenhouse.getId() + "' is '" + greenhouse.getState().toString() + "'");
end
rule "Device of greenhouse has gone optimal"
when
device: Device(state == Severity.Optimal)
greenhouse: Greenhouse(devices contains(device))
then
modify(greenhouse){
setState(Severity.Optimal)
}
end

View File

@ -0,0 +1,24 @@
import java.util.HashMap;
import java.util.Map;
import eu.hsrw.ias.ggd.SensorData
import javax.swing.JOptionPane
import HttpCall.HttpPost
import eu.hsrw.ias.ggd.Notification
import eu.hsrw.ias.ggd.Severity;
import eu.hsrw.ias.ggd.Device;
rule "CriticalPrecipitation"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "precipitation", value > 15.5) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalPrecipitationOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Precipitation %s in the following sensor %s \", \"precipitation\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalPrecipitationOutput);
insert(new Notification("precipitation", sensorData, Severity.Warning));
// modify(sensorData){
// setState(Severity.Critical)
// }
end

View File

@ -0,0 +1,7 @@
package rules;
dialect "mvel"
rule "CriticalSoilConductivity"
when
then
end

View File

@ -0,0 +1,7 @@
package rules;
dialect "mvel"
rule "CriticalSoilTemperature"
when
then
end

View File

@ -0,0 +1,31 @@
import eu.hsrw.ias.ggd.Device;
import eu.hsrw.ias.ggd.Severity;
import eu.hsrw.ias.ggd.SensorData;
rule "Sensor of device gone critical"
when
sensorData: SensorData(state == Severity.Critical)
device: Device(sensorData contains(sensorData))
then
modify(device){
setState(Severity.Critical)
}
System.out.println("Device: \n" +
"\tID: '" + device.getId() + "'" +
"\tState: '" + device.getState().toString() + "'"
);
// Do something the info that a device is gone critical
end
rule "Sensor of device gone optimal"
when
sensorData: SensorData(state == Severity.Optimal)
device: Device(sensorData contains(sensorData))
then
modify(device){
setState(Severity.Optimal)
}
// Device is gone optimal
end

View File

@ -0,0 +1,25 @@
import eu.hsrw.ias.ggd.Greenhouse;
import eu.hsrw.ias.ggd.Device;
import eu.hsrw.ias.ggd.Severity;
rule "Device of greenhouse gone critical"
when
device: Device(state == Severity.Critical)
greenhouse: Greenhouse(devices contains(device))
//greenhouse: Greenhouse(devices contains(Device(state == Severity.Critical)))
then
modify(greenhouse){
setState(Severity.Critical)
}
System.out.println("Greenhouse: '" + greenhouse.getId() + "' is '" + greenhouse.getState().toString() + "'");
end
rule "Device of greenhouse has gone optimal"
when
device: Device(state == Severity.Optimal)
greenhouse: Greenhouse(devices contains(device))
then
modify(greenhouse){
setState(Severity.Optimal)
}
end

View File

@ -0,0 +1,15 @@
import eu.hsrw.ias.ggd.Notification;
import eu.hsrw.ias.ggd.Severity
import HttpCall.HttpPost;
import eu.hsrw.ias.ggd.Device;
rule "Green House Optimal"
when
warning: Notification(severity == Severity.Optimal)
then
HttpPost httpPost = new HttpPost();
final String optimalGreenhouse = String.format("{\"id\":\"germes-greenhouse-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the greenhouse is optimal\"}]}}");
// httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalGreenhouse);
System.out.println("Green House optimal, because of: '"+warning.getType()+"'");
end