NEW : REBASE THE ENTIRE WORKING PROJECT

master
Kevin Shehu 2022-02-09 19:09:05 +01:00
parent c82b9893a8
commit ddad60988e
89 changed files with 0 additions and 2537 deletions

134
.gitignore vendored
View File

@ -1,134 +0,0 @@
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# AWS User-specific
.idea/**/aws.xml
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/artifacts
# .idea/compiler.xml
# .idea/jarRepositories.xml
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# SonarLint plugin
.idea/sonarlint/
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
# https://plugins.jetbrains.com/plugin/7973-sonarlint
.idea/**/sonarlint/
# SonarQube Plugin
# https://plugins.jetbrains.com/plugin/7238-sonarqube-community-plugin
.idea/**/sonarIssues.xml
# Markdown Navigator plugin
# https://plugins.jetbrains.com/plugin/7896-markdown-navigator-enhanced
.idea/**/markdown-navigator.xml
.idea/**/markdown-navigator-enh.xml
.idea/**/markdown-navigator/
# Cache file creation bug
# See https://youtrack.jetbrains.com/issue/JBR-2257
.idea/$CACHE_FILE$
# CodeStream plugin
# https://plugins.jetbrains.com/plugin/12206-codestream
.idea/codestream.xml
### Java ###
# Compiled class file
*.class
src/main/java/Credentials/*.java
src/main/java/Data/*.json
# Log file
*.log
# BlueJ files
*.ctxt
# Mobile Tools for Java (J2ME)
.mtj.tmp/
# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
replay_pid*

2
.idea/.gitignore vendored
View File

@ -1,2 +0,0 @@
# Default ignored files
/workspace.xml

View File

@ -1,5 +0,0 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<annotationProcessing>
<profile name="Maven default annotation processors profile" enabled="true">
<sourceOutputDir name="target/generated-sources/annotations" />
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
<outputRelativeToContentRoot value="true" />
<module name="GGD" />
</profile>
</annotationProcessing>
</component>
</project>

View File

@ -1,6 +0,0 @@
<component name="CopyrightManager">
<copyright>
<option name="notice" value="Copyright (c) &amp;#36;today.year. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the &quot;Software&quot;), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:" />
<option name="myName" value="Kevin Shehu" />
</copyright>
</component>

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RemoteRepositoriesConfiguration">
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Central Repository" />
<option name="url" value="https://repo.maven.apache.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss-public-repository-group" />
<option name="name" value="JBoss Public Repository Group" />
<option name="url" value="http://repository.jboss.org/nexus/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="central" />
<option name="name" value="Maven Central repository" />
<option name="url" value="https://repo1.maven.org/maven2" />
</remote-repository>
<remote-repository>
<option name="id" value="jboss.community" />
<option name="name" value="JBoss Community repository" />
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
</remote-repository>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JpaBuddyIdeaProjectConfig">
<option name="defaultUnitInitialized" value="true" />
</component>
</project>

View File

@ -1,45 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectPlainTextFileTypeManager">
<file url="file://$PROJECT_DIR$/src/main/java/Data/0 0004A30B00227D68,70B3D5705000E019.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/12 70B3D57050004682,70B3D570500046AB,70B3D57050004D14.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/12 70B3D57050004682,70B3D57050004D14.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/13 70B3D57050004223,70B3D570500042D7,70B3D57050004EEF,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/13 70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/13ebfdd7-8a4f-4410-97ee-e51d6fccd569.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/14 70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/15 70B3D57050004223,70B3D570500042D7,70B3D57050004EEF,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/15 70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/23d6a70b-befb-4895-b138-20e08d2a195c.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/26bc66de-66af-4430-ace4-ea4eac6f8c95.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/389d6a48-cc10-4160-ba53-2b3cd80622d6.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/3eb4f776-8eca-4354-a3d8-d4b988b387ad.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/4 70B3D57050004223,70B3D570500042D7,70B3D57050004EEF,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/4 70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/6 70B3D57050004682,70B3D570500046AB,70B3D57050004D14.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/6 70B3D57050004682,70B3D57050004D14.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/64a3d8c3-027c-4125-afeb-f53bbd0b7cc3.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/6b5ae232-2ada-49e5-8f79-4dbfc276dc7a.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/7 0004A30B00227D68,70B3D5705000E019.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/7669429f-94e4-4e4f-a0cc-56e96523ded5.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/8 70B3D57050004223,70B3D570500042D7,70B3D57050004EEF,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/8 70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/bdc213b0-50c4-4085-867a-c724fd454670.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/devicesOutput.json" />
<file url="file://$PROJECT_DIR$/src/main/java/Data/e01b1f84-41c9-4cbf-8690-9b3552c8bc6d.json" />
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_16" project-jdk-name="14.0.1" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="RunConfigurationProducerService">
<option name="ignoredProducers">
<set>
<option value="com.android.tools.idea.compose.preview.runconfiguration.ComposePreviewRunConfigurationProducer" />
</set>
</option>
</component>
</project>

View File

@ -1,124 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Palette2">
<group name="Swing">
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
</item>
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
</item>
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
</item>
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
<initial-values>
<property name="text" value="Button" />
</initial-values>
</item>
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="RadioButton" />
</initial-values>
</item>
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
<initial-values>
<property name="text" value="CheckBox" />
</initial-values>
</item>
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
<initial-values>
<property name="text" value="Label" />
</initial-values>
</item>
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
<preferred-size width="150" height="-1" />
</default-constraints>
</item>
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
</item>
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
<preferred-size width="150" height="50" />
</default-constraints>
</item>
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
<preferred-size width="200" height="200" />
</default-constraints>
</item>
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
</item>
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
</item>
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
</item>
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
<preferred-size width="-1" height="20" />
</default-constraints>
</item>
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
</item>
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
</item>
</group>
</component>
</project>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>

View File

@ -1,39 +0,0 @@
### **Gardeners Green Thumb Decision Support System** (GGD-DDS)
The service of decision support system is inferring knowledge from the available data of the greenhouse, the user input, and historical data what a user/the gardener should do & which action a gardener should execute to be successful with the growing process of the plants.
These actions are called goals.
The list of inferred active goals is offered to other services of the system.
The approach of the DSS is based on three eu.hsrw.ias.ggd.MainExe concepts:
**Fact knowledge (Knowledgebase)**
1. Hardware Information(sensor data info)
2. Data information was given by an expert that is overwriting sensor data
3. User Input (We assume that the user is every time honest and that input is every time correct)
**Rules (General structure, if premises then consequence)**
1. Explicit given by expert (before and during runtime)
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. 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**
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

140
pom.xml
View File

@ -1,140 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<properties>
<runtime.version>7.48.0.Final</runtime.version>
</properties>
<groupId>org.example</groupId>
<artifactId>GGD</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>info.picocli</groupId>
<artifactId>picocli</artifactId>
<version>4.5.1</version>
</dependency>
<dependency>
<groupId>org.glassfish</groupId>
<artifactId>javax.json</artifactId>
<version>1.1.4</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20201115</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.30</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.drools/drools-core-->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-core</artifactId>
<version>${runtime.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.drools/drools-compiler -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-compiler</artifactId>
<version>${runtime.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.drools/drools-decisiontables -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>drools-decisiontables</artifactId>
<version>${runtime.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.drools/kiebase-inclusion -->
<dependency>
<groupId>org.drools</groupId>
<artifactId>kiebase-inclusion</artifactId>
<version>${runtime.version}</version>
<scope>runtime</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.kie/kie-api -->
<!-- <dependency>-->
<!-- <groupId>org.kie</groupId>-->
<!-- <artifactId>kie-api</artifactId>-->
<!-- <version>${runtime.version}</version>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<!-- https://mvnrepository.com/artifact/org.kie/kie-ci -->
<dependency>
<groupId>org.kie</groupId>
<artifactId>kie-ci</artifactId>
<version>${runtime.version}</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.kie</groupId>-->
<!-- <artifactId>kie-api</artifactId>-->
<!-- <version>${runtime.version}</version>-->
<!-- </dependency>-->
<dependency>
<groupId>org.jbpm</groupId>
<artifactId>jbpm-test</artifactId>
<version>${runtime.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>jboss-public-repository-group</id>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>daily</updatePolicy>
</snapshots>
</repository>
</repositories>
</project>

View File

@ -1,52 +0,0 @@
package Credentials;
//Before pushing files to the git run : npx prettier --write "**/*.java"
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() {
return homeRoot;
}
public String getUsername() {
return username;
}
public String getPassword() {
return password;
}
public String getBaseURL() {
return baseURL;
}
public String getDevUrl() {
return devUrl;
}
@Override
public String toString() {
return (
"UserCredentials{" +
"username='" +
username +
'\'' +
", password='" +
password +
'\'' +
", baseURL='" +
baseURL +
'\'' +
", devUrl='" +
devUrl +
'\'' +
'}'
);
}
}

