- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 27

Thema: Rolladensteuerung per ESP8288 + WiFi?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    Die Idee ist nicht schlecht, aber dein RAM wird sthönen und der Aufruf einer Webseite sehr lange dauern, weil du be jedem Aufruf erst den String im RAM konstruierst und zurück gibst.

    Ich grübel gerade ob man den statischen Teil nicht irgendwie sinnvoll außerhalb der Methoden als Const hinterlegen kann und dann einfach nur beim schreiben in den Socket bestimmte Marker abwartet um dann eben Inhalte einzufüllen (wie in dem ESP spezifischen AsyncWebServer Beispiel oben)

    So etwas in der Art wie "<?varName1?>"

    Variablen übergibst du am besten mit Hilfe eines Dictionary, also eine Liste von <Key, Value> Paaren
    Code:
    typedef VarList_t std::Map<std::String, std::String>;
    boolean sendHTML(std::String Template, VarList_t aVarList);
    
    VarList_t  VarList;
    ...
    VarList.clear();
    VarList["varName1"] = "etwas schönes"
    if(!sendHTML(irgendeineHTMLmitVarName1darin,VarList) printError();

    Wenn jetzt in SendHTML während des senden in dem HTML String ein "<?" gefunden wird, sendet er nciht weiter sondern scannt bis zum passenden "?>" durch. Dann ruft er den Inhalt der Variable aus dem Dictionary und sendet den Inhalt. Danach setzt er nach dem schließenden "?>" den HTML String weiter fort, bis er wieder auf "<?" stößt oder am Ende ankommt.
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  2. #2
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    Die Idee ist nicht schlecht, aber dein RAM wird sthönen und der Aufruf einer Webseite sehr lange dauern, weil du be jedem Aufruf erst den String im RAM konstruierst und zurück gibst.

    Ich grübel gerade ob man den statischen Teil nicht irgendwie sinnvoll außerhalb der Methoden als Const hinterlegen kann und dann einfach nur beim schreiben in den Socket bestimmte Marker abwartet um dann eben Inhalte einzufüllen (wie in dem ESP spezifischen AsyncWebServer Beispiel oben)

    So etwas in der Art wie "<?varName1?>"

    Variablen übergibst du am besten mit Hilfe eines Dictionary, also eine Liste von <Key, Value> Paaren
    Code:
    typedef VarList_t std::Map<std::String, std::String>;
    boolean sendHTML(std::String Template, VarList_t aVarList);
    
    VarList_t  VarList;
    ...
    VarList.clear();
    VarList["varName1"] = "etwas schönes"
    if(!sendHTML(irgendeineHTMLmitVarName1darin,VarList) printError();

    Wenn jetzt in SendHTML während des senden in dem HTML String ein "<?" gefunden wird, sendet er nciht weiter sondern scannt bis zum passenden "?>" durch. Dann ruft er den Inhalt der Variable aus dem Dictionary und sendet den Inhalt. Danach setzt er nach dem schließenden "?>" den HTML String weiter fort, bis er wieder auf "<?" stößt oder am Ende ankommt.
    RAM habe ich doch bis zum Abwinken bei den ESPs, sogar beim 8266, darüber mache ich mir keine Sorgen.
    Beim ESP32 habe ich sogar ungenutzte 160MB im Heap...
    wichtig wäre nur eine einfache Syntax, die nach Variablenübergabe (z.B. wie bei sprintf) alles drum und dran intelligent mit html Zeichen und Tokens ergänzt.

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    40
    Beiträge
    3.416
    ich lese hier nur 520KB RAM insgesamt für den ESP32 , ich vermute MB war vertippt

    Mit "Sorgen machen" hat das nicht viel zu tun ... morgen schreibst du etwas auf der Basis deines jetzigen Codes und wunderst dich am Ende des Tages warum dein Projekt ständig rebootet

    Die Art und Weise solche statischen Daten als lokale Variablen in Methoden zu deklarieren ist so schlecht das sollte man vermeiden wo es nur geht!
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  4. #4
    HaWe
    Gast
    Zitat Zitat von Ceos Beitrag anzeigen
    ich lese hier nur 520KB RAM insgesamt für den ESP32 , ich vermute MB war vertippt

    Mit "Sorgen machen" hat das nicht viel zu tun ... morgen schreibst du etwas auf der Basis deines jetzigen Codes und wunderst dich am Ende des Tages warum dein Projekt ständig rebootet

    Die Art und Weise solche statischen Daten als lokale Variablen in Methoden zu deklarieren ist so schlecht das sollte man vermeiden wo es nur geht!
    uups sorry, kB ntl

    520kB stimmen nicht für den praktischen Gebrauch, es sind "nur" 160kB statisches und 160kB dynamisches RAM

    schlecht und unbedingt zu vermeiden ist aber erstmal gar nichts, solange es funktioniert und nach C++ Regelwerk korrekt ist
    - hingegen Flash zum Speichern von Variablen versuche ich zu vermeiden aus Performance- und Schonungsgründen

    Und wenn man es macht wie in den original ESP Arduino Examples mit script +=... braucht es letzlich ja auch nicht weniger Speicher
    - in Funktionen ausgelagert eher sogar deutlich weniger, weil man es für Wiederholungen/Mehrfachgebrauch ja nur 1x schreiben muss (zum Generieren von 10 Buttons bräuchte man nur 1x die Button-Generier-Funktion).
    Geändert von HaWe (04.06.2019 um 16:15 Uhr)

Ähnliche Themen

  1. Arduino Uno WiFi
    Von Holle1976 im Forum Arduino -Plattform
    Antworten: 0
    Letzter Beitrag: 04.01.2017, 17:02
  2. RPi als Wifi Router
    Von tucow im Forum Raspberry Pi
    Antworten: 1
    Letzter Beitrag: 02.02.2013, 08:43
  3. Problem mit WIFI 1.4
    Von markus788 im Forum Robby RP6
    Antworten: 21
    Letzter Beitrag: 26.11.2012, 19:43
  4. ARM für WiFi steuerung ?
    Von fat tony im Forum ARM - 32-bit-Mikrocontroller-Architektur
    Antworten: 5
    Letzter Beitrag: 03.01.2010, 13:57
  5. Wifi Roboter
    Von newName im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 16.01.2008, 13:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen