Temperaturkontrolle mit Ubidots MQTT und NodeMcu
In dieser Anleitung erfahren Sie, wie Sie mit Ubidots und einem einfachen NodeMCU eine Temperaturregelung durchführen, um E-Mail- oder SMS-Benachrichtigungen zu senden, wenn Ihre „Variable“ (in diesem Fall die Temperatur) zu heiß oder zu kalt wird oder eine bestimmte Designregel erreicht.
Wir werden eine vorverdrahtete und wasserdichte Version des DS18B20-Sensors (OneWire-Temperatursensor) verwenden. Dies ist praktisch, wenn Sie etwas weit entfernt oder bei Nässe messen müssen. Der OneWire-Temperatursensor gibt es in verschiedenen Ausführungen; Einer von ihnen verfügt über einen integrierten Widerstand, andere nicht. Stellen Sie daher sicher, dass die von Ihnen verwendete Version korrekt ist, bevor Sie mit dem Projekt beginnen. Zur Steuerung verwenden wir einen NodeMcu mit digitalem Pin.
Anforderungen
- NodeMcu-Version 1.0
- DS18B20 OneWire Temperatursensor
- Ubidots ESPMQTT-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 über einen integrierten Widerstand verfügt, schließen Sie ihn einfach wie folgt an den NodeMcu an:
DS18B20 | NodeMCU |
---|---|
SCHWARZER DRAHT | GND |
ROTER DRAHT | Vin |
GELBER DRAHT | D3 |
Wenn nicht, müssen Sie den DATA-Pin über den Widerstand von 4,7 kΩ mit Strom versorgen und die Vin- und GND-Pins sollten miteinander und mit Masse verbunden sein.
- Gehen Sie zur Arduino IDE, klicken Sie auf Dateien -> Einstellungen und geben Sie die folgende URL in das Feld „Zusätzliche Board Manager-URLs“ ein. Sie können mehrere URLs hinzufügen und diese durch Kommas trennen.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
Öffnen Sie „Boards Manager“ im Menü „Extras -> Board“ und installieren Sie die esp8266-Plattform (und vergessen Sie nicht, nach der Installation Ihr NodeMCU 1.0-Board im Menü „Extras > Board“ auszuwählen).
-
Laden Sie die Ubidots ESPMQTT-Bibliothek , die OneWire-Bibliothek und die DallasTemperature-Bibliothek über diese Hyperlinks herunter.
-
Klicken Sie nun auf Skizze -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen .
-
Wählen Sie die .ZIP-Dateien von Ubidots ESPMQTT, OneWire und DallasTemperature aus und klicken Sie dann auf „Akzeptieren“ oder „Auswählen“ für alle Bibliotheken. Wenn 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 DocumentsArduinolibraries .
-
Schließen Sie die Arduino IDE und öffnen Sie sie erneut.
Code
Sobald alles richtig angeschlossen ist, gehen wir zur IDE und schreiben den folgenden Code:
/**************************************** * Bibliotheken einschließen ****** **********************************/ #include " Ubidots ESPMQTT.h" #include<OneWire.h> #enthalten<DallasTemperature.h> /**************************************** * Konstanten definieren ****** **********************************/ #define TOKEN "....." // Dein Ubidots TOKEN #define WIFINAME "....." //Ihre SSID #define WIFIPASS "....." // Ihr WLAN-Pass #define MQTTCLIENTNAME "....." // Ihr MQTT-Clientname, er muss eindeutig sein daher empfehlen wir, einen zufälligen ASCCI-Namen zu wählen #define Pin D3 float temp; OneWire ourWire(Pin); DallasTemperatursensoren(&ourWire); Ubidots -Client(TOKEN, MQTTCLIENTNAME); /**************************************** * Hilfsfunktionen ****** **********************************/ void callback(char* topic, byte* payload, unsigned int length) { Serial.print("Nachricht angekommen ["); Serial.print(topic); Serial.print("] "); für (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 Quelle . Sie sehen eine neue DataSource mit dem Namen „control“. klicken Sie darauf.
Hier sehen Sie den Temperaturwert:
Erstellen einer Warnung
Außerdem können Sie 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 Events können Sie per E-Mail, SMS, Telegram oder WebHook benachrichtigen. Sie können auch eine Variable festlegen:
Wenn Ihre Veranstaltung fertig ist, sollten diese Fenster angezeigt werden:
Wenn in diesem Beispiel der Temperaturwert 28 ist , sendet Ubidots
Es ist ganz einfach! Mit nur wenigen Kabeln können Sie das Temperaturverhalten Ihres Zuhauses beobachten, egal ob Sie sich drinnen oder draußen befinden. Sie können im Brandfall sogar Alarme per E-Mail/SMS auslösen.
Jetzt versuchen Sie es!
… noch Ubidots Keine Sorge, Sie können hier in weniger als 30 Sekunden loslegen.