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
  delay Zeit falsch golex 9 913 24.05.2019 21:18
Letzter Beitrag: GuaAck
  Keypad auslesen Dieter_T 10 1.087 11.02.2019 20:46
Letzter Beitrag: Dieter_T
  2 Pt1000 über externen AD wandler auslesen Noob63 16 1.931 15.11.2018 20:10
Letzter Beitrag: ardu_arne
  mcp2515 CAN BUS nur eine ID auslesen Golf_Cabrio 6 1.302 24.10.2018 20:51
Letzter Beitrag: Golf_Cabrio
  Schleife bei Zeit x abbrechen BitsAndBytes 7 1.273 23.09.2018 00:30
Letzter Beitrag: BitsAndBytes
  Sensor mit 10 Hz auslesen Olafson Larson 7 1.308 05.07.2018 15:59
Letzter Beitrag: Tommy56
  Zeit-Server-Problem 182 19 3.595 07.06.2018 21:42
Letzter Beitrag: ardu_arne
  Windmesser auslesen will noch nicht so recht klappen.. Stargazer 12 2.846 05.04.2018 10:54
Letzter Beitrag: amithlon
Star BME680 IAQ Wert auslesen Bitklopfer 9 7.025 18.03.2018 02:33
Letzter Beitrag: Wampo
  Serial auslesen > 64 Byte uk1408 18 3.240 09.03.2018 16:05
Letzter Beitrag: Tommy56

Gehe zu:


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