INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Variablenprobleme bei ConfigManager und ESP32
05.11.2020, 18:49
Beitrag #1
Variablenprobleme bei ConfigManager und ESP32
Hallo zusammen,

ich wollte meinen BLE-Scanner um eine Eingabemöglichkeit erweitern.
Dabei bin ich auf die ConfigManager - Libary gekommen.

Wenn ich etwas neu teste, nehme ich mir die Beispiele und schaue, ob alles läuft. Doch da bin ich nun bei dem Projekt nicht weiter gekommen.

Aber zuerst einmal der Link zum ConfigManager - Projekt:

ConfigManager

Ich habe das Beispiel "save_config_demo" genommen, da es mir genug Möglichkeiten für die Parametrierung bietet.
So habe ich die Dateien im data - Ordner auf den ESP32 geladen und das Sketch ebenfalls. Alles läuft gut. Doch nun wollte ich die Variablen aus dem struct in dem Sketch verfügbar machen. Das geht laut der Seite mittels:

Code:
To access your config data through device code

char* name = config.name;
int version = meta.version;

Also tat ich mal folgendes:

Code:
char* mac = config.device_name;
float delaytime = config.inching_delay;
int led = config.led;

Soweit so gut. Wenn ich jetzt das ganze per Serial.print ausgeben möchte, funktioniert das nur bei dem char - String.
Die gespeicherten Werte der beiden anderen Variablen werden mit 0 dargestellt.

Wahrscheinlich sitzt der Fehler wieder vor dem PC.

Hier noch der ganze Sketch:

Code:
#include "ConfigManager.h"

const char *settingsHTML = (char *)"/settings.html";
const char *stylesCSS = (char *)"/styles.css";
const char *mainJS = (char *)"/main.js";

struct Config {
  char device_name[32];
  float inching_delay;
  int8_t led;
  bool enabled;
} config;

struct Metadata {
  int8_t version;
} meta;

ConfigManager configManager;




//Übergabe der Variablen aus dem Config - Manager/////////////////
char* mac = config.device_name;
float delaytime = config.inching_delay;
int led = config.led;

//Millis///
long previousMillis = 0;
long interval = 2000;





void APCallback(WebServer *server) {
    server->on("/styles.css", HTTPMethod::HTTP_GET, [server](){
        configManager.streamFile(stylesCSS, mimeCSS);
    });

    DebugPrintln(F("AP Mode Enabled. You can call other functions that should run after a mode is enabled ... "));
}


void APICallback(WebServer *server) {
  server->on("/disconnect", HTTPMethod::HTTP_GET, [server](){
    configManager.clearWifiSettings(false);
  });

  server->on("/settings.html", HTTPMethod::HTTP_GET, [server](){
    configManager.streamFile(settingsHTML, mimeHTML);
  });

  // NOTE: css/js can be embedded in a single page HTML
  server->on("/styles.css", HTTPMethod::HTTP_GET, [server](){
    configManager.streamFile(stylesCSS, mimeCSS);
  });

  server->on("/main.js", HTTPMethod::HTTP_GET, [server](){
    configManager.streamFile(mainJS, mimeJS);
  });

  server->on("/reboot", HTTPMethod::HTTP_GET, [server](){
    ESP.restart();
  });

}

void setup() {
  Serial.begin(115200);
  DEBUG_MODE = true;
  DebugPrintln(F(""));

  meta.version = 3;

  // Setup config manager
  configManager.setAPName("Demo");
  configManager.setAPFilename("/index.html");

  // Settings variables
  configManager.addParameter("device_name", config.device_name, 32);
  configManager.addParameter("inching_delay", &config.inching_delay);
  configManager.addParameter("led", &config.led);
  configManager.addParameter("enabled", &config.enabled);

  // Meta Settings
  configManager.addParameter("version", &meta.version, get);

  // Init Callbacks
  configManager.setAPCallback(APCallback);
  configManager.setAPICallback(APICallback);

  configManager.begin(config);
}

