Char zusammenfügen

Hallo zusammen,
ich betreibe einen Temperatursensor mit einem ESP8266 der daten an einen Raspberry pi über MQTT weitergibt nun möchte ich mehrere dieser Sensoren für verschiedene Räume bauen nun habe ich allerdings dass Problem dass ich die werte in MQTT zuweisen muss jetzt möchte ich den Hostname von meinem ESP der schon als "const char*" vorhanden ist mit dem Sensor von dem die Daten stammen verbinden dass am Raspberry pi dann zb der Name des ESPs und des Sensors ankommen (ZB: "ESP8266 DS18B20") da ich mehrere daten habe die der ESP misst. Nun möchte ich aber nicht jedes mal in den MQTT Pfad den Namen ändern und deshalb die frage kann ich an meinen hostname einfach Zeichen hinzufügen?
Ich suche schon seit ein paar tagen nach einer Lösung nur leider habe ich noch nichts passendes gefunden.

Du suchst evtl. strcpy und strcat. Beachte, dass das Zielarray groß genug sein muss, damit alles rein passt.

Oder Du nimmst die PString-Lib.

Gruß Tommy

Sie könnten die MAC-Adresse als eindeutige ID von ESP8266 verwenden, sodass Sie auf jedem ESP den selben Code ausführen können, aber sie würden eine andere ID an den MQTT-Server senden send

#include <ESP8266WiFi.h>
char espName[30] = "esp-"; 

void setup(){
  Serial.begin(115200);
  while (!Serial);
  Serial.println();

  strlcat(espName, WiFi.macAddress().c_str(), sizeof espName);
  Serial.print("espName:  ");
  Serial.println(espName);
}
 
void loop(){}

Mit dieser Lösung funktioniert nur leider meine Wlan Verbindung nicht mehr da diese char* benötigt bzw ich habe meinen ESP mit einem mDNS Server ausgestattet und diese benötigt char* wenn ich dies in char ändere bekomme ich eine Fehlermeldung

espName ist ein char*

Ups da habe ich wohl vergessen das sternchen zu entfernen :zipper_mouth_face:
char* Hostname[30]

Danke dir :smiley:

Nein...

char Hostname[30]; // keine *

Hostname kann als char* verwendet werden

ok ist es nun möglich die neue variable nicht in Hostname sondern in einer anderen variable (zb HostnameMQTT) zu speichern? Hostname sollte sich nicht verändern

ja, natürlich.

strcpy(HostnameMQTT,Hostname);
strcat(HostnameMQTT,WiFi.macAddress().c_str());

Längen beachten.

Gruß Tommy

natürlich

  char anderenVariable[30];
  strlcpy(anderenVariable, Hostname, sizeof anderenVariable);

aber Sie können dieselbe Variable verwenden, Sie müssen sie nicht duplizieren

Hat funktioniert Danke noch mal :slight_smile:

cool :wink: