Begin gemaakt aan data verzenden via mqtt websocket

This commit is contained in:
Yannick van Etten
2024-12-17 16:51:50 +01:00
parent f021ebebcb
commit d7a643460c

View File

@@ -3,6 +3,9 @@
#include "Adafruit_SGP30.h" #include "Adafruit_SGP30.h"
#include <WiFi.h> #include <WiFi.h>
#include <PubSubClient.h> #include <PubSubClient.h>
#include <ArduinoWebsockets.h>
using namespace websocket;
Adafruit_SGP30 sgp; Adafruit_SGP30 sgp;
@@ -18,32 +21,47 @@ Adafruit_SGP30 sgp;
DHT dht(DHTPIN, DHTTYPE); DHT dht(DHTPIN, DHTTYPE);
// WiFi en MQTT instellingen // WiFi en MQTT instellingen
const char* ssid = "iotroam"; const char* ssid = "Akkerboulevard";
const char* password = "6LAFiQVnUO"; const char* password = "aadvanetten";
const char* mqtt_server = "Ip adres rasperry pi";
const char* mqtt_server = "192.168.68.104";
const int mqtt_port = 8080; //websocket-poort
const char* mqtt_topic = "sensors/data"; const char* mqtt_topic = "sensors/data";
// MQTT client // MQTT client
WiFiClient espClient; WiFiClient espClient;
PubSubClient client(espClient); WebsocketsClient websocket;
PubSubClient client(wifiClient);
// Functie om verbinding te maken met WiFi // Functie om verbinding te maken met WiFi
void setup_wifi() { void setup_wifi() {
delay(10); Serial.print("Verbinden met WiFi...");
Serial.println("Verbinden met WiFi...");
WiFi.begin(ssid, password); WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) { while (WiFi.status() != WL_CONNECTED) {
delay(500); delay(500);
Serial.print("."); Serial.print(".");
} }
Serial.println("\nWiFi verbonden!"); Serial.println("Verbonden!");
} }
// Callback voor MQTT (niet gebruikt in deze toepassing, maar vereist) // Callback voor MQTT (niet gebruikt in deze toepassing, maar vereist)
void callback(char* topic, byte* payload, unsigned int length) { void callback(char* topic, byte* payload, unsigned int length) {
// Hier kun je reageren op inkomende MQTT-berichten // 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() { void setup() {
// Start de seriële monitor // Start de seriële monitor
Serial.begin(9600); Serial.begin(9600);
@@ -57,29 +75,16 @@ void setup() {
// Verbind met WiFi en MQTT-broker // Verbind met WiFi en MQTT-broker
setup_wifi(); setup_wifi();
client.setServer(mqtt_server, 1883); // Stel MQTT-broker in met websockets
client.setServer(mqtt_server, mqtt_port);
reconnectMQTT();
client.setCallback(callback); 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() { void loop() {
// Zorg ervoor dat MQTT verbonden blijft // Zorg ervoor dat MQTT verbonden blijft
if (!client.connected()) { if (!client.connected()) {
reconnect(); reconnectMQTT();
} }
client.loop(); client.loop();
@@ -103,9 +108,9 @@ void loop() {
String payload = "{"; String payload = "{";
payload += "\"humidity\":" + String(h) + ","; payload += "\"humidity\":" + String(h) + ",";
payload += "\"temperature\":" + String(t) + ","; payload += "\"temperature\":" + String(t) + ",";
payload += "\"mq5\":" + String(mq5Value) + ","; // payload += "\"mq5\":" + String(mq5Value) + ",";
payload += "\"tvoc\":" + String(sgp.TVOC) + ","; // payload += "\"tvoc\":" + String(sgp.TVOC) + ",";
payload += "\"eco2\":" + String(sgp.eCO2); // payload += "\"eco2\":" + String(sgp.eCO2);
payload += "}"; payload += "}";
// Verzend de payload via MQTT // Verzend de payload via MQTT