From 9ee95069a62b50d884965255105b0147c75d9d7e Mon Sep 17 00:00:00 2001
From: Adam0Brien <20093460@mail.wit.ie>
Date: Thu, 4 Apr 2024 17:48:48 +0100
Subject: [PATCH 1/4] feat: Added Sensor-Pod to Beebotte Cloud
---
USV/Sensor-Pod-Comms.ts | 13 +++++---
USV/USV-SensorPod-Cloud.ts | 67 ++++++++++++++++++++++++++++++++++++++
USV/USV-user.ts | 12 +++++++
3 files changed, 88 insertions(+), 4 deletions(-)
create mode 100644 USV/USV-SensorPod-Cloud.ts
create mode 100644 USV/USV-user.ts
diff --git a/USV/Sensor-Pod-Comms.ts b/USV/Sensor-Pod-Comms.ts
index 84974c1..d7a44d0 100644
--- a/USV/Sensor-Pod-Comms.ts
+++ b/USV/Sensor-Pod-Comms.ts
@@ -1,19 +1,24 @@
-// Starter Implementation
-// Change on button A and B pressed to physical circuit
input.onButtonPressed(Button.A, function () {
isSubmerged = 0
})
input.onButtonPressed(Button.B, function () {
isSubmerged = 1
})
+radio.onReceivedValue(function (name, value) {
+ if (name == "up") {
+ isSubmerged = 0
+ } else if (name == "down") {
+ isSubmerged = 1
+ }
+})
let isSubmerged = 0
-radio.setGroup(213)
+radio.setGroup(73)
basic.showIcon(IconNames.Yes)
USVSensorPod.initLocalDisplay()
let ph_list: number[] = []
let light_list: number[] = []
let temp_list: number[] = []
-isSubmerged = 1
+isSubmerged = 0
basic.forever(function () {
USVSensorPod.ShowString("Temp:" + USVSensorPod.calculateTempC() + "°C", 0, 0)
USVSensorPod.ShowString("pH:" + USVSensorPod.calculatePh(), 0, 1)
diff --git a/USV/USV-SensorPod-Cloud.ts b/USV/USV-SensorPod-Cloud.ts
new file mode 100644
index 0000000..bca660f
--- /dev/null
+++ b/USV/USV-SensorPod-Cloud.ts
@@ -0,0 +1,67 @@
+microIoT.microIoT_MQTT_Event(microIoT.TOPIC.topic_1, function (message) {
+
+})
+function parseJsonMessage (message: string) {
+ led.toggle(0, 4)
+ output_value = parseFloat(message.substr(message.indexOf(":") + 1, 9))
+ lenght = message.length - convertToText(output_value).length
+ lenght = lenght - 20
+ output_id = message.substr(1, lenght)
+ radio.sendValue(output_id, output_value)
+}
+function serialPrintMQTTMessage (text: string) {
+ led.toggle(1, 4)
+ serial.writeLine("Start")
+ serial.writeLine(text)
+ serial.writeLine("End")
+}
+input.onButtonPressed(Button.A, function () {
+
+})
+function sendIFTTTPost () {
+ return microIoT.microIoT_http_post(
+ "Hello World",
+ "",
+ "",
+ 10000
+ )
+}
+radio.onReceivedValue(function (name, value) {
+ if (name == "pH") {
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_1)
+ led.toggle(4, 4)
+ } else if (name == "temp") {
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_0)
+ led.toggle(4, 4)
+ } else if (name == "light") {
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_2)
+ led.toggle(4, 4)
+ }
+})
+function sendToNode (inputX: string, val: number, toggleX: number, toggleY: number) {
+ radio.sendValue(inputX, val)
+ led.toggle(toggleX, toggleY)
+ basic.pause(delay)
+ led.toggle(toggleX, toggleY)
+}
+let output_id = ""
+let lenght = 0
+let output_value = 0
+let delay = 0
+basic.showString("Server")
+delay = 1000
+microIoT.microIoT_WIFI("ADAM", "12345678")
+microIoT.microIoT_MQTT(
+"hYn5IyqJh7U9lfVdiSvSyJb1",
+"ExMVG1hBAbrE0MFpyEwJJGJXAlT6zYwr",
+"USVSensorPod/temp",
+microIoT.SERVERS.Global
+)
+microIoT.microIoT_add_topic(microIoT.TOPIC.topic_1, "USVSensorPod/pH")
+microIoT.microIoT_add_topic(microIoT.TOPIC.topic_2, "USVSensorPod/light")
+radio.setGroup(73)
+basic.showIcon(IconNames.Heart)
+basic.clearScreen()
+basic.forever(function () {
+
+})
diff --git a/USV/USV-user.ts b/USV/USV-user.ts
new file mode 100644
index 0000000..d433002
--- /dev/null
+++ b/USV/USV-user.ts
@@ -0,0 +1,12 @@
+input.onButtonPressed(Button.A, function () {
+ USV.deployDirection(USV.SensorDeploy.down, 1)
+ basic.pause(100)
+ USV.deployDirection(USV.SensorDeploy.up, 1)
+})
+input.onButtonPressed(Button.B, function () {
+ USV.USV_Motor(USV.Motors.Both, USV.Speed.ForwardSlow, 4)
+})
+radio.setGroup(73)
+basic.showIcon(IconNames.Happy)
+
+
From ae54c62369968a17834b2b228f24ce09ce80e86e Mon Sep 17 00:00:00 2001
From: Adam0Brien <20093460@mail.wit.ie>
Date: Thu, 4 Apr 2024 17:52:57 +0100
Subject: [PATCH 2/4] Added Makecode link to USV-User.ts
---
USV/USV-user.ts | 2 ++
1 file changed, 2 insertions(+)
diff --git a/USV/USV-user.ts b/USV/USV-user.ts
index d433002..6b13926 100644
--- a/USV/USV-user.ts
+++ b/USV/USV-user.ts
@@ -1,3 +1,5 @@
+// https://makecode.microbit.org/S59727-14370-08773-69640
+
input.onButtonPressed(Button.A, function () {
USV.deployDirection(USV.SensorDeploy.down, 1)
basic.pause(100)
From c5b06d0740a1e2973bfc0f2bad92e30e436b144c Mon Sep 17 00:00:00 2001
From: Adam0Brien <20093460@mail.wit.ie>
Date: Thu, 4 Apr 2024 22:01:44 +0100
Subject: [PATCH 3/4] docs: Update MQTT-Design-Pattern.md
---
docs/MQTT-Design-Pattern.md | 32 ++++++++++++++++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/docs/MQTT-Design-Pattern.md b/docs/MQTT-Design-Pattern.md
index 319d988..f40a234 100644
--- a/docs/MQTT-Design-Pattern.md
+++ b/docs/MQTT-Design-Pattern.md
@@ -7,3 +7,35 @@ This section will guide you through the design pattern used to recieve live data
+
+
+# USV User
+
+The USV User script is the only script that can be changed by the User.
+
+It uses the USV's Microbit library to code Missions using the USV and the Sensor Pod
+
+# USV-Lir
+
+The USV is loaded with the USV-OnBoard.ts script as well as the Sensor-Deploy-Mech.ts script
+
+These scripts control the USV's basic functionality such as its motor control and sensor deployment, as well as its autonamous drive features.
+
+# Sensor Pod
+The sensor pod itself is loaded with Sensor-Pod-Comms.ts.
+
+This script gives the Sensor pod two states it can be in:
+- State 0 (Not Sumberged)
+- State 1 (Submerged)
+
+Currently the Sensor Pod listens over the radio network for a sensor deploy command from the USV User microbit, this is how the sensor pod knows if it has been sumberged or if it is still above water
+
+- When the Sensor pod is Submerged it takes readings of all its sensors and stores the information to an ArrayList for later use.
+
+ - When the Sensor Pod is Not Sumberged it loops through each ArrayList and sends the value over the radio network and then deletes that value in the ArrayList to avoid duplicates.
+
+
+# Cloud Board
+
+The Cloud Boards main function is to listen to the Radio network for any sensor data and when it recieves data from the sensor pod it posts that data to the Beebotte MQTT Broker which can then be viewed on either Beebotte.com or through an MQTT App.
+
From 0f9d8c8fe6b41a1a2a64f05505ec0a2d033ef29c Mon Sep 17 00:00:00 2001
From: Adam0Brien <20093460@mail.wit.ie>
Date: Sat, 6 Apr 2024 17:09:20 +0100
Subject: [PATCH 4/4] USV-Cloud: Update docs, Added IFTTT + App sensor deploy
---
USV/Sensor-Pod-Comms.ts | 8 +++----
USV/USV-SensorPod-Cloud.ts | 42 ++++++++++++++++++++----------------
docs/MQTT-Design-Pattern.md | 21 ++++++++++++++----
img/IFTTT_Notif.jpeg | Bin 0 -> 76872 bytes
img/MQTT-App-Dashboard.jpeg | Bin 0 -> 219137 bytes
5 files changed, 45 insertions(+), 26 deletions(-)
create mode 100644 img/IFTTT_Notif.jpeg
create mode 100644 img/MQTT-App-Dashboard.jpeg
diff --git a/USV/Sensor-Pod-Comms.ts b/USV/Sensor-Pod-Comms.ts
index d7a44d0..421b2ec 100644
--- a/USV/Sensor-Pod-Comms.ts
+++ b/USV/Sensor-Pod-Comms.ts
@@ -13,15 +13,15 @@ radio.onReceivedValue(function (name, value) {
})
let isSubmerged = 0
radio.setGroup(73)
-basic.showIcon(IconNames.Yes)
+basic.showIcon(IconNames.Happy)
USVSensorPod.initLocalDisplay()
let ph_list: number[] = []
let light_list: number[] = []
let temp_list: number[] = []
isSubmerged = 0
basic.forever(function () {
- USVSensorPod.ShowString("Temp:" + USVSensorPod.calculateTempC() + "°C", 0, 0)
- USVSensorPod.ShowString("pH:" + USVSensorPod.calculatePh(), 0, 1)
+ USVSensorPod.ShowString("Temp:" + USVSensorPod.calculateTempC(), 0, 0)
+ USVSensorPod.ShowString("pH:" + USVSensorPod.calculatePh() + " " + "Light:" + USVSensorPod.getLight(), 0, 1)
})
basic.forever(function () {
if (isSubmerged == 1) {
@@ -55,7 +55,7 @@ basic.forever(function () {
if (isSubmerged == 0) {
for (let value of temp_list) {
radio.sendValue("tempC", value)
- basic.pause(100)
+ basic.pause(1000)
temp_list.removeAt(temp_list.indexOf(value))
}
}
diff --git a/USV/USV-SensorPod-Cloud.ts b/USV/USV-SensorPod-Cloud.ts
index bca660f..d88b0d1 100644
--- a/USV/USV-SensorPod-Cloud.ts
+++ b/USV/USV-SensorPod-Cloud.ts
@@ -1,6 +1,3 @@
-microIoT.microIoT_MQTT_Event(microIoT.TOPIC.topic_1, function (message) {
-
-})
function parseJsonMessage (message: string) {
led.toggle(0, 4)
output_value = parseFloat(message.substr(message.indexOf(":") + 1, 9))
@@ -15,26 +12,32 @@ function serialPrintMQTTMessage (text: string) {
serial.writeLine(text)
serial.writeLine("End")
}
-input.onButtonPressed(Button.A, function () {
-
+microIoT.microIoT_MQTT_Event(microIoT.TOPIC.topic_4, function (message) {
+ USV.deployDirection(USV.SensorDeploy.down, 1)
+ basic.pause(2000)
+ USV.deployDirection(USV.SensorDeploy.up, 1)
+ sendIFTTTPost()
})
function sendIFTTTPost () {
return microIoT.microIoT_http_post(
- "Hello World",
- "",
- "",
+ tempC,
+ pH,
+ light2,
10000
)
}
radio.onReceivedValue(function (name, value) {
- if (name == "pH") {
- microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_1)
+ if (name == "tempC") {
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + "}", microIoT.TOPIC.topic_0)
+ tempC = convertToText(value)
led.toggle(4, 4)
- } else if (name == "temp") {
- microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_0)
+ } else if (name == "pH") {
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + "}", microIoT.TOPIC.topic_1)
+ pH = convertToText(value)
led.toggle(4, 4)
} else if (name == "light") {
- microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + ",\"ispublic\":true}", microIoT.TOPIC.topic_2)
+ microIoT.microIoT_SendMessage("{\"" + name + "\":" + value + "}", microIoT.TOPIC.topic_2)
+ light2 = convertToText(value)
led.toggle(4, 4)
}
})
@@ -44,24 +47,27 @@ function sendToNode (inputX: string, val: number, toggleX: number, toggleY: numb
basic.pause(delay)
led.toggle(toggleX, toggleY)
}
+let light2 = ""
+let pH = ""
+let tempC = ""
let output_id = ""
let lenght = 0
let output_value = 0
let delay = 0
basic.showString("Server")
delay = 1000
-microIoT.microIoT_WIFI("ADAM", "12345678")
+microIoT.microIoT_WIFI("SKYRRZ2S", "CyGKfu4VffGe")
microIoT.microIoT_MQTT(
"hYn5IyqJh7U9lfVdiSvSyJb1",
"ExMVG1hBAbrE0MFpyEwJJGJXAlT6zYwr",
-"USVSensorPod/temp",
+"USVSensorPod/tempC",
microIoT.SERVERS.Global
)
microIoT.microIoT_add_topic(microIoT.TOPIC.topic_1, "USVSensorPod/pH")
microIoT.microIoT_add_topic(microIoT.TOPIC.topic_2, "USVSensorPod/light")
+microIoT.microIoT_add_topic(microIoT.TOPIC.topic_3, "USVSensorPod/turbidity")
+microIoT.microIoT_add_topic(microIoT.TOPIC.topic_4, "USVSensorPod/deploy")
+microIoT.microIoT_http_IFTTT("SensorDeploy", "mueyoNQjhWqz9r8pbQfVhqFPEBCBuqinmPDJ5oZYvoE")
radio.setGroup(73)
basic.showIcon(IconNames.Heart)
basic.clearScreen()
-basic.forever(function () {
-
-})
diff --git a/docs/MQTT-Design-Pattern.md b/docs/MQTT-Design-Pattern.md
index f40a234..2ae614e 100644
--- a/docs/MQTT-Design-Pattern.md
+++ b/docs/MQTT-Design-Pattern.md
@@ -17,12 +17,12 @@ It uses the USV's Microbit library to code Missions using the USV and the Sensor
# USV-Lir
-The USV is loaded with the USV-OnBoard.ts script as well as the Sensor-Deploy-Mech.ts script
+The USV is loaded with the [USV-OnBoard.ts](https://github.com/Adam0Brien/USV-LIR-Microbit-Abstraction/blob/main/USV/USV-OnBoard.ts) script as well as the [Sensor-Deploy-Mech.ts](https://github.com/Adam0Brien/USV-LIR-Microbit-Abstraction/blob/main/USV/Sensor-Deployment-Mech.ts) script
These scripts control the USV's basic functionality such as its motor control and sensor deployment, as well as its autonamous drive features.
# Sensor Pod
-The sensor pod itself is loaded with Sensor-Pod-Comms.ts.
+The sensor pod itself is loaded with [Sensor-Pod-Comms.ts](https://github.com/Adam0Brien/USV-LIR-Microbit-Abstraction/blob/main/USV/Sensor-Pod-Comms.ts).
This script gives the Sensor pod two states it can be in:
- State 0 (Not Sumberged)
@@ -32,10 +32,23 @@ Currently the Sensor Pod listens over the radio network for a sensor deploy comm
- When the Sensor pod is Submerged it takes readings of all its sensors and stores the information to an ArrayList for later use.
- - When the Sensor Pod is Not Sumberged it loops through each ArrayList and sends the value over the radio network and then deletes that value in the ArrayList to avoid duplicates.
+- When the Sensor Pod is Not Sumberged it loops through each ArrayList and sends the value over the radio network and then deletes that value in the ArrayList to avoid duplicates.
# Cloud Board
-The Cloud Boards main function is to listen to the Radio network for any sensor data and when it recieves data from the sensor pod it posts that data to the Beebotte MQTT Broker which can then be viewed on either Beebotte.com or through an MQTT App.
+The Cloud Boards main function is to listen to the Radio network for any sensor data, When it recieves data from the sensor pod it posts that data to the [Beebotte](beebotte.com) MQTT Broker which can then be viewed on either Beebotte.com or through an MQTT App.
+The MQTT app can then be configured to recieve data from the pre-configured Beebotte Topics,
+
+There has also been an additional topic added that works as a trigger for a Sensor pod deployment which is located in the "Sensor Deploy" button
+
+
+
+

+
+
+Once a sensor deployment is made Via the [MQTT App](https://snrlab.in/) it triggers an IFTTT Notification that tells the user the sensor pod has been deployed and what values have come back from the deployment
+
+

+
\ No newline at end of file
diff --git a/img/IFTTT_Notif.jpeg b/img/IFTTT_Notif.jpeg
new file mode 100644
index 0000000000000000000000000000000000000000..e23bf69ef7168a3d4a94be9c695f7433c22ae0e8
GIT binary patch
literal 76872
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