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
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.
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
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.
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?
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.
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?
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.
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.
Wenn du den Arduino Port benutzt dann gibt es unter dem Link ein Beispiel. https://github.com/esp8266/Arduino/blob/master/libraries/ESP8266HTTPClient/examples/BasicHttpClient/BasicHttpClient.ino
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 | } |
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.
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ß
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
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
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
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
Vergiss das delay bei dem ESP8266. Bei einem delay macht der nämlich nichts, also wirklich nichts. Du benötigst Timer.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.