diff --git a/src/chat_control.py b/src/chat_control.py
index 47865d7e6f2c006d0cfe8f1a3b50735e6b7ca97b..5975749c7b37b0136b328dd80618aa5613744ca2 100644
--- a/src/chat_control.py
+++ b/src/chat_control.py
@@ -208,11 +208,6 @@ class ChatControlBase(MessageControl, ChatCommandProcessor, CommandTools):
             return
         self.print_conversation(_('Ping?'), 'status')
 
-    def _nec_ping_reply(self, obj):
-        if self.contact != obj.contact:
-            return
-        self.print_conversation(_('Pong! (%s s.)') % obj.seconds, 'status')
-
     def _nec_ping_error(self, obj):
         if self.contact != obj.contact:
             return
@@ -2850,6 +2845,15 @@ class ChatControl(ChatControlBase):
             return
         self.update_ui()
 
+    def _nec_ping_reply(self, obj):
+        if obj.control:
+            if obj.control != self:
+                return
+        else:
+            if self.contact != obj.contact:
+                return
+        self.print_conversation(_('Pong! (%s s.)') % obj.seconds, 'status')
+
     def set_control_active(self, state):
         ChatControlBase.set_control_active(self, state)
         # send chatstate inactive to the one we're leaving
diff --git a/src/command_system/implementation/standard.py b/src/command_system/implementation/standard.py
index 3994eae5903e786070fc60b3d9c6799a0c28c7bc..f853d593f10398cd83f11d637435c69512fcd731 100644
--- a/src/command_system/implementation/standard.py
+++ b/src/command_system/implementation/standard.py
@@ -410,3 +410,12 @@ class StandardGroupChatCommands(CommandContainer):
     @doc(_("Allow an occupant to send you public or private messages"))
     def unblock(self, who):
         self.on_unblock(None, who)
+
+    @command
+    @doc(_("Send a ping to the contact"))
+    def ping(self, nick):
+        if self.account == gajim.ZEROCONF_ACC_NAME:
+            raise CommandError(_('Command is not supported for zeroconf accounts'))
+        gc_c = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick)
+        gajim.connections[self.account].sendPing(gc_c, self)
+
diff --git a/src/common/connection.py b/src/common/connection.py
index 5fbe913a25181cfce105e180e256e4d2ee85726a..a1353e8af8ebc7795bfbaddda27ab9d7aca56f01 100644
--- a/src/common/connection.py
+++ b/src/common/connection.py
@@ -1551,10 +1551,11 @@ class Connection(CommonConnection, ConnectionHandlers):
         assert id_ == self.awaiting_xmpp_ping_id
         self.awaiting_xmpp_ping_id = None
 
-    def sendPing(self, pingTo=None):
+    def sendPing(self, pingTo=None, control=None):
         """
         Send XMPP Ping (XEP-0199) request. If pingTo is not set, ping is sent to
         server to detect connection failure at application level
+        If control is set, display result there
         """
         if not gajim.account_is_connected(self.name):
             return
@@ -1577,7 +1578,7 @@ class Connection(CommonConnection, ConnectionHandlers):
                 return
             timeDiff = round(timePong - timePing, 2)
             gajim.nec.push_incoming_event(PingReplyEvent(None, conn=self,
-                contact=pingTo, seconds=timeDiff))
+                contact=pingTo, seconds=timeDiff, control=control))
         if pingTo:
             timePing = time_time()
             self.connection.SendAndCallForResponse(iq, _on_response)
diff --git a/src/groupchat_control.py b/src/groupchat_control.py
index a2eb20b1843014eebe584825105f2e2c18424a43..a0938bbb2661561606eaa28265ff1489544680e3 100644
--- a/src/groupchat_control.py
+++ b/src/groupchat_control.py
@@ -1375,6 +1375,15 @@ class GroupchatControl(ChatControlBase):
                     obj.xhtml, self.session, msg_id=obj.msg_id,
                     encrypted=obj.encrypted, displaymarking=obj.displaymarking)
 
+    def _nec_ping_reply(self, obj):
+        if obj.control:
+            if obj.control != self:
+                return
+        else:
+            if self.contact != obj.contact:
+                return
+        self.print_conversation(_('Pong! (%s s.)') % obj.seconds)
+
     def got_connected(self):
         # Make autorejoin stop.
         if self.autorejoin: