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
Zeit vom Nextion Enhanced mit Arduino auslesen
06.02.2019, 13:17
Beitrag #33
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
(06.02.2019 11:17)Tommy56 schrieb:  Einfach machen, was ich Dir geschrieben habe und alles lesen.
SetSyncProvider gehört ins setup.

Gruß Tommy

Was habe ich denn nicht so gemacht?
Anders als so, bekomme ich die Werte vom Nextion nicht vernünftig ausgelesen.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.02.2019, 13:23
Beitrag #34
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Und was ist das hier?
Code:
void loop()
{
if (!uhrempf)
  {
    if (!rtc0get) Serial.println("Uhrzeit wird empfangen");
    setSyncProvider(syncWithNextion);
  }
.........
In Deinen ganzen ifs blicke ich nicht durch. Lies doch einfach erst mal die Werte ein, zeige sie an und bilde ras Resultat. Auch das anzeigen.

Die Länge der Funktion ist unerheblich. NTP ist auch nicht kurz.

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
06.02.2019, 23:44 (Dieser Beitrag wurde zuletzt bearbeitet: 07.02.2019 00:21 von MarkoM.)
Beitrag #35
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Die ganzen ifs sind durch mein ganzes rum probieren entstanden.
Aber so funktioniert das abrufen der RTC Werte vom Nextion ohne Probleme. Erst wenn z.B. RTC0 empfangen wurde macht er mit dem abrufen von RTC1 weiter usw.

Dann habe ich den SetSyncProvider ins Setup gepackt. Dann bleibt mein serieller Monitor mit der Ausgabe get RTC0 stehen. Es passiert nichts mehr.

Dann habe "static bool uhrempf = false;" zur Konfiguration dazu geschrieben.
Wenn der false ist, wird im Loop "SetSyncProvider" ausgeführt. Wenn das durchgelaufen ist wird uhrempf auf true gesetzt. Somit wird der SyncProvider ja auch nur beim 1. Start des Arduinos ausgeführt.
Dann funktioniert das Uhrzeit abrufen ohne Probleme.
Da ich die Zeile SetSyncProvider ja nur vom Setup nach Loop verschoben habe, kann es doch eigentlich nicht an meinem Code liegen. Oder sehe ich das falsch? Es wird doch das selbe ausgeführt.
Ich glaub ich schwenke doch noch auf ein zusätzliches RTC Modul um.

Hier nochmal meine Ausgabe im Seriellen Monitor, wenn SetSyncProvider 1x im Loop aufgerufen wird:
Code:
get nex_rtc0
00:07:13.241 -> Serielles Byte empfangen : 113
00:07:13.275 -> Beginn Zahlenfolge gefunden
00:07:13.309 -> Serielles Byte empfangen : 227
00:07:13.342 -> Serielles Byte empfangen : 7
00:07:13.342 -> Serielles Byte empfangen : 0
00:07:13.376 -> Serielles Byte empfangen : 0
00:07:13.410 -> Serielles Byte empfangen : 255
00:07:13.444 -> Serielles Byte empfangen : 255
00:07:13.478 -> Serielles Byte empfangen : 255
00:07:13.512 -> Ende gefunden
00:07:13.546 -> RTC0 = 2019
00:07:13.546 -> get nex_rtc1
00:07:13.580 -> Serielles Byte empfangen : 113
00:07:13.580 -> Beginn Zahlenfolge gefunden
00:07:13.615 -> Serielles Byte empfangen : 2
00:07:13.649 -> Serielles Byte empfangen : 0
00:07:13.684 -> Serielles Byte empfangen : 0
00:07:13.718 -> Serielles Byte empfangen : 0
00:07:13.752 -> Serielles Byte empfangen : 255
00:07:13.786 -> Serielles Byte empfangen : 255
00:07:13.820 -> Serielles Byte empfangen : 255
00:07:13.854 -> Ende gefunden
00:07:13.854 -> RTC1 = 2
...............
00:07:21.454 -> Absenkung = 0.40
00:07:21.454 -> HZSchwell = 0.60
00:07:21.488 -> ------Temperatureinstellungen empfangen----------
00:07:21.556 -> 0:07:24 7/2/2019
00:07:21.590 -> 0:07:24 7/2/2019
00:07:21.590 -> 0:07:24 7/2/2019
00:07:21.624 -> 0:07:24 7/2/2019

Wie du siehst, wird mir am Ende die richtige Uhrzeit angezeigt.

Dann habe ich lediglich die Zeile SetSyncProvider vom Loop ins Setup verschoben.
Dann kommt das im seriellen Monitor:
Code:
get nex_rtc0

Und das verstehe ich halt nicht. Mein Code, auch wenn er etwas merkwürdig ist, funktioniert ja. Nur nicht im Setupbereich.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
07.02.2019, 12:30
Beitrag #36
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Ich verstehe es auch nicht. Probiere mal ein delay vor setSyncProvider. Evtl. ist das Nextion noch nicht fertig mit booten, wenn die Abfrage kommt.

SetSyncProvider in Verbindung mit SetSyncInterval macht noch etwas mehr, als den einmaligen Aufruf. Schau dazu mal in die TimeLib.

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
08.02.2019, 10:06 (Dieser Beitrag wurde zuletzt bearbeitet: 08.02.2019 11:46 von MarkoM.)
Beitrag #37
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
(07.02.2019 12:30)Tommy56 schrieb:  Ich verstehe es auch nicht. Probiere mal ein delay vor setSyncProvider. Evtl. ist das Nextion noch nicht fertig mit booten, wenn die Abfrage kommt.

SetSyncProvider in Verbindung mit SetSyncInterval macht noch etwas mehr, als den einmaligen Aufruf. Schau dazu mal in die TimeLib.

Gruß Tommy

Ein delay von 5 Sekunden vor set sync Provider hat auch nichts gebracht.
Habe nochmal rum getetstet.
Wenn ich SetSyncProvider im Loop einmalig starte kommt jetzt das im Monitor an:
Code:
09:51:39.908 -> get nex_rtc0
09:51:39.942 -> getUhr() gestartet
09:51:39.942 -> uhrreturn = -1
09:51:39.976 -> getUhr() gestartet
09:51:39.976 -> uhrreturn = -1
09:51:40.010 -> c = Serial.read()
09:51:40.010 -> Serielles Byte für Uhr empfangen : 113
09:51:40.080 -> Beginn Zahlenfolge gefunden
09:51:40.115 -> getUhr() gestartet
09:51:40.115 -> uhrreturn = -1
09:51:40.150 -> c = Serial.read()
09:51:40.150 -> Serielles Byte für Uhr empfangen : 227
09:51:40.185 -> getUhr() gestartet
09:51:40.220 -> uhrreturn = -1
09:51:40.220 -> c = Serial.read()
09:51:40.254 -> Serielles Byte für Uhr empfangen : 7
09:51:40.288 -> getUhr() gestartet
09:51:40.323 -> uhrreturn = -1
09:51:40.323 -> c = Serial.read()
09:51:40.357 -> Serielles Byte für Uhr empfangen : 0
09:51:40.391 -> getUhr() gestartet
09:51:40.426 -> uhrreturn = -1
09:51:40.426 -> c = Serial.read()
09:51:40.460 -> Serielles Byte für Uhr empfangen : 0
09:51:40.494 -> getUhr() gestartet
09:51:40.528 -> uhrreturn = -1
09:51:40.528 -> c = Serial.read()
09:51:40.562 -> Serielles Byte für Uhr empfangen : 255
09:51:40.596 -> getUhr() gestartet
09:51:40.630 -> uhrreturn = -1
09:51:40.630 -> c = Serial.read()
09:51:40.665 -> Serielles Byte für Uhr empfangen : 255
09:51:40.699 -> getUhr() gestartet
09:51:40.699 -> uhrreturn = -1
09:51:40.733 -> c = Serial.read()
09:51:40.733 -> Serielles Byte für Uhr empfangen : 255
09:51:40.801 -> Ende Uhr gefunden
09:51:40.801 -> getUhr() gestartet
09:51:40.835 -> uhrreturn = 2019
09:51:40.835 -> RTC0 = 2019
..............

Es läuft alles durch.
Nach einer Minute (testweise) soll dann SetSyncInterval die Uhrzeit neu holen.
Dann kommt nur das an:
Code:
09:52:43.728 -> get nex_rtc0
09:52:43.763 -> getUhr() gestartet
09:52:43.763 -> uhrreturn = -1
Wenn ich aber, bevor die Minute um ist, über einen Button im Display erneut SetSyncProvider aufrufe, läuft die komplette Uhrzeit empfangen Routine durch.
Code:
10:00:38.795 -> pageID: 2
10:00:38.795 -> objektID: 23
10:00:38.829 -> TouchEvent: 1
10:00:38.829 -> Home oder NEXT Button Uhr stellen betätigt
10:00:38.862 -> get nex_rtc0
10:00:38.896 -> getUhr() gestartet
10:00:38.931 -> uhrreturn = -1
10:00:38.931 -> c = Serial.read()
10:00:38.965 -> Serielles Byte für Uhr empfangen : 113
10:00:38.999 -> Beginn Zahlenfolge gefunden
10:00:39.034 -> getUhr() gestartet
10:00:39.034 -> uhrreturn = -1
...........
10:00:42.612 -> Ende Uhr gefunden
10:00:42.647 -> RTC5 = 43
10:00:42.647 -> ------------------Datum Uhrzeit empfangen------------------
10:00:42.716 -> 10:00:43 8/2/2019
10:01:42.703 -> get nex_rtc0
10:01:42.703 -> getUhr() gestartet
10:01:42.737 -> uhrreturn = -1
Ich verzweifle langsam wirklich.





Da ja SetSyncInterval nicht mit meinem Sketch klar kommt, werde ich es nun so machen. Nicht Ideal aber es läuft.
Code:
static bool UhrSync = true;

void loop()
{
if (UhrSync)
  {
  setSyncProvider(syncWithNextion);
  }
.........Mein restlicher code

//
  // Uhrzeit synchronisieren
  //
  if (millis() - UhrsyncMillis > UhrsyncInterval)
    {
      UhrsyncMillis = millis();
      UhrSync = true;
    }

So bekomme ich die Uhrzeit wenigstens regelmäßig synchronisiert.
Finde einfach keine andere Lösung.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2019, 16:15
Beitrag #38
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Hallo Tommy,
ich habe ja immer noch nicht ganz aufgegeben. Und bin auch etwas weiter gekommen. Die Uhrsynchronisation funktioniert nun auch fast gut wenn ich SetSyncProvider im Setup starte.
Allerdings bekomme ich, wenn ich tm.Year mit nex_rtc0 fütter nicht die 2019 da rein sondern 227.
Hier mal ein Teil des Codes:
Code:
Serial.println("------------------RTC wurde abgefragt------------------");
          Serial.print(nex_rtc2);
          Serial.print("/");
          Serial.print(nex_rtc1);
          Serial.print("/");
          Serial.print(nex_rtc0);
          Serial.print("   ");
          Serial.print(nex_rtc3);
          Serial.print(":");
          Serial.print(nex_rtc4);
          Serial.print(":");
          Serial.println(nex_rtc5);
                    
          timesync = false;
          }        
          }
     }

    tmElements_t tm;
          tm.Year = nex_rtc0;
          Serial.print("tm.Year=nex_rtc0 / tm.Year= ");
          Serial.println(tm.Year);
     tm.Month = nex_rtc1;
          Serial.print("tm.Month=nex_rtc1 / tm.Month= ");
          Serial.println(tm.Month);
     tm.Day = nex_rtc2;
