NEWS
Temperatur/Luftfeuchtigkeitssensor einbinden
-
Hallo zusammen,
ich habe mit einem ESP8266 und DHT11 einen Sensor gebaut .
Diesen Sensor möchte ich nun mittels Vis im IO-Broker einbinden. Da ich Neuling auf dem Gebiet bin, bitte ich um einen Tip zum weiteren vorgehen.
Muss ich den Sensor ersteinmal als Objekt in IO-Broker einbinden oder erfolgt die Abfrage direkt per Vis?
Danke und Gruß!
-
@testpilot-0 sagte in Temperatur/Luftfeuchtigkeitssensor einbinden:
Diesen Sensor möchte ich nun mittels Vis im IO-Broker einbinden
Vis dient ausschließlich (??) der Visualisierung von Datenpunkten aus dem ioBroker.
Also musst du
@testpilot-0 sagte in Temperatur/Luftfeuchtigkeitssensor einbinden:
den Sensor ersteinmal als Objekt in IO-Broker einbinden
Da du keine weiteren Infos lieferst kann ich dir nicht sagen wie.
@testpilot-0 sagte in Temperatur/Luftfeuchtigkeitssensor einbinden:
mit einem ESP8266
könnte MQTT möglich sein oder ESPHome???
-
@homoran ok, so langsam verstehe ich. D.h. ich muss den Sensor z.B. mit dem MQTT-Client in den IO-Broker einbinden?
-
@testpilot-0 sagte in Temperatur/Luftfeuchtigkeitssensor einbinden:
D.h. ich muss den Sensor
z.B. mit dem MQTT-Clientin den IO-Broker einbinden?Ja, aber...
Ob dein Sensor MQTT spricht und dementsprechend konfiguriert ist weiß ich nicht -
@homoran So sieht der Code aus:
#include <ESP8266WiFi.h> #include "DHT.h" const char* ssid = ""; //SSID aus dem Router const char* password = ""; //Passwort für den Zugang zum WLAN int ledPin = D5; //digitaler PIN 5 des Wemos D1 an welchem die LED angeschlossen ist. int ledStatus = LOW; //aktueller Status der LED (default / start -> AUS) WiFiServer server(80); //Port auf welchem der Server laufen soll. #define DHT11PIN 2 #define DHT11TYPE DHT11 DHT dht11(DHT11PIN, DHT11TYPE); void setup() { Serial.begin(115200); //Baudrate für die Serielle Geschwindigkeit. delay(10); //10ms. Warten damit die Seriele Kommunikation aufgebaut wurde. pinMode(ledPin, OUTPUT); //Den LEDPin als ausgang setzen. digitalWrite(ledPin, ledStatus); //Die LED initial auf den Status "AUS" setzen. Serial.print("Aufbau der Verbindung zu: "); //Ausgabe der SSID auf der Seriellen Schnittstelle. Serial.println(ssid); WiFi.begin(ssid, password); //Initialisieren der Wifi Verbindung. while (WiFi.status() != WL_CONNECTED) { //Warten bis die Verbindung aufgebaut wurde. delay(500); //Einen Punkt auf der Seriellen Schnittstelle ausgeben so das der Benutzer erkennt dass, das Sketch noch läuft. Serial.print("."); } //Bei erfolgreicher Verbindung wird der folgende Text ausgeben. Serial.print("Mit "); Serial.print(ssid); Serial.print("erfolgreich verbunden!"); dht11.begin(); server.begin(); // Starten des Servers. Serial.println("Server gestartet"); //Ausgabe auf der Seriellen Schnittstelle das der Server gestartet wurde. // Ausgabe der IP Adresse Serial.print("Adresse : http://"); Serial.print(WiFi.localIP()); Serial.println("/"); } /** * Die Funktion gibt den HTML Kopf auf dem Client aus. * Dieses wird für jeden Respond verwendet. **/ void writeResponse(WiFiClient client, float tempValue, float humidityValue){ client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); client.println("<!DOCTYPE HTML>"); client.println("<html>"); client.println("<head>"); client.println("<script type='text/javascript' src='https://www.gstatic.com/charts/loader.js'></script>"); client.println("<script type='text/javascript' src='http://progs.draeger-it.blog/wemosd1/dht11/gauges.js'></script>"); client.println("<link rel='stylesheet' href='http://progs.draeger-it.blog/wemosd1/dht11/styles.css'/>"); client.println("</head>"); client.println("<body>"); client.println("<div id='tempChart' class='chartContainer'></div>"); client.println("<div id='pressChart' class='chartContainer'></div>"); client.println("<script>"); client.println("google.charts.load('current', {'packages':['gauge']});"); client.println("google.charts.setOnLoadCallback(drawCharts);"); client.println("function drawCharts() {"); client.print("drawTempChart("); client.print(tempValue); client.print(");"); client.print("drawPressChart("); client.print(humidityValue); client.print(");"); client.println("}"); client.println("</script>"); client.println("</body>"); client.println("</html>"); } void loop() { //Prüfen ob sich ein Client verbunden hat, wenn nicht die Loop "verlassen" WiFiClient client = server.available(); if (!client) { return; } // Wenn sich ein Client verbunden hat solange warten bis Daten gesendet werden. Serial.println("Neuer Client verbunden."); while(!client.available()){ delay(1); } String request = client.readStringUntil('\r'); Serial.println(request); client.flush(); float tempValue = dht11.readTemperature(); //Temperatur vom Sensor DHT11 lesen float humidityValue = dht11.readHumidity(); //relative Luftfeuchtigkeit vom Sensor DHT11 lesen if (isnan(tempValue) || isnan(humidityValue)) { Serial.println("DHT11 konnte nicht ausgelesen werden"); tempValue = 0; humidityValue = 0; } writeResponse(client, tempValue, humidityValue); delay(1); //1ms. Pause }
-
@testpilot-0 sagte in Temperatur/Luftfeuchtigkeitssensor einbinden:
So sieht der Code aus:
ist das chinesisch?
Sorry, aber davon verstehe ich absolut nichts -
@testpilot-0 ja genau, wenn du die den Code genau so übernommen hast wie in dem Link den du eingestellt hast. Werden deine Daten nur an die Seriale Schnittstelle weitergegeben.
Das heißt du musst deinen ESP erst mal auch umprogrammieren. -
@testpilot-0 MQTT verwendest du nicht, du schickst dass über einen HTTP-Request wo hin.
-
@michi_pi Verstehe, ich dachte es kann der Webserver abgefragt werden. Dann muss ich ein Script suchen welches die Daten per IP übergibt?
-
@testpilot-0 ob die Dinger auch per HTTP eingebunden werden, weiß ich nicht, damit hab ich mich noch nicht befasst. Ich mach das per MQTT.
Ja genau, die Daten werden dann per MQTT an den Broker gesendet. Dazu gibt es eh etliche Beispiele in Netz.