View File

@ -1 +0,0 @@
[{"sensorId":"09a91c61-6572-4476-8bf1-310a2fb2eb02","datetimeMeasure":"2022-02-07T14:06:26.275Z","value":10.87,"groupId":null,"metadata":null}]externalTemperature,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632

View File

@ -1,9 +0,0 @@
[
{
"sensorId": "1f49de66-0921-4583-ae68-ff0fcc070bd1",
"datetimeMeasure": "2022-02-07T14:02:38.272Z",
"value": 21.21,
"groupId": null,
"metadata": null
}
]dielectricPermittivity,fd694041-581e-4c2c-9810-505e62b762e6

View File

@ -1 +0,0 @@
[{"sensorId":"22e5b1b0-b28c-4aa1-97c7-94ff12c51384","datetimeMeasure":"2022-02-07T14:02:38.272Z","value":10,"groupId":null,"metadata":null}]soilTemperature,fd694041-581e-4c2c-9810-505e62b762e6

View File

@ -1 +0,0 @@
[{"sensorId":"3b6a8c15-5cea-4994-954d-5b25c22e2c32","datetimeMeasure":"2022-02-07T14:02:38.272Z","value":36,"groupId":null,"metadata":null}]soilMoisture,fd694041-581e-4c2c-9810-505e62b762e6

