INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Pumpensteuerung über WLAN
02.12.2020, 22:46
Beitrag #1
Pumpensteuerung über WLAN
Hallo Leute,

ich hab ein Problem. Ich bin auch nicht wirklich Programmierer.
Die Hardware 2x NodeMCU und 4x DS18B20
Der Plan:
Eine NodeMCU misst 3 Temperaturen Wasserspeicher, Luft Innen und Luft Außen.
Diese Temperaturen sollen an NodeMCU 2 geschickt werden, welche auch eine Wassertemperatur misst. Dort werden die Wassertemperaturen verrechnet und eine Pumpe geschaltet.
Und dann wird alles noch an einen Raspberry an NodeRed geschickt.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
02.12.2020, 22:52 (Dieser Beitrag wurde zuletzt bearbeitet: 02.12.2020 22:55 von DanielK.)
Beitrag #2
RE: Pumpensteuerung über WLAN
Erster code
Code:
#include <ESP8266WiFi.h>
#include <DallasTemperature.h>   //verwendet wird https://github.com/milesburton/Arduino-Temperature-Control-Library
#include <Base64.h>
#include <OneWire.h>

#define Sensor_Port D2

OneWire oneWire(Sensor_Port);
DallasTemperature DS18B20(&oneWire);

// change of your sensors adress
DeviceAddress sensor1Wa = { 0x28, 0xFF, 0xD7, 0x7B, 0xA4, 0x16, 0x05, 0x6A };
DeviceAddress sensor2Li = { 0x28, 0xFF, 0x5C, 0x6C, 0xA4, 0x16, 0x04, 0x31 };  
DeviceAddress sensor3La = { 0x28, 0xFF, 0x8D, 0x6C, 0xA4, 0x16, 0x04, 0xA2 };  

// byte resolution = 12;                  // DS18S20 only 9bit, other 9...12 //geht auch mit 12bit
unsigned long lastTempRequest = 750;      // start delay for first measurement
unsigned long ConversionDelay = 750;      // default 750ms, okay for all DS1820 types
boolean AllowDallasTempRequest = true;
float TempSensor1Wa;                 // Zwischenspeicher zum auslesen
float TempSensor2Li;                 // Zwischenspeicher zum auslesen
float TempSensor3La;                 // Zwischenspeicher zum auslesen


const char* ssid = "Net";                  
const char* password = "pw";    

const char* host = "192.168.178.54";              //Server der die temperatur empfangen soll
const char* script = "/sensor/temperatur/";       //URL/Verzeichnis das wir gewaehlt haben
const char* passwort = "passwortxyz";             //Passwort, derzeit ungenutzt
const char* idnr = "1";                           //Hier kann man dem Sensor eine beliebe ID zuteilen (derzeit ungenutzt)


#define LED D0                                    //Interne Led auf dem NodeMCU Board LED_BUILTIN

void setup() {
DS18B20.begin();
Serial.begin(115200);
delay(10);

Serial.println();
Serial.println();
Serial.print("Verbinde mich mit Netz: ");
Serial.println(ssid);

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}

Serial.println("");
Serial.println("WiFi Verbindung aufgebaut");
Serial.print("Eigene IP: ");
Serial.println(WiFi.localIP());
}

//Funktion um Ttemperaturen zu ermitteln
float getTemperatur() {
float temp;
do {
   DS18B20.requestTemperatures();
   temp = DS18B20.getTempCByIndex(0);
   delay(100);
} while (temp == 85.0 || temp == (-127.0));
return temp;
}

void loop() {
      // Request a temperature conversion
                if ( AllowDallasTempRequest == true )
                    {          
                     DS18B20.requestTemperatures();
                     lastTempRequest = millis();
                     AllowDallasTempRequest = false;
                    }
            // readout the Dallas sensors  
                if ( millis() - lastTempRequest >= ConversionDelay )  // waited long enough?
                    {
                     TempSensor1Wa = DS18B20.getTempC(sensor1Wa);  // 1. Sensor auslesen (Device Adresse)
                     TempSensor2Li = DS18B20.getTempC(sensor2Li);  // 2. Sensor auslesen (Device Adresse)
                     TempSensor3La = DS18B20.getTempC(sensor3La);  // 3. Sensor auslesen (Device Adresse)  
                     AllowDallasTempRequest = true;
                    
                     Serial.print(F("Speicher 1000: ")); Serial.print(TempSensor1Wa); Serial.print("°C   "); Serial.print('\t');
                     Serial.print(F("Luft Heizraum: ")); Serial.print(TempSensor2Li); Serial.print("°C   "); Serial.print('\t');
                     Serial.print(F("Luft Aussen: ")); Serial.print(TempSensor3La); Serial.println("°C   ");
                    }          


delay(2000);

}

so weit funktioniert es
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 11:14
Beitrag #3
RE: Pumpensteuerung über WLAN
Du solltest bedenken, dass die Dallas-Sensoren zwischen RequestTemperatures und dem Abholen der Temperatur ca. 750 ms blockieren.
Du solltest also das RequestTemperatures nur 1 Mal je Messzyklus absetzen.
Deine do-while-Schleife blockiert evtl. den ganzen Ablauf.

