<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://ess-wiki.advantech.com.tw/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winston</id>
		<title>ESS-WIKI - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://ess-wiki.advantech.com.tw/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Winston"/>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/view/Special:Contributions/Winston"/>
		<updated>2026-05-02T11:18:38Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.3</generator>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2319</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2319"/>
				<updated>2016-08-01T09:36:35Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Client Site - Check by Sefl */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Node-Red for Test Case&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:SendDisconnectMsg.txt|Send Disconnect Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB DropMsg.txt|Drop Connect / Disconnect / AdvHeartBeat Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckVersion.txt|Check version of Agent]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckPeriod.txt|Check period of AdvHeartBeat rate]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB Get Set Param Re-Connect Get Capability.txt|Get / Set AdvHeartBeat Params Get Capability, Re-Connect]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2318</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2318"/>
				<updated>2016-08-01T08:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Test Case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Node-Red for Test Case&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:SendDisconnectMsg.txt|Send Disconnect Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB DropMsg.txt|Drop Connect / Disconnect / AdvHeartBeat Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckVersion.txt|Check version of Agent]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckPeriod.txt|Check period of AdvHeartBeat rate]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB Get Set Param Re-Connect Get Capability.txt|Get / Set AdvHeartBeat Params Get Capability, Re-Connect]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2317</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2317"/>
				<updated>2016-08-01T08:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Node-Red flow for Test Case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
==Node-Red flow for Test Case==&lt;br /&gt;
[[Media:SendDisconnectMsg.txt|Send Disconnect Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB DropMsg.txt|Drop Connect / Disconnect / AdvHeartBeat Msg]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckVersion.txt|Check version of Agent]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB CheckPeriod.txt|Check period of AdvHeartBeat rate]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Media:HB Get Set Param Re-Connect Get Capability.txt|Get / Set AdvHeartBeat Params Get Capability, Re-Connect]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2316</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2316"/>
				<updated>2016-08-01T08:50:58Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Node-Red flow for Test Case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
