--- a/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_sparkplugbsimple_c978db11/fb_sparkplugbsimple_b276ae31/nbirth_f76fdf4d/geteonnodebirthcertificate_708f3e62/708f3e6296604707b015c1ad9553d44a.object
+++ b/project/sparkplug™_mqtt_edge_and_host-stack_b9741afd/function_blocks_8ad6e219/fb_sparkplugbsimple_c978db11/fb_sparkplugbsimple_b276ae31/nbirth_f76fdf4d/geteonnodebirthcertificate_708f3e62/708f3e6296604707b015c1ad9553d44a.object
@@ -1 +1 @@
-{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)708f3e62-9660-4707-b015-c1ad9553d44a","ParentGuid":"(Guid)b276ae31-a54c-4d6f-8b78-cab400d0ac12","Name":"(string)GetEoNNodeBirthCertificate","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)24568a24-c491-472c-a21f-ee5d33859fab","@Value":{"@Type":"24568a24","@Value":{"MemoryReserveForOnlineChange":"(int)0","ExcludeFromBuild":"(bool)False","External":"(bool)False","EnableSystemCall":"(bool)False","CompilerDefines":"(string)","LinkAlways":"(bool)False","Undefines":{"@Type":"[string]","@Value":[]}}}},{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)f76fdf4d-010a-44b7-866a-82d474fcc977"}]}}}}]},"TypeGuid":"(Guid)f8a58466-d7f6-439f-bbb8-d4600e41d099","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"24568a24":"{24568a24-c491-472c-a21f-ee5d33859fab}","2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","bool":"System.Boolean","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","int":"System.Int32","string":"System.String"}},"object":{"Graph":{"@Type":"f8a58466","@Value":{"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)1138","Tag":null,"Text":"(string)SysTimeRtc.SysTimeRtcHighResGet(pTimestamp := _Timestamp);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1139","Tag":null,"Text":"(string)// incase you forgot to add bdSeq to AllMetricsList, I will add it for you"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1140","Tag":null,"Text":"(string)AllMetricsList.InsertElem(itfElement := NBIRTH,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1141","Tag":null,"Text":"(string)    itfPrecursor := 0);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1142","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1143","Tag":null,"Text":"(string)(* NBirth Sequence Metric => name \"bdSeq\", "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1144","Tag":null,"Text":"(string)\tMetricDataType.Int64 => value BdSeq *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1145","Tag":null,"Text":"(string)NBirth.Name := \"bdSeq\";"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1146","Tag":null,"Text":"(string)NBirth.DataType := MetricDataType.UInt64;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1147","Tag":null,"Text":"(string)NBirth.UInt64 := LWT_BDSeq; // mandatory"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1148","Tag":null,"Text":"(string)InitEncoderErr := _Encoder.InitializePayloadBeforeAddingMetrics(timestamp := _Timestamp);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1149","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1150","Tag":null,"Text":"(string)(* Reset the internal _seqNum to one(!), and leave the call above as is *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1151","Tag":null,"Text":"(string)_NextSeqNum := 1;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1152","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1153","Tag":null,"Text":"(string)IF InitEncoderErr = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1154","Tag":null,"Text":"(string)    (* Now all metrics which this node will ever report on, including BdSeq"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1155","Tag":null,"Text":"(string)\t   this List should already be prepared in the main application *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1156","Tag":null,"Text":"(string)    AddAllMetricsListErr := AddAllMetrics(TimeStamp := _Timestamp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1157","Tag":null,"Text":"(string)        SendList := AllMetricsList);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1158","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1159","Tag":null,"Text":"(string)    GetEoNNodeBirthCertificate := AddAllMetricsListErr;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1160","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1161","Tag":null,"Text":"(string)    IF GetEoNNodeBirthCertificate = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1162","Tag":null,"Text":"(string)        WriteStackLog(GC_Sparkplug.CMP_CORE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1163","Tag":null,"Text":"(string)            CmpLog.LogClass.LOG_DEBUG,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1164","Tag":null,"Text":"(string)            'SparkplugBSimple GetNBIRTHCertificate Succes',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1165","Tag":null,"Text":"(string)            '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1166","Tag":null,"Text":"(string)    ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1167","Tag":null,"Text":"(string)        WriteStackLog(GC_Sparkplug.CMP_CORE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1168","Tag":null,"Text":"(string)            CmpLog.LogClass.LOG_DEBUG,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1169","Tag":null,"Text":"(string)            'SparkplugBSimple GetNBIRTHCertificate Failed',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1170","Tag":null,"Text":"(string)            '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1171","Tag":null,"Text":"(string)    END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1172","Tag":null,"Text":"(string)ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1173","Tag":null,"Text":"(string)    GetEoNNodeBirthCertificate := InitEncoderErr;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1174","Tag":null,"Text":"(string)    WriteStackLog(GC_Sparkplug.CMP_CORE,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1175","Tag":null,"Text":"(string)        CmpLog.LogClass.LOG_ERROR,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1176","Tag":null,"Text":"(string)        'SparkplugBSimple GetNBIRTHCertificate Failed to init',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1177","Tag":null,"Text":"(string)        '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)342","Tag":null,"Text":"(string)END_IF"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)1082","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1083","Tag":null,"Text":"(string)\tNBIRTH"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1084","Tag":null,"Text":"(string)\t"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1085","Tag":null,"Text":"(string)\tThe NBIRTH message requires the following payload components."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1086","Tag":null,"Text":"(string)\t• The NBIRTH must include the a seq number in the payload and it must have a value of 0."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1087","Tag":null,"Text":"(string)\t• The NBIRTH must include a timestamp denoting the DateTime the message was sent from the EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1088","Tag":null,"Text":"(string)\t• The NBIRTH must include every metric the EoN node will ever report on. "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1089","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1090","Tag":null,"Text":"(string)\tAt a minimum these metrics must include:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1091","Tag":null,"Text":"(string)\t\to The metric name"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1092","Tag":null,"Text":"(string)\t\to The metric datatype"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1093","Tag":null,"Text":"(string)\t\to The current value"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1094","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1095","Tag":null,"Text":"(string)\t• If Template instances will be published by this EoN or any devices, all Template definitions must be"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1096","Tag":null,"Text":"(string)\tpublished in the NBIRTH."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1097","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1098","Tag":null,"Text":"(string)\t• A bdSeq number as a metric should be included in the payload. This should match the bdSeq number "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1099","Tag":null,"Text":"(string)    provided in the MQTT CONNECT packet’s LW&T payload (NDEATH). This allows backend applications to correlate "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1100","Tag":null,"Text":"(string)    NBIRTHs to NDEATHs. The bdSeq number should start at zero and increment by one on every new MQTT CONNECT."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1101","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1102","Tag":null,"Text":"(string)OPTIONAL: "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1103","Tag":null,"Text":"(string)\tThe NBIRTH message can also include optional ‘Node Control’ payload components. These are used by a backend"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1104","Tag":null,"Text":"(string)\tapplication to control aspects of the EoN node. The following are examples of Node Control metrics."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1105","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Reboot’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1106","Tag":null,"Text":"(string)\t\to Used by backend application(s) to reboot an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1107","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Rebirth’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1108","Tag":null,"Text":"(string)\t\to Used by backend application(s) to request a new NBIRTH and DBIRTH(s) from an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1109","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Next Server’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1110","Tag":null,"Text":"(string)\t\to Used by backend application(s) to request an EoN node to walk to the next MQTT Server in its List "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1111","Tag":null,"Text":"(string)\t\tin multi-MQTT Server environments."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1112","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Scan rate’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1113","Tag":null,"Text":"(string)\t\to Used by backed application(s) to modify a poll rate on an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1114","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1115","Tag":null,"Text":"(string)\tThe NBIRTH message can also include optional ‘Properties’ of an EoN node. The following are examples of "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1116","Tag":null,"Text":"(string)\tProperty metrics."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1117","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/Hardware Make’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1118","Tag":null,"Text":"(string)\t\to Used to transmit the hardware manufacturer of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1119","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/Hardware Model’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1120","Tag":null,"Text":"(string)\t\to Used to transmit the hardware model of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1121","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/OS’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1122","Tag":null,"Text":"(string)\t\to Used to transmit the operating system of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1123","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/OS Version’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1124","Tag":null,"Text":"(string)\t\to Used to transmit the OS version of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1125","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1126","Tag":null,"Text":"(string)METHOD GetEoNNodeBirthCertificate : ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1127","Tag":null,"Text":"(string)VAR_INPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1128","Tag":null,"Text":"(string)    LWT_BDSeq : ULINT; // BDSeq of previous LWT NDEATH"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1129","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1130","Tag":null,"Text":"(string)VAR_IN_OUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1131","Tag":null,"Text":"(string)    NBIRTH : FB_Metric; //UInt64"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1132","Tag":null,"Text":"(string)    AllMetricsList : LinkedList.List; // Contains a List of all metrics which will ever report on in this node "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1133","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1134","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1135","Tag":null,"Text":"(string)    InitEncoderErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1136","Tag":null,"Text":"(string)    AddSimpleMetricErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1137","Tag":null,"Text":"(string)    AddAllMetricsListErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)26","Tag":null,"Text":"(string)END_VAR"}}]}}}}}}},"TypeInfos":{"3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","f8a58466":"{f8a58466-d7f6-439f-bbb8-d4600e41d099}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"}
\ No newline at end of file
+{"payload":{"meta":{"Graph":{"@Type":"81297157","@Value":{"Guid":"(Guid)708f3e62-9660-4707-b015-c1ad9553d44a","ParentGuid":"(Guid)b276ae31-a54c-4d6f-8b78-cab400d0ac12","Name":"(string)GetEoNNodeBirthCertificate","Properties":{"@Type":"2c41fa04:IDictionary","@Value":[{"@Key":"(Guid)24568a24-c491-472c-a21f-ee5d33859fab","@Value":{"@Type":"24568a24","@Value":{"MemoryReserveForOnlineChange":"(int)0","ExcludeFromBuild":"(bool)False","External":"(bool)False","EnableSystemCall":"(bool)False","CompilerDefines":"(string)","LinkAlways":"(bool)False","Undefines":{"@Type":"[string]","@Value":[]}}}},{"@Key":"(Guid)829a18f2-c514-4f6e-9634-1df173429203","@Value":{"@Type":"829a18f2","@Value":{"ParentObjects":{"@Type":"fa2ee218:IDictionary","@Value":[{"@Key":"(Guid)21af5390-2942-461a-bf89-951aaf6999f1","@Value":"(Guid)f76fdf4d-010a-44b7-866a-82d474fcc977"}]}}}}]},"TypeGuid":"(Guid)f8a58466-d7f6-439f-bbb8-d4600e41d099","EmbeddedTypeGuids":{"@Type":"[Guid]","@Value":["(Guid)a9ed5b7e-75c5-4651-af16-d2c27e98cb94","(Guid)3b83b776-fb25-43b8-99f2-3c507c9143fc"]}}},"TypeInfos":{"24568a24":"{24568a24-c491-472c-a21f-ee5d33859fab}","2c41fa04":"{2c41fa04-1834-41c1-816e-303c7aa2c05b}","81297157":"{81297157-7ec9-45ce-845e-84cab2b88ade}","829a18f2":"{829a18f2-c514-4f6e-9634-1df173429203}","bool":"System.Boolean","fa2ee218":"{fa2ee218-a39b-4b6d-b249-49dbddbd168a}","Guid":"System.Guid","int":"System.Int32","string":"System.String"}},"object":{"Graph":{"@Type":"f8a58466","@Value":{"Implementation":{"@Type":"3b83b776","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)1138","Tag":null,"Text":"(string)SysTimeRtc.SysTimeRtcHighResGet(pTimestamp := _Timestamp);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1139","Tag":null,"Text":"(string)// incase you forgot to add bdSeq to AllMetricsList, I will add it for you"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1140","Tag":null,"Text":"(string)AllMetricsList.InsertElem(itfElement := NBIRTH,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1141","Tag":null,"Text":"(string)    itfPrecursor := 0);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1142","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1143","Tag":null,"Text":"(string)(* NBirth Sequence Metric => name \"bdSeq\", "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1144","Tag":null,"Text":"(string)\tMetricDataType.Int64 => value BdSeq *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1145","Tag":null,"Text":"(string)NBirth.Name := \"bdSeq\";"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1146","Tag":null,"Text":"(string)NBirth.DataType := MetricDataType.UInt64;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1147","Tag":null,"Text":"(string)NBirth.UInt64 := LWT_BDSeq; // mandatory"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1148","Tag":null,"Text":"(string)InitEncoderErr := _Encoder.InitializePayloadBeforeAddingMetrics(timestamp := _Timestamp);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1149","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1150","Tag":null,"Text":"(string)(* Reset the internal _seqNum to one(!), and leave the call above as is *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1151","Tag":null,"Text":"(string)_NextSeqNum := 1;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1152","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1153","Tag":null,"Text":"(string)IF InitEncoderErr = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1154","Tag":null,"Text":"(string)    (* Now all metrics which this node will ever report on, including BdSeq"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1155","Tag":null,"Text":"(string)\t   this List should already be prepared in the main application *)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1156","Tag":null,"Text":"(string)    AddAllMetricsListErr := AddAllMetrics(TimeStamp := _Timestamp,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1157","Tag":null,"Text":"(string)        SendList := AllMetricsList);"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1158","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1159","Tag":null,"Text":"(string)    GetEoNNodeBirthCertificate := AddAllMetricsListErr;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1160","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1161","Tag":null,"Text":"(string)    IF GetEoNNodeBirthCertificate = ERROR.NO_ERROR THEN"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1162","Tag":null,"Text":"(string)        WriteStackLog(GC_Sparkplug.CMP_STACK,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1163","Tag":null,"Text":"(string)            CmpLog.LogClass.LOG_DEBUG,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1164","Tag":null,"Text":"(string)            'SparkplugBSimple GetNBIRTHCertificate Succes',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1165","Tag":null,"Text":"(string)            '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1166","Tag":null,"Text":"(string)    ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1167","Tag":null,"Text":"(string)        WriteStackLog(GC_Sparkplug.CMP_STACK,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1168","Tag":null,"Text":"(string)            CmpLog.LogClass.LOG_DEBUG,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1169","Tag":null,"Text":"(string)            'SparkplugBSimple GetNBIRTHCertificate Failed',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1170","Tag":null,"Text":"(string)            '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1171","Tag":null,"Text":"(string)    END_IF"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1172","Tag":null,"Text":"(string)ELSE"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1173","Tag":null,"Text":"(string)    GetEoNNodeBirthCertificate := InitEncoderErr;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1174","Tag":null,"Text":"(string)    WriteStackLog(GC_Sparkplug.CMP_STACK,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1175","Tag":null,"Text":"(string)        CmpLog.LogClass.LOG_ERROR,"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1176","Tag":null,"Text":"(string)        'SparkplugBSimple GetNBIRTHCertificate Failed to init',"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1177","Tag":null,"Text":"(string)        '');"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)342","Tag":null,"Text":"(string)END_IF"}}]}}}}},"Interface":{"@Type":"a9ed5b7e","@Value":{"TextDocument":{"@Type":"f3878285","@Value":{"TextLines":{"@Type":"[a5de0b0b]","@Value":[{"@Type":"a5de0b0b","@Value":{"Id":"(long)1082","Tag":null,"Text":"(string)(*"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1083","Tag":null,"Text":"(string)\tNBIRTH"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1084","Tag":null,"Text":"(string)\t"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1085","Tag":null,"Text":"(string)\tThe NBIRTH message requires the following payload components."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1086","Tag":null,"Text":"(string)\t• The NBIRTH must include the a seq number in the payload and it must have a value of 0."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1087","Tag":null,"Text":"(string)\t• The NBIRTH must include a timestamp denoting the DateTime the message was sent from the EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1088","Tag":null,"Text":"(string)\t• The NBIRTH must include every metric the EoN node will ever report on. "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1089","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1090","Tag":null,"Text":"(string)\tAt a minimum these metrics must include:"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1091","Tag":null,"Text":"(string)\t\to The metric name"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1092","Tag":null,"Text":"(string)\t\to The metric datatype"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1093","Tag":null,"Text":"(string)\t\to The current value"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1094","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1095","Tag":null,"Text":"(string)\t• If Template instances will be published by this EoN or any devices, all Template definitions must be"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1096","Tag":null,"Text":"(string)\tpublished in the NBIRTH."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1097","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1098","Tag":null,"Text":"(string)\t• A bdSeq number as a metric should be included in the payload. This should match the bdSeq number "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1099","Tag":null,"Text":"(string)    provided in the MQTT CONNECT packet’s LW&T payload (NDEATH). This allows backend applications to correlate "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1100","Tag":null,"Text":"(string)    NBIRTHs to NDEATHs. The bdSeq number should start at zero and increment by one on every new MQTT CONNECT."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1101","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1102","Tag":null,"Text":"(string)OPTIONAL: "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1103","Tag":null,"Text":"(string)\tThe NBIRTH message can also include optional ‘Node Control’ payload components. These are used by a backend"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1104","Tag":null,"Text":"(string)\tapplication to control aspects of the EoN node. The following are examples of Node Control metrics."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1105","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Reboot’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1106","Tag":null,"Text":"(string)\t\to Used by backend application(s) to reboot an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1107","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Rebirth’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1108","Tag":null,"Text":"(string)\t\to Used by backend application(s) to request a new NBIRTH and DBIRTH(s) from an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1109","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Next Server’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1110","Tag":null,"Text":"(string)\t\to Used by backend application(s) to request an EoN node to walk to the next MQTT Server in its List "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1111","Tag":null,"Text":"(string)\t\tin multi-MQTT Server environments."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1112","Tag":null,"Text":"(string)\t• Metric name: ‘Node Control/Scan rate’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1113","Tag":null,"Text":"(string)\t\to Used by backed application(s) to modify a poll rate on an EoN node."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1114","Tag":null,"Text":"(string)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1115","Tag":null,"Text":"(string)\tThe NBIRTH message can also include optional ‘Properties’ of an EoN node. The following are examples of "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1116","Tag":null,"Text":"(string)\tProperty metrics."}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1117","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/Hardware Make’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1118","Tag":null,"Text":"(string)\t\to Used to transmit the hardware manufacturer of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1119","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/Hardware Model’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1120","Tag":null,"Text":"(string)\t\to Used to transmit the hardware model of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1121","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/OS’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1122","Tag":null,"Text":"(string)\t\to Used to transmit the operating system of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1123","Tag":null,"Text":"(string)\t• Metric name: ‘Properties/OS Version’"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1124","Tag":null,"Text":"(string)\t\to Used to transmit the OS version of the EoN node"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1125","Tag":null,"Text":"(string)*)"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1126","Tag":null,"Text":"(string)METHOD GetEoNNodeBirthCertificate : ERROR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1127","Tag":null,"Text":"(string)VAR_INPUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1128","Tag":null,"Text":"(string)    LWT_BDSeq : ULINT; // BDSeq of previous LWT NDEATH"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1129","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1130","Tag":null,"Text":"(string)VAR_IN_OUT"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1131","Tag":null,"Text":"(string)    NBIRTH : FB_Metric; //UInt64"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1132","Tag":null,"Text":"(string)    AllMetricsList : LinkedList.List; // Contains a List of all metrics which will ever report on in this node "}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1133","Tag":null,"Text":"(string)END_VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1134","Tag":null,"Text":"(string)VAR"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1135","Tag":null,"Text":"(string)    InitEncoderErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1136","Tag":null,"Text":"(string)    AddSimpleMetricErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)1137","Tag":null,"Text":"(string)    AddAllMetricsListErr : ERROR;"}},{"@Type":"a5de0b0b","@Value":{"Id":"(long)26","Tag":null,"Text":"(string)END_VAR"}}]}}}}}}},"TypeInfos":{"3b83b776":"{3b83b776-fb25-43b8-99f2-3c507c9143fc}","a5de0b0b":"{a5de0b0b-1cb5-4913-ac21-9d70293ec00d}","a9ed5b7e":"{a9ed5b7e-75c5-4651-af16-d2c27e98cb94}","f3878285":"{f3878285-8e4f-490b-bb1b-9acbb7eb04db}","f8a58466":"{f8a58466-d7f6-439f-bbb8-d4600e41d099}","long":"System.Int64","string":"System.String"}}},"FormatVersion":"1.0"}
\ No newline at end of file