Anemometer - invalid operands of types 'float' and 'const char [19]' to binary 'operator+'

Hallo zusammen,

ich möchte mir den folgenden Code ein wenig anpassen und mein Anemometer einfügen. Ich erhalte den Fehler :

...\sketch_may19b.ino: In function 'void loop()':
...\sketch_may19b\sketch_may19b.ino:197:38: error: invalid operands of types 'float' and 'const char [19]' to binary 'operator+'
             client.println(windSpeed + " km/h</blockquote>");
                            ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
exit status 1

Compilation error: invalid operands of types 'float' and 'const char [19]' to binary 'operator+'

Kann mir jemand bei meinem Denkfehler helfen??

#include "DHT.h"
#include "WiFi.h"
#include "NTP.h"


char Router[] = "xxx";
char Passwort[] = "xxx";


#define DHTTYPE DHT11
#define DHTPIN 33
const int fan1 = 13;
const int fan2 = 5;

DHT dht(DHTPIN, DHTTYPE);

WiFiServer WiFiServer(80);
WiFiClient client = WiFiServer.available();

byte Zaehler = 0;


const byte AnzahlDaten = 11;


String gespeicherteTemperatur[AnzahlDaten];
String gespeichertesDatum[AnzahlDaten];
String gespeicherteLuftfeuchtigkeit[AnzahlDaten];

WiFiUDP wifiUdp;
NTP ntp(wifiUdp);

// Windsensor
const int sensorPin = 2;
int sensorValue = 0; 
float sensorVoltage = 0; 
float windSpeed = 0; 
 