..........

Und hier die Serielle Ausgabe dazu:
Code:
16:02:49.338 -> nex_rtc0 = 2019
16:02:49.372 -> nex_rtc1 = 3
16:02:49.372 -> nex_rtc2 = 5
16:02:49.372 -> nex_rtc3 = 16
16:02:49.405 -> nex_rtc4 = 2
16:02:49.405 -> nex_rtc5 = 53
16:02:49.439 -> ------------------RTC wurde abgefragt------------------
16:02:49.507 -> 5/3/2019   16:2:53
16:02:49.507 -> tm.Year=nex_rtc0 / tm.Year= 227
16:02:49.541 -> tm.Month=nex_rtc1 / tm.Month= 3
16:02:49.575 -> tm.Day=nex_rtc2 / tm.Day= 5
Hast Du eine Idee dazu?

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
05.03.2019, 16:27
Beitrag #39
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
TimeLib.h:
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; <-----------------------------------------
}     tmElements_t, TimeElements, *tmElementsPtr_t;
Eigentlich müsste das 49 sein.
Das tm.Year = (nex_rtc0-1970); hat Du noch drin oder stellst Du 2019 rein? Das wäre falsch.

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
05.03.2019, 17:22 (Dieser Beitrag wurde zuletzt bearbeitet: 05.03.2019 17:24 von MarkoM.)
Beitrag #40
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
(05.03.2019 16:27)Tommy56 schrieb:  Eigentlich müsste das 49 sein.
Das tm.Year = (nex_rtc0-1970); hat Du noch drin oder stellst Du 2019 rein? Das wäre falsch.
Das hatte ich jetzt nur mal zu Testzwecken raus genommen da mit -1970 das Datum gar nicht passte.
Habe es nun mal wieder rein genommen. Dann ist tm.Year auch 49. Aber ich habe trotzdem ein völlig falsches Datum. Huh

Code:
17:16:30.333 -> nex_rtc1 = 3
17:16:30.366 -> nex_rtc2 = 5
17:16:30.366 -> nex_rtc3 = 17
17:16:30.400 -> nex_rtc4 = 16
17:16:30.400 -> nex_rtc5 = 32
17:16:30.433 -> ------------------RTC wurde abgefragt------------------
17:16:30.467 -> 5/3/2019   17:16:32
17:16:30.500 -> tm.Year=(nex_rtc0-1970) / tm.Year= 49
17:16:30.534 -> tm.Month=nex_rtc1 / tm.Month= 3
17:16:30.567 -> tm.Day=nex_rtc2 / tm.Day= 5
17:16:30.600 -> 17
17:16:30.600 -> 16
17:16:30.635 -> 32
17:16:30.635 -> ------------SyncProvider has set the system time-------------
17:16:30.702 -> -----------------Licht Status zum Display gesendet------------------
17:16:30.771 -> -----------------Düngestatus zum Display gesendet------------------
17:16:30.839 -> -----------------CO2 Status zum Display gesendet------------------
17:16:30.908 -> -----------------Heizungs Status zum Display gesendet------------------
17:16:30.974 -> 18:59:22 1/1/1970  Unix Time:  68362
Letzte Zeile wird über den Code ausgegeben:
Code:
void digitalClockDisplay(){
  // digital clock display of the time
  Serial.print(hour());
  printDigits(minute());
  printDigits(second());
  Serial.print(" ");
  Serial.print(day());
  Serial.print("/");
  Serial.print(month());
  Serial.print("/");
  Serial.print(year());
  Serial.print("  Unix Time:  ");
  Serial.println(now());
}

