Temperaturregelung mit Ubidots MQTT und NodeMCU

Dieser Leitfaden beschreibt detailliert, wie man mit Ubidots und einem einfachen NodeMCU eine Temperaturregelung erstellt, die E-Mail- oder SMS-Benachrichtigungen versendet, wenn die „Variable“ (in diesem Fall die Temperatur) zu heiß oder zu kalt wird oder eine bestimmte Auslegungsregel erreicht.
Wir verwenden eine vorverdrahtete und wasserdichte Version des DS18B20-Sensors (OneWire-Temperatursensor). Er ist praktisch für Messungen in größerer Entfernung oder unter feuchten Bedingungen. Der OneWire-Temperatursensor ist in verschiedenen Ausführungen erhältlich; eine davon hat einen integrierten Widerstand, andere nicht. Stellen Sie daher vor Projektbeginn sicher, dass Sie die richtige Version verwenden. Zur Steuerung nutzen wir einen NodeMCU mit einem digitalen Pin.
Anforderungen
- NodeMCU Version 1.0
- DS18B20 OneWire-Temperatursensor
- UbidotsESPMQTT-Bibliothek
- OneWire-Bibliothek
- DallasTemperature Bibliothek
- Ein 4,7 kΩ Widerstand (falls Ihr DS18B20 keinen hat)
- Kabel
Aufstellen
- Zuerst sollten wir eine Version auswählen. Wenn Ihr Sensor einen integrierten Widerstand hat, schließen Sie ihn einfach wie folgt an den NodeMCU an:
| DS18B20 | NodeMCU |
|---|---|
| SCHWARZES KABEL | GND |
| ROTES KABEL | Vin |
| GELBER KABEL | D3 |
Andernfalls muss der DATA-Pin über den Widerstand von 4,7 kΩ mit Strom versorgt werden, und die Vin- und GND-Pins müssen miteinander und mit Masse verbunden werden.

- Öffne die Arduino IDE, klicke auf „Datei“ → „Einstellungen“ und gib die folgende URL in das Feld „Zusätzliche Boardverwalter-URLs“ ein. Du kannst mehrere URLs hinzufügen und diese durch Kommas trennen.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
Öffnen Sie den „Boards Manager“ über das Menü Tools -> Board und installieren Sie die esp8266-Plattform (und vergessen Sie nicht, nach der Installation Ihr NodeMCU 1.0-Board über das Menü Tools > Board auszuwählen).
-
Laden Sie die Ubidots ESPMQTT-Bibliothek , die OneWire-Bibliothek und die DallasTemperature-Bibliothek über diese Hyperlinks herunter.
-
Klicken Sie nun auf Sketch -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen .
-
Wählen Sie die .ZIP-Dateien von Ubidots ESPMQTT, OneWire und DallasTemperature aus und klicken Sie anschließend bei allen Bibliotheken auf „Akzeptieren“ oder „Auswählen“. Falls Sie die Bibliotheken nicht hinzufügen können, versuchen Sie es manuell: Entpacken Sie die heruntergeladene RAR-/ZIP-Datei und kopieren Sie den Ordner aus der Bibliothek in den Pfad C:\Users\ ubidots \Documents\Arduin .
-
Schließe die Arduino IDE und öffne sie erneut.
Code
Sobald alles korrekt angeschlossen ist, wechseln wir zur IDE und schreiben folgenden Code:
/**************************************** * Einbinden von Bibliotheken ****************************************/ #include "UbidotsESPMQTT.h" #include<OneWire.h> #enthalten<DallasTemperature.h> /**************************************** * Konstanten definieren ****************************************/ #define TOKEN "....." // Ihr Ubidots -Token #define WIFINAME "....." // Ihre SSID #define WIFIPASS "....." // Ihr WLAN-Passwort #define MQTTCLIENTNAME "....." // Ihr MQTT-Clientname. Dieser muss eindeutig sein. Wir empfehlen daher die Wahl eines zufälligen ASCII-Namens. #define Pin D3 float temp; OneWire ourWire(Pin); DallasTemperature sensors(&ourWire); Ubidots client(TOKEN, MQTTCLIENTNAME); /**************************************** * Hilfsfunktionen ****************************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Nachricht angekommen ["); Serial.print(topic); Serial.print("] "); for (int i=0;i <length;i++) { Serial.print((char)payload[i]); } Serial.println(); } /**************************************** * Main Functions ****************************************/ void setup() { // put your setup code here, to run once: Serial.begin(115200); client.wifiConnection(WIFINAME, WIFIPASS); sensors.begin(); client.begin(callback); } void loop() { // put your main code here, to run repeatedly: if(!client.connected()){ client.reconnect(); } sensors.requestTemperatures(); //Prepare the sensor for reading temp = sensors.getTempCByIndex(0); Serial.print(sensors.getTempCByIndex(0)); //Read and print the temperature in Celsius client.add("temperature", temp); //Insert your variable Labels and the value to be sent delay(1000); Serial.println("Grados Centigrados"); client.<a i=3> ubidots Publish("control"); client.loop(); }
Ergebnisse
Öffnen Sie nun Ihr Ubidots -Konto und gehen Sie zu „Quellen “. Dort sehen Sie eine neue Datenquelle mit dem Namen „control“. Klicken Sie darauf.

Hier sehen Sie den Temperaturwert:

Erstellen einer Benachrichtigung
Sie können außerdem ein Ereignis , das Sie benachrichtigt, wenn die Temperatur unregelmäßig ist. Gehen Sie zu „Ereignisse“ , klicken Sie auf „Ereignis hinzufügen“ und wählen Sie Ihre Datenquelle und Variable .
Die Ereignisse können Sie per E-Mail, SMS, Telegram oder Webhook benachrichtigen. Sie können auch eine Variable festlegen:

Wenn Ihre Veranstaltung bereit ist, sollten Sie diese Fenster sehen:

In diesem Beispiel sendet Ihnen Ubidots , der Temperaturwert >= 28
Es ist ganz einfach! Mit nur wenigen Kabeln können Sie die Temperaturentwicklung in Ihrem Haus überwachen, egal ob Sie drinnen oder draußen sind. Im Brandfall können Sie sogar Benachrichtigungen per E-Mail oder SMS auslösen.
Jetzt bist du dran!
… noch nicht bei Ubidots ? Kein Problem, das geht hier in weniger als 30 Sekunden.
