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
Variablen NodeMCU ESP8266-E Speicher Sparen
12.12.2020, 08:29 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 13:28 von rev.antun.)
Beitrag #9
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Grüß Euch!

Anbei der gesamte Sketch meines Prototypen. Würd mir diesen erst nach einem gemütlichen Frühstück ansehen Tongue
.zip  WeatherClock.zip (Größe: 12,52 KB / Downloads: 12)

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 08:32
Beitrag #10
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(11.12.2020 18:41)Tommy56 schrieb:  Die 4 MB sind der gesamte Flash-Speicher. (Beim D1 mini pro sind es 16 MB - Auto-detected Flash size: 16MB) davon sind aber immer nur 1.044464 Bytes als Programmspeicher verfügbar.

Versteh ich das richtig, mehr als 1.044.464 Bytes ist nicht? Wozu dann 4/16MB Flash?

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 10:50
Beitrag #11
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(12.12.2020 08:32)rev.antun schrieb:  Versteh ich das richtig, mehr als 1.044.464 Bytes ist nicht? Wozu dann 4/16MB Flash?

Damit Du Platz für SPIFFS/LittleFSA und OTA hast.

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
12.12.2020, 13:28
Beitrag #12
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(12.12.2020 10:50)Tommy56 schrieb:  Damit Du Platz für SPIFFS/LittleFSA und OTA hast.

Gruß Tommy

Ok, verstehe - DANKE!

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 19:54
Beitrag #13
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Zitat:Grundsätzlich geht es um Einsparung von Speicherplatz/für Variablen (Global/Statisch Verfügbar)

Code:
double mondphase()
{

  //  1% bis 99% zuhnemender Mond und -99% bis -1% abnehmender Mond.

  double mondzyklus = 2551443;
  double jetzt, a_22;            // Die Variable "jetzt" brauchst du nicht.
  double a_2 = 1601586415;       // "a_22" und "a_2" werden nirgends verwendet.
  double a_4 = 1602876734;       // direkt als Konstante einsetzen oder constexpr dann machts der Compiler
  double x2, x4, x6;             // x6 siehe return
  unsigned long int x3, x5;      // braucht man nicht

  jetzt = unixzeit();

  x2 = ((jetzt - a_4) / mondzyklus);
  x3 = x2;                       // ist überflüssig
  x4 = (x2 - x3) * 200;
  x5 = x4;                       // ist überflüssig

  if (x5 <= 200) x6 = x5 - 200;  // es wird nur x4 retourniert kann also weg
  if (x5 <= 100) x6 = x5;        // es wird nur x4 retourniert kann also weg

  int8_t nxphase;                // wahrscheinlich schmeist es der Compiler eh weg
  float phase;                   // wahrscheinlich schmeist es der Compiler eh weg

  return ((x4 - 200) / 1.15);
}


Zitat:
und alles andere läuft nur über Funktionen

Eine wirklich schicke Funktion, aber Speicher spart sie nicht. Der Esp hat den Unix-Timestamp doch schon.
Code:
long unixzeit() {

  const short tage_seit_jahresanfang[12] = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334};
  int schaltjahre = ((jahr - 1) - 1968) / 4 - ((jahr - 1) - 1900) / 100 + ((jahr - 1) - 1600) / 400;
  long tage_seit_1970 = (jahr - 1970) * 365 + schaltjahre + tage_seit_jahresanfang[monat - 1] + tag - 1;

  if ( (monat > 2) && (jahr % 4 == 0 && (jahr % 100 != 0 || jahr % 400 == 0)) )tage_seit_1970 += 1;

  return sekunde + 60 * ( minuten + 60 * (stunde + 24 * tage_seit_1970) );
}

Serial.println(unixzeit());
Serial.println(time(&now));  // Unix-Timestamp

Code:
//Berechnet den Tag der Woche aus dem übergebenen Datumswerten.
byte calcDayOfWeek(int jahr, byte monat, byte tag) {
  static int t[] = {0, 3, 2, 5, 0, 3, 5, 1, 4, 6, 2, 4};
  jahr -= monat < 3;
  return ((jahr + jahr / 4 - jahr / 100 + jahr / 400 + t[monat - 1] + tag) % 7);
}

//Struct tm und strftime
strftime (buff, sizeof(buff), "Wochentag: %u\n", &tm);         // http://www.cplusplus.com/reference/ctime/strftime/
Serial.print(buff);
Den Tag der Woche kennt der Esp auch ohne eine solche Berechnung.

Zitat:
Ich benötige nur einfach ein paar Tipps - keine fertige Lösung. DANKE!