void loop() {
  
  configManager.loop();   // Um das der Webseitenaufbau der HTML - Datei sauber erfolgen kann, kein delay im Loop einbauen. Besser Millis !!.

  unsigned long currentMillis = millis();


  if(currentMillis - previousMillis > interval) {
        previousMillis = currentMillis;  
  Serial.print(" MAC :");
  Serial.println(mac);
  Serial.println("-------------------------------------");
  Serial.print(" Pause :");
  Serial.println(delaytime);
  Serial.println("-------------------------------------");
  Serial.print("Pausenzeit :");
  Serial.println(led);
  Serial.println("-------------------------------------");
  }

  // Add your loop code here
}

Viele Grüße

André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.11.2020, 19:01
Beitrag #2
RE: Variablenprobleme bei ConfigManager und ESP32
Da kannst Du nur mit vielen Debugausgaben verfolgen, was wo passiert.
Ich ziehe das Speichern im Dateisystem SPIFFS (deprecated) LittleFS vor, deshalb kenne ich diede Lib nicht.
Wenn Du Dir das Speichern in Dateien anschauen willst, schau mal bei Fips vorbei.
LittleFS ist aufrufkompatibel zu SPIFFS. Fips hat da auch einen Dateimanager, mit dem Du Dateien ins FS über den Browser hochladen kannst. Das ist wesentlich komfortabler, als die Arbeit mit dem (emulierten) EEPROM, der auch nur im Flash liegt.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.11.2020, 19:27
Beitrag #3
RE: Variablenprobleme bei ConfigManager und ESP32
Hallo Tommy,

ich habe immer mal wieder auf Fips seiner Page gestöbert.
Was er da macht ist echt enorm !

Darum bin ich gerade etwas überfordert...um Ehrlich zu sein.

Also könnte ich mir die Tabs dann so "zusammenstellen" wie ich sie brauche, oder ?

Da muss ich mal stöbern...

Besten Dank für deinen Tipp !!


VG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.11.2020, 19:32
Beitrag #4
RE: Variablenprobleme bei ConfigManager und ESP32
Naja nur Tabs zusammen stellen ist die eine Seite.
Wenn Du weitere Variablen speichern willst, musst Du den Connect-Manager schon etwas erweitern oder eine zweite Datei dafür anlegen, um das zu trennen.
Also ohne Programmierung wird das nicht gehen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.11.2020, 19:47
Beitrag #5
RE: Variablenprobleme bei ConfigManager und ESP32
Hi,

nee..das stimmt. Aber das ist ja auch der Spaß daran...Wink .

Wird bestimmt schon passen. Ich schaue da mal rein.... .

Besten Dank nochmal...

Gruß

André
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  MicroPython auf ESP32-S luemar 9 144 Gestern 21:01
Letzter Beitrag: Tommy56
  AES256 / SHA384 Chiffren bei HTTPS requests mit ESP32 nutzen TBMSam 0 50 Gestern 13:47
Letzter Beitrag: TBMSam
Smile Frage zu Millis im Loop - ESP32 Stargazer 4 128 21.11.2020 16:58
Letzter Beitrag: MicroBahner
  ESP32 und PI mit BLE codingalex 1 139 17.11.2020 12:10
Letzter Beitrag: Tommy56
  ESP32 Ethernet shrimps 34 26.033 15.11.2020 09:57
Letzter Beitrag: miq19
  ESP32 CAM Flashlamp schalten RaspiUser0815 9 697 13.11.2020 17:16
Letzter Beitrag: RaspiUser0815
  ESP32 arbeitet nicht in Arduino-IDE wonk 3 230 12.11.2020 18:16
Letzter Beitrag: wonk
  Hilfe bei async-mqtt-client für ESP32 amshh 7 294 12.11.2020 09:19
Letzter Beitrag: amithlon
  ESP32 soll auf MySQL schreiben frankmehlhop 11 640 06.11.2020 21:43
Letzter Beitrag: Tommy56
  AZ-Touch ESP32 Grafiktest ckuehnel 1 478 04.11.2020 11:26
Letzter Beitrag: AnFi

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste