From 097fe1830db32a01dec57ec28168e094c1fd6941 Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Thu, 24 Nov 2022 09:55:11 +0000 Subject: [PATCH] MQTT2_SERVER/CLIENT: Add timestamp to MQTT traffic (Forum #127223) git-svn-id: https://svn.fhem.de/fhem/trunk@26742 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_MQTT2_CLIENT.pm | 4 +++- fhem/FHEM/00_MQTT2_SERVER.pm | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/00_MQTT2_CLIENT.pm b/fhem/FHEM/00_MQTT2_CLIENT.pm index 9c503ca39..5d8619900 100644 --- a/fhem/FHEM/00_MQTT2_CLIENT.pm +++ b/fhem/FHEM/00_MQTT2_CLIENT.pm @@ -741,13 +741,15 @@ MQTT2_CLIENT_feedTheList($$$) my ($server, $tp, $val, $cid) = @_; my $fl = $server->{".feedList"}; if($fl) { + my $now = gettimeofday(); + my $ts = sprintf("%s.%03d", FmtTime($now), 1000*($now-int($now))); foreach my $fwid (keys %{$fl}) { my $cl = $FW_id2inform{$fwid}; if(!$cl || !$cl->{inform}{filter} || $cl->{inform}{filter} ne '^$') { delete($fl->{$fwid}); next; } - FW_AsyncOutput($cl, "", toJSON([defined($cid)?"RCVD":"SENT", $tp,$val])); + FW_AsyncOutput($cl,"",toJSON([$ts,defined($cid)?"RCVD":"SENT",$tp,$val])); } delete($server->{".feedList"}) if(!keys %{$fl}); } diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm index 59417f679..c0fcc387e 100644 --- a/fhem/FHEM/00_MQTT2_SERVER.pm +++ b/fhem/FHEM/00_MQTT2_SERVER.pm @@ -539,12 +539,12 @@ MQTT2_SERVER_doPublish($$$$;$) my ($src, $server, $tp, $val, $retain) = @_; $val = "" if(!defined($val)); $src = $server if(!defined($src)); + my $now = gettimeofday(); if($retain) { if(!defined($val) || $val eq "") { delete($server->{retain}{$tp}); } else { - my $now = gettimeofday(); my %h = ( ts=>$now, val=>$val ); $server->{retain}{$tp} = \%h; } @@ -554,7 +554,7 @@ MQTT2_SERVER_doPublish($$$$;$) my %nots = map { $_ => $server->{retain}{$_}{val} } keys %{$server->{retain}}; my $rname = AttrVal($server->{NAME}, "hideRetain", 0) ? ".RETAIN":"RETAIN"; - setReadingsVal($server, $rname, toJSON(\%nots),FmtDateTime(gettimeofday())); + setReadingsVal($server, $rname, toJSON(\%nots),FmtDateTime($now)); } foreach my $clName (keys %{$server->{clients}}) { @@ -583,13 +583,14 @@ MQTT2_SERVER_doPublish($$$$;$) my $fl = $server->{".feedList"}; if($fl) { + my $ts = sprintf("%s.%03d", FmtTime($now), 1000*($now-int($now))); foreach my $fwid (keys %{$fl}) { my $cl = $FW_id2inform{$fwid}; if(!$cl || !$cl->{inform}{filter} || $cl->{inform}{filter} ne '^$') { delete($fl->{$fwid}); next; } - FW_AsyncOutput($cl, "", toJSON([defined($cid)?$cid:"SENT", $tp, $val])); + FW_AsyncOutput($cl, "", toJSON([$ts,defined($cid)?$cid:"SENT",$tp,$val])); } delete($server->{".feedList"}) if(!keys %{$fl}); }