DCF77 <--> RTC

void Funk() {
  time_t DCFtime = DCF.getTime();
  if (DCFtime != 0) {
    setTime(DCFtime);
    rtc.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
  }
}

get das so, wen anschiessend

 DateTime now = rtc.now();

kommt o. überschreibt sich das gegenseitig ??

Du solltest den kompletten Sketch posten, damit wir auch sehen was zwischendurch passiert.

Allerdings sieht es so aus, dass die Variable in der nachfolgenden Anweisung überschrieben wird.

der komplette code

#include "DCF77.h"
#include <TimeLib.h>
#define DCF_PIN 2
#define DCF_INTERRUPT 0
#define POWER 7
time_t time;
DCF77 DCF = DCF77(DCF_PIN, DCF_INTERRUPT);

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Nextion.h>
#include <RTClib.h>
#include <Adafruit_Sensor.h>
#include <DHT.h>
#include <DHT_U.h>
#define DHTPIN   4
#define DHTTYPE  DHT22     // DHT 22 (AM2302)
DHT_Unified dht(DHTPIN, DHTTYPE);
#include <RTClib.h>
RTC_DS3231 rtc;

unsigned long prev = 0;
const unsigned long Motor = 30000;                          // 30 sekunden für Motorlauf
const unsigned long Cool =  10000;
int ReedPin = 8;
int Relais1pin = 2;
int Relais2pin = 3;
int myStunde, myMinute, mySekunde, Temp, Uzeiger ;
int F_auf = 15;                           // Temperatur zum öffnen
int F_zu = 10;                            // Temperatur zum Schliessen
int Timer = 0;
int Reed = HIGH;
NexPage page0 = NexPage(0, 0, "page0");
NexPage page1 = NexPage(1, 0, "page1");
NexPage page2 = NexPage(2, 0, "page2");
NexPage page3 = NexPage(3, 0, "page3");
//-----------------------------------------
NexButton bSetup = NexButton(0, 2, "bSetup");
NexButton bAuf = NexButton(0, 3, "bAuf");
NexButton bZu = NexButton(0, 4, "bZu");
NexButton bBackE = NexButton(3, 2, "bBackE");
NexButton bUhr = NexButton(3, 3, "bUhr");
NexButton bTemp = NexButton(3, 4, "bTemp");
NexButton bStunde = NexButton(1, 5, "bStunde");
NexButton bMinute = NexButton(1, 6, "bMinute");
NexButton bSekunde = NexButton(1, 7, "bSekunde");
NexButton bBack1 = NexButton(1, 2, "bBack1");
NexButton bPlus1 = NexButton(1, 3, "bPlus1");
NexButton bMinus1 = NexButton(1, 4, "bMinus1");
NexButton bTHigh = NexButton(2, 5, "bTHigh");
NexButton bTLow = NexButton(2, 6, "bTLow");
NexButton bBack3 = NexButton(2, 2, "bBack3");
NexButton bPlus2 = NexButton(2, 3, "bPlus2");
NexButton bMinus2 = NexButton(2, 4, "bMinus2");
//----------------------------------------------
NexNumber nexStunde = NexNumber(0, 9, "nexStunde");
NexNumber nexMinute = NexNumber(0, 10, "nexMinute");
NexNumber nexSekunde = NexNumber(0, 11, "nexSekunde");
NexNumber nexTemp = NexNumber(0, 12, "nexTemp");
NexNumber nexThigh = NexNumber(2, 7, "nexThigh");
NexNumber nexTlow = NexNumber(2, 8, "nexTlow");

char buffer[10] = {0};
NexTouch *nex_Listen_List[] =
{
  &bSetup,
  &bAuf,
  &bZu,
  &bBackE,
  &bUhr,
  &bTemp,
  &bStunde,
  &bMinute,
  &bSekunde,
  &bBack1,
  &bPlus1,
  &bMinus1,
  &bTHigh,
  &bTLow,
  &bBack3,
  &bPlus2,
  &bMinus2,
  &page0,
  &page1,
  &page2,
  &page3,
  NULL
};

