ESP32 BLYNK_WRITE() funktioniert nicht

Hallo

Ich wollte ein bestehendes Projekt von einem ESP8266 auf einen ESP32 transferieren und gleichzeitig ein paar Funktionen ergänzen.
Also die ESP32 Library includiert und das passende Board ausgewählt (ESP32 DEV Module),
den Sketch kompiliert und der ESP ging online.
___ __ __
/ _ )/ /_ _____ / /__
/ _ / / // / _ / '/
/
//_, /////_
/
__/ v1.0.1 on ESP32

[2665] Connecting to blynk-cloud.com:80
[2760] Ready (ping: 46ms).

Das Programm zeigt mir unter anderen den RSSI Wert des µC in meiner Blynk APP an.
Ich bekomme also Daten vom ESP.
Allerdings funktioniert die BLYNK_WRITE() Funktion nicht mehr.

Zum Debuggen habe ich ein Basic Example benutzt, um Fehlerquellen zu minimieren.
Leide ohne Erfolg.
Ja, ich habe den Button in der APP mit V1 definiert und mit einem Wert hinterlegt.

#define BLYNK_PRINT Serial

#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>

char auth = "";
char ssid = "";
char pass = "";

BLYNK_WRITE(V1)
{
int pinValue = param.asInt(); // assigning incoming value from pin V1 to a variable
// You can also use:
// String i = param.asStr();
// double d = param.asDouble();
Serial.print("V1 Slider value is: ");
Serial.println(pinValue);
}

void setup()
{
// Debug console
Serial.begin(115200);

Blynk.begin(auth, ssid, pass);
}

void loop()
{
Blynk.run();
}

Hat jemand das gleiche Problem und eine Lösung dafür gefunden?

Danke für Eure Antworten im Voraus.

Gruß Martin

FYI
Arduino Version: 1.8.16
Blynk libray: V 1.0.1
ESP library: V 2.0.0
ESP Board: https://www.az-delivery.de/products/esp32-d1-mini
Windows 11

Setze bitte deinen Code in Code-Tags damit er besser lesbar ist. Danke.

Wie benutze ich Code-Tags

Hallo Plumps

Ich hatte mir schon gedacht, dass es eine Möglichkeit geben muss den Code besser darzustellen.
Beim nächsten mal. :slightly_smiling_face:
Kannst Du zufällig noch etwas zu meinem Problem sagen?

Schönen Abend.
Gruß Martin

Warum nicht sofort den Beitrag reparieren?

Oder willst du gar nicht, dass das jemand testen kann?

Mit Blynk 2.0 funktioniert das senden von Daten mit dem Handy zum µC.
Damit schließe ich ein Problem mit meinem heimischen Netzwerk aus.

Gruß Martin

Hallo

Wahrscheinlich wird das hier ein Monolog, aber vielleicht antwortet doch noch jemand.
Ich versuche immer noch meinen Code zum Laufen zu bekommen. Dazu habe ich verschiedene Blynk Libraries Releases ausprobiert sowie den Code mit der Arduino Cloud, Arduino IDE und Arduino IDE 2 kompiliert. Leider ohne Erfolg.

Kann bitte jemand meinen "Kot" bei sich ausprobieren? :pleading_face:
Danke im Voraus.

Gruß Martin

<code>
/* Comment this out to disable prints and save space */

#define BLYNK_PRINT Serial

#define RELAY 0

#define LED 2

#define Pin_Code 1234

#include <WiFi.h>

#include <BlynkSimpleEsp32.h>

char auth = "xxx";

char ssid = "xxx";

char pass = "xxx";

//Timer

BlynkTimer timer_Relay;

BlynkTimer timer_WifiSgn;

/***************************************************

************ Virtual Pin V11/12 *****************

***************************************************/

void WifiSgn() {

/*************** signal init ***************/

String S0 = "no signal";

String S1 = "\u2581"; //▁

String S2 = "\u2581 \u2583"; //▁ ▃

String S3 = "\u2581 \u2583 \u2585"; //▁ ▃ ▆

String S4 = "\u2581 \u2583 \u2585 \u2587"; //▁ ▃ ▆ ▇

String S5 = "\u2581 \u2583 \u2585 \u2587 \u2588"; //▁ ▃ ▆ ▇ █

String SGN;

bool blynk_status = false;

int Signal = (WiFi.RSSI());

if (Signal >= -30) {

SGN = S5;

} else if (Signal <= -31 && Signal > -67) {

SGN = S4;

} else if (Signal <= -67 && Signal > -70) {

SGN = S3;

} else if (Signal <= -70 && Signal > -80) {

SGN = S2;

} else if (Signal <= -80 && Signal > -90) {

SGN = S1;

} else {

SGN = S0;

}

Blynk.virtualWrite(V11, SGN); // labeled value settings

Blynk.virtualWrite(V12, "RSSI " + String(Signal)); // label value

}

/***************************************************

*************** RELAY Timer *********************

***************************************************/

void Relay_timer() {

digitalWrite(RELAY, HIGH);

Serial.println("Relay OFF");

}

/***************************************************

************* Virtual Pin V13 *******************

***************************************************/

BLYNK_WRITE(20) {

int pin = request.pin; // Which exactly pin is handled?

int pinValue = param.asInt();

digitalWrite(LED, HIGH);

//TEST

delay(100);

digitalWrite(LED, LOW);

if (pinValue == Pin_Code) {

Serial.println("");

Serial.print("Code: ");

Serial.println(pinValue);

timer_Relay.setTimeout(2000, Relay_timer);

digitalWrite(RELAY, LOW);

Serial.println("Relay ON");

digitalWrite(LED, LOW);

}

}

/**************************************************

******************** Setup *********************

**************************************************/

void setup() {

Serial.begin(115200);

pinMode(RELAY, OUTPUT);

digitalWrite(RELAY, HIGH);

pinMode(LED, OUTPUT);

digitalWrite(LED, HIGH);

timer_WifiSgn.setInterval(1000L, WifiSgn);

Blynk.begin(auth, ssid, pass);

//Serial.println(ESP.getResetInfo());

}

/**************************************************

******************** Main *********************

**************************************************/

void loop() {

Blynk.run();

timer_WifiSgn.run();

timer_Relay.run();

}
</code>

2 Antworten hast du schon bekommen!
Beide zu 100% ignoriert.
Bin nicht ganz sicher, vermute aber, dass das ganz wesentlich zu deiner Einsamkeit hier beiträgt.

Das habe ich dir jetzt nur erklärt, weil mich der Eindruck anschleicht, du würdest es nicht aus eigener Kraft bemerken.

Ich kann dir in der Hinsicht nicht helfen. Ich kenne Blynk nicht.

Dein Code ist, so wie du ihn zeigst, auch wieder schwer lesbar. So machst du es potenziellen Helfern schwer.

Hallo Plumps

Ich verstehe das mit dem Code einfügen nicht. Habe extra </> benutzt, scheint wohl aber mehr zu geben, damit der Code richtig angezeigt wird.
Zeige mir bitte ein Beispiel. Der Erläuterung aus dem Forum hilft mir nicht.

Gruß Martin

Entweder, du markierst den Code in deinem Beitrag und drückst auf den Button mit den </>. Im Bild Grau markiert.

Oder du Schreibst ein [code] davor und ein [/code] am Ende des Codes.

Oder du gehst in der Arduino IDE auf Bearbeiten -> Für Forum kopieren und fügst das dann hier in deinem Post ein (STRG+V)

Edit: Hab's mal für dich eingefügt

#define BLYNK_PRINT Serial
#define RELAY 0
#define LED 2
#define Pin_Code 1234

#include <WiFi.h>
#include <BlynkSimpleEsp32.h>

char auth = "xxx";
char ssid = "xxx";
char pass = "xxx";

//Timer
BlynkTimer timer_Relay;
BlynkTimer timer_WifiSgn;

void WifiSgn() {
  String S0 = "no signal";
  String S1 = "\u2581"; //▁
  String S2 = "\u2581 \u2583"; //▁ ▃
  String S3 = "\u2581 \u2583 \u2585"; //▁ ▃ ▆
  String S4 = "\u2581 \u2583 \u2585 \u2587"; //▁ ▃ ▆ ▇
  String S5 = "\u2581 \u2583 \u2585 \u2587 \u2588"; //▁ ▃ ▆ ▇ █
  String SGN;

  bool blynk_status = false;
  int Signal = (WiFi.RSSI());

  if (Signal >= -30) {
    SGN = S5;
  } else if (Signal <= -31 && Signal > -67) {
    SGN = S4;
  } else if (Signal <= -67 && Signal > -70) {
    SGN = S3;
  } else if (Signal <= -70 && Signal > -80) {
    SGN = S2;
  } else if (Signal <= -80 && Signal > -90) {
    SGN = S1;
  } else {
    SGN = S0;
  }

  Blynk.virtualWrite(V11, SGN); // labeled value settings
  Blynk.virtualWrite(V12, "RSSI " + String(Signal)); // label value
}

void Relay_timer() {
  digitalWrite(RELAY, HIGH);
  Serial.println("Relay OFF");
}

BLYNK_WRITE(20) {
  int pin = request.pin; // Which exactly pin is handled?
  int pinValue = param.asInt();
  digitalWrite(LED, HIGH);
  delay(100);
  digitalWrite(LED, LOW);
  if (pinValue == Pin_Code) {
    Serial.println("");
    Serial.print("Code: ");
    Serial.println(pinValue);
    timer_Relay.setTimeout(2000, Relay_timer);
    digitalWrite(RELAY, LOW);
    Serial.println("Relay ON");
    digitalWrite(LED, LOW);
  }
}

void setup() {
  Serial.begin(115200);
  pinMode(RELAY, OUTPUT);
  digitalWrite(RELAY, HIGH);
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  timer_WifiSgn.setInterval(1000L, WifiSgn);
  Blynk.begin(auth, ssid, pass);
  //Serial.println(ESP.getResetInfo());
}

void loop() {
  Blynk.run();
  timer_WifiSgn.run();
  timer_Relay.run();
}

Hallo Plumps.

Danke Dir.

Gruß Martin

Hallo zusammen.

Endlich funktioniert der Code.
Ich musste dazu nur in der Blynk APP das Projekt löschen und neu anlegen.
Den neue erzeugten Auth Token habe ich im Sketch übernommen.

Jetzt funktioniert alles prima. :innocent:

Gruß Martin