Browse Source

Merge remote-tracking branch 'origin/yigit' into efe

yigit
Yiğit Çolakoğlu 6 years ago
parent
commit
378bdac911
70 changed files with 2231 additions and 436 deletions
  1. +0
    -0
      MyCity/classes/production/main/me/yigitcolakoglu/master_app/fan.png
  2. +5
    -0
      MyCity/classes/production/main/me/yigitcolakoglu/master_app/ips.json
  3. +12
    -0
      MyCity/classes/production/main/me/yigitcolakoglu/master_app/userinfo.json
  4. +5
    -0
      MyCity/ips.json
  5. +0
    -54
      bus_stop/control_card/control_card.ino
  6. +17
    -0
      bus_stop/qr_reader/starter.php
  7. +16
    -0
      master_app/.idea/compiler.xml
  8. +6
    -0
      master_app/.idea/encodings.xml
  9. +13
    -0
      master_app/.idea/libraries/Maven__com_hierynomus_sshj_0_27_0.xml
  10. +13
    -0
      master_app/.idea/libraries/Maven__com_jcraft_jzlib_1_1_3.xml
  11. +13
    -0
      master_app/.idea/libraries/Maven__net_i2p_crypto_eddsa_0_2_0.xml
  12. +13
    -0
      master_app/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_60.xml
  13. +13
    -0
      master_app/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_60.xml
  14. +13
    -0
      master_app/.idea/libraries/Maven__org_json_json_20180813.xml
  15. +13
    -0
      master_app/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml
  16. +13
    -0
      master_app/.idea/misc.xml
  17. +8
    -0
      master_app/.idea/modules.xml
  18. +124
    -0
      master_app/.idea/uiDesigner.xml
  19. +6
    -0
      master_app/.idea/vcs.xml
  20. +396
    -0
      master_app/.idea/workspace.xml
  21. +49
    -0
      master_app/nbactions.xml
  22. +5
    -0
      master_app/pom.xml
  23. +2
    -8
      master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java
  24. +60
    -30
      master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form
  25. +79
    -33
      master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java
  26. BIN
      master_app/src/main/java/me/yigitcolakoglu/master_app/fan.png
  27. +5
    -0
      master_app/src/main/java/me/yigitcolakoglu/master_app/ips.json
  28. +250
    -0
      master_app/src/main/java/me/yigitcolakoglu/master_app/managementForm.form
  29. +464
    -0
      master_app/src/main/java/me/yigitcolakoglu/master_app/managementForm.java
  30. +12
    -0
      master_app/src/main/java/me/yigitcolakoglu/master_app/userinfo.json
  31. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/Main.class
  32. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$1.class
  33. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$2.class
  34. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$3.class
  35. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$4.class
  36. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$5.class
  37. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm.class
  38. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$1.class
  39. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$2.class
  40. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$3.class
  41. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$4.class
  42. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$5.class
  43. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$6.class
  44. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$7.class
  45. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$8.class
  46. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$9.class
  47. BIN
      master_app/target/classes/me/yigitcolakoglu/master_app/managementForm.class
  48. BIN
      master_app/target/master_app-1.0-SNAPSHOT.jar
  49. +5
    -0
      master_app/target/maven-archiver/pom.properties
  50. +17
    -0
      master_app/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
  51. +3
    -0
      master_app/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
  52. +0
    -0
      master_app/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
  53. +0
    -25
      server_side/Chatbot/keywords.json
  54. +0
    -121
      server_side/Chatbot/main.py
  55. +0
    -86
      server_side/Chatbot/parser_test.py
  56. +0
    -4
      server_side/Chatbot/predefined.json
  57. +0
    -72
      server_side/Chatbot/train.py
  58. +0
    -3
      server_side/Chatbot/user_details.json
  59. +6
    -0
      traffic_analyzer/.idea/misc.xml
  60. +8
    -0
      traffic_analyzer/.idea/modules.xml
  61. +4
    -0
      traffic_analyzer/.idea/serialmonitor_settings.xml
  62. +6
    -0
      traffic_analyzer/.idea/vcs.xml
  63. +141
    -0
      traffic_analyzer/.idea/workspace.xml
  64. +1
    -0
      traffic_analyzer/light_control/.idea/.name
  65. +7
    -0
      traffic_analyzer/light_control/.idea/misc.xml
  66. +8
    -0
      traffic_analyzer/light_control/.idea/modules.xml
  67. +4
    -0
      traffic_analyzer/light_control/.idea/serialmonitor_settings.xml
  68. +6
    -0
      traffic_analyzer/light_control/.idea/vcs.xml
  69. +200
    -0
      traffic_analyzer/light_control/.idea/workspace.xml
  70. +190
    -0
      traffic_analyzer/light_control/light_control.ino

traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/fan.png → MyCity/classes/production/main/me/yigitcolakoglu/master_app/fan.png View File


+ 5
- 0
MyCity/classes/production/main/me/yigitcolakoglu/master_app/ips.json View File

@ -0,0 +1,5 @@
{
"qr": "127.0.0.3",
"intersection": "127.0.0.1",
"ambulance": "127.0.0.1"
}

+ 12
- 0
MyCity/classes/production/main/me/yigitcolakoglu/master_app/userinfo.json View File

@ -0,0 +1,12 @@
{
"usernames": {
"qr": "admin",
"ambulance": "yigit",
"intersection": "admin"
},
"passwords": {
"qr": "admin",
"ambulance": "Ygtclksbl1",
"intersection": "admin"
}
}

+ 5
- 0
MyCity/ips.json View File

@ -0,0 +1,5 @@
{
"qr": "127.0.0.1",
"intersection": "127.0.0.1",
"ambulance": "127.0.0.1"
}

+ 0
- 54
bus_stop/control_card/control_card.ino View File

@ -1,54 +0,0 @@
int pins[] = {13,8,9,10,11,12};
int light_pin = 0;
void setup() {
for(int i = 0; i<6; i++){
pinMode(pins[i],OUTPUT);
}
}
void loop() {
while(Serial.read() != '/'){
continue;
}
char prev = '!';
char cur = '!';
String data = "";
while(Serial.read() != '/'){
if(cur == '!' || prev != cur){
prev = cur;
data += cur;
}
cur = Serial.read()
}
for(int i = 0; i<2;i++){
switch(data[i]){
case "g":
digitalWrite(pins[i*3],HIGH);
digitalWrite(pins[(i*2)+1],LOW);
digitalWrite(pins[(i*2)+2],LOW);
break;
case "y":
digitalWrite(pins[i*3],LOW);
digitalWrite(pins[(i*2)+1],HIGH);
digitalWrite(pins[(i*2)+1],LOW);
break;
case "r":
digitalWrite(pins[i*3],LOW);
digitalWrite(pins[(i*2)+1],LOW);
digitalWrite(pins[(i*2)+1],HIGH);
break;
}
}
}

+ 17
- 0
bus_stop/qr_reader/starter.php View File

