diff --git a/ESPBMS.ino b/ESPBMS.ino index 0640f23..6e23c6c 100644 --- a/ESPBMS.ino +++ b/ESPBMS.ino @@ -2,7 +2,7 @@ #include #include "WebSocketManager.h" -WebSocketManager wsManager("wss://api.ecomotus.co.uk", 443, "/socket"); +WebSocketManager wsManager("ws://chodbox.home.arpa", 8765, "/"); static BLEUUID serviceUUID("0000ff00-0000-1000-8000-00805f9b34fb"); //xiaoxiang bms service static BLEUUID charUUID_rx("0000ff01-0000-1000-8000-00805f9b34fb"); //xiaoxiang bms rx id @@ -34,7 +34,6 @@ void setup() { WiFi.onEvent(WiFiEvent); ETH.begin(ETH_ADDR, ETH_POWER_PIN, ETH_MDC_PIN, ETH_MDIO_PIN, ETH_TYPE, ETH_CLK_MODE); BLEDevice::init(""); - wsManager.begin(); } void loop() { @@ -53,6 +52,13 @@ void loop() { delay(250); } + wsManager.begin(); + + while(!wsManager.isConnected()){ + Serial.println("Wait for socket..."); + delay(250); + } + for (int i = 0; i < foundDevices.getCount(); i++) { delay(1000); Serial.printf("\r\n\r\n===============================\r\n\r\n"); diff --git a/WebSocketManager.h b/WebSocketManager.h index 1dea409..c68a060 100644 --- a/WebSocketManager.h +++ b/WebSocketManager.h @@ -3,7 +3,8 @@ #include #include -#include "ca_cert.h" // Include the CA certificate +#include +#include "ca_cert.h" class WebSocketManager { public: @@ -19,24 +20,24 @@ public: template void sendText(const char* format, Args... args) { - if (webSocket.isConnected()) { + if (webSocket.isConnected() && isConnected) { char buffer[512]; // Define a buffer to hold the constructed message snprintf(buffer, sizeof(buffer), format, args...); // Use snprintf to format the string webSocket.sendTXT(buffer); - Serial.print("[WebSocket] Sent: "); - }else{ - Serial.printf("[WebSocket] Dropped: "); } - Serial.println(buffer); + } + + static bool isConnected() { + return connected; } private: static void webSocketTask(void *param) { - WiFiClientSecure client; - client.setCACert(ca_cert); + WiFiClient client; + //client.setCACert(ca_cert); webSocket.beginSSL(serverUrl.c_str(), serverPort, serverPath.c_str(), ca_cert); webSocket.onEvent(webSocketEvent); - webSocket.setReconnectInterval(5000); + webSocket.setReconnectInterval(1000); for (;;) { webSocket.loop(); @@ -44,46 +45,22 @@ private: } } - static void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { + static void webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { switch (type) { case WStype_DISCONNECTED: - if (payload) { - Serial.print("[WebSocket] Disconnected - Reason: "); - Serial.println((char*)payload); - } else { - Serial.println("[WebSocket] Disconnected - No reason provided"); - } + connected = false; + Serial.println("[WebSocket] Disconnected"); break; case WStype_CONNECTED: + connected = true; Serial.println("[WebSocket] Connected"); - // If your WebSocket server sends a greeting or any message upon connection, you can log it here - if (payload && length > 0) { - Serial.print("[WebSocket] Server response: "); - Serial.println((char*)payload); - } break; case WStype_TEXT: - Serial.print("[WebSocket] Received text: "); + Serial.print("[WebSocket] Received: "); Serial.println((char*)payload); break; case WStype_BIN: - Serial.print("[WebSocket] Received binary data, length: "); - Serial.println(length); - // Optionally, you can add a function to dump binary data for deeper inspection - break; - case WStype_ERROR: - Serial.print("[WebSocket] Error: "); - if (payload) { - Serial.println((char*)payload); - } else { - Serial.println("No specific error message provided."); - } - break; - case WStype_PING: - Serial.println("[WebSocket] Ping received"); - break; - case WStype_PONG: - Serial.println("[WebSocket] Pong received"); + Serial.println("[WebSocket] Received binary data"); break; } } @@ -92,6 +69,7 @@ private: static String serverUrl; static uint16_t serverPort; static String serverPath; + static bool connected; }; // Define static members @@ -99,5 +77,6 @@ WebSocketsClient WebSocketManager::webSocket; String WebSocketManager::serverUrl = ""; uint16_t WebSocketManager::serverPort = 0; String WebSocketManager::serverPath = ""; +bool WebSocketManager::connected = false; #endif // WEBSOCKETMANAGER_H