void motor_aus () {
  digitalWrite (Relais1pin, 1);
  digitalWrite (Relais2pin, 1);
}
void motor_links() {
  digitalWrite (Relais1pin, 0);
  digitalWrite (Relais2pin, 1);
  Serial.println("schliessen");
  Serial.println(Relais1pin, Relais2pin);
}

void motor_rechts () {
  digitalWrite (Relais1pin, 1);
  digitalWrite (Relais2pin, 0);
  Serial.println("oeffnen");
}

void showTime() {
  char h[20] = {0};
  char m[20] = {0};
  char s[20] = {0};
  DateTime now = rtc.now();
  myStunde = now.hour();
  myMinute = now.minute();
  mySekunde = now.second();
  itoa(myStunde, h, 10);
  nexStunde.setValue(myStunde);
  itoa(myMinute, m, 10);
  nexMinute.setValue(myMinute);
  itoa(mySekunde, s, 10);
  nexSekunde.setValue(mySekunde);
}
void showTemp() {
  // Get temperature event and print its value.
  sensors_event_t event;
  dht.temperature().getEvent(&event);
  if (isnan(event.temperature)) {
    Serial.println("Error reading temperature!");
  }
  else {
    Serial.print("Temperature: ");
    Serial.print(event.temperature);
    Serial.println(" *C");
    Temp = (event.temperature);
  }
  nexTemp.setValue(Temp);
}
void bSetupPopCallback(void *ptr) {
  page3.show();
}
void bBackECallback(void *ptr) {
  page0.show();
}
//=================== Uhr stellen =========
void bUhrPopCallback(void *ptr) { // Maske wird aufgerufen
  Funk();
}

//========= Ende Uhr stellen
void bTempPopCallback(void *ptr) {
  page2.show();
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}

void bTHighPopCallback(void *ptr) {
  Uzeiger = 1;
}

void bTLowPopCallback(void *ptr) {
  Uzeiger = 2;
}
void bPlus2PopCallback(void *ptr) {
  if (Uzeiger == 1) F_auf++;
  if (Uzeiger == 2) F_zu++ ;
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}
void bMinus2PopCallback(void *ptr) {
  if (Uzeiger == 1) F_auf--;
  if (Uzeiger == 2) F_zu-- ;
  nexThigh.setValue(F_auf);
  nexTlow.setValue(F_zu);
}
void bBack3PopCallback(void *ptr) {
  Uzeiger = 0;
  page0.show();
}
void Funk() {
  time_t DCFtime = DCF.getTime();
  if (DCFtime != 0) {
    setTime(DCFtime);
    rtc.adjust(DateTime(year(), month(), day(), hour(), minute(), second()));
  }
}

void setup() {
  pinMode(7, OUTPUT);
  digitalWrite(7, LOW);
  DCF.Start();
  dht.begin();
  rtc.begin();
  Uzeiger = 0;
  bSetup.attachPop(bSetupPopCallback, &bSetup);
  bUhr.attachPop(bUhrPopCallback, &bUhr);
  bSekunde.attachPop(bSekundePopCallback, &bSekunde);
  bTemp.attachPop(bTempPopCallback, &bTemp);
  bBackE.attachPop(bBackECallback, &bBackE);
  bBack1.attachPop(bBack1PopCallback, &bBack1);
  bStunde.attachPop(bStundePopCallback, &bStunde);
  bMinute.attachPop(bMinutePopCallback, &bMinute);
  bMinus1.attachPop(bMinus1PopCallback, &bMinus1);
  bPlus1.attachPop(bPlus1PopCallback, &bPlus1);
  bTHigh.attachPop(bTHighPopCallback, &bTHigh);
  bTLow.attachPop(bTLowPopCallback, &bTLow);
  bMinus2.attachPop(bMinus2PopCallback, &bMinus1);
  bPlus2.attachPop(bPlus2PopCallback, &bPlus2);
  bBack3.attachPop(bBack3PopCallback, &bBack3);
  pinMode (ReedPin, INPUT_PULLUP);
  pinMode (Relais1pin, OUTPUT);             // Relais als Output
  pinMode (Relais2pin, OUTPUT);             // Relais als Output
  digitalWrite (Relais1pin, HIGH);
  digitalWrite (Relais2pin, HIGH);
  // Initialize device.

  Serial.println("DHTxx Unified Sensor Example");
  // Print temperature sensor details.
  sensor_t sensor;
  dht.temperature().getSensor(&sensor);
 
  if (! rtc.begin()) {
    Serial.println("Couldn't find RTC");
    while (1);
  }

  if (rtc.lostPower()) {
    Serial.println("RTC lost power, lets set the time!");
    Funk();
  }
  nexInit();
}
void loop() {
  nexLoop(nex_Listen_List);
  Reed = digitalRead(ReedPin);
  showTime();
  showTemp();

  if (Temp <= F_zu && Reed == HIGH) {
    motor_aus();
    motor_links();
    Timer = 1;
  }
  if (Temp >= F_auf && Reed == LOW) {
    Serial.println ("oeffnen");
    motor_aus();
    motor_rechts();
    Timer = 1;
  }
  if (Timer == 1 && (millis() - prev) >= Motor) {
    prev = millis();
    motor_aus();
    Timer = 2;
  }
  if (Timer == 2 && (millis() - prev) >= Cool) {
    prev = millis();
    Timer = 0;
  }
  Serial.print("Reed=");
  Serial.println(Reed);
  Serial.print("Timer =");
  Serial.println(Timer);
  Serial.println("------------------------------------------------------");
  delay(1000);

}

