diff --git a/README.md b/README.md index 319cae3..4ebd422 100644 --- a/README.md +++ b/README.md @@ -13,16 +13,27 @@ The list of inferred active goals is offered to other services of the system. **Rules (General structure, if premises then consequence)** 1. Explicit given by expert (before and during runtime) -2. Trained through AI + 1. Battery + 2. Dielectric Permittivity + 3. Precipitation + 4. Soil Conductivity + 5. Soil Moisture + 6. Soil Temperature + 7. Temperature +2. All this information is considered as facts which are part of the entire knowledge graph +3. One particular rule can be fire on multiple rules can be fired. User defined. **Goals** -1. Actions that should be taken by the user to be successful. -2. Goals can be active and inactive. +1. Goals are active rules which are able to change the fact +2. Goals can be activated and deactivated based on the user preferences +3. Goals can have priorities #### **Build** - +Run the MainExe.java which is part of the eu.hsrw.ias.ggd package #### **Usage** - +You can reuse the project by changing the UserCredentials.java file located on the Credentials package. +It is possible to create new rules tailored to the needs. #### **Examples** - -#### **Dependencies** \ No newline at end of file +For each sensor mentioned in the list of rules an example is given. You may change the values based on the needs of the expert/user. +#### **Dependencies** +drools.org \ No newline at end of file diff --git a/src/main/java/Credentials/UserCredentials.java b/src/main/java/Credentials/UserCredentials.java index 53c1683..a1d1343 100644 --- a/src/main/java/Credentials/UserCredentials.java +++ b/src/main/java/Credentials/UserCredentials.java @@ -4,6 +4,7 @@ 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() { @@ -22,7 +23,9 @@ public class UserCredentials { return baseURL; } - + public String getDevUrl() { + return devUrl; + } @Override public String toString() { @@ -30,6 +33,7 @@ public class UserCredentials { "username='" + username + '\'' + ", password='" + password + '\'' + ", baseURL='" + baseURL + '\'' + + ", devUrl='" + devUrl + '\'' + '}'; } } diff --git a/src/main/java/Data/09a91c61-6572-4476-8bf1-310a2fb2eb02.json b/src/main/java/Data/09a91c61-6572-4476-8bf1-310a2fb2eb02.json new file mode 100644 index 0000000..0856e98 --- /dev/null +++ b/src/main/java/Data/09a91c61-6572-4476-8bf1-310a2fb2eb02.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/1f49de66-0921-4583-ae68-ff0fcc070bd1.json b/src/main/java/Data/1f49de66-0921-4583-ae68-ff0fcc070bd1.json new file mode 100644 index 0000000..f6fd92d --- /dev/null +++ b/src/main/java/Data/1f49de66-0921-4583-ae68-ff0fcc070bd1.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/22e5b1b0-b28c-4aa1-97c7-94ff12c51384.json b/src/main/java/Data/22e5b1b0-b28c-4aa1-97c7-94ff12c51384.json new file mode 100644 index 0000000..a1035f6 --- /dev/null +++ b/src/main/java/Data/22e5b1b0-b28c-4aa1-97c7-94ff12c51384.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/3b6a8c15-5cea-4994-954d-5b25c22e2c32.json b/src/main/java/Data/3b6a8c15-5cea-4994-954d-5b25c22e2c32.json new file mode 100644 index 0000000..a581e35 --- /dev/null +++ b/src/main/java/Data/3b6a8c15-5cea-4994-954d-5b25c22e2c32.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/5209815d-974f-4729-ae1a-06bd1000db67.json b/src/main/java/Data/5209815d-974f-4729-ae1a-06bd1000db67.json new file mode 100644 index 0000000..e49097d --- /dev/null +++ b/src/main/java/Data/5209815d-974f-4729-ae1a-06bd1000db67.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/65e95c11-ec15-4039-840a-e9be3d77ca63.json b/src/main/java/Data/65e95c11-ec15-4039-840a-e9be3d77ca63.json new file mode 100644 index 0000000..b95e553 --- /dev/null +++ b/src/main/java/Data/65e95c11-ec15-4039-840a-e9be3d77ca63.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/69bcaae0-9ccd-4342-8a71-c72dca37cfe9.json b/src/main/java/Data/69bcaae0-9ccd-4342-8a71-c72dca37cfe9.json new file mode 100644 index 0000000..e82312a --- /dev/null +++ b/src/main/java/Data/69bcaae0-9ccd-4342-8a71-c72dca37cfe9.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/70B3D57050004223.json b/src/main/java/Data/70B3D57050004223.json new file mode 100644 index 0000000..ee3e70e --- /dev/null +++ b/src/main/java/Data/70B3D57050004223.json @@ -0,0 +1 @@ +[{"id":"77c174ad-37a8-4cc5-b690-570c3ac57c53","name":"","description":"","tag":"soilTemperature","hasForecast":false,"virtual":false,"deviceId":"b04821c6-ea7c-4e2e-9575-7c8e8ba9191a","sensorTemplateId":"f1ca68cc-cfd2-4f44-94cf-61138b71f5d2"},{"id":"a0d80d32-303a-460b-954a-2e4f7bd76b68","name":"","description":"","tag":"dielectricPermittivity","hasForecast":false,"virtual":false,"deviceId":"b04821c6-ea7c-4e2e-9575-7c8e8ba9191a","sensorTemplateId":"c04a55a7-51e8-4647-9b59-3d82966dd863"},{"id":"bdd1d27b-b2fb-4d9f-915f-ddc5a79be8b4","name":"","description":"","tag":"soilConductivity","hasForecast":false,"virtual":false,"deviceId":"b04821c6-ea7c-4e2e-9575-7c8e8ba9191a","sensorTemplateId":"057a689a-738a-4e78-bf73-6629ee56ab4c"},{"id":"d7c4c7a5-7010-489e-9526-999216fcf492","name":"","description":"","tag":"soilMoisture","hasForecast":false,"virtual":false,"deviceId":"b04821c6-ea7c-4e2e-9575-7c8e8ba9191a","sensorTemplateId":"8fac9339-de32-45a7-8df6-f38aca013e66"},{"id":"da62ffa0-56ad-44ee-a846-907357d0be8d","name":"","description":"","tag":"battery","hasForecast":false,"virtual":false,"deviceId":"b04821c6-ea7c-4e2e-9575-7c8e8ba9191a","sensorTemplateId":"978d7178-aa5a-41ca-a5c8-1868135ea928"}] \ No newline at end of file diff --git a/src/main/java/Data/70B3D570500042D7.json b/src/main/java/Data/70B3D570500042D7.json new file mode 100644 index 0000000..75c287e --- /dev/null +++ b/src/main/java/Data/70B3D570500042D7.json @@ -0,0 +1 @@ +[{"id":"1f49de66-0921-4583-ae68-ff0fcc070bd1","name":"","description":"","tag":"dielectricPermittivity","hasForecast":false,"virtual":false,"deviceId":"fd694041-581e-4c2c-9810-505e62b762e6","sensorTemplateId":"c04a55a7-51e8-4647-9b59-3d82966dd863"},{"id":"22e5b1b0-b28c-4aa1-97c7-94ff12c51384","name":"","description":"","tag":"soilTemperature","hasForecast":false,"virtual":false,"deviceId":"fd694041-581e-4c2c-9810-505e62b762e6","sensorTemplateId":"f1ca68cc-cfd2-4f44-94cf-61138b71f5d2"},{"id":"3b6a8c15-5cea-4994-954d-5b25c22e2c32","name":"","description":"","tag":"soilMoisture","hasForecast":false,"virtual":false,"deviceId":"fd694041-581e-4c2c-9810-505e62b762e6","sensorTemplateId":"8fac9339-de32-45a7-8df6-f38aca013e66"},{"id":"5209815d-974f-4729-ae1a-06bd1000db67","name":"","description":"","tag":"soilConductivity","hasForecast":false,"virtual":false,"deviceId":"fd694041-581e-4c2c-9810-505e62b762e6","sensorTemplateId":"057a689a-738a-4e78-bf73-6629ee56ab4c"},{"id":"adba09f9-ab84-4252-bf1a-ac49b1b6bdd3","name":"","description":"","tag":"battery","hasForecast":false,"virtual":false,"deviceId":"fd694041-581e-4c2c-9810-505e62b762e6","sensorTemplateId":"978d7178-aa5a-41ca-a5c8-1868135ea928"}] \ No newline at end of file diff --git a/src/main/java/Data/70B3D57050004EF4.json b/src/main/java/Data/70B3D57050004EF4.json new file mode 100644 index 0000000..82540fb --- /dev/null +++ b/src/main/java/Data/70B3D57050004EF4.json @@ -0,0 +1 @@ +[{"id":"65e95c11-ec15-4039-840a-e9be3d77ca63","name":"","description":"","tag":"precipitation","hasForecast":false,"virtual":false,"deviceId":"e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0","sensorTemplateId":"3985b5b6-92a4-41b1-b2e6-e553a663442c"},{"id":"812c6e62-e855-424b-8ec1-78fb424a94b5","name":"","description":"","tag":"soilMoisture","hasForecast":false,"virtual":false,"deviceId":"e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0","sensorTemplateId":"dbe5fd37-85bd-4af1-b335-554baa3f6d49"},{"id":"ffca826c-d1b5-4ac8-869a-ec0da15d9076","name":"","description":"","tag":"battery","hasForecast":false,"virtual":false,"deviceId":"e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0","sensorTemplateId":"71c8fcd4-3895-42e8-82d9-455366c956ef"}] \ No newline at end of file diff --git a/src/main/java/Data/70B3D57050006223.json b/src/main/java/Data/70B3D57050006223.json new file mode 100644 index 0000000..09a3e86 --- /dev/null +++ b/src/main/java/Data/70B3D57050006223.json @@ -0,0 +1 @@ +[{"id":"09a91c61-6572-4476-8bf1-310a2fb2eb02","name":"","description":"","tag":"externalTemperature","hasForecast":false,"virtual":false,"deviceId":"f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632","sensorTemplateId":"46bc5bf2-ad0c-4ec4-9df5-0bff12f911b6"},{"id":"88c8442f-62b9-4952-b28c-73790a555060","name":"","description":"","tag":"battery","hasForecast":false,"virtual":false,"deviceId":"f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632","sensorTemplateId":"71c8fcd4-3895-42e8-82d9-455366c956ef"},{"id":"bc08edce-d214-40db-ba51-a0802243c235","name":"","description":"","tag":"soilMoisture","hasForecast":false,"virtual":false,"deviceId":"f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632","sensorTemplateId":"dbe5fd37-85bd-4af1-b335-554baa3f6d49"}] \ No newline at end of file diff --git a/src/main/java/Data/70B3D5705000623C.json b/src/main/java/Data/70B3D5705000623C.json new file mode 100644 index 0000000..2599621 --- /dev/null +++ b/src/main/java/Data/70B3D5705000623C.json @@ -0,0 +1 @@ +[{"id":"69bcaae0-9ccd-4342-8a71-c72dca37cfe9","name":"","description":"","tag":"battery","hasForecast":false,"virtual":false,"deviceId":"6c9efd4a-db04-453d-8ab8-d480ec97dd26","sensorTemplateId":"71c8fcd4-3895-42e8-82d9-455366c956ef"},{"id":"cd2e9ec6-ad80-477a-a510-6697b2953d19","name":"","description":"","tag":"coordinates","hasForecast":false,"virtual":false,"deviceId":"6c9efd4a-db04-453d-8ab8-d480ec97dd26","sensorTemplateId":"c3591348-8ef1-4e19-a2eb-c9a377e4199e"},{"id":"f75934dc-af98-4206-a5bd-22d23dd5f268","name":"","description":"","tag":"temperature","hasForecast":false,"virtual":false,"deviceId":"6c9efd4a-db04-453d-8ab8-d480ec97dd26","sensorTemplateId":"46bc5bf2-ad0c-4ec4-9df5-0bff12f911b6"},{"id":"ff6f11e0-c969-4cbb-829c-f44a13683918","name":"","description":"","tag":"precipitation","hasForecast":false,"virtual":false,"deviceId":"6c9efd4a-db04-453d-8ab8-d480ec97dd26","sensorTemplateId":"3985b5b6-92a4-41b1-b2e6-e553a663442c"}] \ No newline at end of file diff --git a/src/main/java/Data/77c174ad-37a8-4cc5-b690-570c3ac57c53.json b/src/main/java/Data/77c174ad-37a8-4cc5-b690-570c3ac57c53.json new file mode 100644 index 0000000..0cd91d4 --- /dev/null +++ b/src/main/java/Data/77c174ad-37a8-4cc5-b690-570c3ac57c53.json @@ -0,0 +1 @@ +{"error":{"statusCode":403,"name":"AccessDeniedError","message":"Access denied","status":403,"code":"ACCESS_DENIED","stack":"AccessDeniedError: Access denied\n at Sensor.read (/usr/src/app/server/models/device/sensor.js:37:60)"}}soilTemperature,b04821c6-ea7c-4e2e-9575-7c8e8ba9191a \ No newline at end of file diff --git a/src/main/java/Data/812c6e62-e855-424b-8ec1-78fb424a94b5.json b/src/main/java/Data/812c6e62-e855-424b-8ec1-78fb424a94b5.json new file mode 100644 index 0000000..c3a3250 --- /dev/null +++ b/src/main/java/Data/812c6e62-e855-424b-8ec1-78fb424a94b5.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/88c8442f-62b9-4952-b28c-73790a555060.json b/src/main/java/Data/88c8442f-62b9-4952-b28c-73790a555060.json new file mode 100644 index 0000000..4197297 --- /dev/null +++ b/src/main/java/Data/88c8442f-62b9-4952-b28c-73790a555060.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/a0d80d32-303a-460b-954a-2e4f7bd76b68.json b/src/main/java/Data/a0d80d32-303a-460b-954a-2e4f7bd76b68.json new file mode 100644 index 0000000..3ecca3e --- /dev/null +++ b/src/main/java/Data/a0d80d32-303a-460b-954a-2e4f7bd76b68.json @@ -0,0 +1 @@ +{"error":{"statusCode":403,"name":"AccessDeniedError","message":"Access denied","status":403,"code":"ACCESS_DENIED","stack":"AccessDeniedError: Access denied\n at Sensor.read (/usr/src/app/server/models/device/sensor.js:37:60)"}}dielectricPermittivity,b04821c6-ea7c-4e2e-9575-7c8e8ba9191a \ No newline at end of file diff --git a/src/main/java/Data/adba09f9-ab84-4252-bf1a-ac49b1b6bdd3.json b/src/main/java/Data/adba09f9-ab84-4252-bf1a-ac49b1b6bdd3.json new file mode 100644 index 0000000..54e67a7 --- /dev/null +++ b/src/main/java/Data/adba09f9-ab84-4252-bf1a-ac49b1b6bdd3.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/bc08edce-d214-40db-ba51-a0802243c235.json b/src/main/java/Data/bc08edce-d214-40db-ba51-a0802243c235.json new file mode 100644 index 0000000..4eea227 --- /dev/null +++ b/src/main/java/Data/bc08edce-d214-40db-ba51-a0802243c235.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/bdd1d27b-b2fb-4d9f-915f-ddc5a79be8b4.json b/src/main/java/Data/bdd1d27b-b2fb-4d9f-915f-ddc5a79be8b4.json new file mode 100644 index 0000000..6588931 --- /dev/null +++ b/src/main/java/Data/bdd1d27b-b2fb-4d9f-915f-ddc5a79be8b4.json @@ -0,0 +1 @@ +{"error":{"statusCode":403,"name":"AccessDeniedError","message":"Access denied","status":403,"code":"ACCESS_DENIED","stack":"AccessDeniedError: Access denied\n at Sensor.read (/usr/src/app/server/models/device/sensor.js:37:60)"}}soilConductivity,b04821c6-ea7c-4e2e-9575-7c8e8ba9191a \ No newline at end of file diff --git a/src/main/java/Data/cd2e9ec6-ad80-477a-a510-6697b2953d19.json b/src/main/java/Data/cd2e9ec6-ad80-477a-a510-6697b2953d19.json new file mode 100644 index 0000000..ecd69a2 --- /dev/null +++ b/src/main/java/Data/cd2e9ec6-ad80-477a-a510-6697b2953d19.json @@ -0,0 +1 @@ +[]coordinates,6c9efd4a-db04-453d-8ab8-d480ec97dd26 \ No newline at end of file diff --git a/src/main/java/Data/d7c4c7a5-7010-489e-9526-999216fcf492.json b/src/main/java/Data/d7c4c7a5-7010-489e-9526-999216fcf492.json new file mode 100644 index 0000000..1f43655 --- /dev/null +++ b/src/main/java/Data/d7c4c7a5-7010-489e-9526-999216fcf492.json @@ -0,0 +1 @@ +{"error":{"statusCode":403,"name":"AccessDeniedError","message":"Access denied","status":403,"code":"ACCESS_DENIED","stack":"AccessDeniedError: Access denied\n at Sensor.read (/usr/src/app/server/models/device/sensor.js:37:60)"}}soilMoisture,b04821c6-ea7c-4e2e-9575-7c8e8ba9191a \ No newline at end of file diff --git a/src/main/java/Data/da62ffa0-56ad-44ee-a846-907357d0be8d.json b/src/main/java/Data/da62ffa0-56ad-44ee-a846-907357d0be8d.json new file mode 100644 index 0000000..89f8244 --- /dev/null +++ b/src/main/java/Data/da62ffa0-56ad-44ee-a846-907357d0be8d.json @@ -0,0 +1 @@ +{"error":{"statusCode":403,"name":"AccessDeniedError","message":"Access denied","status":403,"code":"ACCESS_DENIED","stack":"AccessDeniedError: Access denied\n at Sensor.read (/usr/src/app/server/models/device/sensor.js:37:60)"}}battery,b04821c6-ea7c-4e2e-9575-7c8e8ba9191a \ No newline at end of file diff --git a/src/main/java/Data/devicesOutput.json b/src/main/java/Data/devicesOutput.json new file mode 100644 index 0000000..bce0e9f --- /dev/null +++ b/src/main/java/Data/devicesOutput.json @@ -0,0 +1 @@ +[{"id":"087c830b-1173-4b5b-bdbc-c139856cf6aa","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D57050004C5A","name":"70B3D57050004C5A","description":"6kg sensor","additionalInfo":{"location":{"latitude":51.289406,"longitude":6.042}},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"09d69136-7bdb-420e-83eb-8185d39b06c3","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D570500046AA","name":"70B3D570500046AA","description":"6kg sensor","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"142ad259-c570-49cc-bf58-99105231c051","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D57050004657","name":"70B3D57050004657","description":"6kg sensor","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"1f6184e2-3cfb-43e7-83a4-ea175c8590f4","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D5705000473D","name":"70B3D5705000473D","description":"","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"21c94566-202d-4c12-af0d-035b8db19d32","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D57050004A7B","name":"70B3D57050004A7B","description":"","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"388e035d-1c04-433e-bd87-de8cbf582dd3","externalDomain":"default","externalId":"8bdbe6ae-eafb-4e99-bb01-db8784dd9633","name":"Greenhouse 1","description":"","additionalInfo":{},"deviceTemplateId":"cb64266d-77d2-44a6-8626-1fc7f3dd5818","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"6285c35e-9495-4017-809e-7e91a83e3bb1","externalDomain":"default","externalId":"be4a38d7-34cf-497e-9565-1396a8020293","name":"Aris - Plant Surface Area - 1","description":"","additionalInfo":{},"deviceTemplateId":"7b806473-417c-467b-a4c8-5caa5615704f","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"6c9efd4a-db04-453d-8ab8-d480ec97dd26","externalDomain":"ttn","externalId":"70B3D5705000623C","name":"70B3D5705000623C","description":"","additionalInfo":{"location":{}},"deviceTemplateId":"e9cdbf8c-17f7-4546-a555-61bacea9ef44","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"744bdb18-8387-4b6a-9e46-05e5a823b713","externalDomain":"default","externalId":"bb0a993f-1c2d-43fa-8f5c-60c948a77fa3","name":"Aris - Plant Surface Area - 3","description":"","additionalInfo":{},"deviceTemplateId":"7b806473-417c-467b-a4c8-5caa5615704f","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"88ca2728-7a4b-4f90-a28c-1f5ba387e890","externalDomain":"default","externalId":"e5ec9f15-f214-455d-9f02-3c134c770dc1","name":"Greenhouse 2","description":"","additionalInfo":{},"deviceTemplateId":"cb64266d-77d2-44a6-8626-1fc7f3dd5818","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"98e242b8-e49d-4eb5-a56e-a5665c05b3a3","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D57050004619","name":"70B3D57050004619","description":"","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"9aeac8c4-998b-4175-8908-946da0d6e76b","externalDomain":"default","externalId":"f438e5fe-e819-4c4f-a662-9df0bd632af4","name":"Aris - Plant Surface Area - 2","description":"","additionalInfo":{},"deviceTemplateId":"7b806473-417c-467b-a4c8-5caa5615704f","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"b1334e25-22db-40be-8b17-61e6037e9d8e","externalDomain":"darksky","externalId":"51.43222,6.76111-edcd704b","name":"Duisburg, Noordrijn-Westfalen, Duitsland","description":"","additionalInfo":{},"deviceTemplateId":"a9c12700-3394-4cee-80ad-696173ceb250","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"b4f3ca19-1648-4df1-a83d-089c8064a6ff","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D57050004636","name":"70B3D57050004636","description":"6kg sensor","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"b61c30d1-9281-4fc7-ab70-a43861fe0264","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D5705000471F","name":"70B3D5705000471F","description":"","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"c97e36da-8274-43aa-a226-7e1bf8b943b0","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D5705000473C","name":"70B3D5705000473C","description":"","additionalInfo":{},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"e359048e-8877-478c-bcb7-a9908a750301","externalDomain":"default","externalId":"afc6ece6-20fb-493d-8220-ade23d29c3b9","name":"Aris - Plant Surface Area - 4","description":"","additionalInfo":{},"deviceTemplateId":"7b806473-417c-467b-a4c8-5caa5615704f","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"e5728985-f4f5-4b9a-ae32-9d6ae40f9f53","externalDomain":["kpn-lora","modelapi"],"externalId":"70B3D5705000461C","name":"70B3D5705000461C","description":"6kg sensor","additionalInfo":{"location":{"latitude":51.28905,"longitude":6.042781}},"deviceTemplateId":"7be8a213-65e9-4084-b73b-9d5cfcc46cc0","organizationId":"46224b7f-bf6e-4a14-8844-c8d9258a58bf"},{"id":"e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0","externalDomain":"ttn","externalId":"70B3D57050004EF4","name":"70B3D57050004EF4 (replaces 70B3D57050004EEF)","description":"","additionalInfo":{"location":{}},"deviceTemplateId":"84435db4-2eeb-4141-b09e-302e67e94a60","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632","externalDomain":"ttn","externalId":"70B3D57050006223","name":"70B3D57050006223","description":"","additionalInfo":{"location":{}},"deviceTemplateId":"3c6fa253-4eb5-4345-812f-180b349d935b","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"},{"id":"fd694041-581e-4c2c-9810-505e62b762e6","externalDomain":"ttn","externalId":"70B3D570500042D7","name":"042D7 - EC, bodemvocht en bodemtemperatuur","description":"","additionalInfo":{"location":{}},"deviceTemplateId":"ddafe2db-404f-487f-bfd9-b060254daa15","organizationId":"fca1ed1a-ce91-4e83-b438-7dd09530d5a2"}] \ No newline at end of file diff --git a/src/main/java/Data/f75934dc-af98-4206-a5bd-22d23dd5f268.json b/src/main/java/Data/f75934dc-af98-4206-a5bd-22d23dd5f268.json new file mode 100644 index 0000000..4123ecc --- /dev/null +++ b/src/main/java/Data/f75934dc-af98-4206-a5bd-22d23dd5f268.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/ff6f11e0-c969-4cbb-829c-f44a13683918.json b/src/main/java/Data/ff6f11e0-c969-4cbb-829c-f44a13683918.json new file mode 100644 index 0000000..351cb3b --- /dev/null +++ b/src/main/java/Data/ff6f11e0-c969-4cbb-829c-f44a13683918.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/ffca826c-d1b5-4ac8-869a-ec0da15d9076.json b/src/main/java/Data/ffca826c-d1b5-4ac8-869a-ec0da15d9076.json new file mode 100644 index 0000000..4398d68 --- /dev/null +++ b/src/main/java/Data/ffca826c-d1b5-4ac8-869a-ec0da15d9076.json @@ -0,0 +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 \ No newline at end of file diff --git a/src/main/java/Data/securityToken.txt b/src/main/java/Data/securityToken.txt index 390589c..b8bf4d5 100644 --- a/src/main/java/Data/securityToken.txt +++ b/src/main/java/Data/securityToken.txt @@ -1 +1 @@ -3jINGNigY2BcAHzSTU3K5734i1LvZzZq7ogMAVp4DYy4JkZtjzh0gHIdoqLeIV3n \ No newline at end of file +nRsSvFEYoGTEqSmnmtE0R0btgMW8J6C6VpKEefCfPerViKxV4usqGREOioUQ268G \ No newline at end of file diff --git a/src/main/java/eu/hsrw/ias/ggd/ScheduledTask.java b/src/main/java/eu/hsrw/ias/ggd/ScheduledTask.java index 14bd171..b08cf82 100644 --- a/src/main/java/eu/hsrw/ias/ggd/ScheduledTask.java +++ b/src/main/java/eu/hsrw/ias/ggd/ScheduledTask.java @@ -33,9 +33,11 @@ public class ScheduledTask extends TimerTask { KieSession kSession = kContainer.newKieSession("ksession-rule"); FactHandle fact1; fact1 = kSession.insert(outputDevices); - System.out.println(fact1); +// System.out.println(fact1); + kSession.insert(fact1); kSession.fireAllRules(); + } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { diff --git a/src/main/resources/rules/Battery.drl b/src/main/resources/rules/Battery.drl index a804133..222c2e9 100644 --- a/src/main/resources/rules/Battery.drl +++ b/src/main/resources/rules/Battery.drl @@ -1,4 +1,3 @@ -package rules; import java.util.List; import java.util.HashMap; import java.util.Map; diff --git a/src/main/resources/rules/DielectricPermittivity.drl b/src/main/resources/rules/DielectricPermittivity.drl index cb1f953..e1955aa 100644 --- a/src/main/resources/rules/DielectricPermittivity.drl +++ b/src/main/resources/rules/DielectricPermittivity.drl @@ -1,7 +1,33 @@ -package rules; -dialect "mvel" +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 diff --git a/src/main/resources/rules/Precipitation.drl b/src/main/resources/rules/Precipitation.drl index 5b9afb4..edff4c0 100644 --- a/src/main/resources/rules/Precipitation.drl +++ b/src/main/resources/rules/Precipitation.drl @@ -1,7 +1,33 @@ -package rules; -dialect "mvel" +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 diff --git a/src/main/resources/rules/SoilConductivity.drl b/src/main/resources/rules/SoilConductivity.drl index 4c92870..4c68bb8 100644 --- a/src/main/resources/rules/SoilConductivity.drl +++ b/src/main/resources/rules/SoilConductivity.drl @@ -19,11 +19,10 @@ when SensorData(id: deviceId) from v then String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; - String fixedTag="soil Conductivity"; 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\", \"soil conductivity\": %s}]}}", fixedIdG1, level,level); + 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); } diff --git a/src/main/resources/rules/SoilMoisture.drl b/src/main/resources/rules/SoilMoisture.drl index d04d54e..5f1fb26 100644 --- a/src/main/resources/rules/SoilMoisture.drl +++ b/src/main/resources/rules/SoilMoisture.drl @@ -22,16 +22,16 @@ when then HttpPost httpPost = new HttpPost(); String fixedIdG1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633"; - String fixedTag="soil Moisture"; + 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 \", \"soil moisture\": %s}]}}", fixedIdG1,fixedTag,level,level); + 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\", \"soil moisture\": %s}]}}", fixedIdG1,fixedTag,level,level); + 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); } diff --git a/src/main/resources/rules/SoilTemperature.drl b/src/main/resources/rules/SoilTemperature.drl index 66c373a..952ebae 100644 --- a/src/main/resources/rules/SoilTemperature.drl +++ b/src/main/resources/rules/SoilTemperature.drl @@ -22,7 +22,7 @@ rule "SoilTemperature" 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 \", \"soil temperature\": %s}]}}", fixedIdG1,level, tag,level); + 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); } diff --git a/target/classes/META-INF/kmodule.xml b/target/classes/META-INF/kmodule.xml new file mode 100644 index 0000000..6d1c326 --- /dev/null +++ b/target/classes/META-INF/kmodule.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/target/classes/maven/pom.properties b/target/classes/maven/pom.properties new file mode 100644 index 0000000..8ac1e8b --- /dev/null +++ b/target/classes/maven/pom.properties @@ -0,0 +1,3 @@ +groupId=com.javainuse +artifactId=drools-hello-world +version=0.0.1-SNAPSHOT \ No newline at end of file diff --git a/target/classes/rules/Battery.drl b/target/classes/rules/Battery.drl new file mode 100644 index 0000000..222c2e9 --- /dev/null +++ b/target/classes/rules/Battery.drl @@ -0,0 +1,41 @@ +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 \ No newline at end of file diff --git a/target/classes/rules/DielectricPermittivity.drl b/target/classes/rules/DielectricPermittivity.drl new file mode 100644 index 0000000..98958c9 --- /dev/null +++ b/target/classes/rules/DielectricPermittivity.drl @@ -0,0 +1,33 @@ +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 > 14.5 && 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 diff --git a/target/classes/rules/ExternalTemperature.drl b/target/classes/rules/ExternalTemperature.drl new file mode 100644 index 0000000..c2bfa6d --- /dev/null +++ b/target/classes/rules/ExternalTemperature.drl @@ -0,0 +1,7 @@ +package rules; + + +rule "ExternalTemperature" + when + then +end diff --git a/target/classes/rules/Precipitation.drl b/target/classes/rules/Precipitation.drl new file mode 100644 index 0000000..edff4c0 --- /dev/null +++ b/target/classes/rules/Precipitation.drl @@ -0,0 +1,33 @@ +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 diff --git a/target/classes/rules/SoilConductivity.drl b/target/classes/rules/SoilConductivity.drl new file mode 100644 index 0000000..4c68bb8 --- /dev/null +++ b/target/classes/rules/SoilConductivity.drl @@ -0,0 +1,39 @@ +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 + + + + diff --git a/target/classes/rules/SoilMoisture.drl b/target/classes/rules/SoilMoisture.drl new file mode 100644 index 0000000..5f1fb26 --- /dev/null +++ b/target/classes/rules/SoilMoisture.drl @@ -0,0 +1,40 @@ +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 + + diff --git a/target/classes/rules/SoilTemperature.drl b/target/classes/rules/SoilTemperature.drl new file mode 100644 index 0000000..952ebae --- /dev/null +++ b/target/classes/rules/SoilTemperature.drl @@ -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; +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 diff --git a/target/classes/rules/Temperature.drl b/target/classes/rules/Temperature.drl new file mode 100644 index 0000000..375e1b3 --- /dev/null +++ b/target/classes/rules/Temperature.drl @@ -0,0 +1,40 @@ +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 \ No newline at end of file