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
14.12.2020, 07:50
Beitrag #33
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(13.12.2020 17:23)rev.antun schrieb:  Bei dem Vorschlag von Fips wg Unixzeit und time(&now) passiert folgendes

Zitat:cannot convert 'time_t (*)() {aka long int (*)()}' to 'time_t* {aka long int*}' for argument '1' to 'time_t time(time_t*)'

Da du dich an Blynk gebunden hast kann es natürlich sein das die in die Jahre gekommene "WidgetRTC.h" sich mit dem aktuellen EspCore nicht immer versteht.

Helfen kann ich nur bedingt, da ich weder Blynk noch RTC verwende.

Der EspCore braucht eigentlich keine Fremden Libs, sntp und Posix Zeitfunktionalitäten sind integriert.
Ausnahme ist natürlich die fehlende Verbindung zu einem NTP-Server.

Gruß Fips

Meine Esp8266 & ESP32 Projekte
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 10:07
Beitrag #34
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
@Toni: Wenn Du uns irgendwann mal noch den Code zur Fehlermeldung aus #26 zukommen lässt, könnte man da ja mal schauen.

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
14.12.2020, 20:15 (Dieser Beitrag wurde zuletzt bearbeitet: 14.12.2020 20:47 von Vapalus.)
Beitrag #35
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(13.12.2020 18:16)rev.antun schrieb:  Servus!

Das Problem bei der Sache ist das leider die Grafik die für die Gauge bzw. Fortschrittbalken, leider nicht ganz Linear ist. Sonst wär das ganze ja noch viel einfacher. Und mir gefällt es nicht wenn der Zeiger dann nicht genau dort ist wo er hingehört . Aber ja ich werde mir deinen Vorschlag nach den restlichen Baustellen mal im Sketch Ansehen - Danke!

Letzt muss ich weitermachen ...

Bei der Gauge ist es sowieso eine logarithmische skala, ich würde die Inverse Funktion von
expWert = 1.5
result = wert^expWert /100^(expWert -1) als probieren.
Die Anderen kann ich nicht richtig erkennen.

In der heutigen Zeit ist gesunder Menschenverstand so etwas Ähnliches wie eine Superkraft - aber keine nützliche.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
14.12.2020, 22:33
Beitrag #36
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(14.12.2020 10:07)Tommy56 schrieb:  @Toni: Wenn Du uns irgendwann mal noch den Code zur Fehlermeldung aus #26 zukommen lässt, könnte man da ja mal schauen.

Gruß Tommy

Servu Tommy!

ad #26, hat sich ja erledigt - neu aufgebaut und in #32 den aktuellen TestSketch gepostet. Da fehlt mir jetzt eben der Durchblick, wie ich das auf einen Nenner bring Sad

(14.12.2020 07:50)Fips schrieb:  Da du dich an Blynk gebunden hast kann es natürlich sein das die in die Jahre gekommene "WidgetRTC.h" sich mit dem aktuellen EspCore nicht immer versteht.

Helfen kann ich nur bedingt, da ich weder Blynk noch RTC verwende.

Der EspCore braucht eigentlich keine Fremden Libs, sntp und Posix Zeitfunktionalitäten sind integriert.
Ausnahme ist natürlich die fehlende Verbindung zu einem NTP-Server.

Hallo Fips!

Bin nicht nur an Blynk gebunden, die LIB ist aktuell, wie oben schon geantwortet (posting #32) läuft ja alles soweit. Wo ich noch nicht durchblick ist wie ich mit einfachen mitteln zwischen RTC und NTP umschalte -> also auf eine einheitliche Zeit zugreifen kann.

Und ja ich kann aufgrund der Verfügbarkeit, die jeweiligen Variablen auslesen, aber keine Ahnung wie ich das hinbekomme das es eben nur "eine" ist und die entweder von dem NTP bzw RTC gefüttert wird Sad

In #32 ist der Testsketch schon Sad Sad Sad

Sollte ich mich mehr als unverständlich ausgedrückt haben, bitte fragen - 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
14.12.2020, 22:40
Beitrag #37
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
NTP füttert die Systemzeit selbst. RTC sollte das über den Wert unixtime im tm-Struct tun.
So ungefähr (ungetestet):
Code:
sysTime = tm.unixtime;

Ausprobieren.

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

So, ich hoffe jetzt alles berücksichtigt zu haben. Sofern WiFi nicht vorhanden füttert RTC die Systemzeit, ansonst NTP & entsprechender Zeitsync - findet wer noch Fehler, die ich mir noch ansehen sollte?

Danke schon mal!

Code:
#include "R:\ArduinoSketches\Prototyping\wwcfg.h"
#define BLYNK_PRINT Serial
#include <Wire.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <TimeLib.h>
#include <WidgetRTC.h>

const int RTC_I2C_ADDRESS = 0x68;
BlynkTimer timer;
WidgetRTC rtc;
int RTCsekunde, RTCminute, RTCstunde, RTCtag, RTCmonat, RTCjahr;
long RTCunix;
bool RTCNTP = false;

unsigned long localtimeMillis = 0;
const uint16_t localtimeinterval = 1000;

BLYNK_CONNECTED() {
  rtc.begin();
}

void setup()
{
  Wire.begin();
  Serial.begin(115200);
  while (!Serial);
  
  wifion();
  Blynk.begin(AUTH, STASSID, STAPSK);
  syncTIME();
}

void loop()
{
  Blynk.run();

  unsigned long currentMillis = millis();
  if (currentMillis - localtimeMillis >= localtimeinterval) {
    localtimeMillis = currentMillis;
    varioout();
  }
}

void syncTIME() {

  if (timeStatus() == 0) {      //timeNotSet
    rtcReadTime();
    setTime(unixzeit());
  }
  else if (timeStatus() == 1) { //timeNeedsSync
    // Funktion folgt später
  }
  else if (RTCNTP == true) { //timeSet

      rtcWriteTime();
  }
}

long unixzeit() {

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

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

  return RTCsekunde + 60 * (RTCminute + 60 * (RTCstunde + 24 * tage_seit_1970) );
}

void rtcReadTime() {
  Wire.beginTransmission(RTC_I2C_ADDRESS);
  Wire.write(0);
  Wire.endTransmission();
  Wire.requestFrom(RTC_I2C_ADDRESS, 7);

  RTCsekunde   = bcdToDec(Wire.read() & 0x7f);
  RTCminute    = bcdToDec(Wire.read());
  RTCstunde    = bcdToDec(Wire.read() & 0x3f);
  bcdToDec(Wire.read());
  RTCtag       = bcdToDec(Wire.read());
  RTCmonat     = bcdToDec(Wire.read());
  RTCjahr      = bcdToDec(Wire.read()) + 2000;
  RTCunix      = unixzeit();
}

void rtcWriteTime() {
  Wire.beginTransmission(RTC_I2C_ADDRESS);
  Wire.write(0);
  Wire.write(decToBcd((int)second()));
  Wire.write(decToBcd((int)minute()));
  Wire.write(decToBcd((int)hour()));
  Wire.write(decToBcd(0));
  Wire.write(decToBcd((int)day()));
  Wire.write(decToBcd((int)month()));
  Wire.write(decToBcd((int)year() - 2000));
  Wire.endTransmission();
}

//Convertiert Dezimalzeichen in binäre Zeichen.
byte decToBcd(byte val) {
  return ( (val / 10 * 16) + (val % 10) );
}

//Convertiert binäre Zeichen in Dezimal Zeichen.
byte bcdToDec(byte val) {
  return ( (val / 16 * 10) + (val % 16) );
}

void wifion() {

  uint8_t versuche;
  
  WiFi.persistent(false);
  WiFi.mode(WIFI_STA);
  WiFi.begin(STASSID, STAPSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
    
    if(versuche++ == 20){
      RTCNTP = false;
      break;
    }
  }
  
  if (WiFi.status() == WL_CONNECTED){
    RTCNTP = true;
    setSyncInterval(180 * 60);
  }
}

void wifioff() {

  WiFi.disconnect();

}

void varioout() {

  Serial.print(F("START==============================\n"));
  Serial.print("TimeStatus  "); Serial.println(timeStatus());
  Serial.print("RTCNTStatus "); Serial.println(RTCNTP);
  Serial.print("Unix epoch  "); Serial.println(now());
  Serial.print("Tag         "); Serial.println(day());
  Serial.print("Monat       "); Serial.println(month());
  Serial.print("Jahr        "); Serial.println(year());
  Serial.print("Stunde      "); Serial.println(hour());
  Serial.print("Minute      "); Serial.println(minute());
  Serial.print("Sekunde     "); Serial.println(second());
  Serial.print("Wochentag   "); Serial.println(timeDayOfWeek_t());
  Serial.print("Monat short "); Serial.println(monthShortStr(month()));
  Serial.print("Monat       "); Serial.println(monthStr(month()));  
  Serial.println("END===============================");  
}

Zitat:15:48:20.510 -> [7380] Time sync: OK
15:48:21.489 -> START==============================
15:48:21.489 -> TimeStatus 2
15:48:21.489 -> RTCNTStatus 1
15:48:21.489 -> Unix epoch 1608133700
15:48:21.489 -> Tag 16
15:48:21.489 -> Monat 12
15:48:21.489 -> Jahr 2020
15:48:21.489 -> Stunde 15
15:48:21.489 -> Minute 48
15:48:21.489 -> Sekunde 20
15:48:21.489 -> Wochentag 0
15:48:21.489 -> Monat short Dec
15:48:21.489 -> Monat December
15:48:21.489 -> END===============================

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
16.12.2020, 16:04
Beitrag #39
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
So beim Drüberschauen fällt mir nichts auf, zu den ganzen Blynk-Sachn kann ich aber nichts sagen.

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
16.12.2020, 16:11
Beitrag #40
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(16.12.2020 16:04)Tommy56 schrieb:  So beim Drüberschauen fällt mir nichts auf, zu den ganzen Blynk-Sachn kann ich aber nichts sagen.

Gruß Tommy

Servus Tommy, schön dich wieder zu Lesen Big Grin

Na das Blynk Zeugs läuft schon wie es soll. Ist es Korrekt, dass ich das setSyncInterval(180 * 60) erst Starte wenn Wifi vorhanden ist?

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 309 15.04.2021 14:26
Letzter Beitrag: hotsystems
  ESP8266 OTA - ich bin am Ende meiner Ideen miq19 11 751 02.04.2021 10:13
Letzter Beitrag: Tommy56
  NodeMCU und LUA Programmierung RaspiUser0815 2 311 29.03.2021 14:32
Letzter Beitrag: RaspiUser0815
  Libraries für ESP8266 wonk 9 877 24.03.2021 20:18
Letzter Beitrag: wonk
  vom MEGA zum ESP8266 uk1408 24 2.051 19.03.2021 13:56
Letzter Beitrag: hotsystems
  ESP8266 Zeit vom NTP Server verändert sich Kupferwurm 18 1.897 11.03.2021 11:03
Letzter Beitrag: Tommy56
  ESP8266 NTP fadeValue bob 2 503 10.03.2021 18:29
Letzter Beitrag: Tommy56
  HTML-Ausgabe von ESP8266 D1 Mini + DHT 11 Temperatursensor auf Webseite Bobo83600 3 701 10.03.2021 09:42
Letzter Beitrag: Bobo83600
  [Gelöst] ESP8266 OTA bleibt ohne Wirkung miq19 5 788 07.03.2021 18:35
Letzter Beitrag: Tommy56
  ESP8266-12E & Pullup I2C rev.antun 33 4.122 07.03.2021 01:46
Letzter Beitrag: rev.antun

Gehe zu:


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