nodeMetrics.add(new MetricBuilder("MyNodeMetric", Int32, index) .timestamp(calendar.getTime()) .createMetric()); deviceMetrics.add(new MetricBuilder("MyDeviceMetric", Int32, index+50) .timestamp(calendar.getTime()) .createMetric());
private List<Metric> newMetrics(boolean isBirth) throws SparkplugException { Random random = new Random(); List<Metric> metrics = new ArrayList<Metric>(); metrics.add(new MetricBuilder("Int8", Int8, (byte)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("Int16", Int16, (short)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("Int32", Int32, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("Int64", Int64, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("UInt8", UInt8, (short)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("UInt16", UInt16, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("UInt32", UInt32, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("UInt64", UInt64, BigInteger.valueOf(random.nextLong())).createMetric()); metrics.add(new MetricBuilder("Float", Float, random.nextFloat()).createMetric()); metrics.add(new MetricBuilder("Double", Double, random.nextDouble()).createMetric()); metrics.add(new MetricBuilder("Boolean", Boolean, random.nextBoolean()).createMetric()); metrics.add(new MetricBuilder("String", String, newUUID()).createMetric()); metrics.add(new MetricBuilder("DateTime", DateTime, new Date()).createMetric()); metrics.add(new MetricBuilder("Text", Text, newUUID()).createMetric()); metrics.add(new MetricBuilder("UUID", UUID, newUUID()).createMetric()); metrics.add(new MetricBuilder("DataSet", DataSet, newDataSet()).createMetric()); if (isBirth) { metrics.add(new MetricBuilder("TemplateDef", Template, newTemplate(true, null)).createMetric()); metrics.add(new MetricBuilder("TemplateInst", Template, newTemplate(false, "TemplateDef")).createMetric()); metrics.add(new MetricBuilder("IntWithProps", Int32, random.nextInt()) .properties(new PropertySetBuilder() .addProperty("engUnit", new PropertyValue(PropertyDataType.String, "My Units")) .addProperty("engHigh", new PropertyValue(PropertyDataType.Int32, Integer.MAX_VALUE)) .addProperty("engLow", new PropertyValue(PropertyDataType.Int32, Integer.MIN_VALUE))
.addMetric(new MetricBuilder("bdSeq", MetricDataType.Int64, bdSeq) .createMetric()) .addMetric(new MetricBuilder("Up Time ms", MetricDataType.Int64, System.currentTimeMillis() - upTimeStart) .createMetric()) .addMetric(new MetricBuilder("Node Control/Next Server", MetricDataType.Boolean, false) .createMetric()) .addMetric(new MetricBuilder("Node Control/Rebirth", MetricDataType.Boolean, false) .createMetric()) .addMetric(new MetricBuilder("Node Control/Reboot", MetricDataType.Boolean, false) .createMetric()) .addMetric(new MetricBuilder("Node Control/Scan Rate ms", MetricDataType.Int32, scanRateMs) .createMetric()) .addMetric(new MetricBuilder("Properties/Board Type", MetricDataType.String, SystemInfo.getBoardType().toString()) .createMetric()) .addMetric(new MetricBuilder("Properties/Hardware",
outboundPayloadBuilder.addMetric(new MetricBuilder("Node Control/Scan Rate ms", MetricDataType.Int32, scanRateMs).createMetric()); outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/e", MetricDataType.Boolean, pibrella.getOutputPin(PibrellaOutput.E).isHigh()).createMetric()); } else if (metric.getName().equals("Outputs/f")) { pibrella.getOutputPin(PibrellaOutput.F).setState((Boolean) metric.getValue()); outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/f", MetricDataType.Boolean, pibrella.getOutputPin(PibrellaOutput.F).isHigh()).createMetric()); } else if (metric.getName().equals("Outputs/g")) { pibrella.getOutputPin(PibrellaOutput.G).setState((Boolean) metric.getValue()); outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/g", MetricDataType.Boolean, pibrella.getOutputPin(PibrellaOutput.G).isHigh()).createMetric()); } else if (metric.getName().equals("Outputs/h")) { pibrella.getOutputPin(PibrellaOutput.H).setState((Boolean) metric.getValue()); outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/h", MetricDataType.Boolean, pibrella.getOutputPin(PibrellaOutput.H).isHigh()).createMetric()); } else if (metric.getName().equals("Outputs/LEDs/green")) { if (((Boolean) metric.getValue()) == true) { outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/LEDs/green", MetricDataType.Boolean, pibrella.ledGreen().isOn()).createMetric()); } else if (metric.getName().equals("Outputs/LEDs/red")) { if (((Boolean) metric.getValue()) == true) { outboundPayloadBuilder.addMetric(new MetricBuilder("Outputs/LEDs/red", MetricDataType.Boolean, pibrella.ledRed().isOn()).createMetric()); } else if (metric.getName().equals("Outputs/LEDs/yellow")) {
.addMetric(new MetricBuilder("bdSeq", MetricDataType.Int64, bdSeq) .createMetric()) .createPayload(); byte[] bytes = new SparkplugBPayloadEncoder().getBytes(payload);
} else if ("Outputs/0".equals(name)) { System.out.println("Outputs/0: " + value); outboundPayload.addMetric(new MetricBuilder("Inputs/0", Boolean, value).createMetric()); outboundPayload.addMetric(new MetricBuilder("Outputs/0", Boolean, value).createMetric()); System.out.println("Publishing updated value for Inputs/0 " + value); } else if ("Outputs/1".equals(name)) { System.out.println("Output1: " + value); outboundPayload.addMetric(new MetricBuilder("Inputs/1", Int32, value).createMetric()); outboundPayload.addMetric(new MetricBuilder("Outputs/1", Int32, value).createMetric()); System.out.println("Publishing updated value for Inputs/1 " + value); } else if ("Outputs/2".equals(name)) { System.out.println("Output2: " + value); outboundPayload.addMetric(new MetricBuilder("Inputs/2", Double, value).createMetric()); outboundPayload.addMetric(new MetricBuilder("Outputs/2", Double, value).createMetric()); System.out.println("Publishing updated value for Inputs/2 " + value);
null); payload.addMetric(new MetricBuilder("bdSeq", Int64, (long)bdSeq).createMetric()); payload.addMetric(new MetricBuilder("Node Control/Rebirth", Boolean, false) .createMetric()); payload.addMetric(new MetricBuilder("MyNodeMetric", Int32, index) .timestamp(calendar.getTime()) .createMetric()); null); payload.addMetric(new MetricBuilder("MyDeviceMetric", Int32, index+50) .timestamp(calendar.getTime()) .createMetric());
null); payload.addMetric(new MetricBuilder("Device Control/Rebirth", Boolean, false) .createMetric()); payload.addMetric(new MetricBuilder("Inputs/0", Boolean, true).createMetric()); payload.addMetric(new MetricBuilder("Inputs/1", Int32, 0).createMetric()); payload.addMetric(new MetricBuilder("Inputs/2", Double, 1.23d).createMetric()); payload.addMetric(new MetricBuilder("Outputs/0", Boolean, true).createMetric()); payload.addMetric(new MetricBuilder("Outputs/1", Int32, 0).createMetric()); payload.addMetric(new MetricBuilder("Outputs/2", Double, 1.23d).createMetric()); payload.addMetric(new MetricBuilder("Properties/hw_version", String, HW_VERSION).createMetric()); payload.addMetric(new MetricBuilder("Properties/sw_version", String, SW_VERSION).createMetric()); payload.addMetric(new MetricBuilder("MyMetric", String, "My Value") .properties(propertySet) .createMetric());
SparkplugBPayload payload = new SparkplugBPayloadBuilder(getNextSeqNum()) .setTimestamp(new Date()) .addMetric(new MetricBuilder("Up Time ms", MetricDataType.Int64, System.currentTimeMillis() - upTimeStart) .createMetric()) .createPayload();
metrics.add(new MetricBuilder("subType", Template, new TemplateBuilder() .definition(true) .addMetric(new MetricBuilder("StringMember", String, "value").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 0).createMetric()) .createTemplate()).createMetric()); metrics.add(new MetricBuilder("newType", Template, new TemplateBuilder() .definition(true) .addMetric(new MetricBuilder("mySubType", Template, new TemplateBuilder() .definition(false) .templateRef("subType") .addMetric(new MetricBuilder("StringMember", String, "value").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 0).createMetric()) .createTemplate()).createMetric()) .createTemplate()).createMetric()); metrics.add(new MetricBuilder("myNewType", Template, new TemplateBuilder() .definition(false) .templateRef("newType") .addMetric(new MetricBuilder("mySubType", Template, new TemplateBuilder() .definition(false) .templateRef("subType") .addMetric(new MetricBuilder("StringMember", String, "myValue").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 1).createMetric()) .createTemplate()).createMetric()) .createTemplate()).createMetric());
null); payload.addMetric(new MetricBuilder("bdSeq", Int64, (long)bdSeq).createMetric()); payload.addMetric(new MetricBuilder("Node Control/Rebirth", Boolean, false) .createMetric()); payload.addMetric(new MetricBuilder("MyMetric", String, "My Value") .properties(propertySet) .createMetric());
public void onStateChange(ButtonStateChangeEvent event) { try { synchronized (lock) { SparkplugBPayloadBuilder outboundPayloadBuilder = new SparkplugBPayloadBuilder(getNextSeqNum()) .setTimestamp(new Date()); if (event.getButton().getState() == ButtonState.PRESSED) { outboundPayloadBuilder.addMetric(new MetricBuilder("button", MetricDataType.Boolean, true).createMetric()); buttonCounter++; if (buttonCounter > buttonCounterSetpoint) { buttonCounter = 0; } outboundPayloadBuilder.addMetric(new MetricBuilder("button count", MetricDataType.Int32, buttonCounter).createMetric()); } else { outboundPayloadBuilder.addMetric(new MetricBuilder("button", MetricDataType.Boolean, false).createMetric()); } byte[] bytes = new SparkplugBPayloadEncoder().getBytes(outboundPayloadBuilder.createPayload()); client.publish(NAMESPACE + "/" + groupId + "/DDATA/" + edgeNode + "/" + deviceId, bytes, 0, false); } } catch (Exception e) { e.printStackTrace(); } } });
/** * * @param payload * @return * @throws IOException */ public static SparkplugBPayload compress(SparkplugBPayload payload, CompressionAlgorithm algorithm) throws IOException, SparkplugException { logger.trace("Compressing payload"); SparkplugBPayloadEncoder encoder = new SparkplugBPayloadEncoder(); // Encode bytes byte[] encoded = encoder.getBytes(payload); byte[] compressed = null; Metric algorithmMetric = new MetricBuilder(METRIC_ALGORITHM, MetricDataType.String, algorithm.toString()) .createMetric(); // Switch over compression algorithm switch (algorithm) { case GZIP: compressed = GZipUtil.compress(encoded); break; case DEFLATE: compressed = deflateBytes(encoded); break; default: throw new SparkplugException("Unknown or unsupported algorithm " + algorithm); } // Wrap and return the payload return new SparkplugBPayloadBuilder(payload.getSeq()).setBody(compressed).setUuid(UUID_COMPRESSED) .addMetric(algorithmMetric).createPayload(); }
private Template newTemplate(boolean isDef, String templatRef) throws SparkplugException { Random random = new Random(); List<Metric> metrics = new ArrayList<Metric>(); metrics.add(new MetricBuilder("MyInt8", Int8, (byte)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt16", Int16, (short)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt32", Int32, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt64", Int64, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("MyUInt8", UInt8, (short)random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyUInt16", UInt16, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyUInt32", UInt32, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("MyUInt64", UInt64, BigInteger.valueOf(random.nextLong())).createMetric()); metrics.add(new MetricBuilder("MyFloat", Float, random.nextFloat()).createMetric()); metrics.add(new MetricBuilder("MyDouble", Double, random.nextDouble()).createMetric()); metrics.add(new MetricBuilder("MyBoolean", Boolean, random.nextBoolean()).createMetric()); metrics.add(new MetricBuilder("MyString", String, newUUID()).createMetric()); metrics.add(new MetricBuilder("MyDateTime", DateTime, new Date()).createMetric()); metrics.add(new MetricBuilder("MyText", Text, newUUID()).createMetric()); metrics.add(new MetricBuilder("MyUUID", UUID, newUUID()).createMetric()); return new TemplateBuilder() .version("v1.0") .templateRef(templatRef) .definition(isDef) .addParameters(newParams()) .addMetrics(metrics) .createTemplate(); }
.addMetric(new MetricBuilder("Node Control/Rebirth", MetricDataType.Boolean, true) .createMetric()) .createPayload()), 0, false);
private void publishBirth() { try { synchronized (seqLock) { // Reset the sequence number seq = 0; // Create the BIRTH payload and set the position and other metrics SparkplugBPayload payload = new SparkplugBPayload(new Date(), new ArrayList<Metric>(), getSeqNum(), newUUID(), null); payload.addMetric(new MetricBuilder("bdSeq", Int64, (long) bdSeq).createMetric()); payload.addMetric(new MetricBuilder("Node Control/Rebirth", Boolean, false).createMetric()); // Add a node level template definition and instance payload.addMetric( new MetricBuilder("simpleType", Template, newSimpleTemplate(true, null)).createMetric()); payload.addMetric(new MetricBuilder("mySimpleType", Template, newSimpleTemplate(false, "simpleType")) .createMetric()); // Add the complex template definition - All UDT definitions must be published in the NBIRTH payload.addMetrics(newComplexTemplateDefs()); System.out.println("Publishing Edge Node Birth"); executor.execute(new Publisher(NAMESPACE + "/" + groupId + "/NBIRTH/" + edgeNode, payload)); // Create the payload and add a complex Template instance payload = new SparkplugBPayload(new Date(), newComplexTemplateInstance(), getSeqNum(), newUUID(), null); System.out.println("Publishing Device Birth"); executor.execute( new Publisher(NAMESPACE + "/" + groupId + "/DBIRTH/" + edgeNode + "/" + deviceId, payload)); } } catch (Exception e) { e.printStackTrace(); } }
private Metric convertMetric(SparkplugBProto.Payload.Metric protoMetric) throws Exception { // Convert the dataType MetricDataType dataType = MetricDataType.fromInteger((protoMetric.getDatatype())); // Build and return the Metric return new MetricBuilder(protoMetric.getName(), dataType, getMetricValue(protoMetric)) .isHistorical( protoMetric.hasIsHistorical() ? protoMetric.getIsHistorical() : null) .isTransient(protoMetric .hasIsTransient() ? protoMetric.getIsTransient() : null) .timestamp(protoMetric.hasTimestamp() ? new Date(protoMetric.getTimestamp()) : null) .alias(protoMetric.hasAlias() ? protoMetric.getAlias() : null) .metaData(protoMetric.hasMetadata() ? new MetaDataBuilder().contentType(protoMetric.getMetadata().getContentType()) .size(protoMetric.getMetadata().getSize()).seq(protoMetric.getMetadata().getSeq()) .fileName(protoMetric.getMetadata().getFileName()) .fileType(protoMetric.getMetadata().getFileType()) .md5(protoMetric.getMetadata().getMd5()) .description(protoMetric.getMetadata().getDescription()).createMetaData() : null) .properties(protoMetric.hasProperties() ? new PropertySetBuilder().addProperties(convertProperties(protoMetric.getProperties())) .createPropertySet() : null) .createMetric(); }
private Template newSimpleTemplate(boolean isDef, String templatRef) throws SparkplugException { Random random = new Random(); List<Metric> metrics = new ArrayList<Metric>(); metrics.add(new MetricBuilder("MyInt8", Int8, (byte) random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt16", Int16, (short) random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt32", Int32, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyInt64", Int64, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("MyUInt8", UInt8, (short) random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyUInt16", UInt16, random.nextInt()).createMetric()); metrics.add(new MetricBuilder("MyUInt32", UInt32, random.nextLong()).createMetric()); metrics.add(new MetricBuilder("MyUInt64", UInt64, BigInteger.valueOf(random.nextLong())).createMetric()); metrics.add(new MetricBuilder("MyFloat", Float, random.nextFloat()).createMetric()); metrics.add(new MetricBuilder("MyDouble", Double, random.nextDouble()).createMetric()); metrics.add(new MetricBuilder("MyBoolean", Boolean, random.nextBoolean()).createMetric()); metrics.add(new MetricBuilder("MyString", String, newUUID()).createMetric()); metrics.add(new MetricBuilder("MyDateTime", DateTime, new Date()).createMetric()); metrics.add(new MetricBuilder("MyText", Text, newUUID()).createMetric()); metrics.add(new MetricBuilder("MyUUID", UUID, newUUID()).createMetric()); return new TemplateBuilder().version("v1.0").templateRef(templatRef).definition(isDef) .addParameters(newParams()).addMetrics(metrics).createTemplate(); }
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) { try { synchronized (lock) { SparkplugBPayloadBuilder outboundPayloadBuilder = new SparkplugBPayloadBuilder(getNextSeqNum()) .setTimestamp(new Date()); if (event.getState() == PinState.HIGH) { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/d", MetricDataType.Boolean, true).createMetric()); } else { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/d", MetricDataType.Boolean, false).createMetric()); } byte[] bytes = new SparkplugBPayloadEncoder().getBytes(outboundPayloadBuilder.createPayload()); client.publish(NAMESPACE + "/" + groupId + "/DDATA/" + edgeNode + "/" + deviceId, bytes, 0, false); } } catch (Exception e) { e.printStackTrace(); } } });
public void handleGpioPinDigitalStateChangeEvent(GpioPinDigitalStateChangeEvent event) { try { synchronized (lock) { SparkplugBPayloadBuilder outboundPayloadBuilder = new SparkplugBPayloadBuilder(getNextSeqNum()) .setTimestamp(new Date()); if (event.getState() == PinState.HIGH) { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/c", MetricDataType.Boolean, true).createMetric()); } else { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/c", MetricDataType.Boolean, false).createMetric()); } byte[] bytes = new SparkplugBPayloadEncoder().getBytes(outboundPayloadBuilder.createPayload()); client.publish(NAMESPACE + "/" + groupId + "/DDATA/" + edgeNode + "/" + deviceId, bytes, 0, false); } } catch (Exception e) { e.printStackTrace(); } } });