diff --git a/fhem/FHEM/00_MQTT2_SERVER.pm b/fhem/FHEM/00_MQTT2_SERVER.pm index a88bb92fb..e13ffa415 100644 --- a/fhem/FHEM/00_MQTT2_SERVER.pm +++ b/fhem/FHEM/00_MQTT2_SERVER.pm @@ -154,7 +154,7 @@ MQTT2_SERVER_Set($@) if($a[0] eq "publish") { shift(@a); my $retain; - if(@a>2 && $a[0] eq "-r") { + if(@a>1 && $a[0] eq "-r") { $retain = 1; shift(@a); } @@ -405,9 +405,14 @@ MQTT2_SERVER_doPublish($$$$;$) $src = $server if(!defined($src)); if($retain) { - my $now = gettimeofday(); - my %h = ( ts=>$now, val=>$val ); - $server->{retain}{$tp} = \%h; + if(!defined($val) || $val eq "") { + delete($server->{retain}{$tp}); + } else { + my $now = gettimeofday(); + my %h = ( ts=>$now, val=>$val ); + $server->{retain}{$tp} = \%h; + } + # Save it my %nots = map { $_ => $server->{retain}{$_}{val} }