Hallo zusammen,
ich habe zwei esp8266 12e mit jeweils einen DHT22 Sensor angeschlossen.
Jedes ESP Modul befindet sich in unterschiedlichen Räume und soll dort die Temperatur und die Luftfeuchtigkeit messen.
Das funktioniert so weit so gut.
Ich möchte die Werte vom jeweiligen Raum/Sensor zum MQTT Server übertragen:
Ich verwende den OpenSource Broker "Mosquitto".
Daher habe ich je Raum ein Topic im Sketch erstellt:
Unterschied sketch (ESP im Wohnzimmer)...
Serial.print("Sending... ");
if (!isnan(humidity) || !isnan(temp)) {
mqtt.publish("/Wohnung/WZ/temp", String(temp));
mqtt.publish("/Wohnung/WZ/humidity", String(humidity));
Zweites sketch (ESP im Schlafzimmer)..
Serial.print("Sending... ");
if (!isnan(humidity) || !isnan(temp)) {
mqtt.publish("/Wohnung/Schalfzimmer/temp", String(temp));
mqtt.publish("/Wohnung/Schalfzimmer/humidity", String(humidity));
Das Problem ist, wenn beide ESP Module gleichzeitig eingeschaltet sind.
Dann kommt bei MQTT nichts an bzw. zeigt keine neuen Wert an.
Hat jemand eine Idee, ob das Problem beim sketch liegt oder an MQTT.
Viele Grüße
Hier das komplette Programm:
[color=blue]#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "DHT.h"
#include <MQTTClient.h>
#define DHTTYPE DHT22
#define DHTPIN 0
const char* host = "192.168.XX.XX";
const char* ssid = "WLANl";
const char* password = "XXXX";
WiFiClient net;
MQTTClient mqtt;
DHT dht(DHTPIN, DHTTYPE);
void connect();
void setup() {
dht.begin();
Serial.begin(115200);
Serial.println();
Serial.println("Booting...");
WiFi.mode(WIFI_AP_STA);
WiFi.begin(ssid, password);
mqtt.begin(host, net);
connect();
Serial.println("Setup completed...");
}
void loop() {
if (!mqtt.connected()) {
connect();
}
mqtt.loop();
delay(30000);
float temp = dht.readTemperature();
float humidity = dht.readHumidity();
Serial.print("Sending... ");
if (!isnan(humidity) || !isnan(temp)) {
mqtt.publish("/Wohnung/Schalfzimmer/temp", String(temp));
mqtt.publish("/Wohnung/Schalfzimmer/humidity", String(humidity));
Serial.print("Temp: ");
Serial.print(String(temp));
Serial.print(" Humidity: ");
Serial.println(String(humidity));
}
}
void connect() {
while(WiFi.waitForConnectResult() != WL_CONNECTED) {
WiFi.begin(ssid, password);
Serial.println("WiFi connection failed. Retry.");
}
Serial.print("Wifi connection successful - IP-Address: ");
Serial.println(WiFi.localIP());
while (!mqtt.connect(host)) {
Serial.print(".");
}
Serial.println("MQTT connected!");
}
void messageReceived(String topic, String payload, char * bytes, unsigned int length) {
Serial.print("incoming: ");
Serial.print(topic);
Serial.print(" - ");
Serial.print(payload);
Serial.println();
}