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: 26)

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 SPIFF Daten schreiben und zeilenweise lesen? foto2004 10 253 15.04.2021 14:26
Letzter Beitrag: hotsystems
  ESP8266 OTA - ich bin am Ende meiner Ideen miq19 11 716 02.04.2021 10:13
Letzter Beitrag: Tommy56
  NodeMCU und LUA Programmierung RaspiUser0815 2 292 29.03.2021 14:32
Letzter Beitrag: RaspiUser0815
  Libraries für ESP8266 wonk 9 840 24.03.2021 20:18
Letzter Beitrag: wonk
  vom MEGA zum ESP8266 uk1408 24 2.027 19.03.2021 13:56
Letzter Beitrag: hotsystems
  ESP8266 Zeit vom NTP Server verändert sich Kupferwurm 18 1.875 11.03.2021 11:03
Letzter Beitrag: Tommy56
  ESP8266 NTP fadeValue bob 2 498 10.03.2021 18:29
Letzter Beitrag: Tommy56
  HTML-Ausgabe von ESP8266 D1 Mini + DHT 11 Temperatursensor auf Webseite Bobo83600 3 696 10.03.2021 09:42
Letzter Beitrag: Bobo83600
  [Gelöst] ESP8266 OTA bleibt ohne Wirkung miq19 5 784 07.03.2021 18:35
Letzter Beitrag: Tommy56
  ESP8266-12E & Pullup I2C rev.antun 33 4.108 07.03.2021 01:46
Letzter Beitrag: rev.antun

Gehe zu:


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