OT: Web-Server (ESP8266) die Uhrzeit von einem Clie nt Ăźber

M

Marte Schwarz

Guest
Hallo zusammen,

ist nicht bei mir, sondern bei einem Mitarbeiter. Er hat auf einem
ESP8266 einen lokalen Webnserver laufen, Ăźber den dieser seine Messdaten
an ein Händi oder eben auch Schläptop ausgibt. Da die Uhr des ESP8266
hinreichend ungenau geht und eine zusätzliche Echtzeituhr vermieden
werden soll, hatte ich die Idee, doch die Uhrzeit des abholenden Clients
zu verwenden. Mein Mitarbeiter meinte, das gehe nicht. Wirklich?

Ich habe keinen Plan von HTML und ähnlichem, was man so auf der
Serverseite treiben kann. Ist hier jemand, der das bestätigen kann?

Bitte keine Grundsatzdiskussionen Ăźber Zeitserver und Co. Das Teil soll
nicht in Internet uns auch keine Dienste daraus in Anspruch nehmen. Das
ist Vorgabe, dass der 8266 der Webserver stellt und man sich mit einem
Client via Browser dran einklinkt. Nicht mehr und auch nicht weniger.

Vielen Dank

Marte
 
Am 24.01.20 um 23:18 schrieb Marte Schwarz:

ist nicht bei mir, sondern bei einem Mitarbeiter. Er hat auf einem
ESP8266 einen lokalen Webnserver laufen, Ăźber den dieser seine Messdaten
an ein Händi oder eben auch Schläptop ausgibt. Da die Uhr des ESP8266
hinreichend ungenau geht und eine zusätzliche Echtzeituhr vermieden
werden soll, hatte ich die Idee, doch die Uhrzeit des abholenden Clients
zu verwenden. Mein Mitarbeiter meinte, das gehe nicht. Wirklich?

Ich habe keinen Plan von HTML und ähnlichem, was man so auf der
Serverseite treiben kann. Ist hier jemand, der das bestätigen kann?

Mein OpenWRT hat im Webinterface fßr die Uhrzeit eine Schaltfläche "Sync
with browser", womit die Uhrzeit des Routers nach der des Systems mit
dem Webbrowser gestellt wird, insofern sollte das schon irgendwie gehen.

Hanno

--
Nie irgendwas von Ulf Kutzner glauben, insbesondere Zitate immer im
Original und Kontext nachlesen. Er versucht, durch Zitatefälschung
Strohmann-Argumente zu konstruieren.
 
Am 24.01.2020 um 23:18 schrieb Marte Schwarz:
Hallo zusammen,

ist nicht bei mir, sondern bei einem Mitarbeiter. Er hat auf einem
ESP8266 einen lokalen Webnserver laufen, Ăźber den dieser seine Messdaten
an ein Händi oder eben auch Schläptop ausgibt. Da die Uhr des ESP8266
hinreichend ungenau geht und eine zusätzliche Echtzeituhr vermieden
werden soll, hatte ich die Idee, doch die Uhrzeit des abholenden Clients
zu verwenden. Mein Mitarbeiter meinte, das gehe nicht. Wirklich?

Ich arbeite auch nicht selber mit dem ESP8266, aber einer meiner Azubis.
Er hatte gerade ein änliches Problem.

Der ESP kommuniziert bei uns mit einer My-SQL Datenbank auf einem Linux
Server. Von dort bekommt er auch die Uhrzeit, also er bekommt auf
Anfrage ein Datentelegramm mit der aktuellen Uhrzeit des Servers. Damit
wird die interne Uhr des ESP synchronisiert.

Problem dabei ist, dass die interne Uhr des ESP wegläuft wenn die
Netzverbindung ausfällt. Um das Problem zu lÜsen hat er dann eine
Echtzeituhr eingebaut. Gibts als fertiges Modul mit I2C.

Ich habe keinen Plan von HTML und ähnlichem, was man so auf der
Serverseite treiben kann. Ist hier jemand, der das bestätigen kann?

Ich auch nur minimal. Aber zumindest soviel um zu sagen, dass das was du
willst durchaus machbar ist. Mein Azubi bekommt es jedenfalls hin.

Bitte keine Grundsatzdiskussionen Ăźber Zeitserver und Co. Das Teil soll
nicht in Internet uns auch keine Dienste daraus in Anspruch nehmen. Das
ist Vorgabe, dass der 8266 der Webserver stellt und man sich mit einem
Client via Browser dran einklinkt. Nicht mehr und auch nicht weniger.

Wir machen es anders rum, d.h. der ESP kommuniziert mit einem Server und
der Client ruft eine Website auf, die auf dem Server liegt.

Auch auch bei eurem Konzept sollte der Client die Uhrzeit senden kĂśnnen.
 
On 1/25/20 8:17 AM, Stefan wrote:

Der ESP kommuniziert bei uns mit einer My-SQL Datenbank auf einem Linux
Server. Von dort bekommt er auch die Uhrzeit, also er bekommt auf
Anfrage ein Datentelegramm mit der aktuellen Uhrzeit des Servers. Damit
wird die interne Uhr des ESP synchronisiert.

Das ist ein ziemlich komplizierter Weg. Einfacher wäre gewesen das alte
'time' Protocol auf dem Server zu aktivieren. Dann reicht ein 'telnet
<server> 37' und schon hat er die Zeit.

Gerrit
 
Hi Stefan,
ESP8266 einen lokalen Webnserver laufen, Ăźber den dieser seine
Messdaten an ein Händi oder eben auch Schläptop ausgibt. Da die Uhr
des ESP8266 hinreichend ungenau geht und eine zusätzliche Echtzeituhr
vermieden werden soll, hatte ich die Idee, doch die Uhrzeit des
abholenden Clients zu verwenden. Mein Mitarbeiter meinte, das gehe
nicht. Wirklich?

Der ESP kommuniziert bei uns mit einer My-SQL Datenbank auf einem Linux
Server. Von dort bekommt er auch die Uhrzeit, also er bekommt auf
Anfrage ein Datentelegramm mit der aktuellen Uhrzeit des Servers. Damit
wird die interne Uhr des ESP synchronisiert.

So ähnlich wollten wir das auch, nur eben mit dem Unterschied, dass der
ESP der Server ist.

Problem dabei ist, dass die interne Uhr des ESP wegläuft wenn die
Netzverbindung ausfällt.

Eben deswegen soll ja beim Abruf der Daten die Uhrzeit korrigiert
werden. Das wird bei uns alle paar Tage sein. Die Abweichungen bis dahin
sind nicht tragisch, aber sie sollte eben bei gelegenheit angepasst
werden kĂśnnen. MĂśglicherweise kann man dann auf dem ESP einen
Korrekturfaktor berechnen, der die Abweichungen kleiner werden läßt. So
hatte ich das in den frĂźhen 90ern beim 286-Rechner gemacht, dessen
Echtzeituhr sehr ungenau war. Beim Start die Uhr nachgestellt, einen
Korrekturwert berechnet und das immer wieder. nach ein paar Wochen lief
das recht genau.

Um das Problem zu lĂśsen hat er dann eine
Echtzeituhr eingebaut. Gibts als fertiges Modul mit I2C.

Bei uns ist das in erster Linie ein Platzproblem. Wir haben schon das
kleinste ESP8266 Modul im Einsatz und das ist noch eher zu groß.

Wir machen es anders rum, d.h. der ESP kommuniziert mit einem Server und
der Client ruft eine Website auf, die auf dem Server liegt.

So herum ist es trivial, das steht in jedem zweiten Tutorial zum ESP,
wie das geht.

Marte
 
Marte Schwarz schrieb:

Da die Uhr des ESP8266
hinreichend ungenau geht und eine zusätzliche Echtzeituhr vermieden
werden soll, hatte ich die Idee, doch die Uhrzeit des abholenden Clients
zu verwenden. Mein Mitarbeiter meinte, das gehe nicht. Wirklich?

Nein. FĂźr eine im Browser geladene Webseite ist es (Ăźber Date.now())
trivial, Datum und Uhrzeit des Rechners zu erfahren, auf dem der Browser
läuft. Ebenso einfach ist es fßr die Webseite (Stichwort XHR) eine
HTTP-Anfrage beim Server fĂźr eine bestimmte URL mit beliebigen
Parametern auszulĂśsen, in diesem Fall eben mit dem Ergebnis von Date.now().

