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

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
  Wasserpumpe mit ESP8266 NodeMcu schalten Faultier_1982 113 8.761 Heute 08:54
Letzter Beitrag: hotsystems
  ESP8266 12-F Email senden Dono14 1 132 20.07.2021 07:33
Letzter Beitrag: hotsystems
  Wemo D1 mit ESP8266 wifimanager error Osotastic 11 347 18.07.2021 06:37
Letzter Beitrag: Fips
  Magnet --> Gefahr für ESP8266 basementmedia 3 475 28.06.2021 19:20
Letzter Beitrag: hotsystems
  Nema 17 am Nodemcu funktioniert nicht NEWESP 2 538 07.06.2021 15:47
Letzter Beitrag: NEWESP
  Prüfen, ob ein Sensor am A0 des ESP8266 angeschlossen ist basementmedia 3 610 05.06.2021 20:57
Letzter Beitrag: basementmedia
  ESP32 und ESP8266 - Stromverbrauch im Deep Sleep Modus jahnbes 12 2.325 02.06.2021 07:43
Letzter Beitrag: jahnbes
  ESP8266 und Telegram Übermittlung Tiger 7 1.160 13.05.2021 10:15
Letzter Beitrag: rev.antun
  ESP8266 NodeMCU aus verbundenem WLan löschen Faultier_1982 21 2.555 13.05.2021 08:03
Letzter Beitrag: Faultier_1982
  Kommunikationsprobleme zwischen Pi4 und ESP8266 gideon111 0 434 08.05.2021 14:18
Letzter Beitrag: gideon111

Gehe zu:


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