ESP-01 programma fout
15 berichten
• Pagina 1 van 2 • 1, 2
ESP-01 programma fout
Hallo allemaal,
Ik ben bezig met een ESP-01 printje, en wil daar een klok op zetten die Internet tijd aanhoudt.
Het programma compileert wel, maar de tijd wordt aangegeven in GMT.
Met andere woorden, de schakelaar geeft wel een goede waarde aan "utcOffsetInSeconden, maar die waarde wordt niet in de tijd meegenomen.
Ik ben niet erg ervaren in programmeren op de ESP / Arduino, maar misschien kan iemand aangeven in welke richting ik moet zoeken.
Ik ben namelijk al dagen bezig en heb van alles geprobeerd, maar niets lukt.
Er is een schakelaar opgenomen tussen de RX pin (3) van de ESP en massa.
Hier volgt de code:
Ik ben bezig met een ESP-01 printje, en wil daar een klok op zetten die Internet tijd aanhoudt.
Het programma compileert wel, maar de tijd wordt aangegeven in GMT.
Met andere woorden, de schakelaar geeft wel een goede waarde aan "utcOffsetInSeconden, maar die waarde wordt niet in de tijd meegenomen.
Ik ben niet erg ervaren in programmeren op de ESP / Arduino, maar misschien kan iemand aangeven in welke richting ik moet zoeken.
Ik ben namelijk al dagen bezig en heb van alles geprobeerd, maar niets lukt.
Er is een schakelaar opgenomen tussen de RX pin (3) van de ESP en massa.
Hier volgt de code:
- Code: Alles selecteren
#include "NTPClient.h"
#include "ESP8266WiFi.h"
#include "WiFiUdp.h"
//#define void Time_zone
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
int dstVal = 0;
int dstPin = 3; // DST switch connected to digital pin 3
int utcOffsetInSeconds = 0;
WiFiUDP ntpUDP;
void Time_zone() // Time zone switch
{
dstVal = digitalRead(dstPin); // read the input pin
{ if (dstVal == 0)
{
utcOffsetInSeconds = 7200; //GMT+2 (DST time.)
}
else
{
utcOffsetInSeconds = 3600; //GMT+1
}
}
}
NTPClient timeClient(ntpUDP, "nl.pool.ntp.org", utcOffsetInSeconds);
void setup() {
pinMode (3, FUNCTION_3); // maakt van de RX pin, een GPIO pin
pinMode (dstPin, INPUT_PULLUP); // sets the digital pin 3 as input
pinMode(0, OUTPUT); // Relay
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.println(" ");
Serial.println(" ");
Serial.print("Connecting to ");
Serial.print(ssid);
while ( WiFi.status() != WL_CONNECTED ) {
Serial.print (".");
delay ( 500 );
digitalWrite(0, HIGH);
}
timeClient.begin();
Serial.println(" WiFi connected.");
Serial.println(" ");
Serial.print("utcOffsetInSeconds = ");
Serial.println(utcOffsetInSeconds);
Serial.print("dstVal = ");
Serial.println(dstVal);
Serial.println(" ");
Serial.println(" ");
}
void loop() {
// Print de tijd op de seriele monitor
Serial.print(" ");
Serial.print(timeClient.getHours());
Serial.print(":");
if (timeClient.getMinutes() < 10) {
Serial.print('0');
}
Serial.print(timeClient.getMinutes());
Serial.print(":");
if (timeClient.getSeconds() < 10) {
Serial.print('0');
}
Serial.println(timeClient.getSeconds());
delay(1000);
}
Advertisement
Re: ESP-01 programma fout
"utcOffsetInSeconds" wordt gewijzigd in de functie Time_zone()
Ik zie echter nergens dat deze functie wordt aangeroepen.
Wordt in de setup wel de juiste waarde geprint???
mvg Nico
Ik zie echter nergens dat deze functie wordt aangeroepen.
Wordt in de setup wel de juiste waarde geprint???
mvg Nico
Re: ESP-01 programma fout
Hoi Nico,
Heel erg bedankt voor je antwoord.
En Ja, de waarden worden wel goed geprint, maar alleen worden ze niet meegenomen in de tijd.
De dstVal is 1 of 0 afhankelijk van de schakelaar, en de utcOffsetInSeconds is 3600 of 7200.
De tijd die aangegeven wordt is echter altijd UTC.
Groet,
Ruud.
Heel erg bedankt voor je antwoord.
En Ja, de waarden worden wel goed geprint, maar alleen worden ze niet meegenomen in de tijd.
De dstVal is 1 of 0 afhankelijk van de schakelaar, en de utcOffsetInSeconds is 3600 of 7200.
De tijd die aangegeven wordt is echter altijd UTC.
Groet,
Ruud.
Re: ESP-01 programma fout
Ik weet niet of ik (Google) de juiste bibliotheek gevonden heb.
Als je het onderstaande in de setup erbij zet werkt het misschien.
Succes Nico
setTimeOffset(utcOffsetInSeconds)
Als je het onderstaande in de setup erbij zet werkt het misschien.
Succes Nico
setTimeOffset(utcOffsetInSeconds)
Re: ESP-01 programma fout
Nee Nico,
Ik krijg dan deze foutmelding:
/home/acme/Arduino/TimeNTP_TEST2_TEST/TimeNTP_TEST2_TEST.ino: In function 'void setup()':
TimeNTP_TEST2_TEST:34:3: error: 'setTimeOffset' was not declared in this scope
34 | setTimeOffset(utcOffsetInSeconds)
| ^~~~~~~~~~~~~
exit status 1
'setTimeOffset' was not declared in this scope
Ik krijg dan deze foutmelding:
/home/acme/Arduino/TimeNTP_TEST2_TEST/TimeNTP_TEST2_TEST.ino: In function 'void setup()':
TimeNTP_TEST2_TEST:34:3: error: 'setTimeOffset' was not declared in this scope
34 | setTimeOffset(utcOffsetInSeconds)
| ^~~~~~~~~~~~~
exit status 1
'setTimeOffset' was not declared in this scope
Re: ESP-01 programma fout
Ik heb dus kenneijk niet de juiste bibliotheek gevonden.
Welke NTPClient bibliotheek gebruik je?
Als ik even tijd heb zal ik verder zoeken.
mvg Nico
Welke NTPClient bibliotheek gebruik je?
Als ik even tijd heb zal ik verder zoeken.
mvg Nico
Re: ESP-01 programma fout
[url]bron: https://werner.rothschopf.net/202011_ar ... ntp_en.htm[/url]
Via bovenstaande link kom je op een pagina met een voorbeeld voor een klok.
Dit voorbeeld werkt bij mij correct.
Het geeft de juiste datum tijd voor vandaag (wintertijd)
Het voorbeeld schakelt automatisch naar zomertijd.
DST en tijdzone worden met parameters gestuurd.
Misschien is dit iets waar je verder mee komt.
m.v.g. Nico
Via bovenstaande link kom je op een pagina met een voorbeeld voor een klok.
Dit voorbeeld werkt bij mij correct.
Het geeft de juiste datum tijd voor vandaag (wintertijd)
Het voorbeeld schakelt automatisch naar zomertijd.
DST en tijdzone worden met parameters gestuurd.
Misschien is dit iets waar je verder mee komt.
m.v.g. Nico
Re: ESP-01 programma fout
volgens mij heb je de schakelaar helemaal niet nodig en hoef je alleen deze regel ertussen te zetten.
// You can specify the time server pool and the offset, (in seconds)
// additionally you can specify the update interval (in milliseconds).
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600);
Oh ja, en ik miste timeClient.update();
Zie ook onderwerp Wemos wifi
// You can specify the time server pool and the offset, (in seconds)
// additionally you can specify the update interval (in milliseconds).
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 3600);
Oh ja, en ik miste timeClient.update();
Zie ook onderwerp Wemos wifi
- Code: Alles selecteren
#include "NTPClient.h"
#include "ESP8266WiFi.h"
#include "WiFiUdp.h"
const char *ssid = "<SSID>";
const char *password = "<PASSWORD>";
/*int dstVal = 0;
int dstPin = 3; // DST switch connected to digital pin 3
int utcOffsetInSeconds = 0;
*/
WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP,3600);
void setup() {
Serial.begin(9600);
WiFi.begin(ssid, password);
Serial.println(" ");
Serial.println(" ");
Serial.print("Connecting to ");
Serial.print(ssid);
while ( WiFi.status() != WL_CONNECTED ) {
Serial.print (".");
delay ( 500 );
digitalWrite(0, HIGH);
}
timeClient.begin();
Serial.println(" WiFi connected.");
Serial.println(" ");
Serial.print("utcOffsetInSeconds = ");
Serial.println(utcOffsetInSeconds);
Serial.print("dstVal = ");
Serial.println(dstVal);
Serial.println(" ");
Serial.println(" ");
}
void loop() {
timeClient.update();
// Print de tijd op de seriele monitor
Serial.println(" ");
Serial.print(timeClient.getHours());
Serial.print(":");
if (timeClient.getMinutes() < 10)
Serial.print('0');
Serial.print(timeClient.getMinutes());
Serial.print(":");
if (timeClient.getSeconds() < 10) {
Serial.print('0');
}
Serial.print(timeClient.getSeconds());
delay(1000);
Re: ESP-01 programma fout
Nico en Frits,
Bedankt voor jullie berichten.
Ik ga er mee aan de slag, en denk hier zeker verder mee te kunnen.
Ik laat jullie de uitkomst weten.
Nogmaals dank,
Ruud.
Bedankt voor jullie berichten.
Ik ga er mee aan de slag, en denk hier zeker verder mee te kunnen.
Ik laat jullie de uitkomst weten.
Nogmaals dank,
Ruud.
Re: ESP-01 programma fout
Ik ben eerst even met het voorstel van Nico bezig geweest, en dat werkt in 1 woord GEWELDIG!
Hier kan ik mee verder.
Ik vraag me alleen af, hoe je kunt zien hoe vaak de tijdserver aangeroepen wordt, want ik heb begrepen dat het niet netjes is om TE vaak de tijd op te vragen.
En @Frits: Volgens mij heb je de code al aangepast, maar moet er dan nog wel "europe.pool.ntp.org" tussen in regel "NTPClient timeClient(ntpUDP,3600);"???
Ik zag namelijk al wel dat je de regel "timeClient.update();" toegevoegd had.
Beiden in ieder geval BEDANKT (in capitals).
Hier kan ik mee verder.
Ik vraag me alleen af, hoe je kunt zien hoe vaak de tijdserver aangeroepen wordt, want ik heb begrepen dat het niet netjes is om TE vaak de tijd op te vragen.
En @Frits: Volgens mij heb je de code al aangepast, maar moet er dan nog wel "europe.pool.ntp.org" tussen in regel "NTPClient timeClient(ntpUDP,3600);"???
Ik zag namelijk al wel dat je de regel "timeClient.update();" toegevoegd had.
Beiden in ieder geval BEDANKT (in capitals).
15 berichten
• Pagina 1 van 2 • 1, 2
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 5 gasten