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

Gehe zu:


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