Forum: Mikrocontroller und Digitale Elektronik ESP8266 Datenübertragung an Website


von Flo D. (floflovaldo)


Lesenswert?

Hallo zusammen,

ich habe vor an mindestens 2 ESP8266 Module ein DHT22 Sensor 
anzuschließen. Diese Daten von dem DHT22 sollen jede Minute an eine 
Website übertragen werden.

Davor war das ganze mit einem Raspberry Pi so verwirklicht, das ein 
Python Script die Daten mit Hilfe der Libary urllib an eine URL sendete. 
Meine Website empfing diese Daten und speicherte diese teilweise in 
einer Datenbank oder zeigte diese nur an ohne zu speichern.

Die Frage ist nur wie ich das nun am besten mache mit dem ESP8266 ohne 
mein Script auf der Website zu ändern.

Würde mich über Tipps und Hinweise freuen.

Florian

von Dirk D. (dicky_d)


Lesenswert?

Wie genau gibst du den aktuell die Daten an deine Webseite?
Wahrscheinlich musst du selbst http sprechen, was aber nicht sonderlich 
schwer ist, solange du nicht https nutzt.

von K. J. (Gast)


Lesenswert?

Du kannst bei PHP die Daten als Parameter übergeben vielleicht reicht 
das für deine Zwecke.

http://www.php-kurs.info/tutorial-variablen_uebergeben_include.html

von S. M. (lichtmensch)


Lesenswert?

Ich habe mir auf dem Server der Seite ein Php Script erstellt welches 
anhand des URL Parameter einen Eintrag in eine Datenbank macht.
Das klappt zuverlässig und einfach.

von Martin P. (billx)


Lesenswert?

S. M. schrieb:
> URL Parameter einen Eintrag in eine Datenbank macht.

Dann mach doch entsprechende HTTP / HTTPS Anfragen mit dem ESP?
Was ist deine genaue Frage?

von Flo D. (floflovaldo)


Lesenswert?

Hallo, genau so habe ich es auch. Einfach eine URL und dann am Ende 
Beispielsweise "...temp=22"

Und das ganze soll jetzt eben von den ESP8266 Modulen gesendet werden um 
mehr Flexibitität zu bekommen und nicht nur einen Pi zu haben.

von Dirk D. (dicky_d)


Lesenswert?

Florian D. schrieb:
> Hallo, genau so habe ich es auch. Einfach eine URL und dann am Ende
> Beispielsweise "...temp=22"
>
> Und das ganze soll jetzt eben von den ESP8266 Modulen gesendet werden um
> mehr Flexibitität zu bekommen und nicht nur einen Pi zu haben.

Dann ist deine frage wie du dein http Aufruf machst?

von Flo D. (floflovaldo)


Lesenswert?

Genau. In Python habe ich das mit der Libary urllib gelöst, allerdings 
habe ich schon mal ein bisschen geschaut im Internat, allerdings wusste 
ich auch nicht genau nach was ich da ganz genau suchen soll und habe 
nicht wirklich was hilfreiches gefunden.

von Dirk D. (dicky_d)


Lesenswert?

du macht ne tcp verbindung zu deinem server auf, auf port 80
da schreibst du rein:
1
GET /ptad/zu/deinem/script.php?temp=22 HTTP/1.1
2
Host: meinedomain.de

Dein zeilenende ist \n
am ende ist das zweite \n wichtig.
Danach kannst du deine Antwort lesen, falls dich das interessiert.

von Chr. M. (snowfly)


Lesenswert?


von Flo D. (floflovaldo)


Lesenswert?

Hallo,

ich habe erstmal noch ein ganz anderes Problem. Mein DHT22 läuft nicht, 
er sendet keine Daten. Ich habe schon überlegt ob es an den 3,3V liegt, 
allerdings laut Internet müsste er damit laufen, ich hatte zuerst einen 
Pull-up von 10k, jetzt hab ich ihn mal auf 4k7 runter gesetzt. 
Vergeblich. Leider funktioniert es nicht. Hat jemand eine Idee?

Mein Code:
1
#include <DHT.h>
2
 
3
#define DHTPIN 14     
4
#define DHTTYPE DHT22 //DHT11, DHT21, DHT22
5
 
6
DHT dht(DHTPIN, DHTTYPE);
7
 
8
void setup() 
9
{
10
  Serial.begin(9600); 
11
  Serial.println("DHT22 - Test!");
12
 
13
  dht.begin();
14
}
15
 
