From a4b8ae0dca5a4c8a04682d1224e479b9820fc830 Mon Sep 17 00:00:00 2001 From: Dano van den Bosch Date: Tue, 19 Mar 2024 16:15:02 +0100 Subject: [PATCH] Almost done with the OOP --- .../{nodeCodeFinal => }/nodeCode.cpp | 0 arduino/node-code/nodeCodeFinal/headerFile.h | 8 ++- .../node-code/nodeCodeFinal/nodeCodeFinal.ino | 15 +++--- .../nodeCodeFinal/nodeCodeHeader.cpp | 38 ++++++++++++- .../node-code/nodeCodeFinal/nodeCodeHeader.h | 3 +- .../node-code/nodeCodeFinal/websockets.cpp | 53 ++++++++++++++++++- arduino/node-code/nodeCodeFinal/websockets.h | 10 +++- .../nodeCodeFinal/websocketsHeader.h | 14 ----- 8 files changed, 114 insertions(+), 27 deletions(-) rename arduino/node-code/{nodeCodeFinal => }/nodeCode.cpp (100%) delete mode 100644 arduino/node-code/nodeCodeFinal/websocketsHeader.h diff --git a/arduino/node-code/nodeCodeFinal/nodeCode.cpp b/arduino/node-code/nodeCode.cpp similarity index 100% rename from arduino/node-code/nodeCodeFinal/nodeCode.cpp rename to arduino/node-code/nodeCode.cpp diff --git a/arduino/node-code/nodeCodeFinal/headerFile.h b/arduino/node-code/nodeCodeFinal/headerFile.h index cdf4357..7443590 100644 --- a/arduino/node-code/nodeCodeFinal/headerFile.h +++ b/arduino/node-code/nodeCodeFinal/headerFile.h @@ -19,13 +19,19 @@ #define SCREEN_HEIGHT 64 #define i2c_adress 0x3c #define OLED_RESET -1 // QT-PY / XIAO + + #define USE_SERIAL Serial // make new objects // Adafruit_SH1106G display = Adafruit_SH1106G(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); // Adafruit_SH110X display = Adafruit_SH110X(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); +// Adafruit_SH110X display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); +Adafruit_SH1106G display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); DHT dht(DHTPIN, DHTTYPE); -WiFiMulti WiFiMulti; + +// WiFiMulti WiFiMulti; + Adafruit_SGP30 sgp; // WebSocketsClient webSocket; diff --git a/arduino/node-code/nodeCodeFinal/nodeCodeFinal.ino b/arduino/node-code/nodeCodeFinal/nodeCodeFinal.ino index d0a60dc..6def471 100644 --- a/arduino/node-code/nodeCodeFinal/nodeCodeFinal.ino +++ b/arduino/node-code/nodeCodeFinal/nodeCodeFinal.ino @@ -1,19 +1,20 @@ #include #include +#include -nodeReadings esp32Node(); -websockets webSocket(); +nodeReadings esp32Node; +websockets webSocketClass; -void setup() -{ +void setup() { // put your setup code here, to run once: esp32Node.setup(); - webSocket.websocketSetup(); + webSocketClass.websocketSetup(); esp32Node.resetValues(); } -void loop() -{ +void loop() { // put your main code here, to run repeatedly: esp32Node.loop(); + webSocketClass.loop(); + } diff --git a/arduino/node-code/nodeCodeFinal/nodeCodeHeader.cpp b/arduino/node-code/nodeCodeFinal/nodeCodeHeader.cpp index ef05d35..36dbd8a 100644 --- a/arduino/node-code/nodeCodeFinal/nodeCodeHeader.cpp +++ b/arduino/node-code/nodeCodeFinal/nodeCodeHeader.cpp @@ -1,5 +1,8 @@ #include "arduino.h" #include "nodeCodeHeader.h" +#include + +WebSocketsClient webSocket; nodeReadings::nodeReadings() { } @@ -23,7 +26,7 @@ void nodeReadings::setup(){ void nodeReadings::loop() { // loop the websocket connection so it stays alive - webSocket.loop(); + // webSocket.loop(); // update when interval is met if (currentMillis - lastMillis >= interval){ @@ -65,4 +68,37 @@ void nodeReadings::update(){ // check if any errors occured when reading sensors checkForError(); +} + +void nodeReadings::displayData() { + // clear display for new info + display.clearDisplay(); + + // display the data on the oled screen + display.setTextSize(1); + display.setTextColor(SH110X_WHITE); + display.setCursor(0,0); + display.println("Temperature: " + String(temperature) + " C"); + display.println("Humidity: " + String(humidity) + " %"); + display.println("eCO2: " + String(sgp.eCO2) + " ppm"); + display.println("TVOC: " + String(sgp.TVOC) + " ppb"); + display.display(); +} + +void nodeReadings::checkForError(){ + if (!sgp.IAQmeasure()) { + Serial.println("SGP30: BAD"); + errorSGP30 = true; + } else { + Serial.println("SGP30: OK"); + errorSGP30 = false; + } + + if (isnan(temperature) || isnan(humidity)){ + Serial.println("DHT11: BAD"); + errorDHT11 = true; + } else { + Serial.println("DHT11: OK"); + errorDHT11 = false; + } } \ No newline at end of file diff --git a/arduino/node-code/nodeCodeFinal/nodeCodeHeader.h b/arduino/node-code/nodeCodeFinal/nodeCodeHeader.h index 0959f11..710bf20 100644 --- a/arduino/node-code/nodeCodeFinal/nodeCodeHeader.h +++ b/arduino/node-code/nodeCodeFinal/nodeCodeHeader.h @@ -13,7 +13,8 @@ class nodeReadings { void loop(); void resetValues(); void update(); - + void checkForError(); + void displayData(); private: }; diff --git a/arduino/node-code/nodeCodeFinal/websockets.cpp b/arduino/node-code/nodeCodeFinal/websockets.cpp index e1d58be..d715a68 100644 --- a/arduino/node-code/nodeCodeFinal/websockets.cpp +++ b/arduino/node-code/nodeCodeFinal/websockets.cpp @@ -1,8 +1,17 @@ #include "arduino.h" +#include +#include +#include #include "websockets.h" +WebSocketsClient webSocket; +WiFiMulti WiFiMulti; + +websockets::websockets(){ +} + // hexdump function for websockets binary handler -void websockets::hexdump(const void *mem, uint32_t len, uint8_t cols = 16) { +void websockets::hexdump(const void *mem, uint32_t len, uint8_t cols) { const uint8_t* src = (const uint8_t*) mem; USE_SERIAL.printf("\n[HEXDUMP] Address: 0x%08X len: 0x%X (%d)", (ptrdiff_t)src, len, len); for(uint32_t i = 0; i < len; i++) { @@ -28,8 +37,48 @@ void websockets::websocketSetup(){ webSocket.begin("145.92.8.114", 80, "/ws"); // event handler - webSocket.onEvent(webSocketEvent); + // webSocket.onEvent(webSocketEvent); // try ever 500 again if connection has failed webSocket.setReconnectInterval(500); } + +void websockets::loop(){ + webSocket.loop(); +} + +// handler for websocket events +void websockets::webSocketEvent(WStype_t type, uint8_t * payload, size_t length) { + switch(type) { + case WStype_DISCONNECTED: + USE_SERIAL.printf("[WSc] Disconnected!\n"); + break; + case WStype_CONNECTED: + USE_SERIAL.printf("[WSc] Connected to url: %s\n", payload); + + // send message to server when Connected + webSocket.sendTXT("{\"message\": \"Connected\"}"); + break; + case WStype_TEXT: + // USE_SERIAL.printf("[WSc] get text: %s\n", payload); + + // send message to server + // webSocket.sendTXT("message here"); + break; + case WStype_BIN: + // USE_SERIAL.printf("[WSc] get binary length: %u\n", length); + hexdump(payload, length); + + // send data to server + // webSocket.sendBIN(payload, length); + break; + case WStype_ERROR: + case WStype_FRAGMENT_TEXT_START: + case WStype_FRAGMENT_BIN_START: + case WStype_FRAGMENT: + case WStype_FRAGMENT_FIN: + break; + } +} + + diff --git a/arduino/node-code/nodeCodeFinal/websockets.h b/arduino/node-code/nodeCodeFinal/websockets.h index c0a1502..2483d88 100644 --- a/arduino/node-code/nodeCodeFinal/websockets.h +++ b/arduino/node-code/nodeCodeFinal/websockets.h @@ -1,13 +1,21 @@ #ifndef websockerts_h #define websockerts_h +#include #include "Arduino.h" -#include "websocketsHeader.h" + +#define USE_SERIAL Serial +// WiFiMulti WiFiMulti; + class websockets { public: websockets(); void hexdump(const void *mem, uint32_t len, uint8_t cols = 16); + void websocketSetup(); + void loop(); + void webSocketEvent(WStype_t type, uint8_t * payload, size_t length); + private: }; diff --git a/arduino/node-code/nodeCodeFinal/websocketsHeader.h b/arduino/node-code/nodeCodeFinal/websocketsHeader.h deleted file mode 100644 index 0bc29a9..0000000 --- a/arduino/node-code/nodeCodeFinal/websocketsHeader.h +++ /dev/null @@ -1,14 +0,0 @@ -#include -#include -#include -#include "DHT.h" -#include -#include -#include -#include -#include - - - - -// WebSocketsClient webSocket;