forked from kevin.shehu/GGD
CHANGE: REDEFINING THE STRUCTURE
FIX: ApiCall.java ADD: ISIS IC Server REQ ADD: RULESmaster
parent
a07efa82d3
commit
cceac4d65d
|
@ -3,7 +3,7 @@
|
||||||
The service of decision support system is inferring knowledge from the available data of the greenhouse, the user input, and historical data what a user/the gardener should do & which action a gardener should execute to be successful with the growing process of the plants.
|
The service of decision support system is inferring knowledge from the available data of the greenhouse, the user input, and historical data what a user/the gardener should do & which action a gardener should execute to be successful with the growing process of the plants.
|
||||||
These actions are called goals.
|
These actions are called goals.
|
||||||
The list of inferred active goals is offered to other services of the system.
|
The list of inferred active goals is offered to other services of the system.
|
||||||
The approach of the DSS is based on three MainExe concepts:
|
The approach of the DSS is based on three eu.hsrw.ias.ggd.MainExe concepts:
|
||||||
|
|
||||||
**Fact knowledge (Knowledgebase)**
|
**Fact knowledge (Knowledgebase)**
|
||||||
|
|
||||||
|
|
|
@ -1,64 +0,0 @@
|
||||||
import Credentials.UserCredentials;
|
|
||||||
import Files.WriteFile;
|
|
||||||
import JSON_Unpack.ReadSensors4Partner;
|
|
||||||
import Knowledgebase.SensorReadings;
|
|
||||||
import org.json.JSONArray;
|
|
||||||
import org.json.JSONObject;
|
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class ApiCall {
|
|
||||||
private static String token = "0";
|
|
||||||
private static String oldId = "1";
|
|
||||||
|
|
||||||
|
|
||||||
public static String FetchDataFromApi(String extension) 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();
|
|
||||||
|
|
||||||
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();
|
|
||||||
SensorReadings sensorReadings = new SensorReadings();
|
|
||||||
String outputValue = (readSensors4Partner.FetchSensor4Box("Germes",token));
|
|
||||||
System.out.println(outputValue);
|
|
||||||
String outputValueFixed=outputValue.replace("[[","[") +outputValue.replace("[{","{")+outputValue.replace("}]","}")+ outputValue.replace("]]","]");
|
|
||||||
System.out.println(outputValueFixed);
|
|
||||||
JSONArray jsonArray = new JSONArray(outputValueFixed);
|
|
||||||
System.out.println(jsonArray.length());
|
|
||||||
for(int j=0; j<jsonArray.length(); j++) {
|
|
||||||
JSONObject jsonobject = jsonArray.getJSONObject(j);
|
|
||||||
String sensorTag = jsonobject.getString("sensortag");
|
|
||||||
int value = jsonobject.getInt("value");
|
|
||||||
System.out.println(sensorTag+":"+value);
|
|
||||||
sensorReadings.setSensorTag(sensorTag);
|
|
||||||
sensorReadings.setValue(value);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return null;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
|
@ -4,7 +4,7 @@ public class UserCredentials {
|
||||||
private String username = "kevin.shehu@hochschule-rhein-waal.de";
|
private String username = "kevin.shehu@hochschule-rhein-waal.de";
|
||||||
private String password = "DK7SxFkGJgnLhnU3";
|
private String password = "DK7SxFkGJgnLhnU3";
|
||||||
private String baseURL = "https://api.whysor.com/";
|
private String baseURL = "https://api.whysor.com/";
|
||||||
private static String homeRoot = "D:\\WORK\\GGD\\src\\main\\java\\Data\\";
|
private static String homeRoot = "/Users/ksh/Documents/Work/GGD/src/main/java/Data/";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
CyGrh8jKqXXZCBgLzG6gnI6lMWGdzCjGW3LP9sPrH6FEu2M19UcOBF9PZaTJH963
|
2YiUD7Tx2i8XO8q38cs5FsZMjzKbk4SUA5uJzUq68uaVXrps6z94Ve0R6SjgWeXw
|
|
@ -32,7 +32,7 @@
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
//// @CommandLine.Parameters(paramLabel = "D:\\WORK\\GGD\\src\\MainExe\\java\\Data", description = "json file")
|
//// @CommandLine.Parameters(paramLabel = "D:\\WORK\\GGD\\src\\eu.hsrw.ias.ggd.MainExe\\java\\Data", description = "json file")
|
||||||
// @CommandLine.Option(names = { "--input-charset" }, description = "Input charset (default: ${DEFAULT-VALUE})")
|
// @CommandLine.Option(names = { "--input-charset" }, description = "Input charset (default: ${DEFAULT-VALUE})")
|
||||||
// private final Charset inputCharset = StandardCharsets.UTF_8;
|
// private final Charset inputCharset = StandardCharsets.UTF_8;
|
||||||
//
|
//
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class BoxCall4Partner {
|
||||||
}
|
}
|
||||||
|
|
||||||
if(loopTerminator == arrayOfCompany.length ){
|
if(loopTerminator == arrayOfCompany.length ){
|
||||||
System.out.println("Entered ");
|
System.out.println("Processing..... ");
|
||||||
return listOfCompanyOutputs;
|
return listOfCompanyOutputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,17 +12,17 @@ import java.util.ArrayList;
|
||||||
///url/sensors/id/read
|
///url/sensors/id/read
|
||||||
|
|
||||||
public class ReadSensors4Partner {
|
public class ReadSensors4Partner {
|
||||||
public String FetchSensor4Box(String companyName, String token) throws Exception {
|
public ArrayList<String> FetchSensor4Box(String companyName, String token) throws Exception {
|
||||||
|
|
||||||
switch (companyName) {
|
switch (companyName) {
|
||||||
case "Germes":
|
case "Germes":
|
||||||
return String.valueOf(SensorRead("Germes", token));
|
return SensorRead("Germes", token);
|
||||||
case "Heufs":
|
case "Heufs":
|
||||||
return String.valueOf(SensorRead("Heufs", token));
|
return SensorRead("Heufs", token);
|
||||||
case "Jacobs":
|
case "Jacobs":
|
||||||
return String.valueOf(SensorRead("Jacobs", token));
|
return SensorRead("Jacobs", token);
|
||||||
case "Nica":
|
case "Nica":
|
||||||
return String.valueOf(SensorRead("Nica", token));
|
return SensorRead("Nica", token);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -39,23 +39,27 @@ public class ReadSensors4Partner {
|
||||||
String outputBox = boxCall4Partner.FetchBox(cName,token);
|
String outputBox = boxCall4Partner.FetchBox(cName,token);
|
||||||
String outputBoxFixed=outputBox.replace("[[","[") + outputBox.replace("]]","]");// To convert in Jsonarray we need to remove the array list brackets
|
String outputBoxFixed=outputBox.replace("[[","[") + outputBox.replace("]]","]");// To convert in Jsonarray we need to remove the array list brackets
|
||||||
JSONArray jsonArray = new JSONArray(outputBoxFixed);
|
JSONArray jsonArray = new JSONArray(outputBoxFixed);
|
||||||
System.out.println("The working array:"+jsonArray);
|
System.out.println("FINAL WORKING ARRAY:"+jsonArray);
|
||||||
ArrayList<String> list=new ArrayList<String>();
|
ArrayList<String> list=new ArrayList<String>();
|
||||||
int loopTerminator = 0;
|
int loopTerminator = 0;
|
||||||
char par = '"';
|
char par = '"';
|
||||||
|
|
||||||
for(int j=0; j<jsonArray.length(); j++){
|
for(int j=0; j<jsonArray.length(); j++){
|
||||||
JSONObject jsonobject = jsonArray.getJSONObject(j);
|
JSONObject jsonobject = jsonArray.getJSONObject(j);
|
||||||
String jsonID = jsonobject.getString("id");
|
String jsonID = jsonobject.getString("id");
|
||||||
String jsonTag = jsonobject.getString("tag");
|
String jsonTag = jsonobject.getString("tag");
|
||||||
|
String finalTag = ","+par+"sensorTag"+par+":"+jsonTag+"}]";
|
||||||
|
|
||||||
|
|
||||||
String sensorOutput = httpCall.HttpGet(baseURL + "sensors/" + jsonID + "/read" + "?access_token=" + token, token);
|
String sensorOutput = httpCall.HttpGet(baseURL + "sensors/" + jsonID + "/read" + "?access_token=" + token, token);
|
||||||
String sensorTag= par+"sensortag"+par+":"+jsonTag+"}]";
|
String modification = sensorOutput.replace("}]","");
|
||||||
String makingList=sensorOutput.replace("}]","") ;
|
String finalSensorOutput = modification+finalTag;
|
||||||
list.add(makingList+","+sensorTag); // This modification of the list is done for the purpse of converting this list to a jsonarray.
|
list.add(finalSensorOutput);
|
||||||
|
|
||||||
writingIntoFile.WriteFile(homeRoot + jsonID + ".json", sensorOutput + jsonTag);
|
writingIntoFile.WriteFile(homeRoot + jsonID + ".json", sensorOutput + jsonTag);
|
||||||
loopTerminator++;
|
loopTerminator++;
|
||||||
if(loopTerminator == jsonArray.length()){
|
if(loopTerminator == jsonArray.length()){
|
||||||
|
// System.out.println("L+++++++++++++"+list);
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,37 +1,53 @@
|
||||||
package Knowledgebase;
|
//package Knowledgebase;
|
||||||
|
//
|
||||||
import org.kie.api.KieServices;
|
//import org.json.JSONArray;
|
||||||
import org.kie.api.KieServices.Factory;
|
//import org.kie.api.KieServices;
|
||||||
import org.kie.api.runtime.KieContainer;
|
//import org.kie.api.KieServices.Factory;
|
||||||
import org.kie.api.runtime.KieSession;
|
//import org.kie.api.runtime.KieContainer;
|
||||||
import org.kie.api.runtime.rule.FactHandle;
|
//import org.kie.api.runtime.KieSession;
|
||||||
|
//import org.kie.api.runtime.rule.FactHandle;
|
||||||
public class DroolsTest {
|
//
|
||||||
|
//import java.util.ArrayList;
|
||||||
public static final void main(String[] args) {
|
//import java.util.HashMap;
|
||||||
try {
|
//import java.util.Map;
|
||||||
KieServices ks = KieServices.Factory.get();
|
//
|
||||||
KieContainer kContainer = ks.getKieClasspathContainer();
|
//public class DroolsTest {
|
||||||
//Get the session named kseesion-rule that we defined in kmodule.xml above.
|
// private Map<String, Double> currMap= new HashMap<>();
|
||||||
//Also by default the session returned is always stateful.
|
//
|
||||||
KieSession kSession = kContainer.newKieSession("ksession-rule");
|
// public static final void main(String[] args) {
|
||||||
|
// try {
|
||||||
Product product = new Product();
|
// KieServices ks = KieServices.Factory.get();
|
||||||
product.setType("gold");
|
// KieContainer kContainer = ks.getKieClasspathContainer();
|
||||||
System.out.println(product.getDiscount());
|
////Get the session named kseesion-rule that we defined in kmodule.xml above.
|
||||||
|
////Also by default the session returned is always stateful.
|
||||||
FactHandle fact1;
|
// KieSession kSession = kContainer.newKieSession("ksession-rule");
|
||||||
|
//
|
||||||
fact1 = kSession.insert(product);
|
// currMap.put("asd",12.2);
|
||||||
System.out.println(fact1);
|
// setCurrMap("soilMoisture",10.1);
|
||||||
kSession.fireAllRules();
|
// currMap.put("soilConductivity",0.14);
|
||||||
|
// setCurrMap set= new SetCurrMap();
|
||||||
System.out.println("The discount for the jewellery product "
|
// se
|
||||||
+ product.getType() + " is " + product.getDiscount());
|
//
|
||||||
|
//
|
||||||
} catch (Throwable t) {
|
// FactHandle fact1;
|
||||||
t.printStackTrace();
|
//
|
||||||
}
|
// fact1 = kSession.insert(currMap);
|
||||||
}
|
// System.out.println(fact1);
|
||||||
|
// kSession.fireAllRules();
|
||||||
}
|
//
|
||||||
|
//// System.out.println("The discount for the jewellery product "
|
||||||
|
//// + sensorReadings.getSensorTag() + " is " + sensorReadings.getValue());
|
||||||
|
//
|
||||||
|
// } catch (Throwable t) {
|
||||||
|
// t.printStackTrace();
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// public Map<String, Double> getCurrMap() {
|
||||||
|
// return currMap;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// public void setCurrMap(Map<String, Double> currMap) {
|
||||||
|
// this.currMap = currMap;
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
|
@ -0,0 +1,17 @@
|
||||||
|
package Knowledgebase;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class SensorMap {
|
||||||
|
private HashMap<String, Double> sensors = new HashMap<String, Double>();
|
||||||
|
|
||||||
|
public HashMap<String, Double> getSensors() {
|
||||||
|
return sensors;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSensors(HashMap<String, Double> sensors) {
|
||||||
|
this.sensors = sensors;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -1,22 +0,0 @@
|
||||||
package Knowledgebase;
|
|
||||||
|
|
||||||
public class SensorReadings {
|
|
||||||
private String sensorTag;
|
|
||||||
private double value;
|
|
||||||
|
|
||||||
public String getSensorTag() {
|
|
||||||
return sensorTag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSensorTag(String sensorTag) {
|
|
||||||
this.sensorTag = sensorTag;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(double value) {
|
|
||||||
this.value = value;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
import org.json.simple.JSONObject;
|
|
||||||
import org.json.simple.parser.JSONParser;
|
|
||||||
import org.json.simple.parser.ParseException;
|
|
||||||
|
|
||||||
import java.io.BufferedWriter;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileWriter;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.TimerTask;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.concurrent.ExecutionException;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
|
||||||
|
|
||||||
// Create a class extends with TimerTask
|
|
||||||
public class ScheduledTask extends TimerTask {
|
|
||||||
|
|
||||||
Date now; // to display current time
|
|
||||||
|
|
||||||
// Add your task here
|
|
||||||
public void run() {
|
|
||||||
// Display current time
|
|
||||||
now = new Date(); // initialize date
|
|
||||||
System.out.println("Time is :" + now);
|
|
||||||
String outputDevices = null;
|
|
||||||
String devicesExtension = "devices";
|
|
||||||
String sensorExtension = "sensors"; //read and readMultiple
|
|
||||||
try {
|
|
||||||
outputDevices = ApiCall.FetchDataFromApi(devicesExtension);
|
|
||||||
// outputDevices = ApiCall.FetchDataFromApi(sensorExtension);
|
|
||||||
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (ExecutionException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (TimeoutException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
System.out.println("Output :" + outputDevices); // Display current output
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
package eu.hsrw.ias.ggd;
|
||||||
|
|
||||||
|
import Credentials.UserCredentials;
|
||||||
|
import Files.WriteFile;
|
||||||
|
import JSON_Unpack.ReadSensors4Partner;
|
||||||
|
import org.json.JSONArray;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class ApiCall {
|
||||||
|
private static String token = "0";
|
||||||
|
private static String oldId = "1";
|
||||||
|
|
||||||
|
|
||||||
|
public static HashMap<String, Double> 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();
|
||||||
|
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));
|
||||||
|
String workingArray = String.valueOf(outputValue).replace("[{","{").replace("}]","}");
|
||||||
|
|
||||||
|
JSONArray jsonArray = new JSONArray(workingArray);
|
||||||
|
|
||||||
|
HashMap<String, Double> sensors = new HashMap<String, Double>();
|
||||||
|
for(int j = 0; j<jsonArray.length(); j++) {
|
||||||
|
JSONObject jsonobject = jsonArray.getJSONObject(j);
|
||||||
|
double value = jsonobject.getDouble("value");
|
||||||
|
String sensorTag = jsonobject.getString("sensorTag");
|
||||||
|
// System.out.println(value);
|
||||||
|
// System.out.println(sensorTag);
|
||||||
|
// sensorsMap.setSensors(sensorTag,value);
|
||||||
|
sensors.put(sensorTag,value);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ArrayList<String> listOfCompanies = new ArrayList<>();
|
||||||
|
// String germesOutput = FetchData("Germes",token);
|
||||||
|
// listOfCompanies.add(FetchData(c1,token));
|
||||||
|
// listOfCompanies.add(FetchData("Heufs",token));
|
||||||
|
|
||||||
|
JOptionPane.showMessageDialog(null,sensors,"Germes sensors"+now,JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
return sensors;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// public static void FetchData(String companyName, String token){
|
||||||
|
// ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner();
|
||||||
|
// ArrayList<String> outputValue = null;
|
||||||
|
// try {
|
||||||
|
// outputValue = (readSensors4Partner.FetchSensor4Box(companyName,token));
|
||||||
|
// } catch (Exception e) {
|
||||||
|
// e.printStackTrace();
|
||||||
|
// }
|
||||||
|
// String workingArray = String.valueOf(outputValue).replace("[{","{").replace("}]","}");
|
||||||
|
// JSONArray jsonArray = new JSONArray(workingArray);
|
||||||
|
//
|
||||||
|
// HashMap<String, Double> sensors = new HashMap<String, Double>();
|
||||||
|
// for(int j = 0; j<jsonArray.length(); j++) {
|
||||||
|
// JSONObject jsonobject = jsonArray.getJSONObject(j);
|
||||||
|
// double value = jsonobject.getDouble("value");
|
||||||
|
// String sensorTag = jsonobject.getString("sensorTag");
|
||||||
|
//// System.out.println(value);
|
||||||
|
//// System.out.println(sensorTag);
|
||||||
|
//// sensorsMap.setSensors(sensorTag,value);
|
||||||
|
// sensors.put(sensorTag,value);
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
package eu.hsrw.ias.ggd;
|
||||||
|
|
||||||
|
import HttpCall.HttpPost;
|
||||||
|
|
||||||
|
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 void main(String args[]){
|
||||||
|
try {
|
||||||
|
String output = OnCallMethod("Climate", "humidity");
|
||||||
|
System.out.println(output);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,13 +1,13 @@
|
||||||
|
package eu.hsrw.ias.ggd;
|
||||||
|
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
import java.util.concurrent.Executors;
|
|
||||||
import java.util.concurrent.ScheduledExecutorService;
|
|
||||||
|
|
||||||
public class MainExe {
|
public class MainExe {
|
||||||
public static void main(String[] args){
|
public static void main(String[] args){
|
||||||
|
|
||||||
Timer time = new Timer(); // Instantiate Timer Object
|
Timer time = new Timer(); // Instantiate Timer Object
|
||||||
ScheduledTask scheduledTask = new ScheduledTask(); // Instantiate SheduledTask class
|
ScheduledTask scheduledTask = new ScheduledTask(); // Instantiate SheduledTask class
|
||||||
time.schedule(scheduledTask, 0, 1000 * 60 * 1 ); // Create Repetitively task for every 1 min
|
time.schedule(scheduledTask, 0, 1000 * 30 * 1 ); // Create Repetitively task for every 2 min
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
package eu.hsrw.ias.ggd;
|
||||||
|
|
||||||
|
import eu.hsrw.ias.ggd.ApiCall;
|
||||||
|
import org.kie.api.KieServices;
|
||||||
|
import org.kie.api.runtime.KieContainer;
|
||||||
|
import org.kie.api.runtime.KieSession;
|
||||||
|
import org.kie.api.runtime.rule.FactHandle;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.TimerTask;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.concurrent.ExecutionException;
|
||||||
|
import java.util.concurrent.TimeoutException;
|
||||||
|
|
||||||
|
// Create a class extends with TimerTask
|
||||||
|
public class ScheduledTask extends TimerTask {
|
||||||
|
|
||||||
|
Date now; // to display current time
|
||||||
|
HashMap<String, Double> outputDevices ;
|
||||||
|
|
||||||
|
// Add your task here
|
||||||
|
public void run() {
|
||||||
|
// Display current time
|
||||||
|
now = new Date(); // initialize date
|
||||||
|
System.out.println("Time is :" + now);
|
||||||
|
|
||||||
|
try {
|
||||||
|
outputDevices = ApiCall.FetchDataFromApi();
|
||||||
|
System.out.println("Final Size"+outputDevices.size()+outputDevices);
|
||||||
|
KieServices ks = KieServices.Factory.get();
|
||||||
|
KieContainer kContainer = ks.getKieClasspathContainer();
|
||||||
|
//Get the session named kseesion-rule that we defined in kmodule.xml above.
|
||||||
|
//Also by default the session returned is always stateful.
|
||||||
|
KieSession kSession = kContainer.newKieSession("ksession-rule");
|
||||||
|
FactHandle fact1;
|
||||||
|
fact1 = kSession.insert(outputDevices);
|
||||||
|
System.out.println(fact1);
|
||||||
|
kSession.fireAllRules();
|
||||||
|
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (ExecutionException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (TimeoutException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,3 +1,5 @@
|
||||||
|
package eu.hsrw.ias.ggd;
|
||||||
|
|
||||||
import HttpCall.HttpPost;
|
import HttpCall.HttpPost;
|
||||||
|
|
||||||
import java.util.concurrent.ExecutionException;
|
import java.util.concurrent.ExecutionException;
|
||||||
|
@ -12,9 +14,6 @@ public class SecurityToken {
|
||||||
HttpPost httpMethodPost = new HttpPost();
|
HttpPost httpMethodPost = new HttpPost();
|
||||||
|
|
||||||
return httpMethodPost.HttpCallPost(baseURL, body);
|
return httpMethodPost.HttpCallPost(baseURL, body);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,18 @@
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import eu.hsrw.ias.ggd.ScheduledTask
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
rule "Low Battery Level"
|
||||||
|
|
||||||
|
when
|
||||||
|
$map : Map (this["battery"]<5.5)
|
||||||
|
|
||||||
|
then
|
||||||
|
System.out.println("Low Battery : "+$map.get("battery")+"! Please swap the battery soon");
|
||||||
|
JOptionPane.showMessageDialog(null,"Low Battery : "+$map.get("battery")+"! Please swap the battery soon","Low Battery Level",JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
|
||||||
|
end
|
|
@ -0,0 +1,21 @@
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import eu.hsrw.ias.ggd.ScheduledTask;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
|
||||||
|
rule "Optimal EC levels in the soil"
|
||||||
|
|
||||||
|
when
|
||||||
|
$map : Map (this["soilConductivity"]<0.57 && this["soilConductivity"]>0.11)
|
||||||
|
|
||||||
|
then
|
||||||
|
System.out.println("Optimal EC levels in the soil : "+$map.get("soilConductivity"));
|
||||||
|
JOptionPane.showMessageDialog(null,"Optimal EC levels in the soil : "+$map.get("soilConductivity"),"Soil Conductivity",JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import eu.hsrw.ias.ggd.ScheduledTask;
|
||||||
|
import javax.swing.JOptionPane;
|
||||||
|
rule "Dry Soil Moisture"
|
||||||
|
|
||||||
|
when
|
||||||
|
$map : Map (this["soilMoisture"]<40)
|
||||||
|
|
||||||
|
then
|
||||||
|
System.out.println("It is recommended to have a Soil Moisture higher than : "+$map.get("soilMoisture"));
|
||||||
|
JOptionPane.showMessageDialog(null,"It is recommended to have a Soil Moisture higher than : "+$map.get("soilMoisture"),"Dry Soil Moisture",JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
rule "Wet Soil Mositure"
|
||||||
|
when
|
||||||
|
$map : Map (this["soilMoisture"]>70)
|
||||||
|
|
||||||
|
then
|
||||||
|
System.out.println("Be careful the soil is extremly wet :"+$map.get("soilMoisture")+ "please dont apply water");
|
||||||
|
JOptionPane.showMessageDialog(null,"Be careful the soil is extremly wet :"+$map.get("soilMoisture")+ "please dont apply water","Wet Soil Moisture",JOptionPane.INFORMATION_MESSAGE);
|
||||||
|
|
||||||
|
|
||||||
|
end
|
||||||
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
import Knowledgebase.Product
|
|
||||||
|
|
||||||
rule "Offer for Diamond"
|
|
||||||
when
|
|
||||||
productObject: Product(type=="diamond")
|
|
||||||
then
|
|
||||||
productObject.setDiscount(15);
|
|
||||||
end
|
|
||||||
rule "Offer for Gold"
|
|
||||||
when
|
|
||||||
productObject: Product(type=="gold")
|
|
||||||
then
|
|
||||||
productObject.setDiscount(10);
|
|
||||||
end
|
|
Loading…
Reference in New Issue