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 🙂

Matthias Korte

Hauptberuflich Software-Entwickler und seit einigen Jahren Smart-Home Fan. Angefangen hat alles mit einem RaspberryMatic und einer schaltbaren Steckdose. Mittlerweile habe ich einige Steckdosen, Sensoren, und Thermostate sowie ioBroker zur Visualisierung im Einsatz.

23 Gedanken zu „ESP8266 Sensoren an ioBroker über MQTT – Finaler Sensor mit Solarmodul und Sensoren

  • 11. Juni 2018 um 22:18
    Permalink

    Wie hast du das Solarpanel an die Box befestigt? thx

    Antwort
    • 12. Juni 2018 um 7:37
      Permalink

      Hallo,
      ich habe als Halterung einen alten Regalträger verwendet (z.B. diesen hier https://amzn.to/2MkJqs4)
      Den Winkel habe ich mit ein wenig Heisskleber unter das Solarpanel geklept und den Winkel mit dem Regalträger verschraubt.
      Dann kann auch das eigentliche Gehäuse mittels einer Schraube am Regalträger verschraubt werden, zudem bietet der Regalträger die Chance, nachträglich noch die Höhe des Gehäuses und somit des Sensors anzupassen. Ich hoffe ich konnte Dir damit weiterhelfen 🙂

      Grüße,
      Matthias

      Antwort
  • 13. Juni 2018 um 14:12
    Permalink

    danke Matthias für deine Infos, Teile hab ich auch bereits geordert und werde das auch so umsetzen bis auf den DHT22 Sensor, welche Teil vom Sketch kann ich weglassen wenn ich nur den Bodenfeuchtesensor benutze?!
    danke dir
    Grüße
    Reini

    Antwort
  • Pingback:ioBroker Datenupload zu ThingSpeak – smarthome-tricks.de

  • 15. Juni 2018 um 12:48
    Permalink

    Matthias, welche Arduino Einstellungen verwendest du hierfür oder werden eh alle Einstellungen vom Sketch überschrieben ?!
    thx, Reini

    Antwort
  • 18. Juni 2018 um 15:30
    Permalink

    Matthias, was hast du letztendlich für ein Gehäuse verwendet? (jenes von deinem Bericht „Teil2“ wohl nicht weil du ja kleiner werden wolltest)

    Antwort
    • 18. Juni 2018 um 15:49
      Permalink

      Hallo,
      richtig, ist ein kleineres Gehäuse geworden. Geht aber bestimmt noch kleiner 😉
      Ich habe das hier verwendet: http://r.ebay.com/ghe7lf

      Antwort
      • 20. Juni 2018 um 17:24
        Permalink

        Hallo Matthias,
        könntest du mir bitte ein Foto deiner Halterung zusenden damit ich mir das besser vorstellen kann
        gerne auch per Mail, dank dir Reini

        Antwort
  • Pingback:Der MQTT-Adapter – smarthome-tricks.de

  • 12. Oktober 2018 um 12:34
    Permalink

    Hallo Matthias,

    hast Du einen Ansicht der Anschlüsse an den einzelnen Platinen?

    Ich kämpfe hier, auch weil ich wahrscheinlich ein falsches TP4056 habe, da meiner keine Out´s hat.

    Danke!

    Meik

    Antwort
  • 2. April 2019 um 8:01
    Permalink

    Hi,
    meiner wacht nicht mehr aus dem deepsleep auf… muss da was spezielles beachtet werden?

    Danke für die tolle Anleitung!

    Antwort
    • 2. April 2019 um 10:08
      Permalink

      Hallo,
      bitte prüfe mal deine Verkabelung, hast Du D0 mit RSP verbunden?

      Grüße,
      Matthias

      Antwort
  • 3. Juni 2019 um 15:53
    Permalink

    Hallo Matthias,

    ich plane gerade die Anbindung meiner Bewässerung per MQTT.
    Da kommt mir dein Sensorprojekt gerade recht 🙂 Danke dafür

    Leider funktionieren die meisten Links der benötigten Elemente nicht mehr.
    Könntest du sie bei Gelegenheit vielleicht aktualisieren?

    Grüße aus Friedberg,
    Michael

    Antwort
    • 4. Juni 2019 um 11:18
      Permalink

      Moin,

      danke für den Hinweis. Werde ich direkt aktualisieren.

      Antwort
      • 11. Juli 2019 um 14:18
        Permalink

        Vielen Dank für die aktualisierten Links.
        Bei dem Gehäuse kann ich mir noch nicht so richtig vorstellen, wie groß das Ganze wird.
        Welche Größe hat denn das Gehäuse, welches bei dir nun zum Einsatz kommt?

        Antwort
  • 12. Juni 2019 um 20:49
    Permalink

    Hi, welche DHT-Bibliothek hast du verwendet? Arduinio bietet mir 10 verschiedene an.

    Antwort
  • 14. Juni 2019 um 23:18
    Permalink

    Hallo
    beim ausführen deines Sketches, bekomme ich folgenden Fehler und weiß leider nicht weiter

    sketch_jun14c:3:17: error: DHT.h: No such file or directory

    #include „DHT.h“

    ^

    compilation terminated.

    exit status 1
    DHT.h: No such file or directory

    Welche DHT Bibliothek muss ich denn auswählen?

    Hoffe du kannst mir helfen.

    MFG Stephan

    Antwort
    • 15. Juni 2019 um 6:50
      Permalink

      Moin Stephan,

      hast Du im Bibliotheksverwalter die Library für den DHT-Sensor installiert?
      Ich habe die Adafruit DHT sensor library (Version 1.3.0) im Einsatz.

      Viele Grüße,
      Matthias

      Antwort
  • 15. Juni 2019 um 21:15
    Permalink

    Hallo Matthias

    Erstmal danke für deine schnelle Antwort

    Hatte jeden DHT mal ausprobiert, keiner ging. Habe es nochmal mit dem von dir genannten probiert.

    Nun kommt folgender Fehler :

    In file included from C:\Users\Megapoort\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.cpp:22:0:

    C:\Users\Megapoort\Documents\Arduino\libraries\DHT_sensor_library\DHT_U.h:25:29: fatal error: Adafruit_Sensor.h: No such file or directory

    #include

    ^

    compilation terminated.

    exit status 1
    Fehler beim Kompilieren für das Board WeMos D1 R1.

    MFG

    Stephan

    Antwort
  • 15. Juni 2019 um 21:51
    Permalink

    Hallo Matthias

    Habe nochmal nen bissel geschaut und anscheinend den Fehler gefunden.

    Habe alle Versionen von dem von dir genannten DHT probiert.

    Bis zu der Version 1.2.3. geht es ohne probleme, alle die danach kommen, gehen nicht mehr, also ab 1.3.0.

    Komisch das bei dir 1.3.0 geht.

    Mfg Stephan

    Antwort
  • 15. Juni 2019 um 23:06
    Permalink

    Hallo Matthias

    Das nächste Problem lässt nicht lange auf sich warten 🙁

    Der Sketch wurde erfolgreich aufgespielt. In der Fritzbox soweit auch erkannt und eingerichtet.

    Aber im IoBroker bekomme ich nichts angezeigt.

    Die Mqtt Server IP im Sketch habe ich auf die IP des IoBroker geändert.

    Den Port habe ich im Sketch von 1883 auf 1888 geändert, weil ich schon andere Geräte mit dem Port im Mqtt laufen habe.

    Bei mir läuft Mqtt mit Username und PW, muss ich das im Sketch irgendwo eingeben, habe da nichts zu gefunden. In deinem ersten Sketch wurde das abgefragt, in dem aktullen nicht mehr, oder seh ich das nur nicht oder ist das nicht wichtig?

    Bei meinen anderen Mqtt Projekte musste ich Username und PW eingben.

    Mfg Stephan

    Antwort
    • 17. Juni 2019 um 18:24
      Permalink

      Hallo Matthias

      Hast du schon eine Idee, wie die Lösung für das Problem sein könnte?

      Mfg

      Stephan

      Antwort
  • 11. Juli 2019 um 14:26
    Permalink

    Hallo,
    vielen Dank für den Artikel.
    Genau so einen Bodenfeuchtesensor wollte ich auch bauen.
    Zwar nicht mit Luft-Sensor und auch ohne Solar, aber das Prinzip wäre gleich.
    Was ich noch nicht ganz verstanden habe:
    Ich wollte möglichst den Akku schonen. Also auch mit Deep-Sleep arbeiten.
    Ich verstehe die Schaltung aber so, dass zwar der ESP einschläft, aber der kapazitive Sensor trotzdem immer noch mit Dauerstrom arbeitet. Das wäre suboptimal.

    Oder mache ich hier einen Denkfehler?

    Antwort

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere