From 53bc94aba38ab18f6a06eee7cfa7762ad6b88e56 Mon Sep 17 00:00:00 2001 From: Sam Hos Date: Mon, 3 Jun 2024 14:21:42 +0200 Subject: [PATCH] Fixed it so it only pulls the ip once --- code/arduino/Movement-sensor-code/Connectivity.cpp | 6 +++--- code/arduino/Movement-sensor-code/Connectivity.h | 2 +- .../Movement-sensor-code/Movement-sensor-code.ino | 11 +++++++---- code/arduino/Movement-sensor-code/headerFIle.h | 2 ++ 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/code/arduino/Movement-sensor-code/Connectivity.cpp b/code/arduino/Movement-sensor-code/Connectivity.cpp index bfc3c04..955d7d0 100644 --- a/code/arduino/Movement-sensor-code/Connectivity.cpp +++ b/code/arduino/Movement-sensor-code/Connectivity.cpp @@ -21,9 +21,9 @@ void Connectivity::connectWiFi(char* ssid, char* pass){ // } const char* getServerURL = "http://145.92.8.132:443/get-ip"; -String ipAddress = ""; +char* ipAddress = ""; -String Connectivity::fetchIPAddress() { +const char* Connectivity::fetchIPAddress() { if (WiFi.status() == WL_CONNECTED) { HTTPClient http; WiFiClient client; @@ -32,7 +32,7 @@ String Connectivity::fetchIPAddress() { int httpCode = http.GET(); if (httpCode > 0) { if (httpCode == HTTP_CODE_OK) { - ipAddress = http.getString(); + ipAddress = strdup(http.getString().c_str()); } } else { Serial.printf("GET request failed, error: %s\n", http.errorToString(httpCode).c_str()); diff --git a/code/arduino/Movement-sensor-code/Connectivity.h b/code/arduino/Movement-sensor-code/Connectivity.h index 6de0109..37d528b 100644 --- a/code/arduino/Movement-sensor-code/Connectivity.h +++ b/code/arduino/Movement-sensor-code/Connectivity.h @@ -19,7 +19,7 @@ public: void websocketSetup(char* ip, uint16_t port, char* adress); void sendData(float roll, float pitch, float yaw); int httpPost(const char *serverAddress, const char *serverSubPath, const unsigned short serverPort, const char *data, const size_t dataLength, const char *contentType); - String fetchIPAddress(); + const char* fetchIPAddress(); private: ESP8266WiFiMulti wifi; diff --git a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino index 061f12d..6540384 100644 --- a/code/arduino/Movement-sensor-code/Movement-sensor-code.ino +++ b/code/arduino/Movement-sensor-code/Movement-sensor-code.ino @@ -7,8 +7,6 @@ void setup() { Serial.begin(9600); } -unsigned long lastTime = 0; // will store the last time the code was run - void loop() { SensorManager::eulerAngles eulerRotation = sensorManager.getEulerAngles(); // SensorManager::acceleration rotationAcceleration = sensorManager.getAcelleration(); @@ -19,6 +17,11 @@ struct acceleration { float z = 9; } accelData; + if (!ipAquired) { + serverIp = connectivity.fetchIPAddress(); + ipAquired = true; + } + unsigned long lastTime = 0; // will store the last time the code was run unsigned long currentTime = millis(); if (currentTime - lastTime >= 100) { // 100 ms has passed memset(buffer, 0, BUFFER_SIZE); @@ -34,10 +37,10 @@ struct acceleration { accelData.z, "data"); // %d = int, %f = floatation, %s = string - connectivity.httpPost(connectivity.fetchIPAddress(), "/", 3445, buffer, strlen(buffer), "application/json"); + connectivity.httpPost(serverIp, "/", 3445, buffer, strlen(buffer), "application/json"); lastTime = currentTime; } } //acceleration.X //acceleration.Y -//acceleration.Z +//acceleration.Z \ No newline at end of file diff --git a/code/arduino/Movement-sensor-code/headerFIle.h b/code/arduino/Movement-sensor-code/headerFIle.h index 8e3480e..bd6639b 100644 --- a/code/arduino/Movement-sensor-code/headerFIle.h +++ b/code/arduino/Movement-sensor-code/headerFIle.h @@ -15,3 +15,5 @@ WebSocketsClient webSocket; #define IP_ADDRESS "192.168.137.12" char *buffer = (char *)malloc(sizeof(char) * BUFFER_SIZE); +const char* serverIp = NULL; // Declare serverIp here +bool ipAquired = false; \ No newline at end of file