void printDigits(int digits){
  // utility function for digital clock display: prints preceding colon and leading 0
  Serial.print(":");
  if(digits < 10)
    Serial.print('0');
  Serial.print(digits);
}

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Daten auf Nextion abfragen Lampe 24 999 30.04.2020 15:37
Letzter Beitrag: hotsystems
Sad Frage zu Daten die vom Nextion kommen Lampe 2 259 26.04.2020 12:53
Letzter Beitrag: Lampe
  Motordaten von Zusatzsensoren per Arduino auslesen PingPong92 14 2.781 19.04.2020 09:28
Letzter Beitrag: Tommy56
  Teilfunktion nur 1x nutzen, für begrenzte Zeit senseman 9 490 09.04.2020 10:31
Letzter Beitrag: Tommy56
  Temperatursensor DS18B20 direkt auslesen Igom 9 594 26.03.2020 19:21
Letzter Beitrag: hotsystems
  Schalter u. Slider von Nextion nach Arduino abfragen, Lösungsansatz gesucht alpenpower 2 511 09.03.2020 07:59
Letzter Beitrag: alpenpower
  Nextion Fehler bei Button Abfrage wenn ich zusätzlich Text sende MarkZero0815 24 1.703 28.01.2020 08:23
Letzter Beitrag: hotsystems
  UNO mit Nextion und ENC28J60 Ethernet leonreucher 3 408 04.01.2020 15:11
Letzter Beitrag: Tommy56
  Loop-Teil mit Interrupt für bestimmte Zeit stoppen Alter Fritz 11 1.145 23.12.2019 23:10
Letzter Beitrag: hotsystems
  DS3234 Werte auf Nextion Kurt 10 989 01.12.2019 16:27
Letzter Beitrag: Kurt

Gehe zu:


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