View File

@ -1 +0,0 @@
[{"sensorId":"5209815d-974f-4729-ae1a-06bd1000db67","datetimeMeasure":"2022-02-07T14:02:38.272Z","value":0.06,"groupId":null,"metadata":null}]soilConductivity,fd694041-581e-4c2c-9810-505e62b762e6

View File

@ -1 +0,0 @@
[{"sensorId":"65e95c11-ec15-4039-840a-e9be3d77ca63","datetimeMeasure":"2022-02-07T14:02:22.219Z","value":858.4,"groupId":null,"metadata":null}]precipitation,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0

View File

@ -1 +0,0 @@
[{"sensorId":"69bcaae0-9ccd-4342-8a71-c72dca37cfe9","datetimeMeasure":"2022-02-07T14:03:11.380Z","value":4.589,"groupId":null,"metadata":null}]battery,6c9efd4a-db04-453d-8ab8-d480ec97dd26

View File

@ -1 +0,0 @@
[{"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"}]

View File

@ -1 +0,0 @@
[{"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"}]

View File

@ -1 +0,0 @@
[{"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"}]

View File

@ -1 +0,0 @@
[{"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"}]

View File

@ -1 +0,0 @@
[{"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"}]

View File

@ -1 +0,0 @@
{"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

View File

@ -1 +0,0 @@
[{"sensorId":"812c6e62-e855-424b-8ec1-78fb424a94b5","datetimeMeasure":"2022-02-07T14:02:22.219Z","value":36.1,"groupId":null,"metadata":null}]soilMoisture,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0

View File

@ -1 +0,0 @@
[{"sensorId":"88c8442f-62b9-4952-b28c-73790a555060","datetimeMeasure":"2022-02-07T14:06:26.275Z","value":5.154,"groupId":null,"metadata":null}]battery,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632

View File

@ -1 +0,0 @@
70B3D57050004223,70B3D570500042D7,70B3D57050004EF4,70B3D57050006223,70B3D5705000623C

View File

@ -1 +0,0 @@
70B3D57050004682,70B3D57050004D14

View File

@ -1 +0,0 @@
0004A30B00227D68,70B3D5705000E019

View File

@ -1 +0,0 @@
70B3D5705000E030,70B3D5705000E05E,70B3D5705000E386

View File

@ -1 +0,0 @@
{"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

View File

@ -1 +0,0 @@
[{"sensorId":"adba09f9-ab84-4252-bf1a-ac49b1b6bdd3","datetimeMeasure":"2022-02-07T14:02:38.272Z","value":5.734,"groupId":null,"metadata":null}]battery,fd694041-581e-4c2c-9810-505e62b762e6

View File

@ -1 +0,0 @@
[{"sensorId":"bc08edce-d214-40db-ba51-a0802243c235","datetimeMeasure":"2022-02-07T14:06:26.275Z","value":38.9,"groupId":null,"metadata":null}]soilMoisture,f9bb4a5c-f783-4bcf-8c34-0a7c3dd5a632

View File

@ -1 +0,0 @@
{"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

View File

@ -1 +0,0 @@
[]coordinates,6c9efd4a-db04-453d-8ab8-d480ec97dd26

View File

@ -1 +0,0 @@
{"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

View File

@ -1 +0,0 @@
{"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

View File

@ -1,266 +0,0 @@
[
{
"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": "4d86fbf3-5343-4856-9bc1-07c164fa0021",
"externalDomain": "default",
"externalId": "germes-greenhouse-status",
"name": "Greenhouse 3",
"description": "",
"additionalInfo": { "location": {} },
"deviceTemplateId": "cb64266d-77d2-44a6-8626-1fc7f3dd5818",
"organizationId": "fca1ed1a-ce91-4e83-b438-7dd09530d5a2"
},
{
"id": "5449f7d1-938c-4731-893e-40e3ddc67329",
"externalDomain": "default",
"externalId": "70B3D5705000623C-status",
"name": "Device 4",
"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": "7ef4761c-53eb-4f6b-85e5-8c5c8fac3ca9",
"externalDomain": "default",
"externalId": "70B3D570500042D7-status",
"name": "Device 1",
"description": "",
"additionalInfo": { "location": {} },
"deviceTemplateId": "cb64266d-77d2-44a6-8626-1fc7f3dd5818",
"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": "abc0ed83-cc2d-4aec-b86c-84b22d8556be",
"externalDomain": "default",
"externalId": "70B3D57050006223-status",
"name": "Device 3",
"description": "",
"additionalInfo": {},
"deviceTemplateId": "cb64266d-77d2-44a6-8626-1fc7f3dd5818",
"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": "e5951137-6b18-472c-944b-fc45a2b58b0f",
"externalDomain": "default",
"externalId": "70B3D57050004EF4-status",
"name": "Device 2",
"description": "",
"additionalInfo": {},
"deviceTemplateId": "cb64266d-77d2-44a6-8626-1fc7f3dd5818",
"organizationId": "fca1ed1a-ce91-4e83-b438-7dd09530d5a2"
},
{
"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"
}
]

View File

@ -1 +0,0 @@
[{"sensorId":"f75934dc-af98-4206-a5bd-22d23dd5f268","datetimeMeasure":"2022-02-07T14:03:11.380Z","value":10.87,"groupId":null,"metadata":null}]temperature,6c9efd4a-db04-453d-8ab8-d480ec97dd26

View File

@ -1 +0,0 @@
[{"sensorId":"ff6f11e0-c969-4cbb-829c-f44a13683918","datetimeMeasure":"2022-02-07T14:03:11.380Z","value":104.5,"groupId":null,"metadata":null}]precipitation,6c9efd4a-db04-453d-8ab8-d480ec97dd26

View File

@ -1 +0,0 @@
[{"sensorId":"ffca826c-d1b5-4ac8-869a-ec0da15d9076","datetimeMeasure":"2022-02-07T14:02:22.219Z","value":5.137,"groupId":null,"metadata":null}]battery,e8c3fca3-c5cd-48e7-9224-0f8c294fa3c0

View File

@ -1 +0,0 @@
7xbfDipaUsbuq6FRsmKSqaGhQdaWHJ3cwG0XGwjNG0ta84Mpf3QQP2abqo5f8G68

View File

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

View File

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

View File

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

View File

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

View File

@ -1,77 +0,0 @@
//package JSON2RDF;
//
//import java.io.*;
//import java.net.URI;
//import java.net.URISyntaxException;
//import java.nio.charset.Charset;
//import java.nio.charset.StandardCharsets;
//
//
//import org.json.simple.JSONArray;
//import org.json.simple.parser.JSONParser;
//import org.json.simple.parser.ParseException;
//
//import org.apache.jena.riot.system.StreamRDF;
//import org.apache.jena.riot.system.StreamRDFLib;
//import picocli.CommandLine;
//
//@CommandLine.Command(name = "json2rdf")
//public class JSON2RDF {
// private final InputStream jsonIn;
// private final OutputStream rdfOut;
//
//
// @CommandLine.Parameters(paramLabel = "https://localhost/" , index = "0", description = "Base URI of the RDF output data")
// private URI baseURI;
//
// {
// try {
// baseURI = new URI("https://localhost/");
// } catch (URISyntaxException e) {
// e.printStackTrace();
// }
// }
//
//// @CommandLine.Parameters(paramLabel = "D:\\WORK\\GGD\\src\\eu.hsrw.ias.ggd.MainExe\\java\\Data", description = "json file")
// @CommandLine.Option(names = { "--input-charset" }, description = "Input charset (default: ${DEFAULT-VALUE})")
// private final Charset inputCharset = StandardCharsets.UTF_8;
//
// @CommandLine.Option(names = { "--output-charset" }, description = "Output charset (default: ${DEFAULT-VALUE})")
// private final Charset outputCharset = StandardCharsets.UTF_8;
//
// public static void main(String[] args) throws IOException
// {
// JSON2RDF json2rdf = new JSON2RDF(System.in, System.out);
//
// try
// {
// CommandLine.ParseResult parseResult = new CommandLine(json2rdf).parseArgs(args);
// if (!CommandLine.printHelpIfRequested(parseResult)) json2rdf.convert();
// }
// catch (CommandLine.ParameterException ex)
// { // command line arguments could not be parsed
// System.err.println(ex.getMessage());
// ex.getCommandLine().usage(System.err);
// }
// }
//
// public JSON2RDF(InputStream csvIn, OutputStream rdfOut) {
//
//
// this.jsonIn = csvIn;
// this.rdfOut = rdfOut;
// }
//
//
// public void convert() throws IOException {
// if (jsonIn.available() == 0) throw new IllegalStateException("JSON input not provided");
//
// try (Reader reader = new BufferedReader(new InputStreamReader(jsonIn, inputCharset)))
// {
// StreamRDF rdfStream = StreamRDFLib.writer(new BufferedWriter(new OutputStreamWriter(rdfOut, outputCharset)));
// new JsonStreamRDFWriter(reader, rdfStream, baseURI.toString()).convert();
// }
// }
//
//}
//

View File

@ -1,124 +0,0 @@
//package JSON2RDF;
//
//import java.io.InputStream;
//import java.io.Reader;
//import java.util.ArrayDeque;
//import java.util.Deque;
//import java.util.HashMap;
//import java.util.Map;
//import javax.json.Json;
//import javax.json.stream.JsonParser;
//import org.apache.jena.datatypes.xsd.XSDDatatype;
//import org.apache.jena.graph.Node;
//import org.apache.jena.graph.NodeFactory;
//import org.apache.jena.graph.Triple;
//import org.apache.jena.riot.system.IRIResolver;
//import org.apache.jena.riot.system.StreamRDF;
//
//
//public class JsonStreamRDFWriter
//{
//
// private final JsonParser parser;
// private final StreamRDF rdfStream;
// private final IRIResolver iriResolver;
//
// public JsonStreamRDFWriter(Reader reader, StreamRDF rdfStream, String baseURI)
// {
// this(Json.createParser(reader), rdfStream, baseURI);
// }
//
// public JsonStreamRDFWriter(InputStream is, StreamRDF rdfStream, String baseURI)
// {
// this(Json.createParser(is), rdfStream, baseURI);
// }
//
// public JsonStreamRDFWriter(JsonParser parser, StreamRDF rdfStream, String baseURI)
// {
// this.parser = parser;
// this.rdfStream = rdfStream;
// this.iriResolver = IRIResolver.create(baseURI);
// }
//
// public void convert()
// {
// getStreamRDF().start();
//
// write(getParser(), getStreamRDF(), getIRIResolver());
//
// getStreamRDF().finish();
// }
//
// public static void write(JsonParser parser, StreamRDF rdfStream, IRIResolver iriResolver)
// {
// Deque<Node> subjectStack = new ArrayDeque<>();
// Map<Node, Node> arrayProperties = new HashMap<>();
//
// Node property = null;
// while (parser.hasNext())
// {
// JsonParser.Event event = parser.next();
//
// switch (event)
// {
// case START_ARRAY:
// if (!subjectStack.isEmpty() && property != null) arrayProperties.put(subjectStack.getLast(), property);
// break;
// case END_ARRAY:
// if (!subjectStack.isEmpty()) arrayProperties.remove(subjectStack.getLast());
// break;
// case START_OBJECT:
// Node subject = NodeFactory.createBlankNode();
// // add triple with current array property, if any
// if (property != null && !subjectStack.isEmpty()) rdfStream.triple(new Triple(subjectStack.getLast(), property, subject));
// subjectStack.addLast(subject);
// break;
// case END_OBJECT:
// subjectStack.removeLast();
// // restore previous array property, if there was any
// if (!subjectStack.isEmpty() && arrayProperties.containsKey(subjectStack.getLast())) property = arrayProperties.get(subjectStack.getLast());
// break;
// case VALUE_FALSE:
// rdfStream.triple(new Triple(subjectStack.getLast(), property, NodeFactory.createLiteralByValue(Boolean.FALSE, XSDDatatype.XSDboolean)));
// break;
// case VALUE_TRUE:
// rdfStream.triple(new Triple(subjectStack.getLast(), property, NodeFactory.createLiteralByValue(Boolean.TRUE, XSDDatatype.XSDboolean)));
// break;
// case KEY_NAME:
// property = NodeFactory.createURI(iriResolver.resolveToString("#" + parser.getString()));
// break;
// case VALUE_STRING:
// if (property != null) rdfStream.triple(new Triple(subjectStack.getLast(), property, NodeFactory.createLiteral(parser.getString())));
// break;
// case VALUE_NUMBER:
// try
// {
// rdfStream.triple(new Triple(subjectStack.getLast(), property,NodeFactory.createLiteralByValue(Integer.valueOf(parser.getString()), XSDDatatype.XSDint)));
// }
// catch (NumberFormatException ex)
// {
// rdfStream.triple(new Triple(subjectStack.getLast(), property,NodeFactory.createLiteralByValue(Float.valueOf(parser.getString()), XSDDatatype.XSDfloat)));
// }
// break;
// case VALUE_NULL:
// break;
// }
// }
// }
//
// protected JsonParser getParser()
// {
// return parser;
// }
//
// protected StreamRDF getStreamRDF()
// {
// return rdfStream;
// }
//
// protected IRIResolver getIRIResolver()
// {
// return iriResolver;
// }
//
//}

View File

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

View File

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

View File

@ -1,53 +0,0 @@
//package Knowledgebase;
//
//import org.json.JSONArray;
//import org.kie.api.KieServices;
//import org.kie.api.KieServices.Factory;
//import org.kie.api.runtime.KieContainer;
//import org.kie.api.runtime.KieSession;
//import org.kie.api.runtime.rule.FactHandle;
//
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Map;
//
//public class DroolsTest {
// private Map<String, Double> currMap= new HashMap<>();
//
// public static final void main(String[] args) {
// try {
// KieServices ks = KieServices.Factory.get();
// KieContainer kContainer = ks.getKieClasspathContainer();
////Get the session named kseesion-rule that we defined in kmodule.xml above.
////Also by default the session returned is always stateful.
// KieSession kSession = kContainer.newKieSession("ksession-rule");
//
// currMap.put("asd",12.2);
// setCurrMap("soilMoisture",10.1);
// currMap.put("soilConductivity",0.14);
// setCurrMap set= new SetCurrMap();
// se
//
//
// FactHandle fact1;
//
// fact1 = kSession.insert(currMap);
// System.out.println(fact1);
// kSession.fireAllRules();
//
//// System.out.println("The discount for the jewellery product "
//// + sensorReadings.getSensorTag() + " is " + sensorReadings.getValue());
//
// } catch (Throwable t) {
// t.printStackTrace();
// }
// }
// public Map<String, Double> getCurrMap() {
// return currMap;
// }
//
// public void setCurrMap(Map<String, Double> currMap) {
// this.currMap = currMap;
// }
//
//}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,38 +0,0 @@
package eu.hsrw.ias.ggd;
public class Notification {
private Severity severity = Severity.Optimal;
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;
}
}

View File

@ -1,54 +0,0 @@
package eu.hsrw.ias.ggd;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
import java.util.HashMap;
import java.util.TimerTask;
import java.util.Date;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeoutException;
// Create a class extends with TimerTask
public class ScheduledTask extends TimerTask {
Date now; // to display current time
HashMap<String, SensorData> outputDevices ;
// Add your task here
public void run() {
// Display current time
now = new Date(); // initialize date
System.out.println("Time is :" + now);
try {
outputDevices = ApiCall.FetchDataFromApi();
System.out.println("Final Size"+outputDevices.size()+outputDevices);
KieServices ks = KieServices.Factory.get();
KieContainer kContainer = ks.getKieClasspathContainer();
//Get the session named kseesion-rule that we defined in kmodule.xml above.
//Also by default the session returned is always stateful.
KieSession kSession = kContainer.newKieSession("ksession-rule");
FactHandle fact1;
fact1 = kSession.insert(outputDevices);
// System.out.println(fact1);
// kSession.insert(fact1);
kSession.fireAllRules();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (TimeoutException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}

View File

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

View File

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

View File

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

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rule"/>
</kbase>
</kmodule>

View File

@ -1,3 +0,0 @@
groupId=com.javainuse
artifactId=drools-hello-world
version=0.0.1-SNAPSHOT

View File

@ -1,126 +0,0 @@
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 "CriticalBattery"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "battery", value < 4.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalBatteryOutput);
insert(new Notification("battery", sensorData, Severity.Critical));
// modify(sensorData){
// setState(Severity.Critical)
// }
end
rule "OptimalBattery"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "battery", value > 4.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String optimalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalBatteryOutput);
insert(new Notification("battery", sensorData, Severity.Optimal));
// modify(sensorData){
// setState(Severity.Optimal)
// }
end
// System.out.println(sensorData.getTag()+" "+sensorData.getValue());
// System.out.println(device);
/*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);
}*/

View File

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

View File

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

View File

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

View File

@ -1,42 +0,0 @@
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 "CriticalTemperature"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "temperature", value < 10.0 || value > 30.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalTemperatureOutput);
final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical);
System.out.println(deviceCritical);
insert(new Notification("temperature", sensorData, Severity.Critical));
end
rule "OptimalTemperature"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "temperature", value > 10.0 && value < 30.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String optimalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalTemperatureOutput);
insert(new Notification("temperature", sensorData, Severity.Optimal));
System.out.println("Optimal");
// modify(sensorData){
// setState(Severity.Optimal)
// }
end

View File

@ -1,20 +0,0 @@
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 "DielectricPermittivity"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "dielectricPermittivity", value > 20.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivityOutput);
insert(new Notification("dielectricPermittivity", sensorData, Severity.Warning));
end

View File

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

View File

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

View File

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

View File

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

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<kmodule xmlns="http://jboss.org/kie/6.0.0/kmodule">
<kbase name="rules" packages="rules">
<ksession name="ksession-rule"/>
</kbase>
</kmodule>

View File

@ -1,3 +0,0 @@
groupId=com.javainuse
artifactId=drools-hello-world
version=0.0.1-SNAPSHOT

View File

@ -1,126 +0,0 @@
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 "CriticalBattery"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "battery", value < 4.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalBatteryOutput);
insert(new Notification("battery", sensorData, Severity.Critical));
// modify(sensorData){
// setState(Severity.Critical)
// }
end
rule "OptimalBattery"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "battery", value > 4.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String optimalBatteryOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Battery %s in the following sensor %s \", \"battery\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalBatteryOutput);
insert(new Notification("battery", sensorData, Severity.Optimal));
// modify(sensorData){
// setState(Severity.Optimal)
// }
end
// System.out.println(sensorData.getTag()+" "+sensorData.getValue());
// System.out.println(device);
/*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);
}*/