Bitte Link zu den beiden Bibliotheken.
Grüße Uwe

DCF77 Ist Version 1 und über die Arduino IDE installiert

TimeLib V 1.5.0 ist in der Time-Lib. ebenfalls stadndar von der Arduino IDE

Hartig_jue:
DCF77 Ist Version 1 und über die Arduino IDE installiert

TimeLib V 1.5.0 ist in der Time-Lib. ebenfalls stadndar von der Arduino IDE

Das sind keine Links deiner Libraries.
Was glaubst du, wie viel verschiedene Libraries es mit dem selben Namen gibt.
Also bitte Link der verwendeten Libs posten.

ich habe keine LInks weil eben in der IDE Gefunden und eingebunden
die IDE aktualisiert ja immer wenn es neues Versionen gibt o. soll ich die Libs selber irgenwo hochladen ?

von mir hochgeladen: http://workupload.com/file/sFye8FD

Hartig_jue:
ich habe keine LInks weil eben in der IDE Gefunden und eingebunden

Auch wenn Du eine Library über den von der IDE aus startbaren "Bibliotheksverwalter" installiert hast, sollte sich trotzdem herausfinden lassen, um welche Library es sich im Einzelfall handelt.

Schaue ggf. in den Quelltext der installierten .h und .cpp Datei sowie .in die ino Beispiel-Sketche zur Library!

Richtige DCF-Bibliotheken gibt es für Arduino meines Erachtens nach gar nicht so viele, eigentlich fallen mir nur zwei Stück ein:

  • eine ist von Thijs Elenbaas
  • die andere ist von Udo Klein

Und Du willst uns erzählen, Deine installierten Libraries sind absolute Blackboxes, aus denen niemand (und Du schon gar nicht) erkennen kann, um welche Libraries es sich handelt, weil das nur der Bibliotheksverwalter der IDE weiß?

Also die DCF-Library von Thijs Elenbaas hat meines Wissens nach NIE ein Update bekommen, die ist auf dem zuerst veröffentlichten Stand von vor fünf Jahren oder so.

Schau mal nach, ob Dir das hier nicht bekannt vorkommt, einschließlich der Programmnamen der "Examples":

Das wäre allerdings nur eine recht simpel gestrickte Library zum Empfangen und Decodieren von DCF-Signalen, die bereits bei leicht gestörten Signalen dazu neigt, völlig zu versagen, und eine Time-Library zum Umgang mit RTC-Modulen ist da noch nicht enthalten.

DCF77:Arduino Playground - DCF77
RTCLib: GitHub - adafruit/RTClib: A fork of Jeelab's fantastic RTC Arduino library
TimeLib:http://playground.arduino.cc/code/time
Nextion: GitHub - itead/ITEADLIB_Arduino_Nextion
DHT: GitHub - adafruit/DHT-sensor-library: Arduino library for DHT11, DHT22, etc Temperature & Humidity Sensors

fehlt noch was spezielles ?