From 0b4295d87756b5e315292ee2cac6d04221e91e30 Mon Sep 17 00:00:00 2001 From: Luca Arrotta Date: Fri, 2 Apr 2021 12:10:22 +0200 Subject: [PATCH] README added --- .idea/vcs.xml | 6 ++++++ README.md | 32 +++++++++++++++++++++++++++++++- assets/img_1.png | Bin 0 -> 6697 bytes assets/img_2.jpeg | Bin 0 -> 13812 bytes build.gradle | 12 +++++++----- 5 files changed, 44 insertions(+), 6 deletions(-) create mode 100644 .idea/vcs.xml create mode 100644 assets/img_1.png create mode 100644 assets/img_2.jpeg diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.md b/README.md index 1c85eec..66a8ce4 100644 --- a/README.md +++ b/README.md @@ -1 +1,31 @@ -# Setup REST and MQTT \ No newline at end of file +# Setup REST and MQTT + + + +* You can import the project directly from a **V**ersion **C**ontrol **S**ystem, by providing the following URL: +https://ewserver.di.unimi.it/gitlab/riccardopresotto/setup\_test_sdp.git + + + + +* Otherwise, take care to import the project as a Gradle Project + +## REST + +* Run StartServer.java located in: *REST\_MQTT_example/src/main/java/REST/* +* Use a REST Client application (i.e., Advanced REST Client) to test if the server works correctly +* For example you can run the following request: + + + + +## MQTT +* Dowload and install the Mosquitto broker from here: *https://mosquitto.org/download/* +* Run the Mosquitto broker: + * **MacOS** + - brew services start mosquitto + - mosquitto_sub -h localhost -v -t ‘#’ *(Instead ‘#’ specify the topics of interest)* + * **Windows** + - Run the file mosquitto.exe + +* Run SubExample.java and PubExample.java located in *REST\_MQTT_example/src/main/java/MQTT/* diff --git a/assets/img_1.png b/assets/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..16e037f7465055058b4180c00502de6d8a1fb4b1 GIT binary patch literal 6697 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