Eeprom Datentypen und MQTT

Hallo zusammen
Das auslesen und beschreiben des eeproms ist eigentlich nicht das Problem,
vielmehr verstehe ich das umwandeln der Datentypen nicht.

Ich lese das eeprom so aus:

 String eepromPlatz01 = String(EEPROM.read(1));    

und so muss ich es umwandeln damit ich es verschicken kann:

    mqtt.publish("blablabla", eepromPlatz01.c_str());

ist das wirklich so richtig oder mache ich da was falsch?

Gruss Sascha

Du könntest es gleich richtig als char-Array speichern und lesen. Dann brauchst Du keine Umwandlung.

Gruß Tommy

Hallo

Ja da liegt wohl mein Problem, ich verstehe einfach den unterschied der verschiedenen Datentypen nicht.
Gibt es da irgendwo eine Doku für "doofies" :slight_smile:

Vielleicht hilft dir das
https://de.m.wikibooks.org/wiki/C%2B%2B-Programmierung/_Einführung_in_C%2B%2B/_Variablen,_Konstanten_und_ihre_Datentypen

Und das

Sieht nicht falsch aus.
Vielleicht etwas umständlich.......

mqtt.publish("blablabla",  String(EEPROM[1]));


Hallo zusammen
Wenn ich das zum auslesen nehme

mqtt.publish("blablabla",  String(EEPROM[1]));

bekomme ich folgende Fehlermeldung.
no matching function for call to 'PubSubClient::publish(const char [8], String)'

Als was wird das eigentlich im EEPROM gespeichert? Beim schreiben wird kein Datentyp angeben.

EEPROM.write(address, value)

Wenn man sowas nicht weiß, dann evtl. mal in die Doku schauen.
Und ja, es gibt eine zu EEPROM.write()
Und nein, ich würde fast ausschließlich mit EEPROM.put und EEPROM.get arbeiten.
Auch keinesfalls die EEPROM Adressen händisch berechnen.

Ja, doof nicht war?
Meine MQTT Klasse kann mit String umgehen!

Dann war deine erste Variante vielleicht doch ganz gut.

Nachtrag:
Deine Fehlermeldung ist verstümmelt, so dass man nicht GENAU sehen kann, was den Compiler stört.
Vielleicht mal die ganze Meldung lesen, vielleicht dazu die ausführlichen Ausgaben aktivieren,


void mqttPublish(const char *pfad, String str)
{
  mqtt.publish(pfad,str.c_str());
}

void setup() 
{
  Serial.begin(9600);
  mqttPublish("blablabla",  String{EEPROM[1]});
}


Es funktioniert ja, ich lasse es jetzt erst mal so wie es ist :slight_smile:
Danke

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.