FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Elektrolurch am 16 Juni 2014, 10:07:18

Titel: Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: Elektrolurch am 16 Juni 2014, 10:07:18
Hallo,

habe folgendes Problem:
Ich benutze manche fs20 - Schalter, in dem sie nicht direkt das/die Geräte ansteuern, sondern das der request über fhem läuft. Da ich zwei Antennen habe, kommt das event des Schalters auch zweimal an.
Das wäre nun kein so großes Problem:

my $dt = time() - time_str2num(OldTimestamp('device'));
return undef if($dt <= 1);

Somit wird das zweite Funksignal der Antennen ignoriert.
Nun möchte ich aber auch, bzw. habe das auch schon so im Betrieb, den "Doppelklick" am Schalter zulassen, d.h. kurzes zweimaliges Drücken des Schalters tut dann was anderes, als einfaches Drücken.
Mit der obigen Abfrage darf das zweite Drücken aber erst nach mind. 2 Sekunden kommen, sonst wird es ignoriert. 2 Sekunden ist aber für einen "Doppelklick" zu lang.
Der zeitliche Abstand der beiden Funksignale ist aber nur (sicher) im Millisekunden-Bereich.
fhem kennt aber als kleinste Zeiteinheit nur 1 Sekunde.

Nun meine Frage:
Ich meine, dass ich irgendwo vor einiger Zeit mal gelesen habe, dass man fhem so umstellen kann, dass es auch 0.1 Sekunden als minimale Zeit kann.
Aber ich kann es beim besten Suchen (bevor ich gleich hier wieder den Verweis auf "Such mal schön" bekomme), nicht finden.
Wenn dies möglich ist, auf welche Funktionen wirkt sich dies dann aus?
Alle Timestamps, auch time()?

Gruß


Elektrolurch


Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: der-Lolo am 16 Juni 2014, 11:23:44
es gibt das attribut mseclog - ich glaube das wirkt sich aber nur auf filelog aus...
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: Elektrolurch am 16 Juni 2014, 12:04:19
Wahrscheinlich hatte ich das auch irgendwo gesehen...
...daraus folgt aber, dass es intern wohl Millisekunden gibt. Nur wie kommt man da ran?
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: betateilchen am 16 Juni 2014, 12:20:38
Zitat von: Elektrolurch am 16 Juni 2014, 10:07:18
Wenn dies möglich ist, auf welche Funktionen wirkt sich dies dann aus?
Alle Timestamps, auch time()?

time liefert doch timestamps (in Sekunden!) ohnehin mit 5 Nachkommastellen, das sollte normalerweise ausreichen.
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: justme1968 am 16 Juni 2014, 12:49:56
ob time() nachkomma stellen liefert hängt von der plattform (und der perl version?) ab. auf dem mac liefert es z.b. keine nackomma stellen. dokumentiert ist nur das es die anzahl der sekunden liefert.

eine höhere auflösung bekommst du z.b. mit:
my ($seconds, $microseconds) = gettimeofday();das ist auch was mseclog verwendet.

gruss
  andre
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: Elektrolurch am 16 Juni 2014, 13:28:13
Okay:
my ($seconds, $microseconds) = gettimeofday();
das ist auch was mseclog verwendet.

aber was ist mit ReadingsTimestamp und OldTimestamp?

Ich müsste dann ja eigene Zeitstempel als Readings hinterlegen, wenn die o.g. Funktionen weiterhin nur Sekunden liefern.
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: betateilchen am 16 Juni 2014, 13:30:02
Zitat von: Elektrolurch am 16 Juni 2014, 13:28:13
Ich müsste dann ja eigene Zeitstempel als Readings hinterlegen, wenn die o.g. Funktionen weiterhin nur Sekunden liefern.

so siehts aus.
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: justme1968 am 16 Juni 2014, 13:46:16
schau dir mal sequence an. das kommt auch mit timeouts von < 1 sekunde zurecht.

gruss
  andre
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: P.A.Trick am 18 Juni 2014, 00:39:16
André, funktioniert das auch mit Homematic?
Titel: Antw:Zeit - Genauigkeit in fhem - Wie besser als 1 Sekunde?
Beitrag von: epsrw1 am 18 Juni 2014, 01:24:13
use Time::HiRes; ?
man müßte mal in den code reinschauen in welchem kontext time aufgerufen wird, ob die nachkommastellen nicht ohnehin ignoriert werden.
habe leider weder ahnung vom fraglichen modul noch testhardware zur verfügung. beim code helfe ich gerne ;)
florian