Hallo zusammen,
ich habe folgendes Problem:
ich habe mir ein kleines Testprogramm geschrieben, mit dem ich ein Paar daten via Mqtt an den IoBroker senden will.
//*****************************************************
//Wifi biliotehk
#include "WiFi.h"
// Wifi daten
const char* ssid = "xxxxxxxxxxxxxx";
const char* password = "xxxxxxxxxxxxxxxxxx";
long lastMsg = 0;
#include <WiFiClient.h>
WiFiClient EspClient;
//*****************************************************
// MQTT an IoBroker
#include <PubSubClient.h>
const char* mqtt_server = "192.168.***.***";
PubSubClient PSCclient(EspClient);
//https://www.smarthome-tricks.de/allgemein/nodemcu-esp8266-sensoren-an-iobroker-ueber-mqtt/
void setup() {
// put your setup code here, to run once:
Serial.begin(115200);
setup_wifi();
PSCclient.setServer(mqtt_server, 1883);
}
void loop() {
// put your main code here, to run repeatedly:
if (!PSCclient.connected()) {
reconnect_MQTT();
}
PSCclient.loop();
long now = millis();
// read DHT11 sensor every 6 seconds
if (now - lastMsg > 20000) {
lastMsg = now;
Serial.print("\t Temperatur");
PSCclient.publish("Temperatur", "25.3" );
Serial.print("\t Feuchte");
PSCclient.publish("Feuchtigkeit", "22.5" );
Serial.print("\t Temperatur_2");
PSCclient.publish("Temperatur_2", "21.5" );
Serial.print("\t Temperatur_3");
PSCclient.publish("Temperatur_3", "24.5" );
Serial.print("\t Luftdruck");
PSCclient.publish("Luftdruck", "55" );
Serial.println("\t WIFI_RSSI");
PSCclient.publish("WIFI_RSSI", "45" );
}
}
void setup_wifi() {
delay(100);
// We start by connecting to a WiFi network
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
randomSeed(micros());
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void reconnect_MQTT()
{
// Loop until we're reconnected
while (!PSCclient.connected())
{
Serial.print("Attempting MQTT connection...");
// Create a random client ID
String clientId = "ESP32Client-";
clientId += String(random(0xffff), HEX);
// Attempt to connect
//if you MQTT broker has clientID,username and password
//please change following line to
if (PSCclient.connect("TestClient","USer","Password"))
Serial.println(clientId);
if (PSCclient.connect(clientId.c_str()))
{
Serial.println("connected");
//once connected to MQTT broker, subscribe command if any
PSCclient.subscribe("OsoyooCommand");
} else {
Serial.print("failed, rc=");
Serial.print(PSCclient.state());
Serial.println(" try again in 5 seconds");
// Wait 6 seconds before retrying
delay(6000);
}
}
}
Im IoBroker kommen aber nur die erste Temperaur und die Feuchte an. Der rest nicht.
Dieser werden auch schön alle 20 Sec aktualisiert (meistens zumindestens).
aber was ist mit den anderen Topics?
Habe ich irgendwo ein Fehler über sehen?
Gruß
Christian