Code:
uint8_t daysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
Wo wird das verwendet? Und das ist nicht das einzige.

Code:
const char* const PROGMEM MONTH_NAMES[] = {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"};
Nutze PROGREM.

Code:
Serial.println();     // kann auch weg
Serial.print(F("\nConnected, IP address: ")); //Nutze das F_Makro

Wozu überhaupt eine RTC, er scheint doch "WiFi.mode(WIFI_STA);" angebunden zu sein ?

#include <TimeLib.h>
Ich sehe nicht wo die verwendet wird.

Potenzial zum einsparen scheint vorhanden zu sein, nur du kannst es ausreizen.
Ich habe die Hardware nicht und kenne so einige Lib's nicht.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 20:15
Beitrag #14
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Was ich schon erwähnt hatte: das F-Macro
Code:
// Dein Code
Serial.print("SD Card, ");
// besser
Serial.print(F("SD Card, "));
Spart RAM, da Du davon viele Ausgaben hast.

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
12.12.2020, 21:29
Beitrag #15
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Grüß Euch!

Danke für die vielen Hinweise. Der Sketch ist gerade noch im Umbau, die Variablen die derzeit noch nicht in Verwendung hab ich schon vorbereitet, die Berechnung ist aber noch nicht Umgesetzt.

Die TimeLib wirt für die NTP Funktion die WidgetRTC (Blynk) benötigt. Zusätzlich ist noch ein DS3231 in der Hardware, als Backup für die Zeit, sollte die I-Net Anbindung nicht gehen - die zweite Schaltung muss ich mangels I-Net mit einem GPS für die NTP Funktion lösen - hab ich in einem eigenen Sketch bereits getestet.

int8_t nxphase & float phase hab ich vergessen zu löschen Sad

Zitat:Der Esp hat den Unix-Timestamp doch schon.
Den Tag der Woche kennt der Esp auch ohne eine solche Berechnung.

Was hab ich da Übersehen?

Zitat:Serial.print(F("\nConnected, IP address: ")); //Nutze das F_Makro

Da auch Danke für den Hinweis Cool

Zitat:Potenzial zum einsparen scheint vorhanden zu sein, nur du kannst es ausreizen.
Ich habe die Hardware nicht und kenne so einige Lib's nicht.

Muß jetzt mal eure Tipps umsetzten, restliche Funktionen einbauen und Codesäuberung im ganzen vornehmen.

So nochmals Danke an Euch - jetzt hab ich mal einiges zu tun Big Grin

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
12.12.2020, 22:50 (Dieser Beitrag wurde zuletzt bearbeitet: 12.12.2020 22:50 von rev.antun.)
Beitrag #16
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Grüß Euch!

Hier mal auch ein paar Fotos (stark Komprimiert) wie es denn so aussieht - wie gesagt, noch in der Testphase Angel

       

Gruß aus Wiener Neustadt
Toni

=================================================================
Seit die Mathematiker über die Relativitätstheorie hergefallen sind, verstehe ich sie selbst nicht mehr.

Wer Rechtschreibfehler findet darf sie behalten Big Grin
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Esp8266 - Client, immer wieder ... rev.antun 37 645 19.01.2021 23:09
Letzter Beitrag: rev.antun
  Mit NodeMCU-V3 L9110S Schrittmotor steuern ICookie 14 308 19.01.2021 12:05
Letzter Beitrag: ICookie
  ESP8266 Webserver nach Zeit nicht mehr verfügbar. ESPWolf 19 674 17.01.2021 11:13
Letzter Beitrag: hotsystems
  NodeMCU -KNX ak68 5 1.872 17.01.2021 09:05
Letzter Beitrag: matty67
  Install des esp8266 Boardverwalters md_39 4 176 15.01.2021 15:33
Letzter Beitrag: md_39
  NodeMCU GPIO15 Transistor Ansteuern rev.antun 14 788 06.01.2021 20:42
Letzter Beitrag: rev.antun
  ESP8266 Webseite wird verzögert aktualisiert delucks 6 514 05.01.2021 23:16
Letzter Beitrag: delucks
  ESP8266/32: Captive Portal und sprung zum "normalen" Browser J.Arnold 2 338 05.01.2021 22:36
Letzter Beitrag: J.Arnold
  NodeMCU ESP8266 - IDE Verbindungsprobleme bei D0-Reset Verbindung ayykaramba 8 838 14.12.2020 12:09
Letzter Beitrag: N1d45
  Bewegung erkennen --> ESP8266 als Board --> Welcher Sensor wofür basementmedia 10 1.056 06.12.2020 11:18
Letzter Beitrag: Tellen

Gehe zu:


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