Hallo ich bin neu hier im Forum und für mich ist alles neu.
Ich programmiere aktuell den ESP8266 mit mehreren Temperaturfühler DS18B20. Deren Werte lasse ich auf einer Webseite ausgeben. Das Skript hierzu habe ich im Internet gefunden und angepasst.
Hier das Scetch:
#include <ESP8266WebServer.h>
#include <OneWire.h>
#include <DallasTemperature.h>
// Data wire is plugged into port D2 on the ESP8266
#define ONE_WIRE_BUS D2
// Setup a oneWire instance to communicate with any OneWire devices
OneWire oneWire(ONE_WIRE_BUS);
// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);
float tempSensor1, tempSensor2, tempSensor3, tempSensor4, tempSensor5;
uint8_t sensor1[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x5E, 0x54, 0x7E, 0x4F };
uint8_t sensor2[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x5E, 0x6C, 0x30, 0x4D };
uint8_t sensor3[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x5F, 0x98, 0x69, 0x03 };
uint8_t sensor4[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x5F, 0x95, 0x95, 0x5D };
uint8_t sensor5[8] = { 0x28, 0xFF, 0x64, 0x1E, 0x5E, 0x6D, 0x5A, 0x92 };
/*Put your SSID & Password*/
const char* ssid = **************;
const char* password = "******************";
ESP8266WebServer server(80);
void setup() {
Serial.begin(115200);
delay(100);
sensors.begin();
Serial.println("Connecting to ");
Serial.println(ssid);
//connect to your local wi-fi network
WiFi.begin(ssid, password);
//check wi-fi is connected to wi-fi network
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected..!");
Serial.print("Got IP: "); Serial.println(WiFi.localIP());
server.on("/", handle_OnConnect);
server.onNotFound(handle_NotFound);
server.begin();
Serial.println("HTTP server started");
}
void loop() {
server.handleClient();
}
void handle_OnConnect() {
sensors.requestTemperatures();
tempSensor1 = sensors.getTempC(sensor1); // Gets the values of the temperature
tempSensor2 = sensors.getTempC(sensor2); // Gets the values of the temperature
tempSensor3 = sensors.getTempC(sensor3); // Gets the values of the temperature
tempSensor4 = sensors.getTempC(sensor4); // Gets the values of the temperature
tempSensor5 = sensors.getTempC(sensor5); // Gets the values of the temperature
server.send(200, "text/html", SendHTML(tempSensor1,tempSensor2,tempSensor3,tempSensor4,tempSensor5));
}
void handle_NotFound(){
server.send(404, "text/plain", "Not found");
}
String SendHTML(float tempSensor1,float tempSensor2,float tempSensor3,float tempSensor4,float tempSensor5){
String ptr = "<!DOCTYPE html> <html>\n";
ptr +="<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=no\">\n";
ptr +="<meta http-equiv=\"refresh\" content=\"2\"\n";
ptr +="<title></title>\n";
ptr +="<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}\n";
ptr +="body{margin-top: 50px;} h1 {color: #444444;margin: 50px auto 30px;}\n";
ptr +="p {font-size: 24px;color: #444444;margin-bottom: 10px;}\n";
ptr +="</style>\n";
ptr +="</head>\n";
ptr +="<body>\n";
ptr +="<div id=\"webpage\">\n";
ptr +="<h1>Temperaturen Heizung</h1>\n";
ptr +="<p>Sensor 1: ";
ptr +=tempSensor1;
ptr +="°C</p>";
ptr +="<p>Sensor 2: ";
ptr +=tempSensor2;
ptr +="°C</p>";
ptr +="<p>Sensor 3: ";
ptr +=tempSensor3;
ptr +="°C</p>";
ptr +="<p>Sensor 4: ";
ptr +=tempSensor4;
ptr +="°C</p>";
ptr +="<p>Sensor 5: ";
ptr +=tempSensor5;
ptr +="°C</p>";
ptr +="</div>\n";
ptr +="</body>\n";
ptr +="</html>\n";
return ptr;
}
Wie muss ich mein Script anpassen, dass bei der Temperaturausgabe nur eine Stelle hinter dem Komma ausgegeben wird?
Der letzte Wert soll abgeschnitten werden, nicht gerundet.
Also anstelle 25,48°C den Wert 25,4°C