Bodenfeuchtesensor an esp8266 mit mqtt

Hallo zusammen
benoetige mal hilfe da ich mich bischen wunder wieso aber keinen Fehler finden kann.

Hab einen esp 8266 mit Capacitive Soil Moisture Sensor V1.2 am laufen.
Laeuft soweit aber irgendwas stimmt nicht so richtig der esp sendet seine daten wie er soll nur wernn ich einen mqtt client aufrufe sind die daten zu sehen nur werden sie nicht aktuallisiert wenn ich den sensor aus dem Wasser nehme oder in wasser tauche.

#include <ESP8266WiFi.h>
#include <PubSubClient.h>

 
const int echoPin = A0; //D3
int Feuchtigkeit;
 
// Netzwerkeinstellungen.
const char* ssid = "Funkwelle_Kloosterburen";
const char* password = "T30h19A76l";
const char* mqtt_server = "192.168.1.6";
const char* SensorName = "Pflanze_01";

const int dry = 677;
const int wet = 348;
 
WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;
 
void setup_wifi() {
delay(100);
// Starte WiFi Verbindung
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 Verbindung");
Serial.println("IP Adresse: ");
Serial.println(WiFi.localIP());
}
 
void reconnect() {
// Loop until we're reconnected
while (!client.connected())
{
Serial.print("Verbindung zu mqtt ...");
 
if (client.connect(SensorName))
{
Serial.println("Verbindung");
client.subscribe("OsoyooCommand");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
//Warten 
delay(100);
}
}
}
 
void setup() {
pinMode(echoPin, INPUT);
Serial.begin(9600);
setup_wifi();
client.setServer(mqtt_server, 1883);
 
if (!client.connected()) {
reconnect();
}
 
client.loop();
 
String msg="";
 
pinMode(A0,INPUT);
delay(200);
 
// Lese Sensor Daten
int Bodenfeuchtigkeit = analogRead(A0);

int percentageHumidity = map(Bodenfeuchtigkeit, wet, dry, 100, 0);
 
// Sende Sensordaten an mqtt-Server
delay(10);
client.publish("Garten/Pflanze_01", String(percentageHumidity).c_str(),true);
//delay(100);
 
// Gehe schlafen fuer 15 minutes
//ESP.deepSleep( 15 * 60 * 1000000);
//delay(100);
}
 
void loop() {
}

vielleicht ist doch ein Fehler drinne ich weis es nicht. Haenge mit dem ding schon so lange rum.
vielleicht weis jemand rat.

grtuss Hitman

Mach da mal bitte das i raus, damit die Darstellung funktioniert.

Gruß Tommy

schon passiert :slight_smile:

Wen das richtige PW ist wurde ich den umgehend ändern :wink:

Ich nutze mqtt nicht, vermute aber, du musst auch hier die Daten in der loop senden, damit neue Daten in mqtt ankommen.

das Passwort ist natuerlich nicht richt sonst waere ich ja Bloed.
ja ich werde das morgen testen.

Das liegt nicht in meinem Ermessen in dieser Thematik eine Wertung abzugeben.

:wink: :wink:

hab den Fehler gefunden es lag tatsaechl;ich an dem fall das das auslesen der Daten nicht in der Loop stand :slight_smile:

Dann solltest du die entsprechende Lösung als gelöst markieren.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.