==Node-Red flow for Test Case==&lt;br /&gt;
[[Media:SendDisconnectMsg.txt|Send Disconnect Msg]]&lt;br /&gt;
[[Media:HB DropMsg.txt|Drop Connect / Disconnect / AdvHeartBeat Msg]]&lt;br /&gt;
[[Media:HB CheckVersion.txt|Check version of Agent]]&lt;br /&gt;
[[Media:HB CheckPeriod.txt|Check period of AdvHeartBeat rate]]&lt;br /&gt;
[[Media:HB Get Set Param Re-Connect Get Capability.txt|Get / Set AdvHeartBeat Params Get Capability, Re-Connect]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_Get_Set_Param_Re-Connect_Get_Capability.txt&amp;diff=2315</id>
		<title>File:HB Get Set Param Re-Connect Get Capability.txt</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_Get_Set_Param_Re-Connect_Get_Capability.txt&amp;diff=2315"/>
				<updated>2016-08-01T08:49:39Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_CheckPeriod.txt&amp;diff=2314</id>
		<title>File:HB CheckPeriod.txt</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_CheckPeriod.txt&amp;diff=2314"/>
				<updated>2016-08-01T08:49:12Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_CheckVersion.txt&amp;diff=2313</id>
		<title>File:HB CheckVersion.txt</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_CheckVersion.txt&amp;diff=2313"/>
				<updated>2016-08-01T08:48:42Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_DropMsg.txt&amp;diff=2312</id>
		<title>File:HB DropMsg.txt</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_DropMsg.txt&amp;diff=2312"/>
				<updated>2016-08-01T08:47:23Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2311</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2311"/>
				<updated>2016-08-01T08:44:09Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Integration Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
==Node-Red flow for Test Case==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_SendDisconnectMsg.txt&amp;diff=2310</id>
		<title>File:HB SendDisconnectMsg.txt</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:HB_SendDisconnectMsg.txt&amp;diff=2310"/>
				<updated>2016-08-01T08:42:54Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2309</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2309"/>
				<updated>2016-08-01T08:42:38Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Test Result */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Media:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2308</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2308"/>
				<updated>2016-08-01T08:42:00Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Integration Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test Result&amp;lt;/span&amp;gt;===&lt;br /&gt;
[[Medai:Connection Reliability v1 Test Result20160801.xlsx|V1 Test Result 20160801 Excel]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:ConnectionReliability v1 Test result.jpg|800x600px|Test result of v1]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:ConnectionReliability_v1_Test_result.jpg&amp;diff=2307</id>
		<title>File:ConnectionReliability v1 Test result.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:ConnectionReliability_v1_Test_result.jpg&amp;diff=2307"/>
				<updated>2016-08-01T08:39:52Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:Connection_Reliability_v1_Test_Result20160801.xlsx&amp;diff=2306</id>
		<title>File:Connection Reliability v1 Test Result20160801.xlsx</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:Connection_Reliability_v1_Test_Result20160801.xlsx&amp;diff=2306"/>
				<updated>2016-08-01T08:38:33Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2305</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2305"/>
				<updated>2016-08-01T08:36:38Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Test Case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
[[File:ConnectionReliability Testing Env.jpg|800x600px|Overview of Testing]]&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2304</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2304"/>
				<updated>2016-08-01T08:35:32Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Test Case */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==Overview of Testing==&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:ConnectionReliability_Testing_Env.jpg&amp;diff=2303</id>
		<title>File:ConnectionReliability Testing Env.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:ConnectionReliability_Testing_Env.jpg&amp;diff=2303"/>
				<updated>2016-08-01T08:34:22Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2302</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2302"/>
				<updated>2016-08-01T07:10:49Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Network Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=MI3.1_Standard_Image_V1.0.1_Porting_SOP&amp;diff=2293</id>
		<title>MI3.1 Standard Image V1.0.1 Porting SOP</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=MI3.1_Standard_Image_V1.0.1_Porting_SOP&amp;diff=2293"/>
				<updated>2016-07-29T01:23:36Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* For Quark Memeory Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prepare=&lt;br /&gt;
#Ubuntu 14.04 x64 develop host installed with MI3.1 WindRiver workbench&lt;br /&gt;
#4GB USB Flash&lt;br /&gt;
#Porting Target ( ex: UTX-3115 )&lt;br /&gt;
&lt;br /&gt;
=SOP for Porting=&lt;br /&gt;
#MI3.1_Pro_Config_V1.sh barytail 0014&lt;br /&gt;
#make fs&lt;br /&gt;
#sudo ./deploy.sh -u -f ./export/intel -d /dev/sdx -y; sync&lt;br /&gt;
#Insert Target platform and boot up  -&amp;gt; root/root&lt;br /&gt;
#copy modem_cell_default to /etc/.&lt;br /&gt;
#copy usb-modem.sh to /&lt;br /&gt;
#copy ar3k.zip to /lib/firmware/ &amp;amp; unzip ar3k.zip&lt;br /&gt;
#RD Verify &amp;amp; HW Functional Test&lt;br /&gt;
#sudo dd if=/dev/sdm of=./IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img bs=4M; sync&lt;br /&gt;
#md5sum IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img &amp;gt; IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.md5&lt;br /&gt;
#gzip IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img&lt;br /&gt;
#md5sum IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.gz &amp;gt; IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.gz.md5&lt;br /&gt;
&lt;br /&gt;
=Double Confirm=&lt;br /&gt;
#gunzip IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img	&lt;br /&gt;
#dd if=./IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img of=/dev/sdx bs=4M; sync&lt;br /&gt;
#Insert Target platform and boot up&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
== BIOS Setting for Baytrail and Haswell platforms ==&lt;br /&gt;
#BIOS -&amp;gt; Advanced / Miscellaneous Configuration / OS Selection -&amp;gt; Windows 8.X  &lt;br /&gt;
#MI3.1 image needs boot from UEFI mode =&amp;gt; Boot / Boot mode select [UEFI]&lt;br /&gt;
#If user want to support Secure boot =&amp;gt; Please disable CSM and enable Secure boot in BIOS setting.&lt;br /&gt;
&lt;br /&gt;
==For Quark Memeory Configuration==       &lt;br /&gt;
./layers/wr-bsps/intel-quark/recipes-support/spi-layout-tools/files/platform-data/clantonhill-platform-data.ini&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This spi flash binary without ini configuration&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
./bitbake_build/tmp/work/x86_64-linux/spi-layout-tools/1.2.0-r0/spi-flash-tools_v1.2.0/sysimage-clantonhill/Flash-missingPDAT.bin&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=MI3.1_Standard_Image_V1.0.1_Porting_SOP&amp;diff=2292</id>
		<title>MI3.1 Standard Image V1.0.1 Porting SOP</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=MI3.1_Standard_Image_V1.0.1_Porting_SOP&amp;diff=2292"/>
				<updated>2016-07-28T05:27:23Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* For Quark Memeory Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Prepare=&lt;br /&gt;
#Ubuntu 14.04 x64 develop host installed with MI3.1 WindRiver workbench&lt;br /&gt;
#4GB USB Flash&lt;br /&gt;
#Porting Target ( ex: UTX-3115 )&lt;br /&gt;
&lt;br /&gt;
=SOP for Porting=&lt;br /&gt;
#MI3.1_Pro_Config_V1.sh barytail 0014&lt;br /&gt;
#make fs&lt;br /&gt;
#sudo ./deploy.sh -u -f ./export/intel -d /dev/sdx -y; sync&lt;br /&gt;
#Insert Target platform and boot up  -&amp;gt; root/root&lt;br /&gt;
#copy modem_cell_default to /etc/.&lt;br /&gt;
#copy usb-modem.sh to /&lt;br /&gt;
#copy ar3k.zip to /lib/firmware/ &amp;amp; unzip ar3k.zip&lt;br /&gt;
#RD Verify &amp;amp; HW Functional Test&lt;br /&gt;
#sudo dd if=/dev/sdm of=./IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img bs=4M; sync&lt;br /&gt;
#md5sum IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img &amp;gt; IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.md5&lt;br /&gt;
#gzip IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img&lt;br /&gt;
#md5sum IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.gz &amp;gt; IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img.gz.md5&lt;br /&gt;
&lt;br /&gt;
=Double Confirm=&lt;br /&gt;
#gunzip IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img	&lt;br /&gt;
#dd if=./IDP_MI3.1_7.0.0.14_x64_ARK-1123H_V1.0.1_20160530.img of=/dev/sdx bs=4M; sync&lt;br /&gt;
#Insert Target platform and boot up&lt;br /&gt;
&lt;br /&gt;
=Note=&lt;br /&gt;
== BIOS Setting for Baytrail and Haswell platforms ==&lt;br /&gt;
#BIOS -&amp;gt; Advanced / Miscellaneous Configuration / OS Selection -&amp;gt; Windows 8.X  &lt;br /&gt;
#MI3.1 image needs boot from UEFI mode =&amp;gt; Boot / Boot mode select [UEFI]&lt;br /&gt;
#If user want to support Secure boot =&amp;gt; Please disable CSM and enable Secure boot in BIOS setting.&lt;br /&gt;
&lt;br /&gt;
==For Quark Memeory Configuration==       &lt;br /&gt;
./layers/wr-bsps/intel-quark/recipes-support/spi-layout-tools/files/platform-data/clantonhill-platform-data.ini&lt;br /&gt;
This spi flash binary without ini configuration&lt;br /&gt;
./bitbake_build/tmp/work/x86_64-linux/spi-layout-tools/1.2.0-r0/spi-flash-tools_v1.2.0/sysimage-clantonhill/Flash-missingPDAT.bin&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Documentation&amp;diff=2291</id>
		<title>IDP Documentation</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Documentation&amp;diff=2291"/>
				<updated>2016-07-27T03:48:49Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Secure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=IDP2.0=&lt;br /&gt;
*[[Media:Wr linux release notes 5.0.1.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;WR Linux Release Note 5.0.1 - ( list down the pkg name )&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:WRU WCP IDP Quick Start Guide.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;WRU WCP IDP Quick Start Guide.pdf&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:BlacksBeach_GetStarted_Rev1_0.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IDP2.0 Early Access Get Started Guide&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:03 03 LxPlatformDevelopment WorkingWithUserDefinedProjects.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''03 03 LxPlatformDevelopment WorkingWithUserDefinedProjects.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:05 01 LxPlatformDevelopment BuildingAndCustomizingPlatform.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''05 01 LxPlatformDevelopment BuildingAndCustomizingPlatform.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:07 03 LxPlatformDevelopment WorkingWithKernelModules.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''07 03 LxPlatformDevelopment WorkingWithKernelModules.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:08 02 LxPlatformDevelopment CreatingLayers.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''08 02 LxPlatformDevelopment CreatingLayers.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=IDP3.0=&lt;br /&gt;
*[[Media:540625 10923 8 Intel IoT Gateway GoldDeck 081015 ext.pdf|''&amp;lt;big&amp;gt;Intel IoT Gateway GoldDeck&amp;lt;/big&amp;gt;'']]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[[Media:Introduction of IDP3.0.pptx|''&amp;lt;big&amp;gt;Introduction of IDP3.0.pptx - by Advantech Eric&amp;lt;/big&amp;gt;'']]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[[Media:IoT_Gateway_IDP_XT_GSG.pdf ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP 3.0 Quick Start Guide.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=IDP3.1=&lt;br /&gt;
*[[Media:Intel IoT Gateway Wind River GoldDeck January16 ext.pdf|'''&amp;lt;big&amp;gt;IDP3.1 Introduction GoldDeck 20160116 PDF&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[http://www.intel.com/content/www/us/en/embedded/solutions/iot-gateway/training/iot-gateway-training-overview.html '''&amp;lt;big&amp;gt;Intel on line Tranning and Documentation&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://software.intel.com/en-us/iot/hardware/gateways &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''On-line Docs for MI3.1'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]&lt;br /&gt;
*[https://software.intel.com/en-us/Setup-IDP-DevelopmentTools &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''IDP XT 3.1 Getting Started Guide'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]&lt;br /&gt;
*[[Media:Wr_intelligent_device_platform_xt_programmers_guide_31.pdf| &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''IDP XT3.1 Programmers Guide'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:Iot-platform-marketplace-guide.pdf|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IoT Platform Marketplace User Guide&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[[IDP/MI3.1/Information|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;MI3.1 Information&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[[Media:SOP_of_Intel_Customer.docx|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;SOP_of_Intel_Customer.docx&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
&lt;br /&gt;
=Kernel Driver=&lt;br /&gt;
*[[Media:Wr_linux_kernel_command_line_tutorials_70.pdf| &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''WR Linux Kernel command line Tutorials'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Connectivity=&lt;br /&gt;
*[[Media:WRU_WCP_IDP_IoT_20XT_02_01_IDP_Architecture_Connectivity.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP_Architecture_Connectivity''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Application=&lt;br /&gt;
*[[Media:WRU_WCP_IDP_IoT_20XT_07_01_IDP_ApplicationStacks.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP_ApplicationStacks''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Secure=&lt;br /&gt;
*[[Media:547808 547808 Intel Gateway for the IoT DK300 Secure Boot Users Guide.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''Secure Boot Usr Guide''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:TPM Operations.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''TPM Operation on UTX-3115''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Trianing=&lt;br /&gt;
=IDP2.x=&lt;br /&gt;
*[[IDP2.0 Training-20141107|IDP2.0 Training by Wind River-20141107]]&lt;br /&gt;
*[[Media:IDP2 20140326 Wind River.pptx|&amp;lt;big&amp;gt;IDP2 20140326 Wind River.pptx&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.0==&lt;br /&gt;
*[[Media:MI 3.0 Workshop Foils.zip ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP3.x workshop by Intel/WR in 2015-9-30~10-1''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Qualification=&lt;br /&gt;
==IDP2.x==&lt;br /&gt;
*[[Media:557818 Diagnostic Tool FINAL.PDF|&amp;lt;big&amp;gt;IDP Diagnostic Tool-2015-10&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:Idp-xt-validation-plan_2.0.pdf |&amp;lt;big&amp;gt;Idp-xt-validation-plan_2.0.pdf - by Wind River&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.0==&lt;br /&gt;
*[[Media:561994 Intel IoT Gateway Diagnostic Tool.pdf|&amp;lt;big&amp;gt;IDP Diagnostic Tool-2015-11&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:562720 Diagnostic Tool Errata.pdf|&amp;lt;big&amp;gt;Diagnostic_Tool_Errata-2015-11&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.1==&lt;br /&gt;
&lt;br /&gt;
=Intel/Wind River Official Web Site=&lt;br /&gt;
*[https://businessportal.intel.com/irj/portal '''&amp;lt;big&amp;gt;Intel IPS system&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://shopiotmarketplace.com/iot/index.html#/parts '''&amp;lt;big&amp;gt;Intel Marketplace for MI3.1&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://customercare.intel.com/ '''&amp;lt;big&amp;gt;Intel New Customer Service for MI3.1 -2016 04&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://windshare.windriver.com/index.php/apps/windriver/ '''&amp;lt;big&amp;gt;WindShare by WindRiver&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[http://windriver.mrooms.net/my/ '''&amp;lt;big&amp;gt;On-line Course by Wind River&amp;lt;/big&amp;gt;''']&lt;br /&gt;
&lt;br /&gt;
=Support Component List=&lt;br /&gt;
==IDP3.x==&lt;br /&gt;
*[[Media:551116_551116_Component_List_Final.pdf|&amp;lt;big&amp;gt;IDP3.0 Component List- August 2015&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Advantech=&lt;br /&gt;
*[[Media:IDP BSP Porting Application Form.xlsx|&amp;lt;big&amp;gt;IDP Image Porting Application Form&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:IDP Issue Request Form.xlsx|&amp;lt;big&amp;gt;IDP Issue Request Form&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:WRLinux5-HW-Drivers.xlsx|&amp;lt;big&amp;gt;IDP2.0 Driver List&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
==[[x86 System Tool|x86 System Tool]]==&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:TPM_Operations.pdf&amp;diff=2290</id>
		<title>File:TPM Operations.pdf</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:TPM_Operations.pdf&amp;diff=2290"/>
				<updated>2016-07-27T03:48:23Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:TPM Operations.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:547808_547808_Intel_Gateway_for_the_IoT_DK300_Secure_Boot_Users_Guide.pdf&amp;diff=2289</id>
		<title>File:547808 547808 Intel Gateway for the IoT DK300 Secure Boot Users Guide.pdf</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:547808_547808_Intel_Gateway_for_the_IoT_DK300_Secure_Boot_Users_Guide.pdf&amp;diff=2289"/>
				<updated>2016-07-27T03:48:12Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:547808 547808 Intel Gateway for the IoT DK300 Secure Boot Users Guide.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Build_%26_Deploy_Image&amp;diff=2286</id>
		<title>IDP Build &amp; Deploy Image</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Build_%26_Deploy_Image&amp;diff=2286"/>
				<updated>2016-07-26T07:40:29Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Copy Gateway OS to USB Flash Drive */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Build an IDP OS by WR Workbench=&lt;br /&gt;
1. Go to the $HOME/Project directory on your Development Computer:&lt;br /&gt;
 cd $HOME/Project&lt;br /&gt;
:1.1 Source WRLinux Enviroment&lt;br /&gt;
  For MI2.0&lt;br /&gt;
 ./wrenv.sh -p wrlinux-5&lt;br /&gt;
  For MI3.x&lt;br /&gt;
 ./wrenv.sh -p wrlinux-7&lt;br /&gt;
&lt;br /&gt;
2. Define your Gateway options by coping and pasting the configure command&amp;lt;br /&amp;gt;&lt;br /&gt;
:'''MI3.1 Configure for Intel Atom processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-baytrail-64 --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.1 Configure for Intel Haswell processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-haswell-64 --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.1 Configure for Intel Quark processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-quark --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.0 Configure for Intel Atom processor'''&lt;br /&gt;
 ../WindRiver/wrlinux-7/wrlinux/configure --enable-board=intel-baytrail-64 --enable-kernel=idp --enable-bootimage=ext3,hdd --enable-patchresolve=noop --enablerootfs=idp \&lt;br /&gt;
 --enable-addons=wr-idp --with-layer=wr-prosyst-mbs-smarthome-sdk-ia,wrdigi-idigiconnector,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069,\&lt;br /&gt;
 sysversion,wr-iot --with-template=feature/vlan,feature/opc,feature/recovery,feature/opc_demo,feature/ipsec_vpn,feature/l2tp,feature/realtek, \&lt;br /&gt;
 feature/ems-test,feature/remote-session,feature/openjdk-bin,feature/online_updates,feature/bluetooth,feature/pptp_vpn,feature/target-toolchain \&lt;br /&gt;
 --withpackage=make,git,iasl,libtool,perl,ruby,subversion,autoconf,automake,curl,conntrack-tools,fuse,igmpproxy,iperf,ipset,libcli,mipv6-daemonumip,\&lt;br /&gt;
 ntfs-3g,ntfsprogs,sshfs-fuse,tftp-hpa,tftp-hpa-server,tcpdump,vim &lt;br /&gt;
&lt;br /&gt;
:'''MI3.0 Configure for Intel Core processor'''&lt;br /&gt;
 ../WindRiver/wrlinux-7/wrlinux/configure --enable-board=intel-haswell-64 --enable-kernel=idp --enable-bootimage=ext3,hdd --enable-patchresolve=noop --enablerootfs=idp \&lt;br /&gt;
 --enable-addons=wr-idp --with-layer=wr-prosyst-mbs-smarthome-sdk-ia,wrdigi-idigiconnector,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069,\&lt;br /&gt;
 sysversion,wr-iot --with-template=feature/vlan,feature/opc,feature/recovery,feature/opc_demo,feature/ipsec_vpn,feature/l2tp,feature/realtek, \&lt;br /&gt;
 feature/ems-test,feature/remote-session,feature/openjdk-bin,feature/online_updates,feature/bluetooth,feature/pptp_vpn,feature/target-toolchain \&lt;br /&gt;
 --withpackage=make,git,iasl,libtool,perl,ruby,subversion,autoconf,automake,curl,conntrack-tools,fuse,igmpproxy,iperf,ipset,libcli,mipv6-daemonumip,\&lt;br /&gt;
 ntfs-3g,ntfsprogs,sshfs-fuse,tftp-hpa,tftp-hpa-server,tcpdump,vim &lt;br /&gt;
&lt;br /&gt;
:'''MI2.0 Configure for Intel Atom processor''' &lt;br /&gt;
 $WIND_LINUX_CONFIGURE --enable-board=intel-atom-baytrail --enable-kernel=standard --enable-rootfs=glibc-idp --enable-addons=wr-idp --enable-bootimage=ext3,hdd --enable-parallel-pkgbuilds=4 --enable-jobs=6 --enable-reconfig -- &lt;br /&gt;
 enable-rm-oldimgs=yes --enable-rm-work=yes --without-layer=wr-srm --with-layer=wr-intel-support,wr-mcafee,wr-wks-oneagent-tr069,wr-ieee11073,wr-mcafee,wr-wks-oneagent-oma-dm-ia,wr-intel-support --with- &lt;br /&gt;
 template=feature/online_updates,feature/recovery,feature/pptp_vpn,feature/pppoe,feature/upnp,feature/opc,feature/openjdk-bin, &lt;br /&gt;
 feature/ipsec_vpn,feature/mqtt,feature/l2tp,feature/webif,feature/firewall,feature/vlan,feature/intel-wilkinpeak2,feature/bluetooth --with-rcpl-version=17&lt;br /&gt;
&lt;br /&gt;
3. Build the IDP&lt;br /&gt;
 make fs&lt;br /&gt;
4. The config.log created in $HOME/Project is an exact copy of the configure options used to build the Gateway OS. Save this as config.sh for future development projects:&lt;br /&gt;
 cp config.log config.sh&lt;br /&gt;
5. Continue to Copy Gateway OS to USB Flash Drive.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Note:''' Remove grsecurity to experiment with application development. Refer to [[IDP Build IDP Without Grsecurity]]&lt;br /&gt;
:Grsecurity is included in the Linux kernel by default. This feature can inhibit exploration by preventing your apps from working. &amp;lt;br /&amp;gt;&lt;br /&gt;
:Disable grsecurity while you experiement with your Gateway. When you are ready to build a production-ready Gateway, consider re-enabling grsecurity&lt;br /&gt;
&lt;br /&gt;
=Kernel Driver Menu Config=&lt;br /&gt;
 '''$make -C build linux-windriver.menuconfig'''&lt;br /&gt;
 '''$make -C build linux-windriver.rebuild'''&lt;br /&gt;
 Note: 1.Type &amp;quot;/&amp;quot; to search key word&lt;br /&gt;
       2.To select be installed driver or function&lt;br /&gt;
       For example: Ath9k wifi module driver&lt;br /&gt;
&lt;br /&gt;
=Copy Gateway OS to USB Flash Drive=&lt;br /&gt;
&lt;br /&gt;
1. Insert the USB flash drive into your Development Computer&amp;lt;br /&amp;gt;&lt;br /&gt;
2. ls /dv/sd?&amp;lt;br /&amp;gt;&lt;br /&gt;
3. cd $HOME/workspace/&amp;lt;YourProjectDirectory_prj&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Deploy the image to USB flash drive. Note: The deploy process takes about 15 minutes.&amp;lt;br /&amp;gt; &lt;br /&gt;
 '''For Atom processor'''&lt;br /&gt;
 sudo ./deploy.sh -u -f export/intel-baytrail-64-idp-idp-dist.tar.bz2 -d /dev/sdx -y; sync&lt;br /&gt;
 &lt;br /&gt;
 '''For Intel Core processor'''&lt;br /&gt;
 sudo ./deploy.sh -u -f export/intel-haswell-64-idp-idp-dist.tar.bz2 -d /dev/sdx -y; sync&lt;br /&gt;
&lt;br /&gt;
 '''For Quark processor'''&lt;br /&gt;
 sudo ./deploytool -f export/intel-quark-idp-idp-dist.tar.bz2 -d /dev/sdX -y -u -B 1; sync&lt;br /&gt;
&lt;br /&gt;
5. Type your Linux password if prompted and click OK. The bootable USB drive is created when you see DONE!&lt;br /&gt;
6. Remove and reinsert into your Development Computer. The flash drive mounts with two partitions, one of which is /media/&amp;lt;username&amp;gt;/wr_usb_boot&lt;br /&gt;
7. Copy image to the flash drive&lt;br /&gt;
 '''For Atom processor''' &lt;br /&gt;
 sudo cp export/intel-baytrail-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/wr_usb_boot/opt/; sync&lt;br /&gt;
&lt;br /&gt;
 '''For Intel Core processor'''&lt;br /&gt;
 sudo cp export/intel-haswell-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/wr_usb_boot/opt/; sync&lt;br /&gt;
 &lt;br /&gt;
 '''For MI3.1'''&lt;br /&gt;
 sudo cp export/intel-baytrail-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/efi/SFR/; sync&lt;br /&gt;
8. Remove the USB flash drive from your Development Computer&lt;br /&gt;
&lt;br /&gt;
=Install the OS on the Gateway=&lt;br /&gt;
1. Insert the USB to Gateway and power on. Login using &amp;quot;root&amp;quot; for the login ID and password.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Install the OS:&lt;br /&gt;
 tgt=/dev/sda /sbin/reset_media&lt;br /&gt;
3. Installation is complete when you see the message &amp;quot;DONE!&amp;quot; Shut down the Gateway&lt;br /&gt;
 poweroff&lt;br /&gt;
4. Remove the USB flash drive and power up your Gateway&lt;br /&gt;
5. Login using &amp;quot;root&amp;quot; for both the login ID and password. The OS installation is complete.&lt;br /&gt;
&lt;br /&gt;
=[[IDP/Advantech/Standard BSP|MI3.1 Advantech Standard BSP by ECG]]=&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Build_%26_Deploy_Image&amp;diff=2281</id>
		<title>IDP Build &amp; Deploy Image</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Build_%26_Deploy_Image&amp;diff=2281"/>
				<updated>2016-07-25T05:47:46Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Build an IDP OS by WR Workbench=&lt;br /&gt;
1. Go to the $HOME/Project directory on your Development Computer:&lt;br /&gt;
 cd $HOME/Project&lt;br /&gt;
:1.1 Source WRLinux Enviroment&lt;br /&gt;
  For MI2.0&lt;br /&gt;
 ./wrenv.sh -p wrlinux-5&lt;br /&gt;
  For MI3.x&lt;br /&gt;
 ./wrenv.sh -p wrlinux-7&lt;br /&gt;
&lt;br /&gt;
2. Define your Gateway options by coping and pasting the configure command&amp;lt;br /&amp;gt;&lt;br /&gt;
:'''MI3.1 Configure for Intel Atom processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-baytrail-64 --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.1 Configure for Intel Haswell processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-haswell-64 --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.1 Configure for Intel Quark processor''' &lt;br /&gt;
../../wrlinux-7/wrlinux/configure --enable-addons=wr-idp --enable-board=intel-quark --enable-bootimage=ext3,hdd --enable-internet-download=yes --enable-kernel=idp --enable-patchresolve=noop --enable-reconfig --enable-rootfs=idp --enable-test=no --with-layer=dev-experience,dev_hub,sys-version,wr-hac,wr-hdc-examples,wr-iot,wr-kernel/kernel-dev,wr-ma,wr-mcafee,wr-prosyst-mbs-smarthome-sdk-ia,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069 --with-package=autoconf,automake,conntrack-tools,curl,fuse,gdb,git,iasl,igmpproxy,iperf,ipset,less,libcli,libtool,make,mipv6-daemon-umip,netcat,ntfs-3g,ntfsprogs,perl,ruby,screen,sshfs-fuse,subversion,swig,tcpdump,tftp-hpa,tftp-hpa-server,vim --with-template=feature/backports,feature/bluetooth,feature/ems-test,feature/haccmds,feature/ipsec_vpn,feature/non-grsec,feature/online_updates,feature/openjdk-bin,feature/pptp_vpn,feature/recovery,feature/remote-session,feature/self-hosted,feature/target-toolchain,feature/vlan&lt;br /&gt;
&lt;br /&gt;
:'''MI3.0 Configure for Intel Atom processor'''&lt;br /&gt;
 ../WindRiver/wrlinux-7/wrlinux/configure --enable-board=intel-baytrail-64 --enable-kernel=idp --enable-bootimage=ext3,hdd --enable-patchresolve=noop --enablerootfs=idp \&lt;br /&gt;
 --enable-addons=wr-idp --with-layer=wr-prosyst-mbs-smarthome-sdk-ia,wrdigi-idigiconnector,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069,\&lt;br /&gt;
 sysversion,wr-iot --with-template=feature/vlan,feature/opc,feature/recovery,feature/opc_demo,feature/ipsec_vpn,feature/l2tp,feature/realtek, \&lt;br /&gt;
 feature/ems-test,feature/remote-session,feature/openjdk-bin,feature/online_updates,feature/bluetooth,feature/pptp_vpn,feature/target-toolchain \&lt;br /&gt;
 --withpackage=make,git,iasl,libtool,perl,ruby,subversion,autoconf,automake,curl,conntrack-tools,fuse,igmpproxy,iperf,ipset,libcli,mipv6-daemonumip,\&lt;br /&gt;
 ntfs-3g,ntfsprogs,sshfs-fuse,tftp-hpa,tftp-hpa-server,tcpdump,vim &lt;br /&gt;
&lt;br /&gt;
:'''MI3.0 Configure for Intel Core processor'''&lt;br /&gt;
 ../WindRiver/wrlinux-7/wrlinux/configure --enable-board=intel-haswell-64 --enable-kernel=idp --enable-bootimage=ext3,hdd --enable-patchresolve=noop --enablerootfs=idp \&lt;br /&gt;
 --enable-addons=wr-idp --with-layer=wr-prosyst-mbs-smarthome-sdk-ia,wrdigi-idigiconnector,wr-wks-oneagent-oma-dm-ia,wr-wks-oneagent-tr069,\&lt;br /&gt;
 sysversion,wr-iot --with-template=feature/vlan,feature/opc,feature/recovery,feature/opc_demo,feature/ipsec_vpn,feature/l2tp,feature/realtek, \&lt;br /&gt;
 feature/ems-test,feature/remote-session,feature/openjdk-bin,feature/online_updates,feature/bluetooth,feature/pptp_vpn,feature/target-toolchain \&lt;br /&gt;
 --withpackage=make,git,iasl,libtool,perl,ruby,subversion,autoconf,automake,curl,conntrack-tools,fuse,igmpproxy,iperf,ipset,libcli,mipv6-daemonumip,\&lt;br /&gt;
 ntfs-3g,ntfsprogs,sshfs-fuse,tftp-hpa,tftp-hpa-server,tcpdump,vim &lt;br /&gt;
&lt;br /&gt;
:'''MI2.0 Configure for Intel Atom processor''' &lt;br /&gt;
 $WIND_LINUX_CONFIGURE --enable-board=intel-atom-baytrail --enable-kernel=standard --enable-rootfs=glibc-idp --enable-addons=wr-idp --enable-bootimage=ext3,hdd --enable-parallel-pkgbuilds=4 --enable-jobs=6 --enable-reconfig -- &lt;br /&gt;
 enable-rm-oldimgs=yes --enable-rm-work=yes --without-layer=wr-srm --with-layer=wr-intel-support,wr-mcafee,wr-wks-oneagent-tr069,wr-ieee11073,wr-mcafee,wr-wks-oneagent-oma-dm-ia,wr-intel-support --with- &lt;br /&gt;
 template=feature/online_updates,feature/recovery,feature/pptp_vpn,feature/pppoe,feature/upnp,feature/opc,feature/openjdk-bin, &lt;br /&gt;
 feature/ipsec_vpn,feature/mqtt,feature/l2tp,feature/webif,feature/firewall,feature/vlan,feature/intel-wilkinpeak2,feature/bluetooth --with-rcpl-version=17&lt;br /&gt;
&lt;br /&gt;
3. Build the IDP&lt;br /&gt;
 make fs&lt;br /&gt;
4. The config.log created in $HOME/Project is an exact copy of the configure options used to build the Gateway OS. Save this as config.sh for future development projects:&lt;br /&gt;
 cp config.log config.sh&lt;br /&gt;
5. Continue to Copy Gateway OS to USB Flash Drive.&amp;lt;br /&amp;gt;&lt;br /&gt;
'''Note:''' Remove grsecurity to experiment with application development. Refer to [[IDP Build IDP Without Grsecurity]]&lt;br /&gt;
:Grsecurity is included in the Linux kernel by default. This feature can inhibit exploration by preventing your apps from working. &amp;lt;br /&amp;gt;&lt;br /&gt;
:Disable grsecurity while you experiement with your Gateway. When you are ready to build a production-ready Gateway, consider re-enabling grsecurity&lt;br /&gt;
&lt;br /&gt;
=Kernel Driver Menu Config=&lt;br /&gt;
 '''$make -C build linux-windriver.menuconfig'''&lt;br /&gt;
 '''$make -C build linux-windriver.rebuild'''&lt;br /&gt;
 Note: 1.Type &amp;quot;/&amp;quot; to search key word&lt;br /&gt;
       2.To select be installed driver or function&lt;br /&gt;
       For example: Ath9k wifi module driver&lt;br /&gt;
&lt;br /&gt;
=Copy Gateway OS to USB Flash Drive=&lt;br /&gt;
&lt;br /&gt;
1. Insert the USB flash drive into your Development Computer&amp;lt;br /&amp;gt;&lt;br /&gt;
2. ls /dv/sd?&amp;lt;br /&amp;gt;&lt;br /&gt;
3. cd $HOME/workspace/&amp;lt;YourProjectDirectory_prj&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Deploy the image to USB flash drive. Note: The deploy process takes about 15 minutes.&amp;lt;br /&amp;gt; &lt;br /&gt;
 '''For Atom processor'''&lt;br /&gt;
 sudo ./deploy.sh -u -f export/intel-baytrail-64-idp-idp-dist.tar.bz2 -d /dev/sd? -y; sync&lt;br /&gt;
 &lt;br /&gt;
 '''For Intel Core processor'''&lt;br /&gt;
 sudo ./deploy.sh -u -f export/intel-haswell-64-idp-idp-dist.tar.bz2 -d /dev/sd? -y; sync&lt;br /&gt;
&lt;br /&gt;
5. Type your Linux password if prompted and click OK. The bootable USB drive is created when you see DONE!&lt;br /&gt;
6. Remove and reinsert into your Development Computer. The flash drive mounts with two partitions, one of which is /media/&amp;lt;username&amp;gt;/wr_usb_boot&lt;br /&gt;
7. Copy image to the flash drive&lt;br /&gt;
 '''For Atom processor''' &lt;br /&gt;
 sudo cp export/intel-baytrail-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/wr_usb_boot/opt/; sync&lt;br /&gt;
&lt;br /&gt;
 '''For Intel Core processor'''&lt;br /&gt;
 sudo cp export/intel-haswell-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/wr_usb_boot/opt/; sync&lt;br /&gt;
 &lt;br /&gt;
 '''For MI3.1'''&lt;br /&gt;
 sudo cp export/intel-baytrail-64-idp-idp-dist.tar.bz2 /media/&amp;lt;username&amp;gt;/efi/SFR/; sync&lt;br /&gt;
8. Remove the USB flash drive from your Development Computer&lt;br /&gt;
&lt;br /&gt;
=Install the OS on the Gateway=&lt;br /&gt;
1. Insert the USB to Gateway and power on. Login using &amp;quot;root&amp;quot; for the login ID and password.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Install the OS:&lt;br /&gt;
 tgt=/dev/sda /sbin/reset_media&lt;br /&gt;
3. Installation is complete when you see the message &amp;quot;DONE!&amp;quot; Shut down the Gateway&lt;br /&gt;
 poweroff&lt;br /&gt;
4. Remove the USB flash drive and power up your Gateway&lt;br /&gt;
5. Login using &amp;quot;root&amp;quot; for both the login ID and password. The OS installation is complete.&lt;br /&gt;
&lt;br /&gt;
=[[IDP/Advantech/Standard BSP|MI3.1 Advantech Standard BSP by ECG]]=&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP/Advantech/Standard_BSP&amp;diff=2280</id>
		<title>IDP/Advantech/Standard BSP</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP/Advantech/Standard_BSP&amp;diff=2280"/>
				<updated>2016-07-22T06:06:35Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Modified Items by ECG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MI3.1 7.0.0.14 V1.0.1=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Specification&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Pro version configuration by Advantech : 1.wr-wks-oneagent-oma-dm-ia, 2.wr-wks-oneagent-tr069, 3.wr-mcafee =&amp;gt; These features belong Pro version only.&lt;br /&gt;
##[[Media:Adv_Standard_MI3.1_Image_V1.0.1_for_Baytrail_config.log.txt|Baytrail]]&lt;br /&gt;
##[[Media:Adv_Standard_MI3.1_Image_V1.0.1_for_Haswell_config.log.txt|Hasell]]&lt;br /&gt;
#Have verified 5 Wireless Modules as below&lt;br /&gt;
##Silex SX-PCEAN2 ( WiFi - Athero AR9580 )&lt;br /&gt;
##EWM-W15801F ( WiFi - Atheros AR9592-AR1B )&lt;br /&gt;
##Intel AC7260 ( WiFi + BT Intel AC7260 )&lt;br /&gt;
##EWM-CC118HD01E ( 3G u-blox SARA-U270 with SIM Holder )&lt;br /&gt;
##Sierra MC7354 ( 3G Sierra MC7354 without SIM Holder )&lt;br /&gt;
##Telite HE910 ( 3G Telit HE910 with SIM Holder )&lt;br /&gt;
#SUSI4.0 / SUSIIoT Porting&lt;br /&gt;
#Doesn't support Secure Boot with this version( need modify BIOS )&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Modified Items by ECG&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:AdvModify_MI3.1_V1.0.1.zip |Download: Add scripts &amp;amp; files]]&lt;br /&gt;
&lt;br /&gt;
1. add modem_cell_default to /etc/.                    : Support we tested Modem Module can show on Luci web UI ( EWM-C118HD01E / Sierra MC7354 / EWM-C109F601E / EWM-C117FL04E )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. add the usb-modem.sh to /lib/network/.              : Support USB interface 3G module (ex: Sierra MC7354  )&amp;lt;br /&amp;gt;&lt;br /&gt;
3. add ar3k.zip to /lib/firmware/ &amp;amp; unzip ark3k.zip   : Support Atheros bluetooth module&amp;lt;br /&amp;gt;&lt;br /&gt;
4. SUSI4.0    -&amp;gt; ~/Advantech/SUSI4.0                   : SUSI4.0 Linux Driver for Advantech Platform&amp;lt;br /&amp;gt;&lt;br /&gt;
5. SUSIIoT    -&amp;gt; ~/Advantech/SUSIIoT                   : SUSIIoT SUSI Driver with JSON format &amp;lt;br /&amp;gt;&lt;br /&gt;
6. ReadMe.txt -&amp;gt; ~/Advantech/ReadMe.txt                : OS Information&amp;lt;br /&amp;gt; &lt;br /&gt;
7. config.log -&amp;gt; ~/Advantech/config.log                : Configuration of the MI3.1 7.0.0.14 Pro image&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[[MI3.1_Standard_Image_V1.0.1_Porting_SOP|&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Porting SOP&amp;lt;/span&amp;gt;]]==&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;RD Functional Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[IDP/ARK-2151S_Functional_Test|ARK-2151S_Functional_Test]]&lt;br /&gt;
&lt;br /&gt;
==Advantech Standard BSP by ECG==&lt;br /&gt;
*[[MI3.1 7.0.0.14 V1.0.1 for Baytrail|&amp;lt;big&amp;gt;For Baytrail&amp;lt;/big&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP/Advantech/Standard_BSP&amp;diff=2279</id>
		<title>IDP/Advantech/Standard BSP</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP/Advantech/Standard_BSP&amp;diff=2279"/>
				<updated>2016-07-22T06:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Modified Items by ECG */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=MI3.1 7.0.0.14 V1.0.1=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Specification&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Pro version configuration by Advantech : 1.wr-wks-oneagent-oma-dm-ia, 2.wr-wks-oneagent-tr069, 3.wr-mcafee =&amp;gt; These features belong Pro version only.&lt;br /&gt;
##[[Media:Adv_Standard_MI3.1_Image_V1.0.1_for_Baytrail_config.log.txt|Baytrail]]&lt;br /&gt;
##[[Media:Adv_Standard_MI3.1_Image_V1.0.1_for_Haswell_config.log.txt|Hasell]]&lt;br /&gt;
#Have verified 5 Wireless Modules as below&lt;br /&gt;
##Silex SX-PCEAN2 ( WiFi - Athero AR9580 )&lt;br /&gt;
##EWM-W15801F ( WiFi - Atheros AR9592-AR1B )&lt;br /&gt;
##Intel AC7260 ( WiFi + BT Intel AC7260 )&lt;br /&gt;
##EWM-CC118HD01E ( 3G u-blox SARA-U270 with SIM Holder )&lt;br /&gt;
##Sierra MC7354 ( 3G Sierra MC7354 without SIM Holder )&lt;br /&gt;
##Telite HE910 ( 3G Telit HE910 with SIM Holder )&lt;br /&gt;
#SUSI4.0 / SUSIIoT Porting&lt;br /&gt;
#Doesn't support Secure Boot with this version( need modify BIOS )&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Modified Items by ECG&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[Media:AdvModify_MI3.1_V1.0.1.zip |Download: Add scripts &amp;amp; files]]&lt;br /&gt;
&lt;br /&gt;
1. add modem_cell_default to /etc/.                    : Support we tested Modem Module can show on Luci web UI ( EWM-C118HD01E / Sierra MC7354 / EWM-C109F601E / EWM-C117FL04E )&amp;lt;br /&amp;gt;&lt;br /&gt;
2. add the usb-modem.sh to /lib/network/.              : Support USB interface 3G module (ex: Sierra MC7354  )&amp;lt;br /&amp;gt;&lt;br /&gt;
3. add ark3k.zip to /lib/firmware/ &amp;amp; unzip ark3k.zip   : Support Atheros bluetooth module&amp;lt;br /&amp;gt;&lt;br /&gt;
4. SUSI4.0    -&amp;gt; ~/Advantech/SUSI4.0                   : SUSI4.0 Linux Driver for Advantech Platform&amp;lt;br /&amp;gt;&lt;br /&gt;
5. SUSIIoT    -&amp;gt; ~/Advantech/SUSIIoT                   : SUSIIoT SUSI Driver with JSON format &amp;lt;br /&amp;gt;&lt;br /&gt;
6. ReadMe.txt -&amp;gt; ~/Advantech/ReadMe.txt                : OS Information&amp;lt;br /&amp;gt; &lt;br /&gt;
7. config.log -&amp;gt; ~/Advantech/config.log                : Configuration of the MI3.1 7.0.0.14 Pro image&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==[[MI3.1_Standard_Image_V1.0.1_Porting_SOP|&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Porting SOP&amp;lt;/span&amp;gt;]]==&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;RD Functional Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[IDP/ARK-2151S_Functional_Test|ARK-2151S_Functional_Test]]&lt;br /&gt;
&lt;br /&gt;
==Advantech Standard BSP by ECG==&lt;br /&gt;
*[[MI3.1 7.0.0.14 V1.0.1 for Baytrail|&amp;lt;big&amp;gt;For Baytrail&amp;lt;/big&amp;gt;]]&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Documentation&amp;diff=2188</id>
		<title>IDP Documentation</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=IDP_Documentation&amp;diff=2188"/>
				<updated>2016-07-20T02:54:27Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* IDP2.0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=IDP2.0=&lt;br /&gt;
*[[Media:Wr linux release notes 5.0.1.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;WR Linux Release Note 5.0.1 - ( list down the pkg name )&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:WRU WCP IDP Quick Start Guide.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;WRU WCP IDP Quick Start Guide.pdf&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:BlacksBeach_GetStarted_Rev1_0.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IDP2.0 Early Access Get Started Guide&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:03 03 LxPlatformDevelopment WorkingWithUserDefinedProjects.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''03 03 LxPlatformDevelopment WorkingWithUserDefinedProjects.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:05 01 LxPlatformDevelopment BuildingAndCustomizingPlatform.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''05 01 LxPlatformDevelopment BuildingAndCustomizingPlatform.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:07 03 LxPlatformDevelopment WorkingWithKernelModules.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''07 03 LxPlatformDevelopment WorkingWithKernelModules.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:08 02 LxPlatformDevelopment CreatingLayers.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''08 02 LxPlatformDevelopment CreatingLayers.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=IDP3.0=&lt;br /&gt;
*[[Media:540625 10923 8 Intel IoT Gateway GoldDeck 081015 ext.pdf|''&amp;lt;big&amp;gt;Intel IoT Gateway GoldDeck&amp;lt;/big&amp;gt;'']]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[[Media:Introduction of IDP3.0.pptx|''&amp;lt;big&amp;gt;Introduction of IDP3.0.pptx - by Advantech Eric&amp;lt;/big&amp;gt;'']]&amp;lt;br /&amp;gt;&lt;br /&gt;
*[[Media:IoT_Gateway_IDP_XT_GSG.pdf ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP 3.0 Quick Start Guide.pdf''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=IDP3.1=&lt;br /&gt;
*[[Media:Intel IoT Gateway Wind River GoldDeck January16 ext.pdf|'''&amp;lt;big&amp;gt;IDP3.1 Introduction GoldDeck 20160116 PDF&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[http://www.intel.com/content/www/us/en/embedded/solutions/iot-gateway/training/iot-gateway-training-overview.html '''&amp;lt;big&amp;gt;Intel on line Tranning and Documentation&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://software.intel.com/en-us/iot/hardware/gateways &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''On-line Docs for MI3.1'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]&lt;br /&gt;
*[https://software.intel.com/en-us/Setup-IDP-DevelopmentTools &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''IDP XT 3.1 Getting Started Guide'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]&lt;br /&gt;
*[[Media:Wr_intelligent_device_platform_xt_programmers_guide_31.pdf| &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''IDP XT3.1 Programmers Guide'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:Iot-platform-marketplace-guide.pdf|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;IoT Platform Marketplace User Guide&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[[IDP/MI3.1/Information|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;MI3.1 Information&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
*[[Media:SOP_of_Intel_Customer.docx|'''&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;SOP_of_Intel_Customer.docx&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;''']]&lt;br /&gt;
&lt;br /&gt;
=Kernel Driver=&lt;br /&gt;
*[[Media:Wr_linux_kernel_command_line_tutorials_70.pdf| &amp;lt;big&amp;gt;&amp;lt;big&amp;gt;'''WR Linux Kernel command line Tutorials'''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Connectivity=&lt;br /&gt;
*[[Media:WRU_WCP_IDP_IoT_20XT_02_01_IDP_Architecture_Connectivity.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP_Architecture_Connectivity''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Application=&lt;br /&gt;
*[[Media:WRU_WCP_IDP_IoT_20XT_07_01_IDP_ApplicationStacks.pdf|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP_ApplicationStacks''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Secure=&lt;br /&gt;
*[[Media:547808 547808 Intel Gateway for the IoT DK300 Secure Boot Users Guide.pdf ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''Secure Boot Usr Guide''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:TPM Operations.pdf ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''TPM Operation on UTX-3115''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Trianing=&lt;br /&gt;
=IDP2.x=&lt;br /&gt;
*[[IDP2.0 Training-20141107|IDP2.0 Training by Wind River-20141107]]&lt;br /&gt;
*[[Media:IDP2 20140326 Wind River.pptx|&amp;lt;big&amp;gt;IDP2 20140326 Wind River.pptx&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.0==&lt;br /&gt;
*[[Media:MI 3.0 Workshop Foils.zip ?|&amp;lt;big&amp;gt;&amp;lt;big&amp;gt;''IDP3.x workshop by Intel/WR in 2015-9-30~10-1''&amp;lt;/big&amp;gt;&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Qualification=&lt;br /&gt;
==IDP2.x==&lt;br /&gt;
*[[Media:557818 Diagnostic Tool FINAL.PDF|&amp;lt;big&amp;gt;IDP Diagnostic Tool-2015-10&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:Idp-xt-validation-plan_2.0.pdf |&amp;lt;big&amp;gt;Idp-xt-validation-plan_2.0.pdf - by Wind River&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.0==&lt;br /&gt;
*[[Media:561994 Intel IoT Gateway Diagnostic Tool.pdf|&amp;lt;big&amp;gt;IDP Diagnostic Tool-2015-11&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:562720 Diagnostic Tool Errata.pdf|&amp;lt;big&amp;gt;Diagnostic_Tool_Errata-2015-11&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
==IDP3.1==&lt;br /&gt;
&lt;br /&gt;
=Intel/Wind River Official Web Site=&lt;br /&gt;
*[https://businessportal.intel.com/irj/portal '''&amp;lt;big&amp;gt;Intel IPS system&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://shopiotmarketplace.com/iot/index.html#/parts '''&amp;lt;big&amp;gt;Intel Marketplace for MI3.1&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://customercare.intel.com/ '''&amp;lt;big&amp;gt;Intel New Customer Service for MI3.1 -2016 04&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[https://windshare.windriver.com/index.php/apps/windriver/ '''&amp;lt;big&amp;gt;WindShare by WindRiver&amp;lt;/big&amp;gt;''']&lt;br /&gt;
*[http://windriver.mrooms.net/my/ '''&amp;lt;big&amp;gt;On-line Course by Wind River&amp;lt;/big&amp;gt;''']&lt;br /&gt;
&lt;br /&gt;
=Support Component List=&lt;br /&gt;
==IDP3.x==&lt;br /&gt;
*[[Media:551116_551116_Component_List_Final.pdf|&amp;lt;big&amp;gt;IDP3.0 Component List- August 2015&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Advantech=&lt;br /&gt;
*[[Media:IDP BSP Porting Application Form.xlsx|&amp;lt;big&amp;gt;IDP Image Porting Application Form&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:IDP Issue Request Form.xlsx|&amp;lt;big&amp;gt;IDP Issue Request Form&amp;lt;/big&amp;gt;]]&lt;br /&gt;
*[[Media:WRLinux5-HW-Drivers.xlsx|&amp;lt;big&amp;gt;IDP2.0 Driver List&amp;lt;/big&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
=Tools=&lt;br /&gt;
==[[x86 System Tool|x86 System Tool]]==&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:08_02_LxPlatformDevelopment_CreatingLayers.pdf&amp;diff=2187</id>
		<title>File:08 02 LxPlatformDevelopment CreatingLayers.pdf</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:08_02_LxPlatformDevelopment_CreatingLayers.pdf&amp;diff=2187"/>
				<updated>2016-07-20T02:53:57Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:08 02 LxPlatformDevelopment CreatingLayers.pdf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2186</id>
		<title>File:AdvHeartBeat-FC-6.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2186"/>
				<updated>2016-07-20T02:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-6.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2185</id>
		<title>File:AdvHeartBeat-FC-6.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2185"/>
				<updated>2016-07-20T02:47:25Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-6.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2184</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2184"/>
				<updated>2016-07-20T02:45:32Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Connect Info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-6.jpg|800x400px|Agent Connect Info]]&lt;br /&gt;
&lt;br /&gt;
 Description: gent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification.&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2183</id>
		<title>File:AdvHeartBeat-FC-6.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-6.jpg&amp;diff=2183"/>
				<updated>2016-07-20T02:44:31Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-5.jpg&amp;diff=2182</id>
		<title>File:AdvHeartBeat-FC-5.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-5.jpg&amp;diff=2182"/>
				<updated>2016-07-20T02:44:19Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-5.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-4.jpg&amp;diff=2181</id>
		<title>File:AdvHeartBeat-FC-4.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-4.jpg&amp;diff=2181"/>
				<updated>2016-07-20T02:44:06Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-4.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-3.jpg&amp;diff=2180</id>
		<title>File:AdvHeartBeat-FC-3.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-3.jpg&amp;diff=2180"/>
				<updated>2016-07-20T02:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-3.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-2.jpg&amp;diff=2179</id>
		<title>File:AdvHeartBeat-FC-2.jpg</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=File:AdvHeartBeat-FC-2.jpg&amp;diff=2179"/>
				<updated>2016-07-20T02:43:32Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: Eric uploaded a new version of File:AdvHeartBeat-FC-2.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2175</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2175"/>
				<updated>2016-07-20T01:48:22Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server would send &amp;quot;Get Capability&amp;quot; and &amp;quot;Change AdvHeartBeat sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2172</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2172"/>
				<updated>2016-07-20T01:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server sends &amp;quot;Get Capability&amp;quot; and &amp;quot;change AdvHeartBeat's sending rate&amp;quot; after receiving a &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2171</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2171"/>
				<updated>2016-07-20T01:36:27Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Expect */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server sends &amp;quot;Get Capability&amp;quot; and &amp;quot;change AdvHeartBeat's sending rate&amp;quot; after receiving &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. This issue maybe introduce by running order or dropping message by broker or RMM Server. &lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2170</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2170"/>
				<updated>2016-07-20T01:30:47Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Network Environment */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server sends &amp;quot;Get Capability&amp;quot; and &amp;quot;change AdvHeartBeat's sending rate&amp;quot; after receiving &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2169</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2169"/>
				<updated>2016-07-20T01:22:53Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* AdvHeartBeat Protocol */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server sends &amp;quot;Get Capability&amp;quot; and &amp;quot;change AdvHeartBeat's sending rate&amp;quot; after receiving &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server sends &amp;quot;Re-Connect&amp;quot; message for asking agent re-send its &amp;quot;Connect Info&amp;quot;.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send &amp;quot;Connect Info&amp;quot; after receiving a &amp;quot;Re-Connect&amp;quot; message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Connect Info&amp;lt;/span&amp;gt;==&lt;br /&gt;
Agent Client sends the &amp;quot;Connect Info&amp;quot; to Server for on-line notification. Server would send &amp;quot;Get Capability&amp;quot; to get capability of this agent device and &amp;quot;Change AdvHeartBeat rate&amp;quot; to sync with System's sending rate.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Info&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 2&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2168</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2168"/>
				<updated>2016-07-19T10:08:22Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server sends &amp;quot;Get Capability&amp;quot; and &amp;quot;change AdvHeartBeat's sending rate&amp;quot; after receiving &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2167</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2167"/>
				<updated>2016-07-19T09:46:35Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
#Server needs send &amp;quot;Get Capability&amp;quot; and &amp;quot;Update AdvHeartBeat sending rate&amp;quot; after receiving &amp;quot;Connect Info&amp;quot; message.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2163</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2163"/>
				<updated>2016-07-19T09:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Re-Connect Message */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a &amp;quot;Connect Info&amp;quot; to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2162</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2162"/>
				<updated>2016-07-19T09:33:47Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Change parameters of &amp;quot;AdvHeartBeat&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a connect info to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq &lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=2153</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=MediaWiki:Sidebar&amp;diff=2153"/>
				<updated>2016-07-19T09:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
* navigation&lt;br /&gt;
** mainpage|mainpage-description&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** RISC WISE-EC|RISC WISE-EC&lt;br /&gt;
** SW-Service|SW Service&lt;br /&gt;
** Cloud-Service|Cloud Service&lt;br /&gt;
** IoT-Gateway|IoT Gateway&lt;br /&gt;
** Sensor Hub-MCU|Sensor Hub-MCU&lt;br /&gt;
** SW-QA|SW QA&lt;br /&gt;
** SW-AE| SW AE&lt;br /&gt;
** Help Desk|Help Desk&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2151</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2151"/>
				<updated>2016-07-19T08:18:52Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there is not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a connect info to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2148</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2148"/>
				<updated>2016-07-19T02:20:03Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Server Site */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message at its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server checks update time of AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If ( timeout &amp;amp; status is connected ) =&amp;gt; changes status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If there is latest AdvHeartBeat message in &amp;quot;AdvHeartBeat Table&amp;quot; but there IS not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a connect info to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	<entry>
		<id>https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2147</id>
		<title>Connectivity/AdvHeartBeat</title>
		<link rel="alternate" type="text/html" href="https://ess-wiki.advantech.com.tw/wiki/index.php?title=Connectivity/AdvHeartBeat&amp;diff=2147"/>
				<updated>2016-07-19T02:14:55Z</updated>
		
		<summary type="html">&lt;p&gt;Winston: /* Integration Test */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=AdvHeartBeat Protocol=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;AdvHeartBeat Topic &amp;amp; Payload&amp;lt;/span&amp;gt;==&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/notify&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ~ 35 character&lt;br /&gt;
 {&amp;quot;hb&amp;quot;:{&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;}}&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
:Agent needs send &amp;quot;AdvHeartBeat&amp;quot; message ( refer to AdvHeartBeat  Topic &amp;amp; Payload ) by period as below picture.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-1.jpg|500x400px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server updates latest update time after receiving a AdvHeartBeat message with its AdvHeartBeat Table( NoSQL ).&lt;br /&gt;
#Server need to check update time from AdvHeartBeat Table only.&lt;br /&gt;
#If the latest update time is over timeout ( Note: This value is depend on Server. Recommend: 3 x send rate =&amp;gt; 3 x 60 = 180 sec =&amp;gt; tolerate drop 2 AdvHeartBeat MSG ).&lt;br /&gt;
##If it is timeout &amp;amp; status is connected =&amp;gt; then change status to disconnect &amp;amp; send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#If server check there is latest AdvHeartBeat message in table but there are not device information in device list table ( SQL ).&lt;br /&gt;
##Server sends a re-connect message to this device.&lt;br /&gt;
##Server needs to send &amp;quot;Get Capability&amp;quot; message to client after receiving a connect info message. Agent will send its OS info and all handlers' capability to server.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Re-Connect Message&amp;lt;/span&amp;gt;==&lt;br /&gt;
:If Server aware any problem of a device's status/information. Server will send a &amp;quot;Re-Connect&amp;quot; Message to Agent. Agent will send a connect info to Server after receiving a re-connect message. You can refer below for detail.&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-2.jpg|800x500px|AdvHeartBeat Protocol]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server send re-connect message to agent for asking agent re-send connect info.&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;: 125,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;response&amp;quot;: {&lt;br /&gt;
           &amp;quot;statuscode&amp;quot;: 4,&lt;br /&gt;
           &amp;quot;msg&amp;quot;: &amp;quot;Reconnect&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send connect info after receiving a re-connect message.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
     	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
     	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
     	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
     	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
     	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
     	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
     	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
     	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
     	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
     	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
     	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Get Capability&amp;lt;/span&amp;gt;==&lt;br /&gt;
Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message.&amp;lt;br /&amp;gt;&lt;br /&gt;
Agent will send back below messages when receiving a &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
#OS Info&lt;br /&gt;
#All handler's capability ( ex: HWM, KVM, HDD, IoTGW...)&lt;br /&gt;
#All SenHub's &amp;quot;Connect Info&amp;quot; message. ( Send by IoTGWHandler )&lt;br /&gt;
#Update the latest data of IoTGW ( Update by IoTGWHandler )&lt;br /&gt;
&lt;br /&gt;
[[File:AdvHeartBeat-FC-3.jpg|500x600px|Get Agent's Capability]]&lt;br /&gt;
&lt;br /&gt;
 Description: Server will send a &amp;quot;Get Capability&amp;quot; message to Agent after receiving a &amp;quot;Connect Info&amp;quot; message&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentcallbackreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:1001,  &lt;br /&gt;
       &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:2051,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send back OS Info to Server after receiving &amp;quot;Get Capability&amp;quot; message.&lt;br /&gt;
 Note: This feature will be implemented in version 3.2.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
       &amp;quot;osInfo&amp;quot;: {&lt;br /&gt;
          &amp;quot;cagentVersion&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
          &amp;quot;cagentType&amp;quot;:&amp;quot;IoTGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osVersion&amp;quot;:&amp;quot;SnailOS&amp;quot;,&lt;br /&gt;
          &amp;quot;biosVersion&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;platformName&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
          &amp;quot;processorName&amp;quot;:&amp;quot;SnailGW&amp;quot;,&lt;br /&gt;
          &amp;quot;osArch&amp;quot;:&amp;quot;SnailX86&amp;quot;,&lt;br /&gt;
          &amp;quot;totalPhysMemKB&amp;quot;:123,&lt;br /&gt;
          &amp;quot;macs&amp;quot;:&amp;quot;000E40ABCDEF&amp;quot;,&lt;br /&gt;
          &amp;quot;IP&amp;quot;:&amp;quot;192.168.0.100&amp;quot;&lt;br /&gt;
       },&lt;br /&gt;
       &amp;quot;commCmd&amp;quot;:116,&lt;br /&gt;
       &amp;quot;requestID&amp;quot;:109,&lt;br /&gt;
       &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
       &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
       &amp;quot;sendTS&amp;quot;:1466730390&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: Agent will send all handlers' capability to server.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;agentID&amp;gt;/agentactionreq&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload: ( ex: HWM )&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;infoSpec&amp;quot;: {&lt;br /&gt;
            &amp;quot;HWM&amp;quot;: {&lt;br /&gt;
                &amp;quot;e&amp;quot;: [&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;v02&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;volt&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;V&amp;quot;,&amp;quot;max&amp;quot;: 20,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;t01&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;temp&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;Cel&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10},&lt;br /&gt;
                    {&amp;quot;n&amp;quot;: &amp;quot;V143360&amp;quot;,&amp;quot;type&amp;quot;: &amp;quot;current&amp;quot;,&amp;quot;u&amp;quot;: &amp;quot;A&amp;quot;,&amp;quot;max&amp;quot;: 100,&amp;quot;min&amp;quot;: 10}&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;: &amp;quot;HWM&amp;quot;&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;requestID&amp;quot;: 2001,&lt;br /&gt;
            &amp;quot;commCmd&amp;quot;: 2052,&lt;br /&gt;
            &amp;quot;catalogID&amp;quot;: 4,&lt;br /&gt;
            &amp;quot;agentID&amp;quot;: &amp;quot;000014DAE996BE04&amp;quot;,&lt;br /&gt;
            &amp;quot;sendTS&amp;quot;: 1417000000004,&lt;br /&gt;
            &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    } &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will update latest value of IoTGW.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/deviceinfo&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;:{&lt;br /&gt;
     &amp;quot;data&amp;quot;: {&lt;br /&gt;
       &amp;quot;IoTGW&amp;quot;: {&lt;br /&gt;
          &amp;quot;WSN&amp;quot;: {&lt;br /&gt;
            &amp;quot;WSN0&amp;quot;: {&lt;br /&gt;
               &amp;quot;Info&amp;quot;:{&lt;br /&gt;
                   &amp;quot;e&amp;quot;:[&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;SenHubList&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Neighbor&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;0017000E40000000,0017000E40000001&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Name&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;WSN0&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;Health&amp;quot;,&amp;quot;v&amp;quot;:&amp;quot;100.000000&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;sw&amp;quot;,&amp;quot;sv&amp;quot;:&amp;quot;1.2.1.12&amp;quot;},&lt;br /&gt;
                        {&amp;quot;n&amp;quot;:&amp;quot;reset&amp;quot;,&amp;quot;bv&amp;quot;:&amp;quot;0&amp;quot;}&lt;br /&gt;
                       ],&lt;br /&gt;
                &amp;quot;bn&amp;quot;:&amp;quot;Info&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
            &amp;quot;bn&amp;quot;:&amp;quot;0007000E40ABCDEF&amp;quot;,&lt;br /&gt;
            &amp;quot;ver&amp;quot;:1&lt;br /&gt;
           },&lt;br /&gt;
         &amp;quot;bn&amp;quot;:&amp;quot;WSN&amp;quot;&lt;br /&gt;
         },&lt;br /&gt;
     &amp;quot;ver&amp;quot;:1&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;commCmd&amp;quot;:2055,&lt;br /&gt;
  &amp;quot;requestID&amp;quot;:2001,&lt;br /&gt;
  &amp;quot;agentID&amp;quot;:&amp;quot;0000000E40ABCDEF&amp;quot;,&lt;br /&gt;
  &amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
  &amp;quot;sendTS&amp;quot;:160081025&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Description: IoTGW Handler will send &amp;quot;Connect Info&amp;quot; for all &amp;quot;SenHub&amp;quot; devices.&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentinfoack&lt;br /&gt;
 QoS: 0&lt;br /&gt;
 Retained: 0&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;devID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;hostname&amp;quot;:&amp;quot;AAA&amp;quot;,&lt;br /&gt;
    	&amp;quot;sn&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;mac&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;version&amp;quot;:&amp;quot;3.1.23&amp;quot;,&lt;br /&gt;
    	&amp;quot;type&amp;quot;:&amp;quot;SenHub&amp;quot;,&lt;br /&gt;
    	&amp;quot;product&amp;quot;:&amp;quot;WISE-1020&amp;quot;,&lt;br /&gt;
    	&amp;quot;manufacture&amp;quot;:&amp;quot;&amp;quot;,&lt;br /&gt;
    	&amp;quot;status&amp;quot;:&amp;quot;1&amp;quot;,&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;:1,&lt;br /&gt;
    	&amp;quot;requestID&amp;quot;:30002,&lt;br /&gt;
    	&amp;quot;agentID&amp;quot;:&amp;quot;0017000E40000001&amp;quot;,&lt;br /&gt;
    	&amp;quot;handlerName&amp;quot;:&amp;quot;general&amp;quot;,&lt;br /&gt;
    	&amp;quot;sendTS&amp;quot;:160081026&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=Parameters of &amp;quot;AdvHeartBeat Protocol&amp;quot;=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Sending Rate&amp;lt;/span&amp;gt;==&lt;br /&gt;
     Unit: second&lt;br /&gt;
  Default: 60 &lt;br /&gt;
    Range: 1 ~ 0xFFFFFFFF&lt;br /&gt;
          -1 =&amp;gt; Agent doesn't send &amp;quot;AdvHeartBeat&amp;quot; message&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-4.jpg|500x400px|Query parameters of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 127,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server &lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 128,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 60,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Change parameters of &amp;quot;AdvHeartBeat&amp;quot;&amp;lt;/span&amp;gt;==&lt;br /&gt;
[[File:AdvHeartBeat-FC-5.jpg|500x480px|Set parameter of &amp;quot;AdvHeartBeat&amp;quot;]]&lt;br /&gt;
&lt;br /&gt;
 Type: Request&lt;br /&gt;
 Direction: Server -&amp;gt; Agent	&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentcallbackreq&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
    	&amp;quot;commCmd&amp;quot;: 129,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;heartbeatrate&amp;quot;: 20,&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
 }   &lt;br /&gt;
&lt;br /&gt;
 Type: Response&lt;br /&gt;
 Direction: Agent -&amp;gt; Server		&lt;br /&gt;
 Topic: /cagent/admin/&amp;lt;devID&amp;gt;/agentactionreq		&lt;br /&gt;
 Payload:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;susiCommData&amp;quot;: {&lt;br /&gt;
        &amp;quot;commCmd&amp;quot;: 130,&lt;br /&gt;
        &amp;quot;handlerName&amp;quot;: &amp;quot;general&amp;quot;,&lt;br /&gt;
        &amp;quot;result&amp;quot;:&amp;quot;SUCCESS&amp;quot;,  //or &amp;quot;FALSE&amp;quot;&lt;br /&gt;
        &amp;quot;sessionID&amp;quot;: &amp;quot;123465&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=How to confirm the Agent supports &amp;quot;AdvHeartBeat&amp;quot; protocol?=&lt;br /&gt;
1. Check the version in deviceinfo&lt;br /&gt;
   Agent will support &amp;quot;AdvHeartBeat&amp;quot; in version &amp;quot;3.2&amp;quot;.&lt;br /&gt;
           &amp;gt;= 3.2   : Agent supports AdvHeartBeat&lt;br /&gt;
           &amp;lt;  3.2   : Agent doesn't support AdvHeartBeat&lt;br /&gt;
&lt;br /&gt;
2. Query the parameters of &amp;quot;AdvHeartBeat&amp;quot; by &amp;quot;Query parameters of &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Test Case=&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Expect&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Server/Client need follow specification to implement &amp;quot;AdvHeartBeat Protocol&amp;quot;.&lt;br /&gt;
#Agent connection status on RMM Server must be correct in stable state.&lt;br /&gt;
#AdvHeartBeat can fix &amp;quot;lost connect info message issue&amp;quot;. The issue introduce by running order of Agent, Server, and MQTT Broker.&lt;br /&gt;
#AdvHeatBeat can fix &amp;quot;lost disconnect or will&amp;quot; message issue.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Server Site - Check by Self&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Find all devices that its update time is over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;On-line&amp;quot; change to &amp;quot;Off-line&amp;quot;&lt;br /&gt;
##No  -&amp;gt; Do Nothing&lt;br /&gt;
#Find all devices that its update time is not over timeout from &amp;quot;AdvHeartBeat Table&amp;quot; &amp;amp; Check these devices is existing in &amp;quot;Device Table&amp;quot;&lt;br /&gt;
##Yes -&amp;gt; If connection status is &amp;quot;Off-line&amp;quot; -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
##No  -&amp;gt; Send a &amp;quot;Re-Connect&amp;quot; message to this device&lt;br /&gt;
#Server can't misjudge earlier agent without &amp;quot;AdvHeartBeat&amp;quot;'s connection status to offline.&lt;br /&gt;
#Server needs take care the network and cpu loading to induce misjudge. ( The frequency of drop &amp;quot;AdvHeartBeat Message&amp;quot; is too high or tolerance is too lower ).&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Client Site - Check by Sefl&amp;lt;/span&amp;gt;==&lt;br /&gt;
#Agent's OS version must greater &amp;quot;3.2.5&amp;quot;&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Message&amp;quot; to Server in period&lt;br /&gt;
#Agent sends &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Query Parameter of AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent will change and reply its &amp;quot;AdvHeartBeat Parameters&amp;quot; after receiving a &amp;quot;Setting AdvHeartBeat Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;Connect Info Message&amp;quot; to Server after receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
#Agent sends &amp;quot;OS Info&amp;quot;, &amp;quot;Info Spec of all handler&amp;quot;, &amp;quot;update values of IoTGW&amp;quot;, and &amp;quot;Connect Info of all SenHub&amp;quot; while receiving a &amp;quot;Re-Connect Message&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Integration Test&amp;lt;/span&amp;gt;==&lt;br /&gt;
*RMM Server supports &amp;quot;AdvHeartBeat Protocol&amp;quot;&lt;br /&gt;
*Agent without &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
*Agent with &amp;quot;AdvHeartBeat&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Node-Red&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Lost first &amp;quot;Connect Info Msg&amp;quot;&lt;br /&gt;
#Lost &amp;quot;Disconnect Msg&amp;quot; and &amp;quot;Will Msg&amp;quot;&lt;br /&gt;
#Continue lost 1~5 &amp;quot;AdvHeartBeat Message&amp;quot;&lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Network Environment&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Unplug network cable 5 sec then plug-in.&lt;br /&gt;
#Up-plug network cable 3 mins then plug-in.&lt;br /&gt;
#Up-plug network cable 6 mins then plug-in.&lt;br /&gt;
#Limited Bandwidth -&amp;gt; 56KB Modem &lt;br /&gt;
===&amp;lt;span style=&amp;quot;color:#0070c0;&amp;quot;&amp;gt;Test by Manual&amp;lt;/span&amp;gt;===&lt;br /&gt;
#Broker and Agent client are started before RMM Server.&lt;br /&gt;
#RMM Server restart&lt;/div&gt;</summary>
		<author><name>Winston</name></author>	</entry>

	</feed>