void setup() {

  dht.begin();

  Serial.begin(9600);
  while (!Serial);
  delay(1000);

  Serial.print("Verbindung aufbauen mit ");
  Serial.println(WiFi.SSID());

  
  WiFi.begin(Router, Passwort);
  while (WiFi.status() != WL_CONNECTED) 
  {
    delay(200);
    Serial.print(".");
  }
  
  WiFiServer.begin();
  Serial.print("Router: ");
  Serial.println(WiFi.SSID());

  Serial.print("IP Adresse Arduino: ");
  Serial.println(WiFi.localIP());

 
  ntp.ruleDST("CEST", Last, Sun, Mar, 2, 120); 
  ntp.ruleSTD("CET", Last, Sun, Oct, 3, 60); 


  ntp.begin();
  ntp.update();


  switch (ntp.weekDay()) 
  {
    case 0:
      Serial.print("Sonntag");
      break;
    case 1:
      Serial.print("Montag");
      break;
    case 2:
      Serial.print("Dienstag");
      break;
    case 3:
      Serial.print("Mittwoch");
      break;
    case 4:
      Serial.print("Donnerstag");
      break;
    case 5:
      Serial.print("Freitag");
      break;
    case 6:
      Serial.print("Samstag");
      break;
  }
  Serial.print(", ");
  Serial.println(ntp.formattedTime("%d. %B %Y %T Uhr"));
}
  void loop() {
  float Temperatur;
  float Luftfeuchtigkeit;
  String Nummer;
  String AnzeigeTemperatur;
  String AnzeigeLuftfeuchtigkeit;
  String aktuelleZeit = "";

  client = WiFiServer.available();
  if (client) 
  {
    String SchaltungLesen = "";
    while (client.connected()) 
    {
      if (client.available()) 
      {
        char Zeichen = client.read();

        if (Zeichen == '\n') 
        {
          if (SchaltungLesen.length() == 0) 
          {
            // HTTP-Anforderung senden
            client.println("HTTP/1.1 200 OK");
            client.println("Content-Type: text/html");


            client.println();


            client.println("<!doctype html>");
            client.println("<html>");
            client.println("<body>");

            
            client.println("<meta http-equiv=\"refresh\" content=\"60\">");

            client.println("<h1> Temperatur und Luftfeuchtigkeit messen</h1>");
            client.println("<hr />");

            client.print("<h2>Letzte Messung: ");
            ntp.update();

           
            switch (ntp.weekDay()) 
            {
              case 0:
                aktuelleZeit += "Sonntag";
                break;
              case 1:
                aktuelleZeit += "Montag";
                break;
              case 2:
                aktuelleZeit += "Dienstag";
                break;
              case 3:
                aktuelleZeit += "Mittwoch";
                break;
              case 4:
                aktuelleZeit += "Donnerstag";
                break;
              case 5:
                aktuelleZeit += "Freitag";
                break;
              case 6:
                aktuelleZeit += "Samstag";
                break;
            }
            aktuelleZeit += ", ";
            aktuelleZeit += ntp.formattedTime("%d. %B %Y %T Uhr");
            client.println(aktuelleZeit);
            client.println("</h2>");
            client.println("<hr />");

           
            AnzeigeTemperatur = String(dht.readTemperature());
            AnzeigeTemperatur.replace(".", ",");

            AnzeigeLuftfeuchtigkeit = String(dht.readHumidity());
            AnzeigeLuftfeuchtigkeit.replace(".", ",");

            
            client.print("<b>Temperatur:</b><blockquote>");
            client.println(AnzeigeTemperatur + " &deg;C</blockquote>");
            client.println("<br>");

            windmessung();
            client.print("<b>Windgeschwindigkeit:</b><blockquote>");
            client.println(windSpeed + " km/h</blockquote>");
            client.println("<br>");

            client.print("<b>Luftfeuchtigkeit:</b><blockquote>");
            client.println(AnzeigeLuftfeuchtigkeit + " %</blockquote><hr>");
            client.println("<form>");

          
            gespeichertesDatum[Zaehler] = aktuelleZeit;

           
            gespeicherteTemperatur[Zaehler] = AnzeigeTemperatur;

            
            gespeicherteLuftfeuchtigkeit[Zaehler] = AnzeigeLuftfeuchtigkeit;

            client.println("<b>Gespeicherte Werte:<br></b>");

            
            for (int i = 0; i <= Zaehler; i++) 
            {
              client.println(String(i + 1) + ": ");
              client.println(gespeichertesDatum[i]);
              client.print(" | Temperatur: &rarr; ");
              client.println(gespeicherteTemperatur[i]);
              client.print(" &deg;C");
              client.print(" | Luftfeuchtigkeit: &rarr; ");
              client.println(gespeicherteLuftfeuchtigkeit[Zaehler]);
              client.println("%");
              client.println("<br>");
            }
            client.println("<hr />");

            
            client.print("<input style=\"font-size:16pt; font-weight:bold;");
            client.print("background-color:#55A96B;");
            client.print("display:block; cursor:pointer;\"type=\"button\"");
            client.println(" onClick=\"location.href='WiFi.localIP()'\" value=\"aktualisieren\">");
            client.println("</form>");
            client.println("<hr />");

            
            client.print("<b>Eigene IP: ");
            client.print(client.remoteIP());
            client.print("</b>");
            client.print("<br><b>IP Arduino: ");
            client.print(WiFi.localIP());
            client.print("</b>");
            client.println("</b>");
            client.println("</body>");
            client.print("</html>");

           
            client.println();

            
            break;
          } 
          else 
          {
            SchaltungLesen = "";
          }
        }

  
        else if (Zeichen != '\r') 
        {
          SchaltungLesen += Zeichen;
        }
      }
    }

    client.stop();

    
    if (Zaehler < AnzahlDaten) Zaehler++;
    if (Zaehler >= AnzahlDaten) Zaehler = 0;
  }
}
  void windmessung()   {
float voltageConversionConstant = .004882814; 
int sensorDelay = 1000;

float voltageMin = .4; 
float windSpeedMin = 0;
 
float voltageMax = 2.0;
float windSpeedMax = 32;

sensorValue = analogRead(sensorPin);
 
sensorVoltage = sensorValue * voltageConversionConstant;

if (sensorVoltage < voltageMin){
 windSpeed = 0; //Check if voltage is below minimum value. If so, set wind speed to zero.
}else {
  windSpeed = (sensorVoltage - voltageMin)*windSpeedMax/(voltageMax - voltageMin); //For voltages above minimum value, use the linear relationship to calculate wind speed.
}
 delay(sensorDelay);
}

Die Meldung ist klar!
Es gibt bei dir (noch) keinen Operator, welcher Zeichenketten mit float verknüpft!

Alternativen:

  1. Nacheinander ausgeben.
  2. Einen Operator erfinden
  3. String verwenden.

etwas besser:

            client.println(AnzeigeTemperatur);
            client.println(" &deg;C</blockquote>");

aber da ist vieles eigenartig in deinem Code.
Auf welchem Controller soll das laufen?