Guten Abend,
ich verwende mehrere DHT22-Sensoren zur Messung von Temperatur und Luftfeuchtigkeit an verschiedenen Messpunkten. Die Sensoren sind zusammen an ein Mikrocontrollerboard angeschlossen, auf dem die Firmware ESPEasy 🇬🇧 zum Einsatz kommt. Die Messdaten werden von dem Mikrocontrollerboard über eine URL an einen Webserver übergeben, wo sie von einem PHP-Skript weiterverarbeitet werden sollen. Darauf wie die Daten per HTTP übermittelt werden, habe ich leider keinen großen Einfluss. Die Anfragen kommen wie folgt bei meinem Webserver an:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:05 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:06 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Humidity&value=43.60 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:07 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:08 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Humidity&value=44.30 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:09 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Temperature&value=22.10 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:10 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Humidity&value=55.20 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:11 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:44:12 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Humidity&value=44.30 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:06 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:07 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d1&valuename=Humidity&value=43.40 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:08 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:09 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d2&valuename=Humidity&value=43.90 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:10 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Temperature&value=22.20 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:11 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d3&valuename=Humidity&value=54.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:12 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Temperature&value=22.00 HTTP/1.1" 200 411 "-" "-" 192.168.x.x 192.168.x.x - [07/Jun/2017:20:49:13 +0200] "GET /import.php?name=esp8266%5fdht22%5f2&task=DHT22%2d4&valuename=Humidity&value=43.50 HTTP/1.1" 200 411 "-" "-" |
Der Name des aufgerufenen PHP-Skripts lautet import.php. Die einzelnen Sensoren können durch den der Variablen "task" zugewiesenen Wert identifiziert werden. Es ist zu erkennen, dass pro Sensor zwei Anfragen gesendet werden, um einmal die Temperatur und einmal die Luftfeuchtigkeit zu übermitteln. Pro Messung werden also insgesamt acht Werte übermittelt.
Ich möchte erreichen, dass alle acht Messwerte in eine Zeile einer Datei geschrieben werden. Zum zweiten Messzeitpunkt sollen die nächsten acht Werte in die zweite Zeile der Datei geschrieben werden usw. Nun habe ich jedoch Schwierigkeiten mir die acht Werte zusammen zu sammeln. Denn das Skript import.php kann pro Aufruf ja immer nur einen Wert verarbeiten. Es erscheint mir daher nicht möglich, das Ziel bereits mit diesem Skript zu erreichen. Oder hat jemand von euch eine Idee, wie man dies bewerkstelligen kann?
Mir kam noch die Idee, jeden übermittelten Wert erstmal in eine Datei zu schreiben, die dann in etwa folgenden Aufbau hat:
1 2 3 4 | YYYY-MM-DD-HH:mm:ss DHT22-1 Temperature 10.1 YYYY-MM-DD-HH:mm:ss DHT22-1 Humidity 11.11 YYYY-MM-DD-HH:mm:ss DHT22-2 Temperature 20.0 YYYY-MM-DD-HH:mm:ss DHT22-2 Humidity 22.22 |
Diese Datei könnte ich dann einmal pro Tag von einem weiteren Skript einlesen lassen, um die enthaltenen Daten in die gewünschte Form zu bringen und in eine CSV-Datei schreiben.
Ich selbst beherrsche die Grundlagen in Bash und Python und besitze rudimentäre Kenntnisse in PHP. Ich freue mich, wenn ihr Anregungen für mich habt, wie man dies geschickt lösen kann.
Viele Grüße
Tronde