Hallo zusammen,
ich habe einen Arduino UNO R4 der über MQTT Daten an meinen iobroker sendet.
Wenn ich jetzt den iobroker neu starte bricht die MQTT Verbindung natürlich zusammen.
Aber leider weiß ich nicht wie ich in meinen Sketch einen reconnect für MQTT einbauen muss.
Bin wirklich blutiger Anfänger, ich habe gejubelt wie Daten im iobroker ankammen.
Es wäre nett wenn mir jemand erklären könnte was ich in meinem Sketch ändern muss damit weiterhin Daten nach einem Neustart gesendet werden.
Hier mein Sketch:
#include <ArduinoMqttClient.h>
#include <WiFiS3.h>
#include "arduino_secrets.h"
///////Eingabe des WLAN Name und Passwort in der Registerkarte "arduino_secrets.h"
char ssid[] = SECRET_SSID; // your network SSID (name)
char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP)
WiFiClient wifiClient;
MqttClient mqttClient(wifiClient);
const char broker[] = "10.0.50.1";
int port = 2021;
const char topic[] = "Windgeschwindigkeit";
const int RecordTime = 6; //Messzeit in Sekunden
const int SensorPin = 3; //an welchem Pin ist der Windmesser angeschlossen (2 or 3 @ Arduino Uno)
int InterruptCounter;
float WindSpeed;
void setup()
{
Serial.begin(9600);
Serial.print("Versuche, eine Verbindung zum WLAN herzustellen: ");
Serial.println(ssid);
while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
// failed, retry
Serial.print(".");
delay(5000);
}
Serial.println("Verbindung mit WLAN wurde hergestellt");
Serial.println();
mqttClient.setUsernamePassword("benutzer", "passwort");
Serial.print("Versuche, eine Verbindung zum MQTT Server herzustellen: ");
Serial.println(broker);
if (!mqttClient.connect(broker, port)) {
Serial.print("Verbindung zum MQTT Server fehlgeschlagen: Error code = ");
Serial.println(mqttClient.connectError());
while (1);
}
Serial.println("Verbindung zum MQTT Server wurde hergestellt");
Serial.println();
}
void loop() {
meassure();
Serial.print("Windgeschwindigkeit: ");
Serial.print(WindSpeed); //Speed in km/h
Serial.print(" km/h - ");
Serial.print(WindSpeed / 3.6); //Speed in m/s
Serial.println(" m/s");
// senden der Daten an den MQTT Server
mqttClient.beginMessage(topic);
mqttClient.print(WindSpeed);
mqttClient.endMessage();
}
void meassure() {
InterruptCounter = 0;
attachInterrupt(digitalPinToInterrupt(SensorPin), countup, RISING);
delay(1000 * RecordTime);
detachInterrupt(digitalPinToInterrupt(SensorPin));
WindSpeed = (float)InterruptCounter / (float)RecordTime * 2.4;
}
void countup() {
InterruptCounter++;
}
Ich danke euch.