Eigentlich wolltest Du doch die Daten zu einem 2. ESP8266 senden. Über ein eigenes Netz, dass dieser aufmacht oder beide im lokalen Netz?

Auf jeden Fall solltest Du Dir die Beispiele zur Datenübertragung mit z.B. UDP anschauen. Am Besten über ein struct aus 3 Werten.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 11:33
Beitrag #4
RE: Pumpensteuerung über WLAN
(02.12.2020 22:46)DanielK schrieb:  ich hab ein Problem.
....

Ok, aber so ganz werde ich aus dem Beitrag nicht schlau.
Im zweiten Post schreibst du: "Soweit funktioniert es".

Also was denn nun. Beschreibe doch hier dein aktuelles Problem.

Zudem solltest du auf deinen bisherigen Beiträgen auch hierher verlinken, damit jeder sehen kann, dass dein Thema noch weiter geht. So ist da ja alles offen.

Zum Thema hier:
Warum verwendest du nicht das Beispiel "WaitForConversion2" aus der DallasThemperatur-Library ?
Das läuft doch blockierungsfrei.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 11:51
Beitrag #5
RE: Pumpensteuerung über WLAN
(03.12.2020 11:14)Tommy56 schrieb:  Du solltest bedenken, dass die Dallas-Sensoren zwischen RequestTemperatures und dem Abholen der Temperatur ca. 750 ms blockieren.
Du solltest also das RequestTemperatures nur 1 Mal je Messzyklus absetzen.
Deine do-while-Schleife blockiert evtl. den ganzen Ablauf.

Eigentlich wolltest Du doch die Daten zu einem 2. ESP8266 senden. Über ein eigenes Netz, dass dieser aufmacht oder beide im lokalen Netz?

Auf jeden Fall solltest Du Dir die Beispiele zur Datenübertragung mit z.B. UDP anschauen. Am Besten über ein struct aus 3 Werten.

Gruß Tommy

Der Code oben funktioniert erst mal. Er misst und schreibt die Werte hin.
Genau nun sollen die Werte zum 2 ESP über mein Lokales Netz. UDP find gut. So hatte ich es ja schon am laufen. Aber mit AT-Befehlen. Ich bräuchte jetzt etwas Code für UDP struct.
Grüße Daniel
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 12:45
Beitrag #6
RE: Pumpensteuerung über WLAN
Dennoch solltest du meine Anmerkungen in Post#4 beachten.

Gruß Dieter

I2C = weniger ist mehr: weniger Kabel, mehr Probleme. Cool
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 14:17
Beitrag #7
RE: Pumpensteuerung über WLAN
(03.12.2020 11:33)hotsystems schrieb:  Zum Thema hier:
Warum verwendest du nicht das Beispiel "WaitForConversion2" aus der DallasThemperatur-Library ?
Das läuft doch blockierungsfrei.

Wenn ich nicht weiß, dass es gibt, kann ich es nicht nutzen.
Ich such ja schon an allen Ecken. Jetzt hab ich gerade das UDP-Beispiel aus der AuruinoIDE. Mal sehn ob ich damit was hinbekommen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
03.12.2020, 14:19
Beitrag #8
RE: Pumpensteuerung über WLAN
(03.12.2020 12:45)hotsystems schrieb:  Dennoch solltest du meine Anmerkungen in Post#4 beachten.

Ich bräuchte mehr Infos. Bin kein Programmierer
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Erfahrungen mit ESP32 und WLAN/MQTT oder was ich beobachtet habe... Arduino4Fun 13 943 10.01.2021 14:18
Letzter Beitrag: nbk83
  ESP32 über OTA luemar 58 2.216 03.01.2021 13:50
Letzter Beitrag: luemar
  WLAN Zugangsdaten von SD-Karte lesen basementmedia 12 517 02.01.2021 11:43
Letzter Beitrag: basementmedia
  Nano ESP8266 Prezelboard WLAN Problem DanielK 22 1.864 03.12.2020 18:28
Letzter Beitrag: DanielK
  ESP8266-01 verbindet sich nicht mit dem WLAN Kopernikus 1 398 02.12.2020 20:02
Letzter Beitrag: Tommy56
  ESP über HTTPS Fingerabdruck/Zertifikat HeKe 4 498 26.11.2020 03:38
Letzter Beitrag: HeKe
  WLAN Steckdose schalten BlackGuest 18 8.126 14.11.2020 21:58
Letzter Beitrag: uk1408
  ESP32 Reset über En olmuk 4 646 01.11.2020 18:09
Letzter Beitrag: hotsystems
  ESP8266 über AT-Befehle Jens Jung 2 889 19.08.2020 15:08
Letzter Beitrag: Jens Jung
  NodeMCU steuert UNO/NANO über I2C Tommy56 21 22.184 12.07.2020 17:43
Letzter Beitrag: daniel_hh

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste