Hallo zusammen,
ich lese nun schon ein Weile mit und bin auch schon sehr weit gekommen für meine Verhältnisse. Ich bin ein kompletter Neuling auf dem Gebiet Arduino und Programmierung.
Kurz zum Hintergrund, ich habe einen Oldtimer den ich gerne mit einem zusätzlichen E-Lüfter ausstatten will. Derzeit sind analoge Zusatzinstrumente verbaut, die weg sollen. Daher möchte ich Temperaturen wenn ich diese sehen will, auf dem Handy anzeigen lassen können. Aber die "Technik" wird in ner Blackbox versteckt.
Ich habe mein Programm mit einen 2004 LCD auf einem MEGA am laufen, aber wollte nun auf einen Wemos D1 umsteigen wegen der AP und wie schon erwähnt der Anzeige Möglichkeit. Nun habe ich eine Woche benötigt, um mein Programm auf dem D1 ins laufen zu bekommen. Auf dem Monitor läuft es.
Aber leider verstehe ich die HTML Thematik nicht und ich kann mir daher meine Werte nicht auf der Webseite anzeigen lassen. Habe versucht das vorhandene umzubauen, klappt aber leider nicht.
Anbei zeige ich euch mal wie weit ich bin und aus den Bildern versteht man auch gleich das Problem.
Vielleicht kann mir einer von euch das erklären, laut HTML Code sollte es ja richtig angezeigt werden.
Und ja ich habe versuch das zu googeln aber ich versteh es leider immer noch nicht.
Vielen Dank und bitte gnädig sein für den ersten Post..
PS. Gerne auch persönlich per Teamviewer oder Facetime..
Gruß
Bernd
// Import required libraries
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Hash.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
const char* ssid = "Oldsmobile";
const char* password = "123456789";
#define DHTPIN D5 // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11 // DHT 11
#define ONE_WIRE_BUS D7
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
// current temperature & humidity, updated in loop()
float t = 0.0;
float h = 0.0;
float Motortemp = 0.0;
int sensorCount;
int PWM_Pin = 2;
int BATTERIE_pin = A0;
int output;
int TEMP;
// Create AsyncWebServer object on port 80
AsyncWebServer server(80);
// Generally, you should use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time DHT was updated
const long interval = 1000;
const char index_html[] PROGMEM = R"rawliteral(
<!DOCTYPE HTML><html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<style>
html {
font-family: Arial;
display: inline-block;
margin: 0px auto;
text-align: center;
}
h2 { font-size: 3.0rem; }
p { font-size: 3.0rem; }
.units { font-size: 1.2rem; }
.dht-labels{
font-size: 1.5rem;
vertical-align:middle;
padding-bottom: 15px;
}
</style>
</head>
<body>
<h2>Cutlass Messwerte</h2>
<p>
<span class="dht-labels">Temperatur</span>
<span id="temperatur">%TEMPERATUR%</span>
<sup class="units">°C</sup>
</p>
<p>
<span class="dht-labels">Luftfeuchte</span>
<span id="humidity">%LUFTFEUCHTE%</span>
<sup class="units">%</sup>
</p>
<p>
<span class="dht-labels">Motortemperatur</span>
<span id="Motortemperatur">%Motortemperatur%</span>
<sup class="units">°C</sup>
</p>
</body>
<script>
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("temperatur").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/temperatur", true);
xhttp.send();
}, 1000 ) ;
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("humidity").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/humidity", true);
xhttp.send();
}, 1000 ) ;
setInterval(function ( ) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("Motortemperatur").innerHTML = this.responseText;
}
};
xhttp.open("GET", "/Motortemperatur", true);
xhttp.send();
}, 800 ) ;
</script>
</html>)rawliteral";
// Replaces placeholder with DHT values
String processor(const String& var) {
//Serial.println(var);
if (var == "TEMPERATUR") {
return String(t);
}
else if (var == "HUMIDITY") {
return String(h);
}
if (var == "Motortemperatur") {
return String(Motortemp);
}
return String();
}
void setup() {
// Serial port for debugging purposes
Serial.begin(115200);
dht.begin();
sensors.begin();
sensorCount = sensors.getDS18Count();
pinMode(PWM_Pin, OUTPUT);
Serial.print("Setting AP (Access Point)…");
// Remove the password parameter, if you want the AP (Access Point) to be open
WiFi.softAP(ssid, password);
IPAddress IP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(IP);
// Print ESP8266 Local IP Address
Serial.println(WiFi.localIP());
// Route for root / web page
server.on("/", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/html", index_html, processor);
});
server.on("/temperature", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/plain", String(t).c_str());
});
server.on("/humidity", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/plain", String(h).c_str());
});
server.on("/Motortemperatur", HTTP_GET, [](AsyncWebServerRequest * request) {
request->send_P(200, "text/plain", String(Motortemp).c_str());
});
// Start server
server.begin();
}
void loop() {
int wert1;
float wert2;
float temp;
wert1 = analogRead(0);
temp = wert1 / 6.600;
wert1 = (int)temp;
wert2 = ((wert1 % 100) / 10.0);
sensors.requestTemperatures();
TEMP = sensors.getTempCByIndex(0);
float newMot = TEMP;
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you updated the DHT values
previousMillis = currentMillis;
// Read temperature as Celsius (the default)
float newT = dht.readTemperature();
if (isnan(newT)) {
Serial.println("Failed to read from DHT sensor!");
}
else {
t = newT;
Serial.print("Umgebungstemp. ist: ");
Serial.print(t, 1);
Serial.println("°C");
Serial.println();
}
if (isnan(newMot)) {
Serial.println("Failed to read from Tmot sensor!");
}
else {
Motortemp = newMot;
Serial.print("Motortemp ist: ");
Serial.print(Motortemp, 1);
Serial.println("°C");
Serial.println();
Serial.print("Batteriespannung ist: ");
Serial.print(wert2, 1);
Serial.println("V");
Serial.println();
}
// Read Humidity
float newH = dht.readHumidity();
// if humidity read failed, don't change h value
if (isnan(newH)) {
Serial.println("Failed to read from DHT sensor!");
}
else {
h = newH;
Serial.print("Luftfeuchte ist: ");
Serial.print(h, 0);
Serial.println(" %");
Serial.println();
}
}
if (TEMP < 80)
{
analogWrite(PWM_Pin, 0);
}
if (TEMP > 81)
{
analogWrite(PWM_Pin, 255);
}
if (TEMP > 83)
{
analogWrite(PWM_Pin, 60);
}
if (TEMP > 90)
{
analogWrite(PWM_Pin, 90);
}
if (TEMP > 95)
{
analogWrite(PWM_Pin, 120);
}
if (TEMP > 99)
{
analogWrite(PWM_Pin, 160);
}
if (TEMP > 104)
{
analogWrite(PWM_Pin, 255);
}
}
ROH_DHT_WLAN_erweitert.ino (6.25 KB)