FIX : Sensor reading
NEW : Idea for Rule Engine
This commit is contained in:
		| @@ -1 +1 @@ | |||||||
| [{"sensorId":"09a91c61-6572-4476-8bf1-310a2fb2eb02","datetimeMeasure":"2021-11-25T10:10:29.156Z","value":3.06,"groupId":null,"metadata":null}]externalTemperature,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | [{"sensorId":"09a91c61-6572-4476-8bf1-310a2fb2eb02","datetimeMeasure":"2021-12-10T15:31:31.804Z","value":3.68,"groupId":null,"metadata":null}]externalTemperature,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"1f49de66-0921-4583-ae68-ff0fcc070bd1","datetimeMeasure":"2021-11-25T10:13:23.813Z","value":21.64,"groupId":null,"metadata":null}]dielectricPermittivity,fd694041-581e-4c2c-9810-505e62b762e6 | [{"sensorId":"1f49de66-0921-4583-ae68-ff0fcc070bd1","datetimeMeasure":"2021-12-10T15:34:04.506Z","value":20.92,"groupId":null,"metadata":null}]dielectricPermittivity,fd694041-581e-4c2c-9810-505e62b762e6 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"22e5b1b0-b28c-4aa1-97c7-94ff12c51384","datetimeMeasure":"2021-11-25T10:13:23.813Z","value":2.1,"groupId":null,"metadata":null}]soilTemperature,fd694041-581e-4c2c-9810-505e62b762e6 | [{"sensorId":"22e5b1b0-b28c-4aa1-97c7-94ff12c51384","datetimeMeasure":"2021-12-10T15:34:04.506Z","value":4.1,"groupId":null,"metadata":null}]soilTemperature,fd694041-581e-4c2c-9810-505e62b762e6 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"3b6a8c15-5cea-4994-954d-5b25c22e2c32","datetimeMeasure":"2021-11-25T10:13:23.813Z","value":36.5,"groupId":null,"metadata":null}]soilMoisture,fd694041-581e-4c2c-9810-505e62b762e6 | [{"sensorId":"3b6a8c15-5cea-4994-954d-5b25c22e2c32","datetimeMeasure":"2021-12-10T15:34:04.506Z","value":35.7,"groupId":null,"metadata":null}]soilMoisture,fd694041-581e-4c2c-9810-505e62b762e6 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"5209815d-974f-4729-ae1a-06bd1000db67","datetimeMeasure":"2021-11-25T10:13:23.813Z","value":0.15,"groupId":null,"metadata":null}]soilConductivity,fd694041-581e-4c2c-9810-505e62b762e6 | [{"sensorId":"5209815d-974f-4729-ae1a-06bd1000db67","datetimeMeasure":"2021-12-10T15:34:04.506Z","value":0.07,"groupId":null,"metadata":null}]soilConductivity,fd694041-581e-4c2c-9810-505e62b762e6 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"65e95c11-ec15-4039-840a-e9be3d77ca63","datetimeMeasure":"2021-11-25T10:04:44.298Z","value":705.4,"groupId":null,"metadata":null}]precipitation,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | [{"sensorId":"65e95c11-ec15-4039-840a-e9be3d77ca63","datetimeMeasure":"2021-12-10T15:29:08.613Z","value":748.8,"groupId":null,"metadata":null}]precipitation,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"69bcaae0-9ccd-4342-8a71-c72dca37cfe9","datetimeMeasure":"2021-11-25T10:13:22.838Z","value":5.064,"groupId":null,"metadata":null}]battery,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | [{"sensorId":"69bcaae0-9ccd-4342-8a71-c72dca37cfe9","datetimeMeasure":"2021-12-10T15:34:09.418Z","value":4.721,"groupId":null,"metadata":null}]battery,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"812c6e62-e855-424b-8ec1-78fb424a94b5","datetimeMeasure":"2021-11-25T10:04:44.298Z","value":33.4,"groupId":null,"metadata":null}]soilMoisture,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | [{"sensorId":"812c6e62-e855-424b-8ec1-78fb424a94b5","datetimeMeasure":"2021-12-10T15:29:08.613Z","value":35.5,"groupId":null,"metadata":null}]soilMoisture,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"88c8442f-62b9-4952-b28c-73790a555060","datetimeMeasure":"2021-11-25T10:10:29.156Z","value":5.157,"groupId":null,"metadata":null}]battery,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | [{"sensorId":"88c8442f-62b9-4952-b28c-73790a555060","datetimeMeasure":"2021-12-10T15:31:31.804Z","value":5.132,"groupId":null,"metadata":null}]battery,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"adba09f9-ab84-4252-bf1a-ac49b1b6bdd3","datetimeMeasure":"2021-11-25T10:13:23.813Z","value":5.826,"groupId":null,"metadata":null}]battery,fd694041-581e-4c2c-9810-505e62b762e6 | [{"sensorId":"adba09f9-ab84-4252-bf1a-ac49b1b6bdd3","datetimeMeasure":"2021-12-10T15:34:04.506Z","value":5.796,"groupId":null,"metadata":null}]battery,fd694041-581e-4c2c-9810-505e62b762e6 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"bc08edce-d214-40db-ba51-a0802243c235","datetimeMeasure":"2021-11-25T10:10:29.156Z","value":41.8,"groupId":null,"metadata":null}]soilMoisture,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | [{"sensorId":"bc08edce-d214-40db-ba51-a0802243c235","datetimeMeasure":"2021-12-10T15:31:31.804Z","value":38.3,"groupId":null,"metadata":null}]soilMoisture,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632 | ||||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -1 +1 @@ | |||||||
| [{"sensorId":"f75934dc-af98-4206-a5bd-22d23dd5f268","datetimeMeasure":"2021-11-25T10:13:22.838Z","value":3,"groupId":null,"metadata":null}]temperature,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | [{"sensorId":"f75934dc-af98-4206-a5bd-22d23dd5f268","datetimeMeasure":"2021-12-10T15:34:09.418Z","value":3.68,"groupId":null,"metadata":null}]temperature,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"ff6f11e0-c969-4cbb-829c-f44a13683918","datetimeMeasure":"2021-11-25T10:13:22.838Z","value":17.75,"groupId":null,"metadata":null}]precipitation,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | [{"sensorId":"ff6f11e0-c969-4cbb-829c-f44a13683918","datetimeMeasure":"2021-12-10T15:34:09.418Z","value":72.5,"groupId":null,"metadata":null}]precipitation,6c9efd4a-db04-453d-8ab8-d480ec97dd26 | ||||||
| @@ -1 +1 @@ | |||||||
| [{"sensorId":"ffca826c-d1b5-4ac8-869a-ec0da15d9076","datetimeMeasure":"2021-11-25T10:04:44.298Z","value":5.135,"groupId":null,"metadata":null}]battery,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | [{"sensorId":"ffca826c-d1b5-4ac8-869a-ec0da15d9076","datetimeMeasure":"2021-12-10T15:29:08.613Z","value":5.106,"groupId":null,"metadata":null}]battery,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0 | ||||||
| @@ -1 +1 @@ | |||||||
| nRsSvFEYoGTEqSmnmtE0R0btgMW8J6C6VpKEefCfPerViKxV4usqGREOioUQ268G | VSiZpQv9EEyXdVzTcudeG2GRo5hM5YGaDaMcdS3qY8hXKb34q0KypT9qLfr0BkOg | ||||||
| @@ -22,7 +22,7 @@ public class ApiCall { | |||||||
|         UserCredentials userCredentials = new UserCredentials(); |         UserCredentials userCredentials = new UserCredentials(); | ||||||
|         final String username = userCredentials.getUsername(); |         final String username = userCredentials.getUsername(); | ||||||
|         final String password = userCredentials.getPassword(); |         final String password = userCredentials.getPassword(); | ||||||
|         final String homeRoot = userCredentials.getHomeRoot(); |         final String homeRoot = UserCredentials.getHomeRoot(); | ||||||
|         String outputToken; |         String outputToken; | ||||||
|         WriteFile writingIntoFile = new WriteFile(); |         WriteFile writingIntoFile = new WriteFile(); | ||||||
|         Date now; // to display current time |         Date now; // to display current time | ||||||
| @@ -46,15 +46,28 @@ public class ApiCall { | |||||||
|         ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner(); |         ReadSensors4Partner readSensors4Partner = new ReadSensors4Partner(); | ||||||
|         ArrayList<String> outputValue = (readSensors4Partner.FetchSensor4Box("Germes", token)); |         ArrayList<String> outputValue = (readSensors4Partner.FetchSensor4Box("Germes", token)); | ||||||
|         for(int i=0;i<outputValue.size();i++){ |         for(int i=0;i<outputValue.size();i++){ | ||||||
|             JSONArray jsonArray = new JSONArray(outputValue.get(i)); |             Device device; | ||||||
|             for(int j=0; j<jsonArray.length(); j++){ |             JSONArray sensorDatas = new JSONArray(outputValue.get(i)); | ||||||
|                 JSONObject jsonobject = jsonArray.getJSONObject(j); |  | ||||||
|                 double value = jsonobject.getDouble("value"); |  | ||||||
|                 String sensorTag = jsonobject.getString("sensorTag"); |  | ||||||
|                 String sensorId = jsonobject.getString("sensorId"); |  | ||||||
|                 String deviceId = jsonobject.getString("deviceId"); |  | ||||||
|  |  | ||||||
|                 finalOutput.put(sensorTag, new SensorData(deviceId, value,sensorId)); |             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; |         return finalOutput; | ||||||
|   | |||||||
							
								
								
									
										59
									
								
								src/main/java/eu/hsrw/ias/ggd/Device.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								src/main/java/eu/hsrw/ias/ggd/Device.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,59 @@ | |||||||
|  | package eu.hsrw.ias.ggd; | ||||||
|  |  | ||||||
|  | import java.util.LinkedList; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | public class Device { | ||||||
|  |     private String id; | ||||||
|  |     private List<SensorData> data; | ||||||
|  |  | ||||||
|  |     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 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 + "]"; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -13,7 +13,7 @@ public class Isis { | |||||||
|  |  | ||||||
|         return httpMethodPost.HttpCallPost(baseURL, body); |         return httpMethodPost.HttpCallPost(baseURL, body); | ||||||
|     } |     } | ||||||
|     public static void main(String args[]){ |     public static void main(String[] args){ | ||||||
|         try { |         try { | ||||||
|             String output = OnCallMethod("Greenhouse 1", "status"); |             String output = OnCallMethod("Greenhouse 1", "status"); | ||||||
|             System.out.println(output); |             System.out.println(output); | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								src/main/java/eu/hsrw/ias/ggd/Notification.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								src/main/java/eu/hsrw/ias/ggd/Notification.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,37 @@ | |||||||
|  | package eu.hsrw.ias.ggd; | ||||||
|  |  | ||||||
|  | public class Notification { | ||||||
|  |     private Severity severity = Severity.None; | ||||||
|  |     private String type; | ||||||
|  |     private SensorData cause; | ||||||
|  |  | ||||||
|  |     public Notification(String t, SensorData d, Severity s) { | ||||||
|  |         this.type = t; | ||||||
|  |         this.cause = d; | ||||||
|  |         this.severity = s; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getType() { | ||||||
|  |         return type; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setType(String type) { | ||||||
|  |         this.type = type; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public SensorData getCause() { | ||||||
|  |         return cause; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCause(SensorData cause) { | ||||||
|  |         this.cause = cause; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public Severity getSeverity() { | ||||||
|  |         return this.severity; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void  setSeverity(Severity severity) { | ||||||
|  |         this.severity = severity; | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -34,7 +34,7 @@ public class ScheduledTask extends TimerTask { | |||||||
|             FactHandle fact1; |             FactHandle fact1; | ||||||
|             fact1 = kSession.insert(outputDevices); |             fact1 = kSession.insert(outputDevices); | ||||||
| //            System.out.println(fact1); | //            System.out.println(fact1); | ||||||
|             kSession.insert(fact1); | //            kSession.insert(fact1); | ||||||
|             kSession.fireAllRules(); |             kSession.fireAllRules(); | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										9
									
								
								src/main/java/eu/hsrw/ias/ggd/Severity.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main/java/eu/hsrw/ias/ggd/Severity.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | package eu.hsrw.ias.ggd; | ||||||
|  |  | ||||||
|  | public enum Severity { | ||||||
|  |     None, | ||||||
|  |     Info, | ||||||
|  |     Warning, | ||||||
|  |     Error, | ||||||
|  |     Critical | ||||||
|  | } | ||||||
| @@ -1,41 +0,0 @@ | |||||||
| import java.util.List; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Iterator; |  | ||||||
| import eu.hsrw.ias.ggd.ScheduledTask |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
| import javax.swing.JOptionPane |  | ||||||
| import HttpCall.HttpPost |  | ||||||
| import Files.ReadFile |  | ||||||
| import Credentials.UserCredentials; |  | ||||||
|  |  | ||||||
| rule "Low Battery Level" |  | ||||||
|  |  | ||||||
| when |  | ||||||
| // This is like declaring a variable tMap where is Map and contains a key with name battery |  | ||||||
|     $tMap: HashMap( containsKey("battery") == true ) |  | ||||||
| //In this part we are iterating through the entire map |  | ||||||
|     e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|     // for(e <- $tMap) { |  | ||||||
|     SensorData(level: value ) from v |  | ||||||
|     SensorData(tag: sensorTag) from v |  | ||||||
|     SensorData(id: deviceId) from v |  | ||||||
|  then |  | ||||||
|         HttpPost httpPost = new HttpPost(); |  | ||||||
|         String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|         if (level < 7.2 && k.equals("battery") ) { |  | ||||||
|              JOptionPane.showMessageDialog(null,"Low Battery : "+level+"! Please swap the battery soon of the following sensor:"+tag,"Low Battery Level",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|              final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Low Battery %s in the following sensor: %s \", \"battery\": %s}]}}", fixedIdG1,level, tag,level); |  | ||||||
|              httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|              System.out.println("Low Battery"+level+"in the following sensor"+tag); |  | ||||||
|          } |  | ||||||
| //         else { |  | ||||||
| //             JOptionPane.showMessageDialog(null,"Battery OK : "+level+"! in the following sensor :"+tag,"Battery OK",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
| //             final String data1 = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Battery OK %s in the following sensor: %s \", \"battery\": %s}]}}", fixedIdG1,level, tag,level); |  | ||||||
| ////             httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data1); |  | ||||||
| //             System.out.println(data1); |  | ||||||
| //         } |  | ||||||
| //        System.out.println($tMap); |  | ||||||
| //        System.out.println(e.getKey() + " " + String.valueOf(level)+" " + tag+" "+id); |  | ||||||
|  |  | ||||||
| end |  | ||||||
							
								
								
									
										91
									
								
								src/main/resources/rules/Critical.drl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								src/main/resources/rules/Critical.drl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | |||||||
|  | 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 "Critical Battery" | ||||||
|  |     when | ||||||
|  |         device: Device(sensorDatas: sensorData) | ||||||
|  |         sensorData: SensorData(tag == "battery", value < 5.0) from sensorDatas | ||||||
|  |     then | ||||||
|  |         insert(new Notification("batte2ry", sensorData, Severity.Warning)); | ||||||
|  |         System.out.println(sensorData.getTag()+" "+sensorData.getValue()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         /*String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; | ||||||
|  |         HttpPost httpPost = new HttpPost(); | ||||||
|  | //        System.out.println("Tag: '"+tag+"' has low battery with value: '"+level+"'"); | ||||||
|  |         final String battery = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical! Low Battery %s \", \"battery\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |         httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",battery); | ||||||
|  |         System.out.println("Low Battery"+level+"in the following sensor"+tag); | ||||||
|  |         */ | ||||||
|  |         /*HttpPost httpPost = new HttpPost(); | ||||||
|  |  | ||||||
|  |         final String finalOutput; | ||||||
|  |         boolean critical = false; | ||||||
|  |         HashMap<String,Double> test = new HashMap<>(); | ||||||
|  |         if (tag.equals("fd694041-581e-4c2c-9810-505e62b762e6")){ // This matches 70B3D570500042D7 | ||||||
|  |                       if (level < 7.2 && k.equals("battery") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"Low Battery : "+level+"! Please swap the battery soon of the following sensor:"+tag,"Low Battery Level",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String battery = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical! Low Battery %s \", \"battery\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",battery); | ||||||
|  |                                  System.out.println("Low Battery"+level+"in the following sensor"+tag); | ||||||
|  |                                  critical = true; | ||||||
|  |                                  test.put("battery",level); | ||||||
|  |                              } | ||||||
|  |                       if (level > 80 && k.equals("temperature") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"High Temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"Temperature",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String temperature = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical!High Temperature %s \", \"temperature\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",temperature); | ||||||
|  |                                  System.out.println("High Temp"); | ||||||
|  |                                  critical = true; | ||||||
|  |                              } | ||||||
|  |                       if (level > 14.5 && k.equals("precipitation") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"High water level : "+level+" in the following sensor"+tag,"Precipitation",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String precipitation = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High water level %s\", \"precipitation\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",precipitation); | ||||||
|  |                                  System.out.println("High water level"+level +" in the following sensor:"+tag); | ||||||
|  |                                  critical = true; | ||||||
|  |                                              } | ||||||
|  |                       if (level < 22 && k.equals("soilTemperature") ) { | ||||||
|  |                                           JOptionPane.showMessageDialog(null,"Low soil temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"soil Temperature",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                           final String soilTemperature = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Low soil temperature %s in the following sensor: %s \", \"soilTemperature\": %s}]}}", fixedIdG1,level, tag,level); | ||||||
|  |                                           httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilTemperature); | ||||||
|  |                                           System.out.println("Low soil Temperature"+level+" in the following sensor "+tag); | ||||||
|  |                                           critical = true; | ||||||
|  |                                           test.put("soilTemperature",level); | ||||||
|  |                                       } | ||||||
|  |                       if (level <= 30 && k.equals("soilMoisture") ) { | ||||||
|  |                                        JOptionPane.showMessageDialog(null,"Be Careful the soil is dry : "+level+" in the following sensor :"+tag +"in the device:"+id,"Soil Moisture",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                        final String soilMoisture = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Be Careful the soil sensor %s is dry: %s  \", \"soilMoisture\": %s}]}}", fixedIdG1,tag,level,level); | ||||||
|  |                                        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilMoisture); | ||||||
|  |                                        System.out.println("Soil is dry"+level+" in the following sensor"+tag); | ||||||
|  |                                        critical = true; | ||||||
|  |                                    } | ||||||
|  |                       if (level <= 0.57 && level >= 0.11 && k.equals("soilConductivity") ) { | ||||||
|  |                                     JOptionPane.showMessageDialog(null,"Optimal EC levels in the soil : "+level+" in the following sensor"+tag,"Soil Conductivity",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                     final String soilConductivity = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal EC levels in the soil %s\", \"soilConductivity\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                     httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilConductivity); | ||||||
|  |                                     System.out.println("Optimal EC levels in the soil"+level +" in the following sensor:"+tag); | ||||||
|  |                                     critical = true; | ||||||
|  |                                 } | ||||||
|  |                       if (level > 20 && k.equals("dielectricPermittivity") ) { | ||||||
|  |                                        JOptionPane.showMessageDialog(null,"High dielectricPermittivity : "+level+" in the following sensor"+tag,"dielectricPermittivity",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                        final String dielectricPermittivity = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High dielectricPermittivity %s\", \"dielectricPermittivity\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivity); | ||||||
|  |                                        System.out.println("High dielectricPermittivity"+level +" in the following sensor:"+tag); | ||||||
|  |                                        critical = true; | ||||||
|  |                                     } | ||||||
|  | //                      if(critical == true){ | ||||||
|  | //                          finalOutput | ||||||
|  | //                      } | ||||||
|  |                         finalOutput = String.format("{\"id\":\"70B3D570500042D7-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the device 1 is critical\",}]}}"); | ||||||
|  |                         System.out.println(finalOutput); | ||||||
|  |         }*/ | ||||||
|  |  | ||||||
|  | end | ||||||
| @@ -1,33 +0,0 @@ | |||||||
| 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 |  | ||||||
| import HttpCall.HttpPost; |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
|  |  | ||||||
| rule "DielectricPermittivity" |  | ||||||
|     when |  | ||||||
|      $tMap: HashMap( containsKey("dielectricPermittivity") == true ) |  | ||||||
|          //In this part we are iterating through the entire map |  | ||||||
|              e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|              // for(e <- $tMap) { |  | ||||||
|              SensorData(level: value ) from v |  | ||||||
|              SensorData(tag: sensorTag) from v |  | ||||||
|              SensorData(id: deviceId) from v |  | ||||||
|     then |  | ||||||
|         String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|         HttpPost httpPost = new HttpPost(); |  | ||||||
|                 if (level > 20 && k.equals("dielectricPermittivity") ) { |  | ||||||
|                    JOptionPane.showMessageDialog(null,"High dielectricPermittivity : "+level+" in the following sensor"+tag,"dielectricPermittivity",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                    final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High dielectricPermittivity %s\", \"dielectricPermittivity\": %s}]}}", fixedIdG1, level,level); |  | ||||||
|                    httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|                    System.out.println("High dielectricPermittivity"+level +" in the following sensor:"+tag); |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
|          System.out.println(k); |  | ||||||
|          System.out.println(level); |  | ||||||
|          System.out.println(tag); |  | ||||||
|          System.out.println(id); |  | ||||||
| end |  | ||||||
| @@ -1,7 +0,0 @@ | |||||||
| package rules; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| rule "ExternalTemperature" |  | ||||||
|     when |  | ||||||
|     then |  | ||||||
| end |  | ||||||
| @@ -1,33 +0,0 @@ | |||||||
| 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 |  | ||||||
| import HttpCall.HttpPost; |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
|  |  | ||||||
| rule "Precipitation" |  | ||||||
|     when |  | ||||||
|      $tMap: HashMap( containsKey("precipitation") == true ) |  | ||||||
|          //In this part we are iterating through the entire map |  | ||||||
|              e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|              // for(e <- $tMap) { |  | ||||||
|              SensorData(level: value ) from v |  | ||||||
|              SensorData(tag: sensorTag) from v |  | ||||||
|              SensorData(id: deviceId) from v |  | ||||||
|     then |  | ||||||
|         String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|         HttpPost httpPost = new HttpPost(); |  | ||||||
|                 if (level > 14.5 && k.equals("precipitation") ) { |  | ||||||
|                    JOptionPane.showMessageDialog(null,"High water level : "+level+" in the following sensor"+tag,"Precipitation",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                    final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High water level %s\", \"precipitation\": %s}]}}", fixedIdG1, level,level); |  | ||||||
|                    httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|                    System.out.println("High water level"+level +" in the following sensor:"+tag); |  | ||||||
|  |  | ||||||
|                 } |  | ||||||
| //         System.out.println(k); |  | ||||||
| //         System.out.println(level); |  | ||||||
| //         System.out.println(tag); |  | ||||||
| //         System.out.println(id); |  | ||||||
| end |  | ||||||
| @@ -1,39 +0,0 @@ | |||||||
| 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 |  | ||||||
| import HttpCall.HttpPost; |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
|  |  | ||||||
| rule "Optimal EC levels in the soil" |  | ||||||
|  |  | ||||||
| when |  | ||||||
|      $tMap: HashMap( containsKey("soilConductivity") == true ) |  | ||||||
|      //In this part we are iterating through the entire map |  | ||||||
|          e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|          // for(e <- $tMap) { |  | ||||||
|          SensorData(level: value ) from v |  | ||||||
|          SensorData(tag: sensorTag) from v |  | ||||||
|          SensorData(id: deviceId) from v |  | ||||||
|  then |  | ||||||
|     String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|     HttpPost httpPost = new HttpPost(); |  | ||||||
|     if (level <= 0.57 && level >= 0.11 && k.equals("soilConductivity") ) { |  | ||||||
|                JOptionPane.showMessageDialog(null,"Optimal EC levels in the soil : "+level+" in the following sensor"+tag,"Soil Conductivity",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal EC levels in the soil %s\", \"soilConductivity\": %s}]}}", fixedIdG1, level,level); |  | ||||||
|                httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|                System.out.println("Optimal EC levels in the soil"+level +" in the following sensor:"+tag); |  | ||||||
|            } |  | ||||||
| //    else { |  | ||||||
| //               JOptionPane.showMessageDialog(null,"Non Optimal EC levels in the soil : "+level+" in the following sensor:"+tag,"Soil Conductivity",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
| //               final String data1 = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Non Optimal EC levels in the soil %s\", \"soil Conductivity\": %s}]}}", fixedIdG1, level,level); |  | ||||||
| ////               httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data1); |  | ||||||
| //               System.out.println(data1); |  | ||||||
| //    } |  | ||||||
| end |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| 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; |  | ||||||
| import HttpCall.HttpPost; |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
|  |  | ||||||
|  |  | ||||||
| rule "Soil Moisture" |  | ||||||
|  |  | ||||||
| when |  | ||||||
|           $tMap: HashMap( containsKey("soilMoisture") == true ) |  | ||||||
|           //In this part we are iterating through the entire map |  | ||||||
|               e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|               // for(e <- $tMap) { |  | ||||||
|               SensorData(level: value ) from v |  | ||||||
|               SensorData(tag: sensorTag) from v |  | ||||||
|               SensorData(id : deviceId) from v |  | ||||||
|  |  | ||||||
|  then |  | ||||||
|             HttpPost httpPost = new HttpPost(); |  | ||||||
|             String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|  |  | ||||||
|             if (level <= 30 && k.equals("soilMoisture") ) { |  | ||||||
|                  JOptionPane.showMessageDialog(null,"Be Careful the soil is dry : "+level+" in the following sensor :"+tag +"in the device:"+id,"Soil Moisture",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                  final String dataInfo = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Be Careful the soil sensor %s is dry: %s  \", \"soilMoisture\": %s}]}}", fixedIdG1,tag,level,level); |  | ||||||
|                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dataInfo); |  | ||||||
|                  System.out.println("Soil is dry"+level+" in the following sensor"+tag); |  | ||||||
|              } |  | ||||||
|              else  if (level <= 80 && k.equals("soilMoisture") ) { |  | ||||||
|                  JOptionPane.showMessageDialog(null,"Optimal moisture in the soil : "+level+" in the following sensor"+tag,"Soil Moisture",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                  final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Be Careful the soil sensor %s is wet: %s\", \"soilMoisture\": %s}]}}", fixedIdG1,tag,level,level); |  | ||||||
|                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|                  System.out.println("Optimal moisture in the soil"+level+" in the following sensor"+tag); |  | ||||||
|              } |  | ||||||
| end |  | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -1,29 +0,0 @@ | |||||||
| 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; |  | ||||||
| import HttpCall.HttpPost; |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
|  |  | ||||||
|  |  | ||||||
| rule "SoilTemperature" |  | ||||||
|  |  | ||||||
|     when |  | ||||||
|               $tMap: HashMap( containsKey("soilTemperature") == true ) |  | ||||||
|                   e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|                   SensorData(level: value ) from v |  | ||||||
|                   SensorData(tag: sensorTag) from v |  | ||||||
|                   SensorData(id : deviceId) from v |  | ||||||
|     then |  | ||||||
|  |  | ||||||
|         String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|         HttpPost httpPost = new HttpPost(); |  | ||||||
|         if (level < 22 && k.equals("soilTemperature") ) { |  | ||||||
|                      JOptionPane.showMessageDialog(null,"Low soil temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"soil Temperature",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|                      final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Low soil temperature %s in the following sensor: %s \", \"soilTemperature\": %s}]}}", fixedIdG1,level, tag,level); |  | ||||||
|                      httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|                      System.out.println("Low soil Temperature"+level+" in the following sensor "+tag); |  | ||||||
|                  } |  | ||||||
| end |  | ||||||
| @@ -1,40 +0,0 @@ | |||||||
| import java.util.List; |  | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Iterator; |  | ||||||
| import eu.hsrw.ias.ggd.ScheduledTask |  | ||||||
| import eu.hsrw.ias.ggd.SensorData |  | ||||||
| import javax.swing.JOptionPane |  | ||||||
| import HttpCall.HttpPost |  | ||||||
| import Files.ReadFile |  | ||||||
| import Credentials.UserCredentials; |  | ||||||
|  |  | ||||||
| rule "Temperature Check" |  | ||||||
|  |  | ||||||
| when |  | ||||||
| // This is like declaring a variable tMap where is Map and contains a key with name battery |  | ||||||
|     $tMap: HashMap( containsKey("temperature") == true ) |  | ||||||
| //In this part we are iterating through the entire map |  | ||||||
|     e: Map.Entry(k:key, v:value) from $tMap.entrySet() |  | ||||||
|     // for(e <- $tMap) { |  | ||||||
|     SensorData(level: value ) from v |  | ||||||
|     SensorData(tag: sensorTag) from v |  | ||||||
|     SensorData(id: deviceId) from v |  | ||||||
|  then |  | ||||||
|         String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; |  | ||||||
|         HttpPost httpPost = new HttpPost(); |  | ||||||
|         if (level > 80 && k.equals("temperature") ) { |  | ||||||
|              JOptionPane.showMessageDialog(null,"High Temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"Temperature",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|              final String data = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High Temperature %s in the following sensor: %s \", \"temperature\": %s}]}}", fixedIdG1,level, tag,level); |  | ||||||
|              httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data); |  | ||||||
|              System.out.println("High Temp"); |  | ||||||
|          } |  | ||||||
|         else if(level < 20 && k.equals("temperature")){ |  | ||||||
|             JOptionPane.showMessageDialog(null,"Low Temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"Temperature",JOptionPane.INFORMATION_MESSAGE); |  | ||||||
|             final String data1 = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Low Temperature %s in the following sensor: %s \", \"temperature\": %s}]}}",fixedIdG1,level, tag,level); |  | ||||||
|             httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",data1); |  | ||||||
|             System.out.println("Low Temp "+tag); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| end |  | ||||||
							
								
								
									
										9
									
								
								src/main/resources/rules/warnings.drl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								src/main/resources/rules/warnings.drl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | import eu.hsrw.ias.ggd.Notification; | ||||||
|  | import eu.hsrw.ias.ggd.Severity; | ||||||
|  |  | ||||||
|  | rule "Green House Critical" | ||||||
|  | when | ||||||
|  |     warning: Notification(severity > Severity.Info) | ||||||
|  | then | ||||||
|  |     System.out.println("Green House critical, because of: '"+warning.getType()+"'"); | ||||||
|  | end | ||||||
							
								
								
									
										97
									
								
								target/classes/rules/Critical.drl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										97
									
								
								target/classes/rules/Critical.drl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,97 @@ | |||||||
|  | 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 "Critical Battery" | ||||||
|  |     when | ||||||
|  |         //$t: HashMap( contains(Device(sensorData.contains(SensorData(tag == "battery")) ))) | ||||||
|  |         //device: Device() | ||||||
|  |         device: Device(sensorDatas: sensorData) | ||||||
|  |  | ||||||
|  |         sensorData: SensorData(tag == "battery", value < 5.0) from sensorDatas | ||||||
|  |         //device: Device(hasTag("battery") == true) from $tMap | ||||||
|  |         // e: Map.Entry(k:key == "battery", v:value) from $tMap.entrySet() | ||||||
|  |         //s: SensorData(tag == "battery") from device.getSensorData() | ||||||
|  |     then | ||||||
|  |         //insertLogical(new Notification("battery", s, Severity.Warning)); | ||||||
|  |         System.out.println(sensorData.getTag()+" "+sensorData.getValue()); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |         /*String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; | ||||||
|  |         HttpPost httpPost = new HttpPost(); | ||||||
|  | //        System.out.println("Tag: '"+tag+"' has low battery with value: '"+level+"'"); | ||||||
|  |         final String battery = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical! Low Battery %s \", \"battery\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |         httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",battery); | ||||||
|  |         System.out.println("Low Battery"+level+"in the following sensor"+tag); | ||||||
|  |         */ | ||||||
|  |         /*HttpPost httpPost = new HttpPost(); | ||||||
|  |  | ||||||
|  |         final String finalOutput; | ||||||
|  |         boolean critical = false; | ||||||
|  |         HashMap<String,Double> test = new HashMap<>(); | ||||||
|  |         if (tag.equals("fd694041-581e-4c2c-9810-505e62b762e6")){ // This matches 70B3D570500042D7 | ||||||
|  |                       if (level < 7.2 && k.equals("battery") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"Low Battery : "+level+"! Please swap the battery soon of the following sensor:"+tag,"Low Battery Level",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String battery = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical! Low Battery %s \", \"battery\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",battery); | ||||||
|  |                                  System.out.println("Low Battery"+level+"in the following sensor"+tag); | ||||||
|  |                                  critical = true; | ||||||
|  |                                  test.put("battery",level); | ||||||
|  |                              } | ||||||
|  |                       if (level > 80 && k.equals("temperature") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"High Temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"Temperature",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String temperature = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical!High Temperature %s \", \"temperature\": %s}]}}", fixedIdG1,level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",temperature); | ||||||
|  |                                  System.out.println("High Temp"); | ||||||
|  |                                  critical = true; | ||||||
|  |                              } | ||||||
|  |                       if (level > 14.5 && k.equals("precipitation") ) { | ||||||
|  |                                  JOptionPane.showMessageDialog(null,"High water level : "+level+" in the following sensor"+tag,"Precipitation",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                  final String precipitation = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High water level %s\", \"precipitation\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                  httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",precipitation); | ||||||
|  |                                  System.out.println("High water level"+level +" in the following sensor:"+tag); | ||||||
|  |                                  critical = true; | ||||||
|  |                                              } | ||||||
|  |                       if (level < 22 && k.equals("soilTemperature") ) { | ||||||
|  |                                           JOptionPane.showMessageDialog(null,"Low soil temperature : "+level+" in the following sensor: "+tag+"in the following device id: "+id,"soil Temperature",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                           final String soilTemperature = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Low soil temperature %s in the following sensor: %s \", \"soilTemperature\": %s}]}}", fixedIdG1,level, tag,level); | ||||||
|  |                                           httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilTemperature); | ||||||
|  |                                           System.out.println("Low soil Temperature"+level+" in the following sensor "+tag); | ||||||
|  |                                           critical = true; | ||||||
|  |                                           test.put("soilTemperature",level); | ||||||
|  |                                       } | ||||||
|  |                       if (level <= 30 && k.equals("soilMoisture") ) { | ||||||
|  |                                        JOptionPane.showMessageDialog(null,"Be Careful the soil is dry : "+level+" in the following sensor :"+tag +"in the device:"+id,"Soil Moisture",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                        final String soilMoisture = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Be Careful the soil sensor %s is dry: %s  \", \"soilMoisture\": %s}]}}", fixedIdG1,tag,level,level); | ||||||
|  |                                        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilMoisture); | ||||||
|  |                                        System.out.println("Soil is dry"+level+" in the following sensor"+tag); | ||||||
|  |                                        critical = true; | ||||||
|  |                                    } | ||||||
|  |                       if (level <= 0.57 && level >= 0.11 && k.equals("soilConductivity") ) { | ||||||
|  |                                     JOptionPane.showMessageDialog(null,"Optimal EC levels in the soil : "+level+" in the following sensor"+tag,"Soil Conductivity",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                     final String soilConductivity = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal EC levels in the soil %s\", \"soilConductivity\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                     httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",soilConductivity); | ||||||
|  |                                     System.out.println("Optimal EC levels in the soil"+level +" in the following sensor:"+tag); | ||||||
|  |                                     critical = true; | ||||||
|  |                                 } | ||||||
|  |                       if (level > 20 && k.equals("dielectricPermittivity") ) { | ||||||
|  |                                        JOptionPane.showMessageDialog(null,"High dielectricPermittivity : "+level+" in the following sensor"+tag,"dielectricPermittivity",JOptionPane.INFORMATION_MESSAGE); | ||||||
|  |                                        final String dielectricPermittivity = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"High dielectricPermittivity %s\", \"dielectricPermittivity\": %s}]}}", fixedIdG1, level,level); | ||||||
|  |                                        httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivity); | ||||||
|  |                                        System.out.println("High dielectricPermittivity"+level +" in the following sensor:"+tag); | ||||||
|  |                                        critical = true; | ||||||
|  |                                     } | ||||||
|  | //                      if(critical == true){ | ||||||
|  | //                          finalOutput | ||||||
|  | //                      } | ||||||
|  |                         finalOutput = String.format("{\"id\":\"70B3D570500042D7-status\",\"data\":{\"measured\":[{ \"status\": \"The status of the device 1 is critical\",}]}}"); | ||||||
|  |                         System.out.println(finalOutput); | ||||||
|  |         }*/ | ||||||
|  |  | ||||||
|  | end | ||||||
							
								
								
									
										9
									
								
								target/classes/rules/warnings.drl
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								target/classes/rules/warnings.drl
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,9 @@ | |||||||
|  | import eu.hsrw.ias.ggd.Notification; | ||||||
|  | import eu.hsrw.ias.ggd.Severity; | ||||||
|  |  | ||||||
|  | rule "Green House Critical" | ||||||
|  | when | ||||||
|  |     warning: Notification(severity > Severity.Info) | ||||||
|  | then | ||||||
|  |     System.out.println("Green House critical, because of: '"+warning.getType()+"'"); | ||||||
|  | end | ||||||
		Reference in New Issue
	
	Block a user