def publishDeviceBirth(): print "Publishing Device Birth" # Get the payload payload = sparkplug.getDeviceBirthPayload() # Add some device metrics addMetric(payload, "input/Device Metric0", AliasMap.Device_Metric0, MetricDataType.String, "hello device") addMetric(payload, "input/Device Metric1", AliasMap.Device_Metric1, MetricDataType.Boolean, True) addMetric(payload, "output/Device Metric2", AliasMap.Device_Metric2, MetricDataType.Int16, 16) addMetric(payload, "output/Device Metric3", AliasMap.Device_Metric3, MetricDataType.Boolean, True) # Create the UDT definition value which includes two UDT members and a single parameter and add it to the payload template = initTemplateMetric(payload, "My_Custom_Motor", AliasMap.My_Custom_Motor, "Custom_Motor") templateParameter = template.parameters.add() templateParameter.name = "Index" templateParameter.type = ParameterDataType.String templateParameter.string_value = "1" addMetric(template, "RPMs", None, MetricDataType.Int32, 123) # No alias in UDT members addMetric(template, "AMPs", None, MetricDataType.Int32, 456) # No alias in UDT members # Publish the initial data with the Device BIRTH certificate totalByteArray = bytearray(payload.SerializeToString()) client.publish( "spBv1.0/" + myGroupId + "/DBIRTH/" + myNodeName + "/" + myDeviceName, totalByteArray, 0, False)
def publishBirths(): print("Publishing Birth") # Create the NBIRTH payload payload = sparkplug.getNodeBirthPayload() # Add the Node Controls addMetric(payload, "Node Control/Next Server", None, MetricDataType.Boolean, False) addMetric(payload, "Node Control/Rebirth", None, MetricDataType.Boolean, False) addMetric(payload, "Node Control/Reboot", None, MetricDataType.Boolean, False) # Set up the device Parameters p = subprocess.Popen('uname -a', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in p.stdout.readlines(): unameOutput = line, retVal = p.wait() p = subprocess.Popen('cat /proc/cpuinfo | grep Hardware', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in p.stdout.readlines(): hardwareOutput = line, retVal = p.wait() p = subprocess.Popen('cat /proc/cpuinfo | grep Revision', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in p.stdout.readlines(): revisionOutput = line, retVal = p.wait() p = subprocess.Popen('cat /proc/cpuinfo | grep Serial', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) for line in p.stdout.readlines(): serialOutput = line, retVal = p.wait() addMetric(payload, "Parameters/sw_version", None, MetricDataType.String, ''.join(unameOutput)) addMetric(payload, "Parameters/hw_version", None, MetricDataType.String, ''.join(hardwareOutput)) addMetric(payload, "Parameters/hw_revision", None, MetricDataType.String, ''.join(revisionOutput)) addMetric(payload, "Parameters/hw_serial", None, MetricDataType.String, ''.join(serialOutput)) # Publish the NBIRTH certificate byteArray = bytearray(payload.SerializeToString()) client.publish("spBv1.0/" + myGroupId + "/NBIRTH/" + myNodeName, byteArray, 0, False) # Set up the DBIRTH with the input metrics payload = sparkplug.getDeviceBirthPayload() addMetric(payload, "Inputs/a", None, MetricDataType.Boolean, pibrella.input.a.read()) addMetric(payload, "Inputs/b", None, MetricDataType.Boolean, pibrella.input.b.read()) addMetric(payload, "Inputs/c", None, MetricDataType.Boolean, pibrella.input.c.read()) addMetric(payload, "Inputs/d", None, MetricDataType.Boolean, pibrella.input.d.read()) # Set up the output states on first run so Ignition and MQTT Engine are aware of them addMetric(payload, "Outputs/e", None, MetricDataType.Boolean, pibrella.output.e.read()) addMetric(payload, "Outputs/f", None, MetricDataType.Boolean, pibrella.output.f.read()) addMetric(payload, "Outputs/g", None, MetricDataType.Boolean, pibrella.output.g.read()) addMetric(payload, "Outputs/h", None, MetricDataType.Boolean, pibrella.output.h.read()) addMetric(payload, "Outputs/LEDs/green", None, MetricDataType.Boolean, pibrella.light.green.read()) addMetric(payload, "Outputs/LEDs/red", None, MetricDataType.Boolean, pibrella.light.red.read()) addMetric(payload, "Outputs/LEDs/yellow", None, MetricDataType.Boolean, pibrella.light.yellow.read()) addMetric(payload, "button", None, MetricDataType.Boolean, pibrella.button.read()) addMetric(payload, "buzzer_fail", None, MetricDataType.Boolean, 0) addMetric(payload, "buzzer_success", None, MetricDataType.Boolean, 0) # Publish the initial data with the DBIRTH certificate totalByteArray = bytearray(payload.SerializeToString()) client.publish("spBv1.0/" + myGroupId + "/DBIRTH/" + myNodeName + "/" + mySubNodeName, totalByteArray, 0, False)
def publishDeviceBirth(): print("Publishing Device Birth") # Get the payload payload = sparkplug.getDeviceBirthPayload() # Add some device metrics addMetric(payload, "input/Frame Number", AliasMap.Device_frame_numberx, MetricDataType.Int16, frame_numberx) addMetric(payload, "input/Number of Objects", AliasMap.Device_num_rectsx, MetricDataType.Int16, num_rectsx) addMetric(payload, "input/Vehicle count", AliasMap.Device_counter1, MetricDataType.Int16, counter1) addMetric(payload, "input/Person count", AliasMap.Device_counter2, MetricDataType.Int16, counter2) addMetric(payload, "output/Device Metric2", AliasMap.Device_Metric2, MetricDataType.Int16, 3) addMetric(payload, "output/Device Metric3", AliasMap.Device_Metric3, MetricDataType.Boolean, True) # Publish the initial data with the Device BIRTH certificate totalByteArray = bytearray(payload.SerializeToString()) client.publish( "spBv1.0/" + myGroupId + "/DBIRTH/" + myNodeName + "/" + myDeviceName, totalByteArray, 0, False)
def publishBirth(self, *args): self.logger.debug("Publishing Device Birth") # Create the node birth payload payload = sparkplug.getDeviceBirthPayload() # Add all metrics to payload, including custom properties for metric in self.metrics: m = sparkplug.addMetric(payload, metric.name, metric.alias, metric.datatype, metric.initial) super().add_properties_to_metric(m, metric.property_list) byteArray = bytearray(payload.SerializeToString()) self.client.publish( "spBv1.0/" + self.node.group_id + "/DBIRTH/" + self.node.node_id + "/" + self.device_name, byteArray, 0, False)
def publishDeviceBirth(tpoics): print ("Publishing Device Birth") payload = sparkplug.getDeviceBirthPayload() addMetric(payload, "input/Device Metric0", AliasMap.Device_Metric0, MetricDataType.String, "hello device") addMetric(payload, "input/Device Metric1", AliasMap.Device_Metric1, MetricDataType.Boolean, True) addMetric(payload, "output/Device Metric2", AliasMap.Device_Metric2, MetricDataType.Int16, 16) addMetric(payload, "output/Device Metric3", AliasMap.Device_Metric3, MetricDataType.Boolean, True) template = initTemplateMetric(payload, "My_Custom_Motor", AliasMap.My_Custom_Motor, "Custom_Motor") templateParameter = template.parameters.add() templateParameter.name = "Index" templateParameter.type = ParameterDataType.String templateParameter.string_value = "1" addMetric(template, "RPMs", None, MetricDataType.Int32, 123) # No alias in UDT members addMetric(template, "AMPs", None, MetricDataType.Int32, 456) # No alias in UDT members return bytearray(payload.SerializeToString())
def publishDeviceBirth(): print "Publishing Device Birth" # Get the payload payload = sparkplug.getDeviceBirthPayload() # Add some device metrics addMetric(payload, "input/Device Metric0", AliasMap.Device_Metric0, MetricDataType.String, "hello device") addMetric(payload, "input/Device Metric1", AliasMap.Device_Metric1, MetricDataType.Boolean, True) addMetric(payload, "output/Device Metric2", AliasMap.Device_Metric2, MetricDataType.Int16, 16) addMetric(payload, "output/Device Metric3", AliasMap.Device_Metric3, MetricDataType.Boolean, True) # Create the UDT definition value which includes two UDT members and a single parameter and add it to the payload template = initTemplateMetric(payload, "My_Custom_Motor", AliasMap.My_Custom_Motor, "Custom_Motor") templateParameter = template.parameters.add() templateParameter.name = "Index" templateParameter.type = ParameterDataType.String templateParameter.string_value = "1" addMetric(template, "RPMs", None, MetricDataType.Int32, 123) # No alias in UDT members addMetric(template, "AMPs", None, MetricDataType.Int32, 456) # No alias in UDT members # Publish the initial data with the Device BIRTH certificate totalByteArray = bytearray(payload.SerializeToString()) client.publish("spBv1.0/" + myGroupId + "/DBIRTH/" + myNodeName + "/" + myDeviceName, totalByteArray, 0, False)
def publishDeviceBirth(): print("Publishing Device Birth") # Get the payload payload = sparkplug.getDeviceBirthPayload() # Add some device metrics addMetric(payload, "input/Frame Number", AliasMap.Device_frame_numberx, MetricDataType.Int16, frame_numberx) addMetric(payload, "input/Device Metric0", AliasMap.Device_Metric0, MetricDataType.String, "hello device") addMetric(payload, "input/Device Metric1", AliasMap.Device_Metric1, MetricDataType.Boolean, True) addMetric(payload, "input/Number of Objects", AliasMap.Device_num_rectsx, MetricDataType.Int16, num_rectsx) addMetric(payload, "output/Device Metric2", AliasMap.Device_Metric2, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input1", AliasMap.Device_Input1, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input2", AliasMap.Device_Input2, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input3", AliasMap.Device_Input3, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input4", AliasMap.Device_Input4, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input5", AliasMap.Device_Input5, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input6", AliasMap.Device_Input6, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input7", AliasMap.Device_Input7, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input8", AliasMap.Device_Input8, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input9", AliasMap.Device_Input9, MetricDataType.Int16, 0) addMetric(payload, "output/Device Input10", AliasMap.Device_Input10, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output1", AliasMap.Device_Output1, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output2", AliasMap.Device_Output2, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output3", AliasMap.Device_Output3, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output4", AliasMap.Device_Output4, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output5", AliasMap.Device_Output5, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output6", AliasMap.Device_Output6, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output7", AliasMap.Device_Output7, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output8", AliasMap.Device_Output8, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output9", AliasMap.Device_Output9, MetricDataType.Int16, 0) addMetric(payload, "input/Device Output10", AliasMap.Device_Output10, MetricDataType.Int16, 0) addMetric(payload, "output/Device Metric3", AliasMap.Device_Metric3, MetricDataType.Boolean, True) addMetric(payload, "output/Device Metric4", AliasMap.Device_Metric4, MetricDataType.String, "Start") # Publish the initial data with the Device BIRTH certificate totalByteArray = bytearray(payload.SerializeToString()) client.publish( "spBv1.0/" + myGroupId + "/DBIRTH/" + myNodeName + "/" + myDeviceName, totalByteArray, 0, False)
def __initPayload(self): #Dependency with external library sparkplug self.__payload = sparkplug.getDeviceBirthPayload()