Hallo,
ja so ähnlich hatte ich es gestern Abend auch versucht, konnte leider zu keinem Ergebnis kommen.
Habe es heute nochmal versucht und ohne wirklich zu verstehen klappt es so?
if (strcmp(topic, "led2") == 0) {
led2Value=atoi(payload); <--- Anstelle payload[x]
}
Allerdings auch nur solange led2Value <=9 ist ![]()
Zum Aufbau der Nachricht kann ich nur sagen das für meine Zwecke verschiedene "Topic" und als "payload" 0-255 fürs erste ausreichen werden. Mehr benötige ich zur zeit nicht - das beginne ich auch erst wenn ich das coding besser verstehe.
Übrigens danke nochmal für den hinweis, die Funktion ist wesentlich kürzer geworden.
Vielleicht kann mir hier jemand in für Anfänger verständlicher Sprache einen hinweis geben wo hier grundsätzlich der Fehler liegt das ich nicht über die zahl 9 komme.
Hier im pwmTable Array lege ich die Werte für die Helligkeit fest:
const byte pwmTable[9]={0, 2, 4, 12, 32, 64, 128, 132, 255};
So wie ich es aus dieser zeile verstehe wird "payload" als byte gelesen,
und byte bedeutet doch 0-255?
void callback(char* topic, byte* payload, unsigned int length)
Ich konnte einfach nichts finden wo "unsigned int length" beschrieben ist?
void callback(char* topic, byte* payload,[b] unsigned int length[/b]) {
Hier wird das char-Array payload mittels atoi in eine Zahl gewandelt, erstehe ich doch richtig? Es müssten doch Zahlen von 0-255 möglich sein?
if (strcmp(topic, "led2") == 0) {
led2Value=atoi(payload);
}
TimiWho