From d7a643460ca5a7e6ce5519f50b61aaead628d7e1 Mon Sep 17 00:00:00 2001 From: Yannick van Etten Date: Tue, 17 Dec 2024 16:51:50 +0100 Subject: [PATCH] Begin gemaakt aan data verzenden via mqtt websocket --- src/Arduino/Sensors/Sensors.ino | 89 +++++++++++++++++---------------- 1 file changed, 47 insertions(+), 42 deletions(-) diff --git a/src/Arduino/Sensors/Sensors.ino b/src/Arduino/Sensors/Sensors.ino index d6e5b15..fd89c7d 100644 --- a/src/Arduino/Sensors/Sensors.ino +++ b/src/Arduino/Sensors/Sensors.ino @@ -3,6 +3,9 @@ #include "Adafruit_SGP30.h" #include #include +#include + +using namespace websocket; Adafruit_SGP30 sgp; @@ -18,94 +21,96 @@ Adafruit_SGP30 sgp; DHT dht(DHTPIN, DHTTYPE); // WiFi en MQTT instellingen -const char* ssid = "iotroam"; -const char* password = "6LAFiQVnUO"; -const char* mqtt_server = "Ip adres rasperry pi"; +const char* ssid = "Akkerboulevard"; +const char* password = "aadvanetten"; + +const char* mqtt_server = "192.168.68.104"; +const int mqtt_port = 8080; //websocket-poort const char* mqtt_topic = "sensors/data"; // MQTT client WiFiClient espClient; -PubSubClient client(espClient); +WebsocketsClient websocket; +PubSubClient client(wifiClient); // Functie om verbinding te maken met WiFi void setup_wifi() { - delay(10); - Serial.println("Verbinden met WiFi..."); + Serial.print("Verbinden met WiFi..."); WiFi.begin(ssid, password); - while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } - Serial.println("\nWiFi verbonden!"); + Serial.println("Verbonden!"); } // Callback voor MQTT (niet gebruikt in deze toepassing, maar vereist) void callback(char* topic, byte* payload, unsigned int length) { // Hier kun je reageren op inkomende MQTT-berichten } + +void reconnectMQTT() { + while (!client.connected()) { + Serial.print("Verbinding maken met MQTT via WebSockets..."); + if (client.connect("ESP32Client")) { + Serial.println("Verbonden!"); + } else { + Serial.print("Fout: "); + Serial.print(client.state()); + delay(5000); + } + } +} + void setup() { // Start de seriƫle monitor Serial.begin(9600); dht.begin(); - pinMode(MQ5_PIN, INPUT); + pinMode(MQ5_PIN, INPUT); - Wire.begin(SDA_PIN, SCL_PIN); - Serial.println("SGP30 test"); + Wire.begin(SDA_PIN, SCL_PIN); + Serial.println("SGP30 test"); // Verbind met WiFi en MQTT-broker setup_wifi(); - client.setServer(mqtt_server, 1883); + // Stel MQTT-broker in met websockets + client.setServer(mqtt_server, mqtt_port); + reconnectMQTT(); client.setCallback(callback); } -void reconnect() { - // Herstel verbinding met MQTT-broker - while (!client.connected()) { - Serial.print("Verbinding maken met MQTT..."); - if (client.connect("ArduinoClient")) { - Serial.println("Verbonden!"); - } else { - Serial.print("Fout, rc="); - Serial.print(client.state()); - Serial.println(" Probeer opnieuw over 5 seconden..."); - delay(5000); - } - } -} - void loop() { // Zorg ervoor dat MQTT verbonden blijft if (!client.connected()) { - reconnect(); + reconnectMQTT(); } client.loop(); float h = dht.readHumidity(); float t = dht.readTemperature(); - int mq5Value = analogRead(MQ5_PIN); + int mq5Value = analogRead(MQ5_PIN); - // Check of de sensorwaarden geldig zijn - if (isnan(h) || isnan(t) || isnan(mq5Value)) { - Serial.println("Fout bij het lezen van de sensors!"); - return; - } + // Check of de sensorwaarden geldig zijn + if (isnan(h) || isnan(t) || isnan(mq5Value)) { + Serial.println("Fout bij het lezen van de sensors!"); + return; + } - if (! sgp.IAQmeasure()) { - Serial.println("Measurement failed"); - return; - } + if (! sgp.IAQmeasure()) { + Serial.println("Measurement failed"); + return; + } // Maak een JSON-payload String payload = "{"; payload += "\"humidity\":" + String(h) + ","; payload += "\"temperature\":" + String(t) + ","; - payload += "\"mq5\":" + String(mq5Value) + ","; - payload += "\"tvoc\":" + String(sgp.TVOC) + ","; - payload += "\"eco2\":" + String(sgp.eCO2); + // payload += "\"mq5\":" + String(mq5Value) + ","; + // payload += "\"tvoc\":" + String(sgp.TVOC) + ","; + // payload += "\"eco2\":" + String(sgp.eCO2); payload += "}"; // Verzend de payload via MQTT @@ -117,4 +122,4 @@ void loop() { // Wacht 5 seconden voor de volgende meting delay(5000); -} \ No newline at end of file +}