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
13.12.2020, 16:11
Beitrag #25
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Dann solltest Du uns den Codeteil und die Fehlermeldung zukommen lassen.
Hast Du Dich schon auf der Seite von Fips zu NTP informiert?

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
13.12.2020, 17:23
Beitrag #26
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(13.12.2020 16:11)Tommy56 schrieb:  Dann solltest Du uns den Codeteil und die Fehlermeldung zukommen lassen.
Hast Du Dich schon auf der Seite von Fips zu NTP informiert?

Gruß Tommy

Servus!

So jetzt mal mein IDE Problem gelöst - Danke auch nochmals hier für den Tipp.

Ja den Tab wollte ich ursprünglich einbinden, hatte da aber gröbere Probleme da sich die Variablen mit den anderen LIB's irgendwie nicht vertragen haben.

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*)'


Wie schon zuvor gesagt, mit den Zeitfunktionen hab ich schwerste Verständnis Probleme Sad Konnte es nur in der von mir vorgelegten Form zum laufen bringen ...

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
13.12.2020, 17:27
Beitrag #27
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Und den Code zur Fehlermeldung sollen wir uns jetzt erwürfeln?
Du bist doch nicht erst seit gestern hier.

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
13.12.2020, 17:59
Beitrag #28
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Servus!

Ich bin gerade selbst auf der Suche - muss das Lernen - nach einer Lösung. Wär ja gelacht wenn ich das nicht hinbekomme, den Rest hab ich ja auch geschafft. ABER: ich denke wo der Hund begraben ist

Code:
void rtcReadTime() {
  Wire.beginTransmission(RTC_I2C_ADDRESS); //Aufbau der Verbindung zur Adresse 0x68
  Wire.write(0);
  Wire.endTransmission();
  Wire.requestFrom(RTC_I2C_ADDRESS, 7);
  sekunde    = bcdToDec(Wire.read() & 0x7f);
  minuten    = bcdToDec(Wire.read());
  stunde     = bcdToDec(Wire.read() & 0x3f);
  wochentag  = bcdToDec(Wire.read());
  tag        = bcdToDec(Wire.read());
  monat      = bcdToDec(Wire.read());                
  jahr       = bcdToDec(Wire.read()) + 2000;      
}

Da hab ich meine eigenen Variablen für die Zeit definiert, was ja im Grunde genommen Sinnlos ist, wie mich ja auch Fips darauf Aufmerksam gemacht hat.

Hab mir jetzt die TimeLib durchgesehen, ich denke ich hab es jetzt verstanden da ja

Code:
typedef struct  {
  uint8_t Second;
  uint8_t Minute;
  uint8_t Hour;
  uint8_t Wday;   // day of week, sunday is day 1
  uint8_t Day;
  uint8_t Month;
  uint8_t Year;   // offset from 1970;
}

eh schon alles was ich brauche, in der LIB definiert ist Dodgy

Liege ich da richtig?

Daher werde ich jetzt die ganze Zeitgeschichte Runderneuern. Ergebnis folgt, und dann bitte wieder um konstruktive Kritik.

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
13.12.2020, 18:12
Beitrag #29
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
So, kurze Rückmeldung zwischendurch. Ich erstell jetzt nur einen Sketch wo nur die Zeitfunktionalität mit NTP und RTC enthalten ist, zwecks besserer Übersicht, und dann zum Besprechen wie gut - oder weniger gut ich es gelöst habe.

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
13.12.2020, 18:16
Beitrag #30
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(13.12.2020 11:28)Vapalus schrieb:  kann man doch zum Beispiel zusammenfassen mit
Code:
#define DISTANCE_TEMPERATURE 10
#define DISTANCE_TEMP 11
#define START_TEMP 62
#define START_TEMPERATURE 20

int temp = ((temperature-START_TEMPERATURE)*(DISTANCE_TEMPERATURE/DISTANCE_TEMP) + 0.5) + START_TEMP;
Dann ist es auch außerhalb des Bereichs gültig und man kann besser nachkorrigieren.

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 ...

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
13.12.2020, 19:41
Beitrag #31
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
Aufpassen, Du hast 2 Zeitquellen. Ich würde folgendermaßen vorgehen:

Aller 4 Stunden NTP abfragen
Wenn NTP erfolgreich (Prüfen - Wie steht bei Fips) -> diese Zeit verwenden und RTC mit dieser Zeit stellen
Wenn nicht, Zeit aus RTC setzen.

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
13.12.2020, 23:02
Beitrag #32
RE: Variablen NodeMCU ESP8266-E Speicher Sparen
(13.12.2020 19:41)Tommy56 schrieb:  Aufpassen, Du hast 2 Zeitquellen. Ich würde folgendermaßen vorgehen:

Aller 4 Stunden NTP abfragen
Wenn NTP erfolgreich (Prüfen - Wie steht bei Fips) -> diese Zeit verwenden und RTC mit dieser Zeit stellen
Wenn nicht, Zeit aus RTC setzen.

Gruß Tommy

Besten Dank für deine Hinweise !

Das kann ich ja noch ändern
Zitat:setSyncInterval(180 * 60);

