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.01.2019, 17:15
Beitrag #17
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Danke, Danke, Danke
So bekomme ich die 2019 ausgegeben.
Da wäre ich selber ja nie drauf gekommen.

Eine Frage habe ich aber noch.
Mein bisheriger Aquariencomputer läuft ja nur im Arduino.
Sollte ich die ganzen Zeitabfragen jetzt besser im Display programmieren und nur die Auswertung der Messsonden (PH und Temp) mit dem Arduino machen? Oder ist das egal?

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2019, 17:20
Beitrag #18
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Da wirst Du noch ein paar Infos dazu geben müssen, was Du genau machen willst, um da Abschätzungen zu treffen.

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.01.2019, 18:07
Beitrag #19
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
- Es soll halt zu Uhrzeit XY das Licht ein und zu Uhrzeit YZ wieder ausschalten.
- 2 Düngepumpen sollen um Uhrzeit XY für x Sekunden laufen.
- Wenn Temperatur < x Grad soll die Heizung angehen bei y Grad wieder aus
- Wenn PH > x soll ein Magnetventil die CO2 Zufuhr starten und bei < y wieder aus

Die Zeiten und Werte sollen am Nextion eingestellt und die Zustände optisch dargestellt werden.

Bis auf den PH wert habe ich es mit meinem Arduino und einem 2 zeiligen Display bereits laufen.
Würde das ganze halt etwas Komfortabler über das Nextion steuern wollen.

Bei dem ganzen hin und her mit der Übermittlung der Uhrzeit zum Arduino war mir jetzt die Idee gekommen die Zeitrelevanten Sachen im Display zu programmieren und nur die Schaltzustände mit dem Arduino auslesen.
Temperatur und PH dann mit dem Arduino und die Daten dann zum Nextion senden.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
06.01.2019, 18:31
Beitrag #20
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Temperatur und PH würde ich auch direkt am Arduino machen und nur die Messwerte am Nextion darstellen.
Die Zeitsteuerungen sind eigentlich egal.
Ich sehe 3 Wege:
1. die TimeLib von Paul Stoffregen und dazu einen eigenen SyncProvider schreiben, der die Zeit vom Nextion holt und in UNIX-Time umrechnet. Diesen dann alle paar Stunden die Uhr im Arduino aktualisieren lassen und den die Zeiten steuern lassen.

2. Die Zeitsteuerung ins Nextion verlagern und nur die Zustände regelmäßig vom Arduino abfragen (minütlich dürfte ausreichen)

3. Ich weiß nicht wie Du bisher die Zeiten gehandhabt hast. Evtl. läßt sich die Zeit vom Nextion dort relativ einfach einbinden.

