Hallo zusammen
Ich bin neu hier, in meinem Haus läuft ein SmartHome mit FHEM und diversen Hardware-Komponenten. Leider funktioniert nicht mehr ganz alles so wie ich es haben möchte, darum habe ich mich auf die Suche begeben und bin zum Entschluss gekommen, "muss ich halt selber machen".
Jetzt habe ich mir so einen Wemos D1 mini mit einem DHT22 Shield gekauft und möchte das ganze dann via den Mosquitto-Brocker im fhem verarbeiten. Ich habe hier den gesamten Sketch mal einkopiert:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include "DHT.h"
#include <MQTTClient.h>
#define DHTTYPE DHT22
#define DHTPIN 2
//Wifi Client
const char* host = "192.168.xxx.xx";
const char* ssid = "xxxxx";
const char* password = "xxxxx";
//
//MQTT Client
const char* mqttUser = "ESP8266";
const char* mqttPassword = "esp8266";
//
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();
}
Es läuft halbwegs, das Merkwürdige an der ganze Sache ist aber die Ausgabe im Seriellen Monitor:
16:31:52.954 -> MQTT connected!
16:32:22.956 -> Sending... Temp: 25.60 Humidity: 36.80
16:32:22.989 -> Wifi connection successful - IP-Address: 192.168.168.107
16:32:22.989 -> MQTT connected!
16:32:53.017 -> Sending... Temp: 25.60 Humidity: 36.60
16:32:53.017 -> Wifi connection successful - IP-Address: 192.168.168.107
16:32:53.017 -> MQTT connected!
16:33:23.005 -> Sending... Temp: 25.50 Humidity: 36.90
16:33:23.005 -> Wifi connection successful - IP-Address: 192.168.168.107
16:33:23.039 -> MQTT connected!
16:33:53.037 -> Sending... Temp: 25.50 Humidity: 36.00
16:33:53.037 -> Wifi connection successful - IP-Address: 192.168.168.107
16:33:53.037 -> MQTT connected!
Mit den Mqtt.fx erhalte ich aber keine Topics. Wenn ich im Mosquitto den "allow_anonymous false" setze geht gar nichts mehr. Aber wie ich die "Logindaten" zum Mosquitto hinschreiben soll? (müsste doch im void setup zum mqtt.begin?
Nach etlichen Stunden suchen und nicht wirklich was finden im Web versuche ich hier eine Lösung zu finden.
Zu einem späteren Zeitpunkt möchte ich dann eben das meiste meines 1Wire Zeugs Ablösen oder mindestens mit jeweils 1 Arduino zusätzlich aufteilen.
Gruss Andi