(13.12.2020 19:41)Tommy56 schrieb:  Wenn nicht, Zeit aus RTC setzen.

Da fehlt mir im moment noch der Durchblick. Entweder nutz ich die RTC oder NTP Variablen. Wenn timeStatus() <> 0 ist und ich mit der RTC Zeit arbeit, und ich ein timeset() ausführe, dann würde ja timeStatus() wiederum 2 liefern. Nur wie switcht dann die Zeit wenn NTP wieder verfügbar um ?

Der Grundstock läuft jetzt mal. Da ich jetzt die TimeLib mal Gründlich durchforste hab, kann ich in meinem Fall auch die Funktion timeStatus() nutzen um entsprechend zu agieren.

Rausgekommen ist jetzt folgender Testsketch

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;

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

BLYNK_CONNECTED() {
  rtc.begin();
}

void setup()
{
  Wire.begin();
  Serial.begin(115200);
  while (!Serial);

  setSyncInterval(180 * 60);

  wifion();
  Blynk.begin(AUTH, STASSID, STAPSK);
}

void loop()
{
  Blynk.run();

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

oid syncTIME() {

  if (timeStatus() == 0) {      //timeNotSet
    rtcReadTime();
  }
  else if (timeStatus() == 1) { //timeNeedsSync
    // Funktion folgt später
  }
  else if (timeStatus() == 2) { //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 varioout() {

  Serial.print(F("START==============================\n"));
  Serial.print("TimeStatus  "); Serial.println(timeStatus());
  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("---------------------------------------");
  Serial.print("RTCUnix     "); Serial.println(RTCunix);
  Serial.print("RTCTag      "); Serial.println(RTCtag);
  Serial.print("RTCMonat    "); Serial.println(RTCmonat);
  Serial.print("RTCJahr     "); Serial.println(RTCjahr);
  Serial.print("RTCStunde   "); Serial.println(RTCstunde);
  Serial.print("RTCMinute   "); Serial.println(RTCminute);
  Serial.print("RTCSekunde  "); Serial.println(RTCsekunde);
  Serial.print("RTCMonatsht "); Serial.println(monthShortStr(RTCmonat));
  Serial.print("RTCMonat    "); Serial.println(monthStr(RTCmonat));  
  Serial.println("END===============================");
  syncTIME();
}

void wifion() {

  WiFi.persistent(false);
  WiFi.mode(WIFI_STA);
  WiFi.begin(STASSID, STAPSK);
  while (WiFi.status() != WL_CONNECTED) {
    delay(200);
  }
}

void wifioff() {

  WiFi.disconnect();

}

Wenn NTP bzw. WiFi nicht verfügbar
Zitat:22:40:19.793 -> START==============================
22:40:19.793 -> TimeStatus 0
22:40:19.793 -> Unix epoch 6
22:40:19.793 -> Tag 1
22:40:19.793 -> Monat 1
22:40:19.793 -> Jahr 1970
22:40:19.793 -> Stunde 0
22:40:19.793 -> Minute 0
22:40:19.793 -> Sekunde 7
22:40:19.793 -> Wochentag 0
22:40:19.793 -> Monat short Jan
22:40:19.793 -> Monat January
22:40:19.793 -> ---------------------------------------
22:40:19.793 -> RTCUnix 1607899216
22:40:19.793 -> RTCTag 13
22:40:19.793 -> RTCMonat 12
22:40:19.793 -> RTCJahr 2020
22:40:19.793 -> RTCStunde 22
22:40:19.793 -> RTCMinute 40
22:40:19.793 -> RTCSekunde 16
22:40:19.793 -> RTCMonatsht Dec
22:40:19.793 -> RTCMonat December
22:40:19.793 -> END===============================

Hab ich jedenfalls die wichtigsten Variablen zur Verfügung.

Sollte NTP/WiFi vorhanden sein, dann ist ja eh alles bestens

Zitat:22:44:23.136 -> START==============================
22:44:23.176 -> TimeStatus 2
22:44:23.176 -> Unix epoch 1607899462
22:44:23.176 -> Tag 13
22:44:23.176 -> Monat 12
22:44:23.176 -> Jahr 2020
22:44:23.176 -> Stunde 22
22:44:23.176 -> Minute 44
22:44:23.176 -> Sekunde 22
22:44:23.176 -> Wochentag 0
22:44:23.176 -> Monat short Dec
22:44:23.176 -> Monat December
22:44:23.176 -> ---------------------------------------
22:44:23.176 -> RTCUnix 1607899459
22:44:23.176 -> RTCTag 13
22:44:23.176 -> RTCMonat 12
22:44:23.176 -> RTCJahr 2020
22:44:23.176 -> RTCStunde 22
22:44:23.176 -> RTCMinute 44
22:44:23.176 -> RTCSekunde 19
22:44:23.176 -> RTCMonatsht Dec
22:44:23.176 -> RTCMonat December
22:44:23.176 -> END===============================

Jetzt noch die Feinheiten anpassen, Zeitdiff zwischen NTP/RTC - so nun bin ich wieder etwas entspannter und warte auf eure Kommentare, bzw. was ich noch Verbessern kann/muss.

Danke Euch nochmals herzlichst für die Unterstützung Exclamation

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