Hi ![]()
ich habe folgende Exception, aber wirklich 0 Ahnung, was sie bedeutet. Ich bin studierender und arbeitender Softwareentwickler, dementsprechend eigentlich Ahnung von Code, aber in diesem Falle leider nicht ._.
sp: 3ffffde0 end: 3fffffd0 offset: 0190
3fffff70: 4 0202f44 3ffe8892 3ffee654 3ffee6f8
3fffff80: 3ffee654 00000001 00000005 401002bc
3fffff90: 00000030 00000033 3ffee614 402010ac
3fffffa0: 3fffdad0 3ffee5a8 00000004 402011f9
3fffffb0: 3fffdad0 00000000 3ffee6cc 40203e98
3fffffc0: feefeffe feefeffe 3fffdab0 40100dc9
<<<stack<<<--------------- CUT HERE FOR EXCEPTION DECODER ---------------
ets Jan 8 2013,rst cause:2, boot mode:(3,6)
load 0x4010f000, len 3424, room 16
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8
tail 0
chksum 0x2b
csum 0x2b
v000452d0
~ld
Könnt ihr mir büdde weiterhelfen?
Ich habe noch -1 Tage Zeit für dieses Projekt (Freundin - Lampe als Geschenk)
...bevor der Spruch kommt: Ja, ich habe definitiv früh genug angefangen, aber die Zeit deutlichst unterschätzt und meine Ahnung von C deutlichst überschätzt.
Achso ja, der Code:
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// WiFi-Zugangsdaten
const char* ssid = "x";
const char* password = "y";
// MQTT-Zugangsdaten
const char* mqtt_server = "broker.emqx.io";
const char* mqtt_user = "MQTT_USER";
const char* mqtt_password = "MQTT_PASSWORD";
const char* in_topic = "ESP/1";
const char* out_topic = "ESP/0";
// Pin Definitionen
const int buttonPin = 13;
const int ledPin = 5;
int ledState = LOW; // speichert den aktuellen LED-Zustand
bool oldVal = false;
// WiFi-Client-Objekt und MQTT-Client-Objekt
WiFiClient espClient;
PubSubClient client(espClient);
// MQTT-Callback-Funktion
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Empfangen: ");
Serial.println((char)payload[0]);
// Überprüfen, ob das empfangene Thema unserem gewünschten Thema entspricht
if (strcmp(topic, in_topic) == 0) {
// Ausgabe des empfangenen Payloads
switchMaLamp((char)payload[0]);
}
}
void switchMaLamp(char payload) {
// Pin auf HIGH oder LOW schalten, basierend auf dem empfangenen Payload
if ((char)payload == '1' || ledState && (char)payload == '3') {
Serial.println("Lampe geht 1");
digitalWrite(ledPin, LOW);
} else if ((char)payload == '0' || !ledState && (char)payload == '3') {
Serial.println("Lampe geht 0");
digitalWrite(ledPin, HIGH);
} else {
Serial.println("ERROR IN ZUWEISUNG");
Serial.println((char) payload);
digitalWrite(ledPin, ledState);
}
ledState = !ledState;
}
void setup() {
Serial.begin(115200);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
// verbinde mit dem WiFi-Netzwerk
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
}
// verbinde mit dem MQTT-Broker
client.setServer(mqtt_server, 1883);
client.setCallback(callback);
reconnect();
client.publish(out_topic, (const char *)"1");
client.publish("spawned", in_topic);
}
void loop() {
if (!client.connected()) {
reconnect();
}
client.loop();
int buttonState = digitalRead(buttonPin);
if (buttonState == HIGH ) {
Serial.println("KNOPFI");
switchMaLamp('3');
for (int i=0; i<5; i++){ // TODO: mehr versuche
client.publish(out_topic, ledState == HIGH ? (const char *)'0' : (const char *)'1' );
delay(10);
}
delay(800);
}
}
void reconnect() {
while (!client.connected()) {
if (client.connect("ESP8266Client", mqtt_user, mqtt_password)) {
client.subscribe(in_topic);
} else {
delay(1000);
}
}
}