16
void loop() 
17
{
18
  float h = dht.readHumidity();     //Luftfeuchtigkeit
19
  float t = dht.readTemperature();  //Temperatur
20
  delay(20000);
21
  if (isnan(t) || isnan(h)) 
22
  {
23
    Serial.println("ERROR");
24
  } 
25
  else
26
  {
27
    Serial.println(t);
28
    //Serial.println(h);
29
  }
30
}

von Flo D. (floflovaldo)


Lesenswert?

Danke für deine Antwort, kannst du mir evtl. einen Link schicken oder 
genauer erklären wie man das macht in der Arduino IDE? Ich habe viel 
gefunden wie man eine TCP Verbindung aufbaut über AT-Befehle, aber das 
bringt mir so ja nix direkt.

von Blacklist (Gast)


Lesenswert?

Ich kann das setting hier irgendwie nicht erkennen.

Wieso jetzt Arduino? Davon steht doch nirgendwo etwas.

So wie es beschrieben ist, ist doch nur ein ESP8266 und ein DHT22 
beteiligt.

Das müsste dann in die Firmware des ESP8266 eingebracht werden.

Viel Spaß

von Peniz (Gast)


Lesenswert?

https://github.com/esp8266/Arduino

Blacklist schrieb:
> Wieso jetzt Arduino? Davon steht doch nirgendwo etwas.

Weil du nicht verstanden hast was floflovaldo meinte. Er meint damit 
nich das er noch einen 8Bitter dazu nehmen soll. Man kann direkt code 
für den ESP mit dem Arduino framework schreiben

von Blacklist (Gast)


Lesenswert?

Stimmt, hab ich nicht.

Das ist ja cool.

Danke für den Link

von Flo D. (floflovaldo)


Lesenswert?

Sorry, das habe ich vergessen zu erwähnen. Das war echt blöd von mir. 
Ich programmiere meine ESP8266er (ich habe die 12E Version), über die 
Arduino IDE über einen FTDI-Adapter und der Erweiterung für die Arduino 
IDE für die ESP8266 Boards.

Ich mache das prinzipiell wegen einen Ganz einfachen Grund: Ich habe vor 
da später evtl. noch andere Sensoren anzubinden, und ich finde diese 
Auswahl an Libaries hat man sonst nirgends.

Sorry das ich das mit der Arduino-IDE vergessen hatte

von Chr. M. (snowfly)


Lesenswert?

Florian D. schrieb:
> genauer erklären wie man das macht in der Arduino IDE?

Link wurde ja schon von Penzi geliefert:
https://github.com/esp8266/Arduino

von Pete K. (pete77)


Lesenswert?

Schon mal die nodemcu LUA Firmware angetestet? Damit ist das Auslesen 
und Versenden mit HTTP in 20 Zeilen Code erledigt.

Bei mir läuft auf dem HTTP-Server läuft dann ein php-Skript, welches die 
empfangenen Daten in einen Datenbank schreibt.

Visualisierung erfolgt dann mit der Lib von www.highcharts.com

von Pete K. (pete77)


Lesenswert?

Vergiss das delay bei dem ESP8266. Bei einem delay macht der nämlich 
nichts, also wirklich nichts. Du benötigst Timer.

von Chr. M. (snowfly)


Lesenswert?

Pete K. schrieb:
> Bei einem delay macht der nämlich
> nichts, also wirklich nichts.
Die Verfasser der Doku sehen das nicht so.
1
Remember that there is a lot of code that needs to run on the 
2
chip besides the sketch when WiFi is connected. WiFi and TCP/IP 
3
libraries get a chance to handle any pending events each time the 
4
loop() function completes, OR when delay is called. If you have a 
5
loop somewhere in your sketch that takes a lot of time (>50ms) 
6
without calling delay, you might consider adding a call to 
7
delay function to keep the WiFi stack running smoothly.

: Bearbeitet durch User
von Flo D. (floflovaldo)


Lesenswert?

Hallo @pete77,

also das delay funktioniert bei den DS18S20 Sensoren bei mir. Habe nun 
jetzt einen dieser Sensoren angeschlossen und einfach mal die Werte im 
Seriellen Monitor ausgeben lassen. Funktioniert, und das delay was ich 
jetzt von 5 Sekunden testweise drin habe kommt hin.

Wie genau mache ich diese Firmware auf das Modul, oder wie schaue ich 
was ich für eine Firmware drauf habe. AT-Befehle klappten zwar am Anfang 
aber jetzt nicht mehr, ich meine klar es läuft auch ein Arduino Sketch.

Und wie sendest du es dann genau? Auch über eine URL? Ich habe eben ein 
php Script das die Daten entgegen nimmt aus der URL und auch in eine 
Datenbank speichert und auch den aktuellen Wert anzeigt.

Gruß Florian

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.