smarthome-tricks.de

ESP8266 Sensoren an ioBroker über MQTT – Finaler Sensor mit Solarmodul und Sensoren

In diesem Artikel zeige ich Dir meinen Fortschritt an der Entwicklung des Outdoor-Sensors.

Im ersten Schritt der Weiterentwicklung habe ich das gesamte Board ausgetauscht und den Mikroprozessor durch einen ESP8266 ESP-12E ersetzt. Die Anschlussbelegung der Sensoren wurde dabei belassen, sodass die Software zunächst nicht angepasst werden muss. Der neue Sensor für die Bodenfeuchtigkeit liefert die Daten ebenfalls über den analogen Eingang, sodass hier auch keine Anpassungen gemacht würden. Das folgende Bild zeigt den eigentlichen Sensor nach dem Aufbau.

 

 

Im nächsten Schritt wurde das Gehäuse vorbereitet und ein Schlitz für den Bodenfeuchtigkeitssensor sowie Bohrungen für die Kabel-Ausleitungen an der Unterseite des Gehäuses angebracht.

 

Das folgende Foto zeigt das Sensor-Board im Gehäuse. Nach einem Funktionstest wurden dann alle Öffnungen abgedichtet und der Bodenfeuchtigkeitssensor mit Heißkleber fixiert.

 

Im Abschluss wurde der Sensor dann im Gemüsebeet installiert.

 

 



 

 

Verwendete Materialien

 

Weitere Links zum Projekt

 

Sketch

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

// Define NodeMCU D3 pin to as temperature data pin of DHT22
#define DHTPIN D3
#define DHTTYPE DHT22

DHT dht(DHTPIN,DHTTYPE);

const int echoPin = A0; //D3
int Feuchtigkeit;

// Update these with values suitable for your network.
const char* ssid = "WLAN_SSID";
const char* password = "WLAN_PWD";
const char* mqtt_server = "192.168.2.90";
const char* SensorName = "outdoor2";

WiFiClient espClient;
PubSubClient client(espClient);
long lastMsg = 0;
char msg[50];
int value = 0;

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() {
// Loop until we're reconnected
while (!client.connected())
{
Serial.print("Attempting MQTT connection...");

if (client.connect(SensorName))
{
Serial.println("connected");
client.subscribe("OsoyooCommand");
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 6 seconds before retrying
delay(6000);
}
}
}

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);
dht.begin();
delay(2000);

// read sensor data
float h = dht.readHumidity();
float d = dht.readTemperature();
int bodenfeuchte = analogRead(A0);

// publish sensor data to mqtt server
delay(10);
client.publish("outdoor1_Lufttemperatur", String(d).c_str(),true);
delay(10);
client.publish("outdoor1_Bodenfeuchtigkeit", String(bodenfeuchte).c_str(),true);
delay(10);
client.publish("outdoor1_Luftfeuchtigkeit", String(h).c_str(),true);
delay(100);

// Go sleep for 30 minutes
ESP.deepSleep( 30 * 60 * 1000000);
delay(100);
}

void loop() {
}

 

Ich hoffe euch gefällt dieser Artikel. Über Kommentare unterhalb des Artikels oder per E-Mail freue ich mich wie immer ?

Die mobile Version verlassen