Wie der Server die Anfrage verarbeiten muss, um die Uhr zu stellen,
hängt davon ab, wie Ihr den Webserver auf dem ESP8266 implementiert
habt. Sicherlich wird der Server Callbacks anbieten, wenn eine bestimmte
URL aufgerufen wird.

Dass man (wenn man keine weitere Absicherung einbaut) Ăźber diese URL
Datum und Uhrzeit des Servers beliebig manipulieren kann, ist Dir sicher
bewusst.

Christian
--
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
 
Hi Christian,
Marte Schwarz schrieb:

Da die Uhr des ESP8266
hinreichend ungenau geht und eine zusätzliche Echtzeituhr vermieden
werden soll, hatte ich die Idee, doch die Uhrzeit des abholenden Clients
zu verwenden. Mein Mitarbeiter meinte, das gehe nicht. Wirklich?

Nein. FĂźr eine im Browser geladene Webseite ist es (Ăźber Date.now())
trivial, Datum und Uhrzeit des Rechners zu erfahren, auf dem der Browser
läuft. Ebenso einfach ist es fßr die Webseite (Stichwort XHR) eine
HTTP-Anfrage beim Server fĂźr eine bestimmte URL mit beliebigen
Parametern auszulĂśsen, in diesem Fall eben mit dem Ergebnis von Date.now().

Vielen Dank, ich geb das mal so weiter. Klingt sehr konstruktiv.

Dass man (wenn man keine weitere Absicherung einbaut) Ăźber diese URL
Datum und Uhrzeit des Servers beliebig manipulieren kann, ist Dir sicher
bewusst.

Damit kann ich gut leben. Das Teil geht ja nicht in Internet. Es ist ein
lokaler Sensor, der seine Daten an einen Client weitergibt, der sich mit
ihm als Server verbindet und die html-Seite abruft, Ăźber die er
konfiguriert werden kann und auf einer anderen Seite die Messwerte der
Vergangenen Tage zur VerfĂźgung stellt. Diese kĂśnnen dann heruntergeladen
werden, stehen aber auch direkt im Browser bereits graphisch aufbereitet
zur VerfĂźgung. Schon aus EnergieeinspargrĂźnden ist die WLAN-Einheit
mitsamt Webserver nur dann aktiv, wenn man den Sensor (nach spätestens
einer Woche Betrieb in die Ladeschale steckt (induktives Laden) und
selbst dann auch nur in einem 15 Minuten Zeitfenster. Dabei hätte ich es
gerne, dass der ESP die Uhrzeit vom Client ausliest udn Ăźbernimmt, ohne
dass man weiter etwas unternehmen mĂźsste. Der Client wird in 9x% aller
Fälle ein Schlaufon sein, das in der Regel seine Uhrzeit aus dem Netz
bezieht, also denkbar unwahrscheinlich, dass da etwas falsch läuft. Da
außer den Messdaten auch keine Daten abzugreifen sind und die meisten
Menschen mit den Daten auch nichts anzufangen wĂźssten, halte ich das
Angriffs- und Manipulationsrisiko fĂźr Ăźberschaubar.

Marte
 
Marte Schwarz schrieb:

Nein. FĂźr eine im Browser geladene Webseite ist es (Ăźber Date.now())
trivial, Datum und Uhrzeit des Rechners zu erfahren, auf dem der Browser
läuft. Ebenso einfach ist es fßr die Webseite (Stichwort XHR) eine
HTTP-Anfrage beim Server fĂźr eine bestimmte URL mit beliebigen
Parametern auszulĂśsen, in diesem Fall eben mit dem Ergebnis von Date.now().

Vielen Dank, ich geb das mal so weiter. Klingt sehr konstruktiv.

Schnell herunter getippte Minimalimplementierung:
<https://www.chzsoft.de/storage/timetest.html>.

Was fehlt: 1. Fehlerbehandlung: Die Antwort des Servers wird nicht
ausgewertet. 2. Serverseitiger Code: Der Server muss beim Aufruf der
timeset-URL seine Uhr stellen. (NatĂźrlich stellt mein Server hier nicht
seine Uhr um.)

Grüße
Christian
--
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x52CB97F66DA025CA / 0x6DA025CA
 

Welcome to EDABoard.com

Sponsor

Back
Top