@ -0,0 +1,17 @@
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
system("python /home/pi/Desktop/MyCity/bus_stop/qr_reader/main.py > /dev/null 2>&1 &");
}else{
echo "
<html>
<body>
<button type=\"button\" onclick=\"Http = new XMLHttpRequest();
Http.open(\"POST\",\".\");
Http.send();
\" >Click Me!</button>
</body>
</html>
";
}
?>

+ 16
- 0
master_app/.idea/compiler.xml View File

@ -0,0 +1,16 @@
<?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="master_app" />
</profile>
</annotationProcessing>
<bytecodeTargetLevel>
<module name="master_app" target="11" />
</bytecodeTargetLevel>
</component>
</project>

+ 6
- 0
master_app/.idea/encodings.xml View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$" charset="UTF-8" />
</component>
</project>

+ 13
- 0
master_app/.idea/libraries/Maven__com_hierynomus_sshj_0_27_0.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.hierynomus:sshj:0.27.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/hierynomus/sshj/0.27.0/sshj-0.27.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/hierynomus/sshj/0.27.0/sshj-0.27.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/hierynomus/sshj/0.27.0/sshj-0.27.0-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__com_jcraft_jzlib_1_1_3.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: com.jcraft:jzlib:1.1.3">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/com/jcraft/jzlib/1.1.3/jzlib-1.1.3.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/com/jcraft/jzlib/1.1.3/jzlib-1.1.3-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/com/jcraft/jzlib/1.1.3/jzlib-1.1.3-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__net_i2p_crypto_eddsa_0_2_0.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: net.i2p.crypto:eddsa:0.2.0">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/net/i2p/crypto/eddsa/0.2.0/eddsa-0.2.0.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/net/i2p/crypto/eddsa/0.2.0/eddsa-0.2.0-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/net/i2p/crypto/eddsa/0.2.0/eddsa-0.2.0-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_60.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.bouncycastle:bcpkix-jdk15on:1.60">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.60/bcpkix-jdk15on-1.60.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.60/bcpkix-jdk15on-1.60-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcpkix-jdk15on/1.60/bcpkix-jdk15on-1.60-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_60.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.bouncycastle:bcprov-jdk15on:1.60">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/bouncycastle/bcprov-jdk15on/1.60/bcprov-jdk15on-1.60-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__org_json_json_20180813.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.json:json:20180813">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20180813/json-20180813.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20180813/json-20180813-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/json/json/20180813/json-20180813-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml View File

@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="Maven: org.slf4j:slf4j-api:1.7.7">
<CLASSES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7.jar!/" />
</CLASSES>
<JAVADOC>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7-javadoc.jar!/" />
</JAVADOC>
<SOURCES>
<root url="jar://$MAVEN_REPOSITORY$/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7-sources.jar!/" />
</SOURCES>
</library>
</component>

+ 13
- 0
master_app/.idea/misc.xml View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MavenProjectsManager">
<option name="originalFiles">
<list>
<option value="$PROJECT_DIR$/pom.xml" />
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/classes" />
</component>
</project>

+ 8
- 0
master_app/.idea/modules.xml View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/master_app.iml" filepath="$PROJECT_DIR$/master_app.iml" />
</modules>
</component>
</project>

+ 124
- 0
master_app/.idea/uiDesigner.xml View File

@ -0,0 +1,124 @@
<?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>

+ 6
- 0
master_app/.idea/vcs.xml View File

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

+ 396
- 0
master_app/.idea/workspace.xml View File

@ -0,0 +1,396 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="24ff8bd6-3070-46f7-873a-f9e195fe0913" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/userinfo.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/pom.xml" beforeDir="false" afterPath="$PROJECT_DIR$/pom.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/Main.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/Main.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../sender.py" beforeDir="false" afterPath="$PROJECT_DIR$/../sender.py" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/classes/" />
<ignored path="$PROJECT_DIR$/target/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="DefaultGradleProjectSettings">
<option name="isMigrated" value="true" />
</component>
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="183">
<caret line="140" column="16" selection-start-line="140" selection-start-column="16" selection-end-line="140" selection-end-column="16" />
<folding>
<element signature="e#4796#4797#0" expanded="true" />
<element signature="e#4861#4862#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="7" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="230" column="8" lean-forward="true" selection-start-line="230" selection-start-column="8" selection-end-line="230" selection-end-column="8" />
<folding>
<element signature="e#2329#2330#0" expanded="true" />
<element signature="e#2392#2393#0" expanded="true" />
<element signature="e#2595#2596#0" expanded="true" />
<element signature="e#2655#2656#0" expanded="true" />
<element signature="e#4365#4366#0" expanded="true" />
<element signature="e#4429#4430#0" expanded="true" />
<element signature="e#4638#4639#0" expanded="true" />
<element signature="e#4705#4706#0" expanded="true" />
<element signature="e#4965#4966#0" expanded="true" />
<element signature="e#5035#5036#0" expanded="true" />
<element signature="e#5248#5249#0" expanded="true" />
<element signature="e#5315#5316#0" expanded="true" />
<element signature="e#5510#5511#0" expanded="true" />
<element signature="e#5570#5571#0" expanded="true" />
<element signature="e#6025#6026#0" expanded="true" />
<element signature="e#6091#6092#0" expanded="true" />
<element signature="e#14079#14080#0" expanded="true" />
<element signature="e#14148#14149#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="jar://$MAVEN_REPOSITORY$/org/json/json/20180813/json-20180813.jar!/org/json/JSONObject.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="62" column="91" selection-start-line="62" selection-start-column="91" selection-end-line="62" selection-end-column="91" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/ips.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="1" lean-forward="true" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/userinfo.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="72">
<caret line="3" column="23" selection-start-line="3" selection-start-column="23" selection-end-line="3" selection-end-column="23" />
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/Main.java" />
<option value="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.java" />
<option value="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/userinfo.json" />
</list>
</option>
</component>
<component name="ProjectConfigurationFiles">
<option name="files">
<list>
<option value="$PROJECT_DIR$/.idea/compiler.xml" />
<option value="$PROJECT_DIR$/.idea/misc.xml" />
<option value="$PROJECT_DIR$/.idea/vcs.xml" />
<option value="$PROJECT_DIR$/.idea/encodings.xml" />
<option value="$PROJECT_DIR$/.idea/modules.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__com_hierynomus_sshj_0_27_0.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__com_jcraft_jzlib_1_1_3.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__net_i2p_crypto_eddsa_0_2_0.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__org_bouncycastle_bcpkix_jdk15on_1_60.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__org_bouncycastle_bcprov_jdk15on_1_60.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__org_json_json_20180813.xml" />
<option value="$PROJECT_DIR$/.idea/libraries/Maven__org_slf4j_slf4j_api_1_7_7.xml" />
<option value="$PROJECT_DIR$/.idea/uiDesigner.xml" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="53" />
<option name="y" value="27" />
<option name="width" value="1590" />
<option name="height" value="900" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="master_app" type="b2602c69:ProjectViewProjectNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="master_app" type="b2602c69:ProjectViewProjectNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="master_app" type="b2602c69:ProjectViewProjectNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="master_app" type="b2602c69:ProjectViewProjectNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="master_app" type="b2602c69:ProjectViewProjectNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
<item name="src" type="462c0819:PsiDirectoryNode" />
<item name="main" type="462c0819:PsiDirectoryNode" />
<item name="java" type="462c0819:PsiDirectoryNode" />
<item name="master_app" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="PackagesPane" />
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="android.sdk.path" value="$USER_HOME$/Android/Sdk" />
<property name="aspect.path.notification.shown" value="true" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/../../MyCity" />
<property name="node.js.detected.package.eslint" value="true" />
<property name="node.js.path.for.package.eslint" value="project" />
<property name="node.js.selected.package.eslint" value="(autodetect)" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="nodejs_package_manager_path" value="npm" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager">
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
<option name="MAIN_CLASS_NAME" value="me.yigitcolakoglu.master_app.Main" />
<module name="master_app" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app" />
<extension name="coverage">
<pattern>
<option name="PATTERN" value="me.yigitcolakoglu.master_app.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<method v="2">
<option name="Make" enabled="true" />
</method>
</configuration>
<recent_temporary>
<list>
<item itemvalue="Application.Main" />
</list>
</recent_temporary>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="24ff8bd6-3070-46f7-873a-f9e195fe0913" name="Default Changelist" comment="" />
<created>1558719783811</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1558719783811</updated>
<workItem from="1558719786984" duration="2491000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="2491000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1920" height="1031" extended-state="6" />
<layout>
<window_info id="Designer" />
<window_info id="Image Layers" />
<window_info id="Capture Tool" />
<window_info id="UI Designer" />
<window_info id="Favorites" side_tool="true" />
<window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2497332" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Terminal" />
<window_info anchor="bottom" id="Docker" show_stripe_button="false" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Messages" />
<window_info anchor="bottom" id="Tail" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Maven" />
<window_info anchor="right" id="Palette" />
<window_info anchor="right" id="Google Cloud Storage" show_stripe_button="false" />
<window_info anchor="right" id="SciView" />
<window_info anchor="right" id="Database" />
<window_info anchor="right" id="Palette&#9;" />
<window_info anchor="right" id="Theme Preview" />
<window_info anchor="right" id="Capture Analysis" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager>
<breakpoints>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.java</url>
<line>253</line>
<properties />
<option name="timeStamp" value="1" />
</line-breakpoint>
<line-breakpoint enabled="true" type="java-line">
<url>file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.java</url>
<line>233</line>
<properties />
<option name="timeStamp" value="2" />
</line-breakpoint>
</breakpoints>
</breakpoint-manager>
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.form">
<provider selected="true" editor-type-id="ui-designer" />
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="45">
<caret line="7" selection-start-line="7" selection-end-line="7" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/ips.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="60">
<caret line="4" column="1" lean-forward="true" selection-start-line="4" selection-start-column="1" selection-end-line="4" selection-end-column="1" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="183">
<caret line="140" column="16" selection-start-line="140" selection-start-column="16" selection-end-line="140" selection-end-column="16" />
<folding>
<element signature="e#4796#4797#0" expanded="true" />
<element signature="e#4861#4862#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/userinfo.json">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="72">
<caret line="3" column="23" selection-start-line="3" selection-start-column="23" selection-end-line="3" selection-end-column="23" />
</state>
</provider>
</entry>
<entry file="jar://$MAVEN_REPOSITORY$/org/json/json/20180813/json-20180813.jar!/org/json/JSONObject.class">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="170">
<caret line="62" column="91" selection-start-line="62" selection-start-column="91" selection-end-line="62" selection-end-column="91" />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/main/java/me/yigitcolakoglu/master_app/managementForm.java">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="126">
<caret line="230" column="8" lean-forward="true" selection-start-line="230" selection-start-column="8" selection-end-line="230" selection-end-column="8" />
<folding>
<element signature="e#2329#2330#0" expanded="true" />
<element signature="e#2392#2393#0" expanded="true" />
<element signature="e#2595#2596#0" expanded="true" />
<element signature="e#2655#2656#0" expanded="true" />
<element signature="e#4365#4366#0" expanded="true" />
<element signature="e#4429#4430#0" expanded="true" />
<element signature="e#4638#4639#0" expanded="true" />
<element signature="e#4705#4706#0" expanded="true" />
<element signature="e#4965#4966#0" expanded="true" />
<element signature="e#5035#5036#0" expanded="true" />
<element signature="e#5248#5249#0" expanded="true" />
<element signature="e#5315#5316#0" expanded="true" />
<element signature="e#5510#5511#0" expanded="true" />
<element signature="e#5570#5571#0" expanded="true" />
<element signature="e#6025#6026#0" expanded="true" />
<element signature="e#6091#6092#0" expanded="true" />
<element signature="e#14079#14080#0" expanded="true" />
<element signature="e#14148#14149#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
<state key="ProjectJDKs.UI">
<settings>
<last-edited>Python 3.7</last-edited>
<splitter-proportions>
<option name="proportions">
<list>
<option value="0.2" />
</list>
</option>
</splitter-proportions>
</settings>
</state>
</states>
</component>
</project>

+ 49
- 0
master_app/nbactions.xml View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8"?>
<actions>
<action>
<actionName>run</actionName>
<packagings>
<packaging>jar</packaging>
</packagings>
<goals>
<goal>process-classes</goal>
<goal>org.codehaus.mojo:exec-maven-plugin:1.5.0:exec</goal>
</goals>
<properties>
<exec.args>-classpath %classpath ${packageClassName} ips.json</exec.args>
<exec.executable>java</exec.executable>
<exec.workingdir>/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app</exec.workingdir>
</properties>
</action>
<action>
<actionName>debug</actionName>
<packagings>
<packaging>jar</packaging>
</packagings>
<goals>
<goal>process-classes</goal>
<goal>org.codehaus.mojo:exec-maven-plugin:1.5.0:exec</goal>
</goals>
<properties>
<exec.args>-agentlib:jdwp=transport=dt_socket,server=n,address=${jpda.address} -classpath %classpath ${packageClassName} ips.json</exec.args>
<exec.executable>java</exec.executable>
<jpda.listen>true</jpda.listen>
<exec.workingdir>/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app</exec.workingdir>
</properties>
</action>
<action>
<actionName>profile</actionName>
<packagings>
<packaging>jar</packaging>
</packagings>
<goals>
<goal>process-classes</goal>
<goal>org.codehaus.mojo:exec-maven-plugin:1.5.0:exec</goal>
</goals>
<properties>
<exec.args>-classpath %classpath ${packageClassName} ips.json</exec.args>
<exec.executable>java</exec.executable>
<exec.workingdir>/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app</exec.workingdir>
</properties>
</action>
</actions>

traffic_analyzer/master_app/pom.xml → master_app/pom.xml View File


traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java → master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java View File


traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form → master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form View File


traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java → master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java View File


BIN
master_app/src/main/java/me/yigitcolakoglu/master_app/fan.png View File

Before After
Width: 128  |  Height: 128  |  Size: 5.8 KiB

+ 5
- 0
master_app/src/main/java/me/yigitcolakoglu/master_app/ips.json View File

@ -0,0 +1,5 @@
{
"qr": "127.0.0.3",
"intersection": "127.0.0.1",
"ambulance": "192.168.1.35"
}

+ 250
- 0
master_app/src/main/java/me/yigitcolakoglu/master_app/managementForm.form View File

@ -0,0 +1,250 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.3" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JFrameFormInfo">
<NonVisualComponents>
<Container class="javax.swing.JFrame" name="jFrame1">
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jButton2" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="jTextField2" min="-2" pref="89" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="154" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="33" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="jTextField2" alignment="3" min="-2" pref="33" max="-2" attributes="0"/>
<Component id="jButton2" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="656" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="jTextField2">
<Properties>
<Property name="text" type="java.lang.String" value="127.0.0.1"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jTextField2ActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="jButton2">
<Properties>
<Property name="text" type="java.lang.String" value="Start Process"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton2ActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" value="Running"/>
</Properties>
</Component>
</SubComponents>
</Container>
<Component class="javax.swing.JButton" name="jButton4">
<Properties>
<Property name="text" type="java.lang.String" value="jButton4"/>
</Properties>
</Component>
</NonVisualComponents>
<Properties>
<Property name="defaultCloseOperation" type="int" value="3"/>
</Properties>
<SyntheticProperties>
<SyntheticProperty name="formSizePolicy" type="int" value="1"/>
<SyntheticProperty name="generateCenter" type="boolean" value="false"/>
</SyntheticProperties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="16" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel6" min="-2" max="-2" attributes="0"/>
<Component id="jLabel5" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="jLabel7" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="qr_start" min="-2" max="-2" attributes="0"/>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Component id="qr_ip" max="32767" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="1" attributes="0">
<Component id="intersection_start" min="-2" max="-2" attributes="0"/>
<Component id="ambulance_start" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Component id="ambulance_ip" max="32767" attributes="0"/>
<Component id="intersection_ip" min="-2" pref="89" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="ambulance_state" min="-2" max="-2" attributes="0"/>
<Component id="intersection_state" min="-2" max="-2" attributes="0"/>
<Component id="qr_state" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="152" max="-2" attributes="0"/>
<Component id="refresh_button" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace pref="42" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" pref="24" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="ambulance_ip" alignment="3" min="-2" pref="33" max="-2" attributes="0"/>
<Component id="ambulance_start" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="ambulance_state" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel5" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="intersection_start" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="intersection_ip" alignment="3" min="-2" pref="31" max="-2" attributes="0"/>
<Component id="intersection_state" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel6" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="qr_start" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="qr_ip" alignment="3" min="-2" pref="31" max="-2" attributes="0"/>
<Component id="qr_state" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jLabel7" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="refresh_button" min="-2" max="-2" attributes="0"/>
<EmptySpace pref="12" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="ambulance_ip">
<Properties>
<Property name="text" type="java.lang.String" value="127.0.0.1"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ambulance_ipActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="ambulance_start">
<Properties>
<Property name="text" type="java.lang.String" value="Start"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="ambulance_startActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="ambulance_state">
<Properties>
<Property name="text" type="java.lang.String" value="Running"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="intersection_start">
<Properties>
<Property name="text" type="java.lang.String" value="Start"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="intersection_startActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="intersection_ip">
<Properties>
<Property name="text" type="java.lang.String" value="127.0.0.1"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="intersection_ipActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JButton" name="qr_start">
<Properties>
<Property name="text" type="java.lang.String" value="Start"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="qr_startActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JTextField" name="qr_ip">
<Properties>
<Property name="text" type="java.lang.String" value="127.0.0.1"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="intersection_state">
<Properties>
<Property name="text" type="java.lang.String" value="Running"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="qr_state">
<Properties>
<Property name="text" type="java.lang.String" value="Running"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel5">
<Properties>
<Property name="text" type="java.lang.String" value="Ambulance:"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel6">
<Properties>
<Property name="text" type="java.lang.String" value="Intersection:"/>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel7">
<Properties>
<Property name="text" type="java.lang.String" value="QR Reader:"/>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="refresh_button">
<Properties>
<Property name="text" type="java.lang.String" value="Refresh"/>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="refresh_buttonActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Form>

+ 464
- 0
master_app/src/main/java/me/yigitcolakoglu/master_app/managementForm.java View File

@ -0,0 +1,464 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package me.yigitcolakoglu.master_app;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import javax.swing.JFrame;
import net.schmizz.sshj.SSHClient;
import net.schmizz.sshj.connection.channel.direct.Session;
import net.schmizz.sshj.transport.verification.PromiscuousVerifier;
import org.json.JSONObject;
/**
*
* @author yigit
*/
public class managementForm extends javax.swing.JFrame {
/**
* Creates new form managementForm
*/
public managementForm() {
initComponents();
}
public final SSHClient ssh = new SSHClient();
private JSONObject ip_json;
private JSONObject usernames;
private JSONObject passwords;
private JSONObject commands = new JSONObject();
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jFrame1 = new javax.swing.JFrame();
jTextField2 = new javax.swing.JTextField();
jButton2 = new javax.swing.JButton();
jLabel2 = new javax.swing.JLabel();
jButton4 = new javax.swing.JButton();
ambulance_ip = new javax.swing.JTextField();
ambulance_start = new javax.swing.JButton();
ambulance_state = new javax.swing.JLabel();
intersection_start = new javax.swing.JButton();
intersection_ip = new javax.swing.JTextField();
qr_start = new javax.swing.JButton();
qr_ip = new javax.swing.JTextField();
intersection_state = new javax.swing.JLabel();
qr_state = new javax.swing.JLabel();
jLabel5 = new javax.swing.JLabel();
jLabel6 = new javax.swing.JLabel();
jLabel7 = new javax.swing.JLabel();
refresh_button = new javax.swing.JButton();
jFrame1.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jTextField2.setText("127.0.0.1");
jTextField2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jTextField2ActionPerformed(evt);
}
});
jButton2.setText("Start Process");
jButton2.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton2ActionPerformed(evt);
}
});
jLabel2.setText("Running");
javax.swing.GroupLayout jFrame1Layout = new javax.swing.GroupLayout(jFrame1.getContentPane());
jFrame1.getContentPane().setLayout(jFrame1Layout);
jFrame1Layout.setHorizontalGroup(
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFrame1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jButton2)
.addGap(18, 18, 18)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addContainerGap(154, Short.MAX_VALUE))
);
jFrame1Layout.setVerticalGroup(
jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jFrame1Layout.createSequentialGroup()
.addGap(33, 33, 33)
.addGroup(jFrame1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextField2, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton2)
.addComponent(jLabel2))
.addContainerGap(656, Short.MAX_VALUE))
);
jButton4.setText("jButton4");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
ambulance_ip.setText("127.0.0.1");
ambulance_ip.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ambulance_ipActionPerformed(evt);
}
});
ambulance_start.setText("Start");
ambulance_start.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
ambulance_startActionPerformed(evt);
}
});
ambulance_state.setText("Running");
intersection_start.setText("Start");
intersection_start.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
intersection_startActionPerformed(evt);
}
});
intersection_ip.setText("127.0.0.1");
intersection_ip.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
intersection_ipActionPerformed(evt);
}
});
qr_start.setText("Start");
qr_start.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
qr_startActionPerformed(evt);
}
});
qr_ip.setText("127.0.0.1");
intersection_state.setText("Running");
qr_state.setText("Running");
jLabel5.setText("Ambulance:");
jLabel6.setText("Intersection:");
jLabel7.setText("QR Reader:");
refresh_button.setText("Refresh");
refresh_button.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
refresh_buttonActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(16, 16, 16)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel6)
.addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jLabel7, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(qr_start)
.addGap(18, 18, 18)
.addComponent(qr_ip))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(intersection_start)
.addComponent(ambulance_start))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(ambulance_ip)
.addComponent(intersection_ip, javax.swing.GroupLayout.PREFERRED_SIZE, 89, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(ambulance_state)
.addComponent(intersection_state)
.addComponent(qr_state)))
.addGroup(layout.createSequentialGroup()
.addGap(152, 152, 152)
.addComponent(refresh_button)))
.addContainerGap(42, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(24, 24, 24)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(ambulance_ip, javax.swing.GroupLayout.PREFERRED_SIZE, 33, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(ambulance_start)
.addComponent(ambulance_state)
.addComponent(jLabel5))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(intersection_start)
.addComponent(intersection_ip, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(intersection_state)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(qr_start)
.addComponent(qr_ip, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(qr_state)
.addComponent(jLabel7))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(refresh_button)
.addContainerGap(12, Short.MAX_VALUE))
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void ambulance_ipActionPerformed(java.awt.event.ActionEvent evt) {
}//GEN-LAST:event_ambulance_ipActionPerformed
private void execSSH(String ip,String uname,String passwd, String cmd){
Session session = null;
try{
ssh.connect(ip, 22);
ssh.authPassword(uname, passwd);
session = ssh.startSession();
final Session.Command command = session.exec(cmd);
}catch(Exception e){
System.out.println(e.toString());
}finally {
try {
if (session != null) {
session.close();
}
ssh.disconnect();
} catch (IOException e) {
// Do Nothing
}
}
}
private void ambulance_startActionPerformed(java.awt.event.ActionEvent evt) {
execSSH(ambulance_ip.getText(),
usernames.getString("ambulance"),
passwords.getString("ambulance"),
commands.getString("ambulance"));
}
private void jTextField2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
private void intersection_startActionPerformed(java.awt.event.ActionEvent evt) {
execSSH(ambulance_ip.getText(),
usernames.getString("intersection"),
passwords.getString("intersection"),
commands.getString("intersection"));
}
private void intersection_ipActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_intersection_ipActionPerformed
// TODO add your handling code here:
}//GEN-LAST:event_intersection_ipActionPerformed
private void qr_startActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_qr_startActionPerformed
execSSH(ambulance_ip.getText(),
usernames.getString("qr"),
passwords.getString("qr"),
commands.getString("qr"));
}//GEN-LAST:event_qr_startActionPerformed
private void refresh_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_refresh_buttonActionPerformed
checkState();
}//GEN-LAST:event_refresh_buttonActionPerformed
public static void main(String args[]) {
/* Set the Nimbus look and feel */
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
* For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/
try {
for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
if ("Nimbus".equals(info.getName())) {
javax.swing.UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (ClassNotFoundException ex) {
java.util.logging.Logger.getLogger(managementForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (InstantiationException ex) {
java.util.logging.Logger.getLogger(managementForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (IllegalAccessException ex) {
java.util.logging.Logger.getLogger(managementForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
} catch (javax.swing.UnsupportedLookAndFeelException ex) {
java.util.logging.Logger.getLogger(managementForm.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
}
//</editor-fold>
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new managementForm().setVisible(true);
}
});
}
public void initIp(){
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
commands.put("ambulance","speaker-test -t sine -f 1000 -l 1");
commands.put("intersection","echo 1");
commands.put("qr","echo 1");
FileInputStream in = null;
String ips = "";
String userdata = "";
try {
ssh.addHostKeyVerifier(new PromiscuousVerifier());
in = new FileInputStream("./ips.json");
int c;
while ((c = in.read()) != -1) {
ips += (char)c;
}
in = new FileInputStream("./userinfo.json");
while ((c = in.read()) != -1) {
userdata += (char)c;
}
usernames = new JSONObject(userdata).getJSONObject("usernames");
passwords = new JSONObject(userdata).getJSONObject("passwords");
ip_json = new JSONObject(ips);
ambulance_ip.setText(ip_json.getString("ambulance"));
intersection_ip.setText(ip_json.getString("intersection"));
qr_ip.setText(ip_json.getString("qr"));
}catch(Exception e){
System.out.println("[ERROR]: "+e.toString());
return;
}
checkState();
}
public void checkState(){
try{
boolean ip_correct = InetAddress.getByName(ambulance_ip.getText()).isReachable(1000);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(ambulance_ip.getText(), 22).close();
ambulance_start.setEnabled(true);
}catch(Exception e){
System.out.println(e.toString());
ambulance_start.setEnabled(false);
}
try{
boolean ip_correct = InetAddress.getByName(ambulance_ip.getText()).isReachable(100);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(ambulance_ip.getText(), 8385).close();
ambulance_state.setText("Running");
}catch(Exception e){
ambulance_state.setText("Not Running");
}
try{
boolean ip_correct = InetAddress.getByName(intersection_ip.getText()).isReachable(100);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(intersection_ip.getText(), 22).close();
intersection_start.setEnabled(true);
}catch(Exception e){
intersection_start.setEnabled(false);
}
try{
boolean ip_correct = InetAddress.getByName(intersection_ip.getText()).isReachable(100);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(intersection_ip.getText(), 8386).close();
intersection_state.setText("Running");
}catch(Exception e){
intersection_state.setText("Not Running");
}
try{
boolean ip_correct = InetAddress.getByName(qr_ip.getText()).isReachable(100);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(qr_ip.getText(), 22).close();
qr_start.setEnabled(true);
}catch(Exception e){
qr_start.setEnabled(false);
}
try{
boolean ip_correct = InetAddress.getByName(qr_ip.getText()).isReachable(100);
if(!ip_correct){
throw new Exception("IP Not Reachable");
}
new Socket(qr_ip.getText(), 8385).close();
qr_state.setText("Running");
}catch(Exception e){
qr_state.setText("Not Running");
}
}
@Override
public void dispose(){
JSONObject contentJSON = new JSONObject();
contentJSON.put("ambulance", ambulance_ip.getText());
contentJSON.put("intersection", intersection_ip.getText());
contentJSON.put("qr", qr_ip.getText());
String fileContent = contentJSON.toString(4);
try{
BufferedWriter writer = new BufferedWriter(new FileWriter("./ips.json"));
writer.write(fileContent);
writer.close();
}catch(Exception er){
System.out.println("[ERROR]: "+er.toString());
}
super.dispose();
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JTextField ambulance_ip;
private javax.swing.JButton ambulance_start;
private javax.swing.JLabel ambulance_state;
private javax.swing.JTextField intersection_ip;
private javax.swing.JButton intersection_start;
private javax.swing.JLabel intersection_state;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton4;
private javax.swing.JFrame jFrame1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JTextField jTextField2;
private javax.swing.JTextField qr_ip;
private javax.swing.JButton qr_start;
private javax.swing.JLabel qr_state;
private javax.swing.JButton refresh_button;
// End of variables declaration//GEN-END:variables
}

+ 12
- 0
master_app/src/main/java/me/yigitcolakoglu/master_app/userinfo.json View File

@ -0,0 +1,12 @@
{
"usernames": {
"qr": "admin",
"ambulance": "yigit",
"intersection": "admin"
},
"passwords": {
"qr": "admin",
"ambulance": "Ygtclksbl1",
"intersection": "admin"
}
}

BIN
master_app/target/classes/me/yigitcolakoglu/master_app/Main.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$1.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$2.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$3.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$4.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm$5.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/cameraForm.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$1.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$2.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$3.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$4.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$5.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$6.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$7.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$8.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm$9.class View File


BIN
master_app/target/classes/me/yigitcolakoglu/master_app/managementForm.class View File


BIN
master_app/target/master_app-1.0-SNAPSHOT.jar View File


+ 5
- 0
master_app/target/maven-archiver/pom.properties View File

@ -0,0 +1,5 @@
#Generated by Maven
#Fri May 24 18:58:10 EET 2019
groupId=me.yigitcolakoglu
artifactId=master_app
version=1.0-SNAPSHOT

+ 17
- 0
master_app/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst View File

@ -0,0 +1,17 @@
me/yigitcolakoglu/master_app/managementForm$4.class
me/yigitcolakoglu/master_app/cameraForm$3.class
me/yigitcolakoglu/master_app/cameraForm$2.class
me/yigitcolakoglu/master_app/managementForm$3.class
me/yigitcolakoglu/master_app/cameraForm$5.class
me/yigitcolakoglu/master_app/Main.class
me/yigitcolakoglu/master_app/managementForm$7.class
me/yigitcolakoglu/master_app/cameraForm$1.class
me/yigitcolakoglu/master_app/managementForm.class
me/yigitcolakoglu/master_app/managementForm$1.class
me/yigitcolakoglu/master_app/managementForm$2.class
me/yigitcolakoglu/master_app/managementForm$8.class
me/yigitcolakoglu/master_app/managementForm$6.class
me/yigitcolakoglu/master_app/managementForm$9.class
me/yigitcolakoglu/master_app/cameraForm$4.class
me/yigitcolakoglu/master_app/managementForm$5.class
me/yigitcolakoglu/master_app/cameraForm.class

+ 3
- 0
master_app/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst View File

@ -0,0 +1,3 @@
/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/managementForm.java
/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java
/home/yigit/projects/MyCity/traffic_analyzer/master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java

+ 0
- 0
master_app/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst View File


+ 0
- 25
server_side/Chatbot/keywords.json View File

@ -1,25 +0,0 @@
[
{
"1": ["weather","temparature","hot"]
},
{
"1":{
"url":"https://api.openweathermap.org/data/2.5/weather",
"parameters": {"q": "GPE"},
"defaults": {"q": "location"},
"apikey": {"appid": "3b0dabc605b0ed0d411b6119846d1321"},
"response": "json",
"data_to_receive": {
"name": {},
"weather": [
{
"main": {}
}
],
"main": {"temp": {}}
},
"output_format": "Today in {name}, it is {temp} with {main}"
}
}
]

+ 0
- 121
server_side/Chatbot/main.py View File

@ -1,121 +0,0 @@
import json
import requests
from stanford_parser.parser import Parser
import nltk
import nltk.corpus as corpus
def getData( searched, data, data_final ):
if type( searched ) is dict:
for key in searched:
if len( searched[ key ] ) == 0:
data_final[ key ] = data[ key ]
else:
getData( searched[ key ], data[ key ], data_final )
elif type( searched ) is list:
for key in range( len( searched ) ):
if len( searched[ key ] ) == 0:
data_final[ key ] = data[ key ]
else:
getData( searched[ key ], data[ key ], data_final )
parser = Parser()
while True:
sentence = raw_input("You:")
#Parse the input
tokenized = nltk.word_tokenize( sentence )
stop_words = set( corpus.stopwords.words( 'english' ) )
cleaned = [ w for w in tokenized if w not in stop_words ]
tagged = nltk.pos_tag( cleaned )
named = nltk.ne_chunk( tagged )
cleaned_sentence = " ".join( cleaned )
dependencies = parser.parseToStanfordDependencies( cleaned_sentence )
tupleResult = [ (rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies ]
#Read the files
files = [open("user_details.json","r"),open('keywords.json', 'r'),open('predefined.json', 'r')]
defaults = json.loads(files[0].read())
keywords = json.loads( files[1 ].read() )
predefined = json.loads(files[2].read())
print("[TAGGED]: " + str( tagged ) + "\n")
print("[SPECIAL]: " + str( named ) + "\n")
print("[CLEAN]: " + str( cleaned_sentence ) + "\n")
print("[DEPENDENCIES]: " + str( tupleResult ) + "\n")
wp_word = ""
for i in range( len( tagged ) ):
if tagged[ i ][ 1 ] == "WP" or tagged[ i ][ 1 ] == "WRB" or tagged[ i ][ 1 ] == "WP$":
wp_word = tagged[ i ][ 0 ]
if sentence in predefined:
print(predefined[sentence])
else:
if not wp_word == "":
key = ""
understood = False
key_connect = ""
for dep in tupleResult:
if dep[2] == wp_word:
key = dep[1]
for dep in tupleResult:
if dep[1]==key: key_connect=dep[2]
for keyword_id in keywords[0 ]:
if key in keywords[0 ][keyword_id ]:
key = keyword_id
understood = True
if(understood):
api_details = keywords[ 1 ][ key ]
params = api_details[ "parameters" ]
for i in named:
for j in params:
try:
i.label()
if i.label() == params[ j ]:
params[j] = i[0]
else:
params[j] = defaults[api_details["defaults"][j]]
except Exception:
if i[0]==key_connect:
params[j] = defaults[api_details["defaults"][j]]
params[ api_details[ 'apikey' ].keys()[ 0 ] ] = api_details[ 'apikey' ][ api_details[ 'apikey' ].keys()[ 0 ] ]
r = requests.get( url=api_details[ "url" ], params=params )
data = r.json()
data_final = {}
getData(api_details[ "data_to_receive" ], data, data_final)
out_format = api_details[ "output_format" ]
out_final = ""
isvar = False
for let in out_format:
if (let == "{"):
var = ""
isvar = True
continue
if not isvar:
out_final += let
else:
if let == "}":
out_final += str( data_final[ var ] )
isvar = False
else:
var += let
print ("[KEYWORD]: " + key + "\n")
print ("[KEYWORD_ID]: " + key + "\n")
print (out_final)
else:
print("Sorry, I didn't quite get that")
else:
print("Sorry, I didn't quite get that")

+ 0
- 86
server_side/Chatbot/parser_test.py View File

@ -1,86 +0,0 @@
import unittest
class TestCase(unittest.TestCase):
@classmethod
def setUpClass(self):
from stanford_parser.parser import Parser
self.parser = Parser()
def testParse(self):
dependencies = self.parser.parseToStanfordDependencies("Pick up the tire pallet.")
tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
self.assertEqual(tupleResult, [('prt', 'Pick', 'up'),
('det', 'pallet', 'the'),
('nn', 'pallet', 'tire'),
('dobj', 'Pick', 'pallet')])
self.assertEqual(dependencies.tagForTokenStandoff(gov), "VB")
self.assertEqual(dependencies.tagForTokenStandoff(dep), "NN")
def testParseRefexpNextTo(self):
dependencies = self.parser.parseToStanfordDependencies("Pick up the tire pallet next to the truck.")
tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
self.assertEqual(tupleResult,
[('prt', 'Pick', 'up'),
('det', 'pallet', 'the'),
('nn', 'pallet', 'tire'),
('dobj', 'Pick', 'pallet'),
('det', 'truck', 'the'),
('prep_next_to', 'pallet', 'truck')])
def testParseRefexpNear(self):
dependencies =self.parser.parseToStanfordDependencies("Pick up the tire pallet near the truck.")
tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
self.assertEqual(tupleResult,
[('prt', 'Pick', 'up'),
('det', 'pallet', 'the'),
('nn', 'pallet', 'tire'),
('dobj', 'Pick', 'pallet'),
('det', 'truck', 'the'),
('prep_near', 'pallet', 'truck')])
def testParseLong(self):
# this sentence has a self dependency that the python code filters out.
# between drop and drop.
dependencies = self.parser.parseToStanfordDependencies("Grab the skid of tires right in front of you " +
"and drop it off just in front and to the " +
"right of the far skid of tires.")
tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
self.assertEqual(tupleResult,
[('det', 'skid', 'the'), ('dobj', 'Grab', 'skid'),
('prep_of', 'skid', 'tires'), ('dep', 'Grab', 'right'),
('prep_in', 'Grab', 'front'), ('prep_of', 'front', 'you'),
('conj_and', 'Grab', 'drop'), ('dobj', 'drop', 'it'), ('prt', 'drop', 'off'),
('advmod', 'drop', 'just'), ('prep_in', 'drop', 'front'), ('det', 'right', 'the'),
('prep_to', 'drop', 'right'), ('det', 'skid', 'the'), ('amod', 'skid', 'far'),
('prep_of', 'right', 'skid'), ('prep_of', 'skid', 'tires')])
def testAllCaps(self):
dependencies = self.parser.parseToStanfordDependencies("GO TO THE TIRE PALLET NEXT TO THE TRUCK.")
tupleResult = [(rel, gov.text, dep.text) for rel, gov, dep in dependencies.dependencies]
self.assertEqual(tupleResult,
[('nn', 'PALLET', 'GO'),
('nn', 'PALLET', 'TO'),
('nn', 'PALLET', 'THE'),
('nn', 'PALLET', 'TIRE'),
('nsubj', 'NEXT', 'PALLET'),
('dep', 'NEXT', 'TO'),
('det', 'TRUCK', 'THE'),
('dobj', 'TO', 'TRUCK')])

+ 0
- 4
server_side/Chatbot/predefined.json View File

@ -1,4 +0,0 @@
{
"How are you?": "I am fine and you?",
"I am fine too": "That is good to hear"
}

+ 0
- 72
server_side/Chatbot/train.py View File

@ -1,72 +0,0 @@
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals
import argparse
import warnings
from rasa_nlu.training_data import load_data
from rasa_nlu import config
from rasa_nlu.model import Trainer
import rasa_core
from rasa_core.agent import Agent
from rasa_core.policies.keras_policy import KerasPolicy
from rasa_core.policies.memoization import MemoizationPolicy
def train_nlu():
training_data = load_data('data/nlu-data.md')
trainer = Trainer(config.load("nlu-config.yml"))
trainer.train(training_data)
model_directory = trainer.persist('models/nlu/', fixed_model_name="current")
return model_directory
def train_dialogue(
domain_file="domain.yml",
model_path="models/dialogue",
training_data_file="data/stories.md"
):
agent = Agent(
domain_file,
policies=[MemoizationPolicy(max_history=3), KerasPolicy()]
)
training_data = agent.load_data(training_data_file)
agent.train(
training_data,
epochs=400,
batch_size=100,
validation_split=0.2
)
agent.persist(model_path)
return agent
def train_all():
model_directory = train_nlu()
agent = train_dialogue()
return [model_directory, agent]
if __name__ == '__main__':
warnings.filterwarnings(action='ignore', category=DeprecationWarning)
rasa_core.utils.configure_colored_logging(loglevel="INFO")
parser = argparse.ArgumentParser(
description='starts the bot training')
parser.add_argument(
'task',
choices=["train-nlu", "train-dialogue", "train-all"],
help="what the bot should do?")
task = parser.parse_args().task
# decide what to do based on first parameter of the script
if task == "train-nlu":
train_nlu()
elif task == "train-dialogue":
train_dialogue()
elif task == "train-all":
train_all()

+ 0
- 3
server_side/Chatbot/user_details.json View File

@ -1,3 +0,0 @@
{
"location": "Ankara"
}

+ 6
- 0
traffic_analyzer/.idea/misc.xml View File

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

+ 8
- 0
traffic_analyzer/.idea/modules.xml View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/traffic_analyzer.iml" filepath="$PROJECT_DIR$/.idea/traffic_analyzer.iml" />
</modules>
</component>
</project>

+ 4
- 0
traffic_analyzer/.idea/serialmonitor_settings.xml View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SerialMonitorSettings" BaudRate="9600" LineEndingsIndex="0" />
</project>

+ 6
- 0
traffic_analyzer/.idea/vcs.xml View File

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

+ 141
- 0
traffic_analyzer/.idea/workspace.xml View File

@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
<generated />
</component>
<component name="CMakeSettings">
<configurations>
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="ChangeListManager">
<list default="true" id="568163d1-3480-45a1-9bee-6b3f33a8e8ac" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/master_app/pom.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/master_app/src/main/java/me/yigitcolakoglu/master_app/fan.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/sender.py" beforeDir="false" afterPath="$PROJECT_DIR$/sender.py" afterDir="false" />
</list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ClangdSettings">
<option name="formatViaClangd" value="false" />
</component>
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/light_control/untitled_0.ino">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</file>
</leaf>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/.." />
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="260" />
<option name="y" value="47" />
<option name="width" value="1400" />
<option name="height" value="987" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="traffic_analyzer" type="b2602c69:ProjectViewProjectNode" />
<item name="traffic_analyzer" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="traffic_analyzer" type="b2602c69:ProjectViewProjectNode" />
<item name="traffic_analyzer" type="462c0819:PsiDirectoryNode" />
<item name="light_control" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/light_control" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="568163d1-3480-45a1-9bee-6b3f33a8e8ac" name="Default Changelist" comment="" />
<created>1558953924923</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1558953924923</updated>
<workItem from="1558953926084" duration="20000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="20000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1920" height="1031" extended-state="6" />
<layout>
<window_info id="Favorites" side_tool="true" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.18036287" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Terminal" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="Serial Monitor" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Database" />
<window_info anchor="right" id="make" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/light_control/untitled_0.ino">
<provider selected="true" editor-type-id="text-editor" />
</entry>
</component>
</project>

+ 1
- 0
traffic_analyzer/light_control/.idea/.name View File

@ -0,0 +1 @@
untitled_0

+ 7
- 0
traffic_analyzer/light_control/.idea/misc.xml View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
<component name="JavaScriptSettings">
<option name="languageLevel" value="ES6" />
</component>
</project>

+ 8
- 0
traffic_analyzer/light_control/.idea/modules.xml View File

@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/light_control.iml" filepath="$PROJECT_DIR$/.idea/light_control.iml" />
</modules>
</component>
</project>

+ 4
- 0
traffic_analyzer/light_control/.idea/serialmonitor_settings.xml View File

@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="SerialMonitorSettings" BaudRate="9600" LineEndingsIndex="0" />
</project>

+ 6
- 0
traffic_analyzer/light_control/.idea/vcs.xml View File

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

+ 200
- 0
traffic_analyzer/light_control/.idea/workspace.xml View File

@ -0,0 +1,200 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true">
<generated>
<config projectName="untitled_0" targetName="untitled_0" />
<config projectName="untitled_0" targetName="uno_CORE" />
<config projectName="untitled_0" targetName="untitled_0-size" />
</generated>
</component>
<component name="CMakeSettings">
<configurations>
<configuration PROFILE_NAME="Debug" CONFIG_NAME="Debug" />
</configurations>
</component>
<component name="ChangeListManager">
<list default="true" id="49f3af82-9ae9-47e3-bda3-caf0b729cc16" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/../master_app/pom.xml" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../master_app/src/main/java/me/yigitcolakoglu/master_app/Main.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.form" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../master_app/src/main/java/me/yigitcolakoglu/master_app/cameraForm.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../master_app/src/main/java/me/yigitcolakoglu/master_app/fan.png" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/../sender.py" beforeDir="false" afterPath="$PROJECT_DIR$/../sender.py" afterDir="false" />
</list>
<ignored path="$PROJECT_DIR$/cmake-build-debug/" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="ClangdSettings">
<option name="formatViaClangd" value="false" />
</component>
<component name="ExecutionTargetManager" SELECTED_TARGET="CMakeBuildProfile:Debug" />
<component name="FileEditorManager">
<leaf>
<file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/light_control.ino">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2079">
<caret column="20" selection-start-column="20" selection-end-column="20" />
<folding>
<element signature="e#1644#1716#0" expanded="true" />
<element signature="e#1739#1800#0" expanded="true" />
<element signature="e#2225#2475#0" expanded="true" />
<element signature="e#2817#2929#0" expanded="true" />
<element signature="e#4794#5445#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$/../.." />
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/light_control.ino" />
</list>
</option>
</component>
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="260" />
<option name="y" value="47" />
<option name="width" value="1400" />
<option name="height" value="987" />
</component>
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
<component name="ProjectView">
<navigator proportions="" version="1">
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="untitled_0" type="b2602c69:ProjectViewProjectNode" />
<item name="light_control" type="47feb1d3:ProjectViewModuleNode" />
</path>
<path>
<item name="untitled_0" type="b2602c69:ProjectViewProjectNode" />
<item name="light_control" type="47feb1d3:ProjectViewModuleNode" />
<item name="light_control" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scope" />
</panes>
</component>
<component name="PropertiesComponent">
<property name="WebServerToolWindowFactoryState" value="false" />
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
<property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
<property name="nodejs_npm_path_reset_for_default_project" value="true" />
<property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="RunManager" selected="CMake Application.untitled_0">
<configuration name="uno_CORE" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="untitled_0" TARGET_NAME="uno_CORE" CONFIG_NAME="Debug">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration name="untitled_0-size" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="untitled_0" TARGET_NAME="untitled_0-size" CONFIG_NAME="Debug">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
<configuration name="untitled_0" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="untitled_0" TARGET_NAME="untitled_0" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="untitled_0" RUN_TARGET_NAME="untitled_0">
<method v="2">
<option name="com.jetbrains.cidr.execution.CidrBuildBeforeRunTaskProvider$BuildBeforeRunTask" enabled="true" />
</method>
</configuration>
<list>
<item itemvalue="CMake Application.uno_CORE" />
<item itemvalue="CMake Application.untitled_0" />
<item itemvalue="CMake Application.untitled_0-size" />
</list>
</component>
<component name="SvnConfiguration">
<configuration />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="49f3af82-9ae9-47e3-bda3-caf0b729cc16" name="Default Changelist" comment="" />
<created>1558953945551</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1558953945551</updated>
<workItem from="1558953946800" duration="81000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="81000" />
</component>
<component name="ToolWindowManager">
<frame x="0" y="23" width="1920" height="1031" extended-state="6" />
<editor active="true" />
<layout>
<window_info id="Favorites" side_tool="true" />
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.18036287" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info anchor="bottom" id="Serial Monitor" />
<window_info anchor="bottom" id="Database Changes" />
<window_info anchor="bottom" id="Version Control" />
<window_info anchor="bottom" id="Terminal" />
<window_info anchor="bottom" id="Event Log" side_tool="true" />
<window_info anchor="bottom" id="CMake" />
<window_info anchor="bottom" id="Message" order="0" />
<window_info anchor="bottom" id="Find" order="1" />
<window_info anchor="bottom" id="Run" order="2" />
<window_info anchor="bottom" id="Debug" order="3" weight="0.4" />
<window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
<window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
<window_info anchor="bottom" id="TODO" order="6" />
<window_info anchor="right" id="Database" />
<window_info anchor="right" id="make" />
<window_info anchor="right" id="Commander" internal_type="SLIDING" order="0" type="SLIDING" weight="0.4" />
<window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
<window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
</layout>
</component>
<component name="TypeScriptGeneratedFilesManager">
<option name="version" value="1" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/light_control.ino">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="-2079">
<caret column="20" selection-start-column="20" selection-end-column="20" />
<folding>
<element signature="e#1644#1716#0" expanded="true" />
<element signature="e#1739#1800#0" expanded="true" />
<element signature="e#2225#2475#0" expanded="true" />
<element signature="e#2817#2929#0" expanded="true" />
<element signature="e#4794#5445#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>

+ 190
- 0
traffic_analyzer/light_control/light_control.ino View File

@ -0,0 +1,190 @@
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <algorithm> // std::min
#ifndef STASSID
#define STASSID "ZyXEL5500bT5"
#define STAPSK "eBusgxczl5"
#endif
/*
SWAP_PINS:
0: use Serial1 for logging (legacy example)
1: configure Hardware Serial port on RX:GPIO13 TX:GPIO15
and use SoftwareSerial for logging on
standard Serial pins RX:GPIO3 and TX:GPIO1
*/
#define SWAP_PINS 0
/*
SERIAL_LOOPBACK
0: normal serial operations
1: RX-TX are internally connected (loopback)
*/
#define SERIAL_LOOPBACK 0
#define BAUD_SERIAL 115200
#define BAUD_LOGGER 115200
#define RXBUFFERSIZE 1024
////////////////////////////////////////////////////////////
#if SERIAL_LOOPBACK
#undef BAUD_SERIAL
#define BAUD_SERIAL 3000000
#include <esp8266_peri.h>
#endif
#if SWAP_PINS
#include <SoftwareSerial.h>
SoftwareSerial* logger = nullptr;
#else
#define logger (&Serial1)
#endif
#define STACK_PROTECTOR 512 // bytes
//how many clients should be able to telnet to this ESP8266
#define MAX_SRV_CLIENTS 2
const char* ssid = STASSID;
const char* password = STAPSK;
const int port = 23;
WiFiServer server(port);
WiFiClient serverClients[MAX_SRV_CLIENTS];
void setup() {
Serial.begin(BAUD_SERIAL);
Serial.setRxBufferSize(RXBUFFERSIZE);
#if SWAP_PINS
Serial.swap();
// Hardware serial is now on RX:GPIO13 TX:GPIO15
// use SoftwareSerial on regular RX(3)/TX(1) for logging
logger = new SoftwareSerial(3, 1);
logger->begin(BAUD_LOGGER);
logger->println("\n\nUsing SoftwareSerial for logging");
#else
logger->begin(BAUD_LOGGER);
logger->println("\n\nUsing Serial1 for logging");
#endif
logger->println(ESP.getFullVersion());
logger->printf("Serial baud: %d (8n1: %d KB/s)\n", BAUD_SERIAL, BAUD_SERIAL * 8 / 10 / 1024);
logger->printf("Serial receive buffer size: %d bytes\n", RXBUFFERSIZE);
#if SERIAL_LOOPBACK
USC0(0) |= (1 << UCLBE); // incomplete HardwareSerial API
logger->println("Serial Internal Loopback enabled");
#endif
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
logger->print("\nConnecting to ");
logger->println(ssid);
while (WiFi.status() != WL_CONNECTED) {
logger->print('.');
delay(500);
}
logger->println();
logger->print("connected, address=");
logger->println(WiFi.localIP());
//start server
server.begin();
server.setNoDelay(true);
logger->print("Ready! Use 'telnet ");
logger->print(WiFi.localIP());
logger->printf(" %d' to connect\n", port);
}
void loop() {
//check if there are any new clients
if (server.hasClient()) {
//find free/disconnected spot
int i;
for (i = 0; i < MAX_SRV_CLIENTS; i++)
if (!serverClients[i]) { // equivalent to !serverClients[i].connected()
serverClients[i] = server.available();
logger->print("New client: index ");
logger->print(i);
break;
}
//no free/disconnected spot so reject
if (i == MAX_SRV_CLIENTS) {
server.available().println("busy");
// hints: server.available() is a WiFiClient with short-term scope
// when out of scope, a WiFiClient will
// - flush() - all data will be sent
// - stop() - automatically too
logger->printf("server is busy with %d active connections\n", MAX_SRV_CLIENTS);
}
}
//check TCP clients for data
#if 1
// Incredibly, this code is faster than the bufferred one below - #4620 is needed
// loopback/3000000baud average 348KB/s
for (int i = 0; i < MAX_SRV_CLIENTS; i++)
while (serverClients[i].available() && Serial.availableForWrite() > 0) {
// working char by char is not very efficient
Serial.write(serverClients[i].read());
}
#else
// loopback/3000000baud average: 312KB/s
for (int i = 0; i < MAX_SRV_CLIENTS; i++)
while (serverClients[i].available() && Serial.availableForWrite() > 0) {
size_t maxToSerial = std::min(serverClients[i].available(), Serial.availableForWrite());
maxToSerial = std::min(maxToSerial, (size_t)STACK_PROTECTOR);
uint8_t buf[maxToSerial];
size_t tcp_got = serverClients[i].read(buf, maxToSerial);
size_t serial_sent = Serial.write(buf, tcp_got);
if (serial_sent != maxToSerial) {
logger->printf("len mismatch: available:%zd tcp-read:%zd serial-write:%zd\n", maxToSerial, tcp_got, serial_sent);
}
}
#endif
// determine maximum output size "fair TCP use"
// client.availableForWrite() returns 0 when !client.connected()
size_t maxToTcp = 0;
for (int i = 0; i < MAX_SRV_CLIENTS; i++)
if (serverClients[i]) {
size_t afw = serverClients[i].availableForWrite();
if (afw) {
if (!maxToTcp) {
maxToTcp = afw;
} else {
maxToTcp = std::min(maxToTcp, afw);
}
} else {
// warn but ignore congested clients
logger->println("one client is congested");
}
}
//check UART for data
size_t len = std::min((size_t)Serial.available(), maxToTcp);
len = std::min(len, (size_t)STACK_PROTECTOR);
if (len) {
uint8_t sbuf[len];
size_t serial_got = Serial.readBytes(sbuf, len);
// push UART data to all connected telnet clients
for (int i = 0; i < MAX_SRV_CLIENTS; i++)
// if client.availableForWrite() was 0 (congested)
// and increased since then,
// ensure write space is sufficient:
if (serverClients[i].availableForWrite() >= serial_got) {
size_t tcp_sent = serverClients[i].write(sbuf, serial_got);
if (tcp_sent != len) {
logger->printf("len mismatch: available:%zd serial-read:%zd tcp-write:%zd\n", len, serial_got, tcp_sent);
}
}
}
}

Loading…
Cancel
Save