Subtraktion von 2 UserReadings mit time() > Ergebnis Schrott

Begonnen von hmtec99, 31 Januar 2016, 17:31:32

Vorheriges Thema - Nächstes Thema

hmtec99

Hallo Leute,

bin am Ende mit meiner Weisheit. Ich vermute ein grundsätzliches Verständnisproblem meinerseits was die Trennzeichen der Zeitfunktion betrifft.

Folgende Definition von UserReadings eines Devices

start_pulse:reading:.on { sprintf("%.6f", time())},
stop_pulse:reading:.off { sprintf("%.6f", time())},
pulse_distance:reading:.off { sprintf("%.6f" , {ReadingsVal("US1_Echo","stop_pulse",0)} - {ReadingsVal("US1_Echo","start_pulse",0)})}  << gekürzt

ergibt beispielsweise folgende Werte:

start_pulse = 1454256039.128834
stop_pulse = 1454256039.295958

Als Ergebnis pulse_distance (Name macht Sinn wenn man die ganze Formel betrachtet) hätte ich nun gerne den Wert 0.167124 (oder 0,167124).
Erhalten tue ich irgendwelche Werte, die sich bei jeder Ausführung auch noch ändern (teilweise sogar negativ sind) obwohl die Ausgangswerte gleich
bleiben. Was muß ich anstellen um das gewünschte Ergebnis zu erhalten?

Und noch eine Frage zu time(): Der Wert entspricht einer Zeit seit Zeitpunkt X (in Sekunden?), den das System zurückliefert. Was bedeuten die Stellen
nach den Punkt? Millisekunden? Also z.B. 9.295958 wären dann 9 Sekunden und ein paar zerquetschte? Und wieviele Stellen hat der Rückgabewert der
Funktion von Haus aus, wenn er nicht durch %.Xf begrenzt wird?

Gruß und Danke,

Oli

betateilchen

Das Ergebnis von time() sind normalerweise Sekunden seit 1970 

http://perldoc.perl.org/functions/time.html

Die Nachkommastellen sind wirklich welche.

Aber: ob die Funktion time() überhaupt Nachkommastellen zurückliefert, ist plattform-/betriebssystemabhängig! Du solltest Dich nicht einfach darauf verlassen, dass Du diese Information wirklich immer bekommst. Es sei denn, Du stellst sicher, dass immer Time::HiRes verwendet wird.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

stromer-12

FHEM (SVN) auf RPi1B mit HMser | ESPLink
FHEM (SVN) virtuell mit HMLAN | HMUSB | CUL