Pflanzenüberwachungssystem mit Bodenfeuchtigkeits- und Lichtsensoren über MQTT-Kommunikation
11.12.2024 - Engine: Gemini

Aufbau eines Überwachungssystems für Pflanzen mit Bodenfeuchtigkeits- und Lichtsensoren mittels MQTT-Kommunikation
Komponenten
- Mikrocontroller (z. B. Arduino Uno, ESP32)
- Bodenfeuchtigkeitssensor (z. B. YL-69)
- Lichtsensor (z. B. BH1750)
- MQTT-Broker (z. B. Mosquitto)
- MQTT-Client (z. B. MQTT-Bibliothek für Arduino)
Schritte
1. Hardware-Verbindung:
- Verbinde den Bodenfeuchtigkeitssensor mit analogen Pins des Mikrocontrollers.
- Verbinde den Lichtsensor mit dem I2C-Bus des Mikrocontrollers.
2. Software-Konfiguration:
- Installiere die MQTT-Bibliothek auf dem Mikrocontroller.
- Erstelle eine Verbindung zum MQTT-Broker.
- Definiere die MQTT-Themen für die Übertragung der Sensorwerte.
3. Bodensensor-Messung:
- Lese den analogen Wert vom Bodenfeuchtigkeitssensor.
- Konvertiere den Wert in eine Bodenfeuchtigkeitsmessung.
4. Lichtsensor-Messung:
- Lese den Lux-Wert vom Lichtsensor über I2C.
5. MQTT-Veröffentlichung:
- Veröffentliche die Bodenfeuchtigkeits- und Lichtsensormesswerte auf den MQTT-Themen mit einem entsprechenden Nachrichten-Payload.
6. MQTT-Abonnement:
- Abonniere das MQTT-Thema auf einem anderen Gerät oder einem Dashboard, um die Sensorwerte in Echtzeit zu empfangen.
Beispiel-Code:
// Arduino-Code für Pflanzenüberwachung mit MQTT
#include <MQTT.h>
const char* ssid = "SSID";
const char* password = "Passwort";
const char* mqtt_server = "mqtt_server";
const int mqtt_port = 1883;
const char* mqtt_topic_moisture = "moisture";
const char* mqtt_topic_light = "light";
MQTTClient client(256);
void setup() {
Serial.begin(115200);
// Verbindung zu WLAN herstellen
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Verbindung zum MQTT-Broker herstellen
client.begin(mqtt_server, mqtt_port, client);
// MQTT-Themen abonnieren
client.subscribe(mqtt_topic_moisture);
client.subscribe(mqtt_topic_light);
}
void loop() {
// Sensorwerte lesen
int moisture_value = analogRead(A0);
float light_value = bh1750.readLightLevel();
// Werte veröffentlichen
client.publish(mqtt_topic_moisture, String(moisture_value).c_str());
client.publish(mqtt_topic_light, String(light_value).c_str());
delay(1000);
}