View File

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

View File

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

View File

@ -1,44 +0,0 @@
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 "CriticalSoilMoisture"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "soilMoisture", value < 28.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Soil Moisture %s in the following device %s \", \"soilMoisture\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalSoilMoistureOutput);
final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical);
insert(new Notification("soilMoisture", sensorData, Severity.Critical));
// modify(device){
// setState(Severity.Critical)
// }
end
rule "OptimalSoilMoisture"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "soilMoisture", value > 28.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String optimalSoilMoistureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Soil Moisture %s in the following device %s \", \"soilMoisture\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalSoilMoistureOutput);
insert(new Notification("soilMoisture", sensorData, Severity.Optimal));
//device.setState(Severity.Optimal);
// modify(device){
// setState(Severity.Optimal)
// }
end

View File

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

View File

@ -1,47 +0,0 @@
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 "CriticalTemperature"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "temperature", value < 10.0 || value > 30.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String criticalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",criticalTemperatureOutput);
final String deviceCritical = String.format("{\"id\":\"%s-status\",\"data\":{\"measured\":[{ \"criticalStatus\": \"The status of %s device is critical\"}]}}",device.IdMapper(device.getId()),device.getId());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",deviceCritical);
System.out.println(deviceCritical);
insert(new Notification("temperature", sensorData, Severity.Critical));
// modify(device){
// setState(Severity.Critical)
// }
end
rule "OptimalTemperature"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "temperature", value > 10.0 && value < 30.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String optimalTemperatureOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Optimal Temperature %s in the following device %s \", \"temperature\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",optimalTemperatureOutput);
insert(new Notification("temperature", sensorData, Severity.Optimal));
System.out.println("Optimal");
// modify(sensorData){
// setState(Severity.Optimal)
// }
end

View File

@ -1,20 +0,0 @@
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 "DielectricPermittivity"
when
device: Device(sensorDatas: sensorData)
sensorData: SensorData(tag == "dielectricPermittivity", value > 20.0) from sensorDatas
then
String greenhouse1="8bdbe6ae-eafb-4e99-bb01-db8784dd9633";
HttpPost httpPost = new HttpPost();
final String dielectricPermittivityOutput = String.format("{\"id\":\"%s\",\"data\":{\"measured\":[{ \"status\": \"Critical dielectricPermittivity %s in the following sensor %s \", \"dielectricPermittivityOutput\": %s}]}}",greenhouse1, sensorData.getValue(),sensorData.getTag(),sensorData.getValue());
httpPost.HttpCallPost("http://connector.dev.whysor.com/default/insert?access_token=3hosOhAeh4k0XmcuAMQGfYldvTuQDvtAj2PJJ4irKPBefD5Ijij6gnUkLtVLd4fW",dielectricPermittivityOutput);
insert(new Notification("dielectricPermittivity", sensorData, Severity.Warning));
end

View File

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

View File

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

View File

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

View File

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