Das ist simples php. Um den BS in den DL zu stellen, sollten noch einige Anpassungen gemacht werden. Ich würde z.B die Einheiten bei der Ausgabe noch abtrennen, um mit den Werten weiter rechnen zu können. Ich kans nicht testen, aber wenn mal Zeit ist gerne umbauen.Ausserdem sehe ich gerade das der Eingang 2 den BS auch triggert, das ist auch unnötig.
Ankündigung
Einklappen
Keine Ankündigung bisher.
HTTP Get Abfrage für Temperatursensor
Einklappen
X
-
alles klar, danke. Das hilft mir jedenfalls mal weiter.
Ich werde die Sensoren bei mir so programmieren, dass diese die Werte auf einen Webserver hochladen. Was könnt ihr mir das empfehlen? So etwas gibt es sicherlich bereits doch oder?
Vorstellung ist, dass der Sensor die daten auf einem http://SERVER (Beispielsweise EDOMI Server) und dieser speichert die Anfrage und liest über einen Baustein wieder ein.
Ziel der Geschichte ist, dass die Tempsensoren nicht so viel Strom fressen und nach erfolgreicher Übermittlung wieder in den Tiefschlaf gehen.
Für alle anderen Leute, die diesen Beitrag noch lesen werden und auch sich dafür interessieren: ich habe hierzu derzeit den WEMOS D1 R2 &mini + DHT Shield genommen. Das ist der Code für die Arduino Programmierung:
Code:/* WeMos DHT Server * * Connect to WiFi and respond to http requests with temperature and humidity * * Based on Adafruit ESP8266 Temperature / Humidity Webserver * https://learn.adafruit.com/esp8266-temperature-slash-humidity-webserver * * Depends on Adafruit DHT Arduino library * https://github.com/adafruit/DHT-sensor-library */ #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <DHT.h> #define DHTTYPE DHT11 // DHT Shield uses DHT 11 #define DHTPIN D4 // DHT Shield uses pin D4 // Existing WiFi network const char* ssid = "SSID von WLAN"; const char* password = "PASSWORD-WLAN"; // Listen for HTTP requests on standard port 80 ESP8266WebServer server(80); // Initialize DHT sensor // Note that older versions of this library took an optional third parameter to // tweak the timings for faster processors. This parameter is no longer needed // as the current DHT reading algorithm adjusts itself to work on faster procs. DHT dht(DHTPIN, DHTTYPE); float humidity, temperature; // Raw float values from the sensor char str_humidity[10], str_temperature[10]; // Rounded sensor values and as strings // Generally, you should use "unsigned long" for variables that hold time unsigned long previousMillis = 0; // When the sensor was last read const long interval = 2000; // Wait this long until reading again void handle_root() { server.send(200, "text/plain", "WeMos DHT Server. Get /temp or /humidity"); delay(100); } void read_sensor() { // Wait at least 2 seconds seconds between measurements. // If the difference between the current time and last time you read // the sensor is bigger than the interval you set, read the sensor. // Works better than delay for things happening elsewhere also. unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // Save the last time you read the sensor previousMillis = currentMillis; // Reading temperature and humidity takes about 250 milliseconds! // Sensor readings may also be up to 2 seconds 'old' (it's a very slow sensor) humidity = dht.readHumidity(); // Read humidity as a percent temperature = dht.readTemperature(); // Read temperature as Celsius // Check if any reads failed and exit early (to try again). if (isnan(humidity) || isnan(temperature)) { Serial.println("Failed to read from DHT sensor!"); return; } // Convert the floats to strings and round to 2 decimal places dtostrf(humidity, 1, 2, str_humidity); dtostrf(temperature, 1, 2, str_temperature); Serial.print("Humidity: "); Serial.print(str_humidity); Serial.print(" %\t"); Serial.print("Temperature: "); Serial.print(str_temperature); Serial.println(" °C"); } } void setup(void) { // Open the Arduino IDE Serial Monitor to see what the code is doing Serial.begin(9600); dht.begin(); Serial.println("WeMos DHT Server"); Serial.println(""); // Connect to your WiFi network WiFi.begin(ssid, password); Serial.print("Connecting"); // Wait for successful connection while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("Connected to: "); Serial.println(ssid); Serial.print("IP address: "); Serial.println(WiFi.localIP()); Serial.println(""); // Initial read read_sensor(); // Handle http requests server.on("/", handle_root); server.on("/temp", [](){ read_sensor(); char response[50]; snprintf(response, 50, "%s °C", str_temperature); server.send(200, "text/plain", response); }); server.on("/humidity", [](){ read_sensor(); char response[50]; snprintf(response, 50, "%s %", str_humidity); server.send(200, "text/plain", response); }); // Start the web server server.begin(); Serial.println("HTTP server started"); } void loop(void) { // Listen for http requests server.handleClient(); }
Kommentar
-
Es gibt in Edomi die Moeglichkeit, per HTTP-Request ein KO zu setzen, das wiederum kann dann in ein Archiv geschrieben werden.
Ich persoenlich faende es sinnvoller die Daten per UDP-Unicast zu schicken, aber dafuer braeuchte es dann wieder einen entsprechenden Baustein fuer Edomi, HTTP ist halt "schon da"...
BTW: wenn Du das eh grad noch "am Bauen dran bist" - nimm lieber einen BME280 als einen DHT, der DHT misst Mist
Kommentar
-
Zitat von wintermute Beitrag anzeigenEs gibt in Edomi die Moeglichkeit, per HTTP-Request ein KO zu setzen, das wiederum kann dann in ein Archiv geschrieben werden.
Ich persoenlich faende es sinnvoller die Daten per UDP-Unicast zu schicken, aber dafuer braeuchte es dann wieder einen entsprechenden Baustein fuer Edomi, HTTP ist halt "schon da"...
die Abfrage meines Feinstaubsensors über den Browser funktioniert, zurück kommt ein JSON-String:
2020_03_07_08_04_11_Window.png
Nur leider funktioniert meine HTTP-GET Abfrage in Edomi NICHT (zyklische Abfrage alle 5min):
2020_03_07_08_01_22_Window.png
2020_03_07_07_59_57_Window.png
KO-Fehler zeigt "1" mit folgendem Log-Eintrag:
2020_03_07_08_12_09_Window.png
Was mache ich falsch ?
Zuletzt geändert von ak68; 07.03.2020, 08:18.
Kommentar
-
Zitat von ak68 Beitrag anzeigenWas mache ich falsch ?
Code:[B]http://[/B]10.10.1.103/data.json
Kommentar
-
Zitat von Glotzkowski Beitrag anzeigen
Du hast das Protokoll nicht angegeben.
Code:[B]http://[/B]10.10.1.103/data.json
Vielen Dank !!!
Kommentar
Kommentar