FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: rodnic am 12 Januar 2020, 17:15:24

Titel: MQTT Messwerte kommen noch nicht an
Beitrag von: rodnic am 12 Januar 2020, 17:15:24
Hallo,

hab nun mit der Arduino Software den ESP8266 geflasht.
Im Arduino sehe ich nun auch die Messwerte ankommen.
Allerdings hab ich noch keine rechte Ahnung was ich beim "Empfänger" noch einstellen muss.
Mit dem Befehl: mosquitto_sub -h 127.0.0.1 -t /Wohnung/#
erhalte ich noch keine Werte.

Bzw. wo kann das Problem noch sein.
in der Arduino Aplikation werden die Messwerte angezeigt.
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: Gisbert am 12 Januar 2020, 17:42:29
Hallo rodnic,

es kann sinnvoll sein, ein Programm (ich hab Windows) z.B. mqttfx zu installieren. Ich hab auch einen MQTT Broker auf meinem Fhem-Server installiert.
Damit verbindet man sich zuerst mit dem Broker und kann dann Topics subskribieren. Wenn dann nichts ankommt, weiß man wenigstens, dass etwas faul ist.
Ein häufiger Fehler (bei mir wenigstens) sind Schreibfehler.

Viele​ Grüße​ Gisbert​
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: rodnic am 12 Januar 2020, 22:24:23
Hab ich auch installiert aber vom ESP8266 kommen keine Werte.

mit zwei ssl verbindungen hab ich den MQTT Broker getestet, der läuft und zeigt auch Werte an.
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: Gisbert am 12 Januar 2020, 23:42:06
Hallo rodnic,

um ganz sicherzustellen, dass der Broker funktioniert, kannst du irgendwas in mqttfx publishen, wobei du vorher genau das in mqttfx subskribierst.
Wenn jetzt was ankommt, dann weißt du, dass es nicht am Broker liegt. Also bitte durchführen und Ergebnis berichten.

Dann erzähl uns mal etwas über den Arduino-Sketch. Falls es ein Eigenkonstrukt ist, bitte den Sketch posten, ansonsten bitte die Software nennen, und wie du MQTT dort zum Laufen gebracht hast.

Ohne konkrete Informationen dürfte es wohl auch für diejenigen, die sich besser auskennen als ich, sehr schwer werden zu helfen.

Viele​ Grüße​ Gisbert​
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: rodnic am 13 Januar 2020, 06:04:40
Hallo,

ja der MQTT läuft. Mit mqttffx habe ich den Broker getestet.

Es handelt sich um eine "Eigenkonstruktion" ESP82266 mit DHT Shieled für Temperatur und Luftfeuchte.

Hier mal der Sketch:

#include <ESP8266WiFi.h>
#include <WiFiClient.h>

#include "DHT.h"
#include <MQTTClient.h>

#define DHTTYPE DHT11
#define DHTPIN 2

const char* host = "192.168.1.29";
const char* ssid = "xxxxx";
const char* password = "xxxxx";

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/Buero/temp", String(temp));
    mqtt.publish("/Wohnung/Buero/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();
}
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: Gisbert am 13 Januar 2020, 08:22:35
Hallo rodnic,

wenn du dich als Experte bei Arduino-Sketchen bezeichnen würdest, könnte ich zustimmen, dass du dir deinen eigenen Sketch maßgeschneidert erstellst.

Wenn dem nicht so ist, rate ich dir dringenst vzgw. Tasmota oder - was auch geht - ESPEasy auf den ESP8266 zu flashen. Damit sparst du dir den gesammten geschilderten Ärger.

Ich nutze sehr gerne den ESP Flasher als Tool zum Flashen von fertigen Binärdateien; im Falle von Tasmota wäre die tasmota.bin geeignet. Um Reste von vorherigen Installationsversuchen los zu werden, flashe ich gerne eine 1MB große blank.bin vorher.

Lies dich mal in das Wiki bei Tasmota ein.
Wenn du dann noch Fragen hast, dann gerne fragen.

Viele​ Grüße​ Gisbert​
Titel: Antw:MQTT Messwerte kommen noch nicht an
Beitrag von: Gisbert am 13 Januar 2020, 08:41:17
Hallo rodnic,

noch als Ergänzung.
Ich nutze in Fhem die ältere Variante, die explizit einen separaten MQTT-Broker voraussetzt.

Neuere Entwicklungen - und Experten raten dazu - das Modul MQTT2-SERVER einzusetzen, siehe hier: https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele)

Vorteil für mich: ich kenne mich mit der älteren Variante mittlerweile gut aus; Nachteil: man muss sich selbst um json kümmern, die einem die Bandwürmer an Readings aufdröseln - das macht die MQTT2-SERVER / MQTT2-DEVICE- Variante von selbst.

Viele​ Grüße​ Gisbert​