IoT Projekte

Temperaturkontrolle mit Ubidots MQTT und NodeMcu

María Hernández
· 4 Minuten Lesezeit
Per E-Mail versenden

onewire_nodeMcu.jpg

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

Aufstellen

  1. 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.

IMG_20161214_145917.jpg

  1. 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

  1. Ö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).

  2. Laden Sie die Ubidots ESPMQTT-Bibliothek , die OneWire-Bibliothek und die DallasTemperature-Bibliothek über diese Hyperlinks herunter.

  3. Klicken Sie nun auf Skizze -> Bibliothek einbinden -> .ZIP-Bibliothek hinzufügen .

  4. 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 .

  5. 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.

Temp_control_DSNodeMcu.jpg

Hier sehen Sie den Temperaturwert:

Temp_control_NodeMcu.jpg

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:

Temp_control_EventNodeMcu.jpg

Wenn Ihre Veranstaltung fertig ist, sollten diese Fenster angezeigt werden:

Temp_control_EventNodeMcu2.jpg

Wenn in diesem Beispiel der Temperaturwert 28 ist , sendet Ubidots

TempControl_Event.jpg

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.