Auf alle Fälle wirst Du die Sollwerte vom Nextion an den Arduino übertragen müssen, wenn er Schalten soll.
Wobei 1 wohl der aufwändigste ist.

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.01.2019, 11:20 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 11:23 von MarkoM.)
Beitrag #21
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Hi Tommy,
darf ich dich nochmal belästigen?
Habe mich nochmal etwas mit der nexrtc.h (https://github.com/itead/ITEADLIB_Arduin.../NexRtc.h) beschäftigt.
Über ein Beispiel Sketch, was dabei war, konnte ich auch ganz einfach Datum und Uhrzeit zum Nextion Senden und empfangen.
Allerdings kommt das Datum in diesem Format an: JJJJ/MM/TT SS:MM:SS (Mit diesem Befehl: rtc.read_rtc_time(time_buf,30);)
Ist es über die nexrtc.h nicht auch möglich Stunde, Minute und Sekunde einzeln auszulesen?
In der nexrtc.cpp sieht es so aus. Ich weiß aber nicht wie ich den rtc.read_rtc_time() Befehl abändern muss.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
08.01.2019, 11:42 (Dieser Beitrag wurde zuletzt bearbeitet: 08.01.2019 11:43 von Tommy56.)
Beitrag #22
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Dein Link ist defekt - die letzte Klammer muss raus.

Wenn Du die Lib nutzen willst, wovon ich abrate (Sie benutzt String), musst Du die Zeile 168 anders initialisieren und die Zeilen ab 206 anders anordnen.
Die Nextion-Libs sind allgemein schlecht programmiert, weshalb sie kaum einer nutzt.

Die Lib macht auch nichts anderes als wir mit unserem "get rtc0" usw. nur schlechter (cmd ist ein String und der wird anschließend in ein Char-Array umgewandelt - besser wäre gleich ein char-Array)
Beispiel für besseres cmd:
Code:
char cmd[] = "get rtc0";
// neues rtc-Register z.B:
byte num = 4;
cmd[7] = num+48; // 48 ist der ASCII-Wert von '0', also wenn num = 4 ist, dann ist 52 der ASCII-Wert von '4'
Zum Problemkreis Zeichenketten habe ich hier einiges aufgeschrieben.

Als Vergleichswert würde ich Minuten nach Mitternacht benutzen, da musst Du nur 1 Zahl vergleichen. Ich glaube sekundengenau muss es nicht sein, da wäre der Weg über das Nextion ungünstig.

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
31.01.2019, 17:50
Beitrag #23
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Hallo Thommy,
ich bin immer noch dabei meine Zeiten etc. vom Nextion zu holen.
Mit der Nextion.h lib hatte ich es auch schon hinbekommen. Ich will die aber nach möglichkeit nicht nutzen.
Nun habe ich einen Code zusammengefrickelt der mir nach und nach alle relevanten Zeiten vom Nextion holen soll. Allerdings funktioniert das nicht immer richtig.
Nach dem hochladen auf den Arduino bekomme ich im seriellen Monitor folgende Ausgabe:
Code:
get rtc0
17:34:14.348 -> 113
17:34:14.348 -> Beginn Zahlenfolge gefunden
17:34:14.348 -> 227
17:34:14.348 -> 7
17:34:14.348 -> 0
17:34:14.348 -> 0
17:34:14.348 -> 255
17:34:14.348 -> 255
17:34:14.348 -> 255
17:34:14.348 -> RTC0 = 2019
17:34:14.348 -> get rtc1
17:34:14.383 -> 113
17:34:14.383 -> Beginn Zahlenfolge gefunden
17:34:14.383 -> 1
17:34:14.383 -> 0
17:34:14.383 -> 0
17:34:14.383 -> 0
17:34:14.383 -> 255
17:34:14.383 -> 255
17:34:14.383 -> 255
17:34:14.383 -> RTC1 = 1
17:34:14.383 -> get rtc2
17:34:14.417 -> 113
17:34:14.417 -> Beginn Zahlenfolge gefunden
17:34:14.417 -> 31
17:34:14.417 -> 0
17:34:14.417 -> 0
17:34:14.417 -> 0
17:34:14.417 -> 255
17:34:14.417 -> 255
17:34:14.417 -> 255
17:34:14.417 -> RTC2 = 31
17:34:14.417 -> get rtc3
17:34:14.451 -> 113
17:34:14.451 -> Beginn Zahlenfolge gefunden
17:34:14.451 -> 17
17:34:14.451 -> 0
17:34:14.451 -> 0
17:34:14.451 -> 0
17:34:14.451 -> 255
17:34:14.451 -> 255
17:34:14.451 -> 255
17:34:14.451 -> RTC3 = 17
17:34:14.451 -> get rtc4
17:34:14.486 -> 113
17:34:14.486 -> Beginn Zahlenfolge gefunden
17:34:14.486 -> 34
17:34:14.486 -> 0
17:34:14.486 -> 0
17:34:14.486 -> 0
17:34:14.486 -> 255
17:34:14.486 -> 255
17:34:14.520 -> 255
17:34:14.520 -> RTC4 = 34
17:34:14.520 -> get rtc5
17:34:14.520 -> 113
17:34:14.555 -> Beginn Zahlenfolge gefunden
17:34:14.555 -> 11
17:34:14.555 -> 0
17:34:14.555 -> 0
17:34:14.555 -> 0
17:34:14.555 -> 255
17:34:14.555 -> 255
17:34:14.555 -> 255
17:34:14.555 -> RTC5 = 11
Danach kämen noch meine Schaltzeiten. Soweit alles richtig.
Wenn ich nun den Arduino mit dem kleinen Knopf resette, kommt folgendes:
Code:
17:42:26.313 -> get rtc0
17:42:26.313 -> 26
17:42:26.313 -> RTC0 = 1546
17:42:26.313 -> get rtc1
17:42:26.313 -> 255
17:42:26.313 -> RTC1 = 1546
17:42:26.313 -> get rtc2
17:42:26.313 -> 255
17:42:26.313 -> RTC2 = 1546
17:42:26.313 -> get rtc3
17:42:26.313 -> 255
17:42:26.313 -> RTC3 = 1546
17:42:26.313 -> get rtc4
17:42:26.313 -> 113
17:42:26.313 -> Beginn Zahlenfolge gefunden
17:42:26.313 -> 1
17:42:26.313 -> 0
17:42:26.313 -> 0
17:42:26.313 -> 0
17:42:26.313 -> 255
17:42:26.313 -> 255
17:42:26.313 -> 255
17:42:26.347 -> RTC4 = 1
17:42:26.347 -> get rtc5
17:42:26.347 -> 113
17:42:26.347 -> Beginn Zahlenfolge gefunden
17:42:26.347 -> 31
17:42:26.347 -> 0
17:42:26.347 -> 0
17:42:26.347 -> 0
17:42:26.381 -> 255
17:42:26.381 -> 255
17:42:26.381 -> 255
17:42:26.381 -> RTC5 = 31
Abrufen tue ich es mit:
Code:
void Datum_Uhr_holen()
{
if (uhrempf == 0)
      {
      if (datenangefordert == 0)
          {
          //Serial1.print("page 0");
          //Serial1.write(NexT,3);
          //delay(1000);
          Serial.println("get rtc0");
          Serial1.print("get rtc0");
          Serial1.write(NexT,3);
          datenangefordert = 1;
          }
        if (datenangefordert == 1)
          {
          rtc0 = getZahl();
          if (rtc0 != -1L)
          {
          Serial.print("RTC0 = ");
          Serial.println(rtc0);
          datenangefordert = 0;
          uhrempf = 1;
          }
          }  
      }
      if (uhrempf == 1)
      {
      if (datenangefordert == 0)
          {
          Serial.println("get rtc1");
          Serial1.print("get rtc1");
          Serial1.write(NexT,3);
          datenangefordert = 1;
          }
        if (datenangefordert == 1)
          {
          rtc1 = getZahl();
          if (rtc1 != -1L)
          {
          Serial.print("RTC1 = ");
          Serial.println(rtc1,DEC);
          uhrempf = 2;
          datenangefordert = 0;
          }
          }      
      }...........

GetZahl ist ähnlich wie von Dir schon bekommen. Nur noch mit Abfrage auf ObjektIDs erweitert.
Code:
// return -1 wenn nichts da, sonst die Zahl
long getZahl() {
  static puffer p;
  static byte idx;
  static byte anzFF;

if (Serial1.available() > 0 && datenangefordert == 1)
    {
    b = Serial1.read();
    Serial.println(b);
    if (!inLesen)
      {
      if (b == 0x71) // Anfang Zahlenfolge gefunden
        {
          Serial.println("Beginn Zahlenfolge gefunden");
          art = 1;
          inLesen = true;
          idx = 0;
          anzFF = 0;
          return -1L;
        }
      if (b == 0x65)
        {
          Serial.println("Beginn Objekt ID gefunden");
          art = 2;
          inLesen = true;
          idx = 0;
          anzFF = 0;
          return -1L;
        }
      }
      else
        {
        if (b == 0xFF)  // Endeanteil
          {
          anzFF++;
          if (anzFF == 3) // fertig
            {
            inLesen = false;
            if (art == 1)
              {
              art = 0;
              return p.l;
              } else return -1L; // in Endebearbeitung
            if (art == 2)
              {
              pageID = inID[0];
              objektID = inID[1];
              tEv = inID[2];                
              } else return -1L; // in Endebearbeitung
            } else return -1L; // in Endebearbeitung
          }
          else
            {
              if (art == 1)
              {
              p.arr[idx++] = b; // Zahlanteil schreiben
              return -1L;
              }
              if (art == 2)
              {
              inID[idx++] = b;
              return -1L;
              }
            }
          }
    } else return -1L;  // nichts da
}
Verstehe einfach nicht, wieso es mal geht und dann wieder nicht.

Gruß Marko
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
31.01.2019, 18:04
Beitrag #24
RE: Zeit vom Nextion Enhanced mit Arduino auslesen
Ich vermute, dass bei einem Reset des Arduino nicht automatisch auch ein Reset des Nextion erfolgt.
Du liest dann irgendwas. Es kommt ja auch nicht die Meldung "Beginn Zahlenfolge gefunden" (0x71). Nach einem Reset solltest Du im Setup erst mal alles lesen, was noch in der Queue steht.
Code:
char c;
while (Serial1.available()) c = Serial1.read();

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
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Nextion Senden von Variablen Problem Tesla 10 477 08.11.2020 13:13
Letzter Beitrag: Tesla
  arduino elegoo uno r3 auslesen und HexFile speichern desperando 11 565 29.10.2020 15:11
Letzter Beitrag: GuaAck
  Problem Arduino Mega und Nextion Touch Display pds14 9 492 28.10.2020 11:20
Letzter Beitrag: hotsystems
  Nextion Spezialist gesucht night022 10 636 07.10.2020 06:04
Letzter Beitrag: night022
  Nextion an Arduino und umgekehrt ohne Bibliothek night022 23 1.080 17.09.2020 04:59
Letzter Beitrag: night022
  Zeit-Server-Problem 182 21 7.164 27.08.2020 15:05
Letzter Beitrag: Bitklopfer
  Nextion Fehler king_MJ 3 719 27.06.2020 17:36
Letzter Beitrag: Tommy56
  Arduino DMX wert mit serial port auslesen Arduino DMX Master 2 809 10.06.2020 16:27
Letzter Beitrag: Chopp
  Daten auf Nextion abfragen Lampe 24 2.651 30.04.2020 15:37
Letzter Beitrag: hotsystems
Sad Frage zu Daten die vom Nextion kommen Lampe 2 759 26.04.2020 12:53
Letzter Beitrag: Lampe

Gehe zu:


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