new SparkplugBPayloadEncoder().getBytes(new SparkplugBPayloadBuilder() .addMetric(new MetricBuilder("Node Control/Rebirth", MetricDataType.Boolean, true) .createMetric()) .createPayload()), 0, false);
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(); }
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(); }
MetricDataType.Int64, System.currentTimeMillis() - upTimeStart) .createMetric()) .createPayload();
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());
.addMetric(new MetricBuilder("StringMember", String, "value").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 0).createMetric()) .createTemplate()).createMetric()); .definition(false) .templateRef("subType") .addMetric(new MetricBuilder("StringMember", String, "value").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 0).createMetric()) .createTemplate()).createMetric()) .createTemplate()).createMetric()); .definition(false) .templateRef("subType") .addMetric(new MetricBuilder("StringMember", String, "myValue").createMetric()) .addMetric(new MetricBuilder("IntegerMember", Int32, 1).createMetric()) .createTemplate()).createMetric()) .createTemplate()).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 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 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(); } }
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(); } } });
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/b", MetricDataType.Boolean, true).createMetric()); } else { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/b", 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(); } } });
private List<Metric> newComplexTemplateDefs() throws SparkplugInvalidTypeException { ArrayList<Metric> metrics = new ArrayList<Metric>(); // Add a new template "subType" definition with two primitive members 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()); // Add new template "complexType" definition that contains an instance of "subType" as a member metrics.add(new MetricBuilder("complexType", 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()); return metrics; }
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/a", MetricDataType.Boolean, true).createMetric()); } else { outboundPayloadBuilder.addMetric(new MetricBuilder("Inputs/a", 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(); } } });
private List<Metric> newComplexTemplateInstance() throws SparkplugInvalidTypeException { ArrayList<Metric> metrics = new ArrayList<Metric>(); // Add an instance of "complexType metrics.add( new MetricBuilder("myNewType", Template, new TemplateBuilder().definition(false).templateRef("complexType") .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()); return metrics; } private Template newSimpleTemplate(boolean isDef, String templatRef) throws SparkplugException {
public TemplateBuilder(Template template) throws SparkplugException { this.version = template.getVersion(); this.templateRef = template.getTemplateRef(); this.isDefinition = template.isDefinition(); this.metrics = new ArrayList<Metric>(template.getMetrics().size()); for (Metric metric : template.getMetrics()) { this.metrics.add(new MetricBuilder(metric).createMetric()); } this.parameters = new ArrayList<Parameter>(template.getParameters().size()); for (Parameter parameter : template.getParameters()) { this.parameters.add(new Parameter(parameter.getName(), parameter.getType(), parameter.getValue())); } }
private SparkplugBPayloadBuilder addBdSeqNum(SparkplugBPayloadBuilder payload) throws Exception { if (payload == null) { payload = new SparkplugBPayloadBuilder(); } if (bdSeq == 256) { bdSeq = 0; } payload.addMetric(new MetricBuilder("bdSeq", Int64, (long)bdSeq).createMetric()); bdSeq++; return payload; }
private SparkplugBPayloadBuilder addBdSeqNum(SparkplugBPayloadBuilder payload) throws Exception { if (payload == null) { payload = new SparkplugBPayloadBuilder(); } if (bdSeq == 256) { bdSeq = 0; } payload.addMetric(new MetricBuilder("bdSeq", Int64, (long)bdSeq).createMetric()); bdSeq++; return payload; }
private SparkplugBPayloadBuilder addBdSeqNum(SparkplugBPayloadBuilder payload) throws Exception { if (payload == null) { payload = new SparkplugBPayloadBuilder(); } if (bdSeq == 256) { bdSeq = 0; } payload.addMetric(new MetricBuilder("bdSeq", Int64, (long) bdSeq).createMetric()); bdSeq++; return payload; }