public void messageArrived(String topic, MqttMessage message) throws Exception { System.out.println("Message Arrived on topic " + topic); SparkplugBPayloadDecoder decoder = new SparkplugBPayloadDecoder(); SparkplugBPayload inboundPayload = decoder.buildFromByteArray(message.getPayload()); // Debug for (Metric metric : inboundPayload.getMetrics()) { System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); } String[] splitTopic = topic.split("/"); if (splitTopic[0].equals(NAMESPACE) && splitTopic[1].equals(groupId) && splitTopic[2].equals("NCMD") && splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean)metric.getValue())) { publishBirth(); } else { System.out.println("Unknown Node Command NCMD: " + metric.getName()); } } } }
public Metric createMetric() throws SparkplugInvalidTypeException { return new Metric(name, alias, timestamp, dataType, isHistorical, isTransient, metaData, properties, value); } }
builder.setDatatype(metric.getDataType().toIntValue()); builder = setMetricValue(builder, metric); if (metric.hasName()) { builder.setName(metric.getName()); if (metric.hasAlias()) { builder.setAlias(metric.getAlias()); if (metric.getTimestamp() != null) { builder.setTimestamp(metric.getTimestamp().getTime()); if (metric.getIsHistorical() != null) { builder.setIsHistorical(metric.isHistorical()); if (metric.getIsTransient() != null) { builder.setIsTransient(metric.isTransient()); if (metric.getIsNull() != null) { builder.setIsNull(metric.isNull()); if (metric.getMetaData() != null) { builder = setMetaData(builder, metric); if (metric.getProperties() != null) { builder.setProperties(convertPropertySet(metric.getProperties()));
public MetricBuilder(Metric metric) throws SparkplugException { this.name = metric.getName(); this.alias = metric.getAlias(); this.timestamp = metric.getTimestamp(); this.dataType = metric.getDataType(); this.isHistorical = metric.isHistorical(); this.isTransient = metric.isTransient(); this.metaData = metric.getMetaData() != null ? new MetaDataBuilder(metric.getMetaData()).createMetaData() : null; this.properties = metric.getMetaData() != null ? new PropertySetBuilder(metric.getProperties()).createPropertySet() : null; switch (dataType) { case DataSet: this.value = metric.getValue() != null ? new DataSetBuilder((DataSet) metric.getValue()).createDataSet() : null; break; case Template: this.value = metric.getValue() != null ? new TemplateBuilder((Template) metric.getValue()).createTemplate() : null; break; default: this.value = metric.getValue(); } }
@Override public Metric deserialize(JsonParser parser, DeserializationContext ctxt) throws IOException, JsonProcessingException { Metric metric = (Metric) defaultDeserializer.deserialize(parser, ctxt); System.out.println(metric); // Check if the data type is a File if (metric.getDataType().equals(MetricDataType.File)) { // Perform the custom logic for File types by building up the File object. MetaData metaData = metric.getMetaData(); String fileName = metaData == null ? null : metaData.getFileName(); File file = new File(fileName, Base64.getDecoder().decode((String)metric.getValue())); metric.setValue(file); } return metric; }
Metric templateMetric = convertMetric(protoTemplateMetric); if (logger.isTraceEnabled()) { logger.trace("Setting template parameter name: " + templateMetric.getName() + ", type: " + templateMetric.getDataType() + ", value: " + templateMetric.getValue());
metricBuilder.setDatatype(metric.getDataType().toIntValue()); if (metric.getValue() == null) { metricBuilder.setIsNull(true); } else { switch (metric.getDataType()) { case Boolean: metricBuilder.setBooleanValue(toBoolean(metric.getValue())); break; case DateTime: metricBuilder.setLongValue(((Date) metric.getValue()).getTime()); break; case File: metricBuilder.setBytesValue(ByteString.copyFrom(((File) metric.getValue()).getBytes())); SparkplugBProto.Payload.MetaData.Builder metaDataBuilder = SparkplugBProto.Payload.MetaData.newBuilder(); metaDataBuilder.setFileName(((File) metric.getValue()).getFileName()); metricBuilder.setMetadata(metaDataBuilder); break; case Float: metricBuilder.setFloatValue((Float) metric.getValue()); break; case Double: metricBuilder.setDoubleValue((Double) metric.getValue()); break; case Int8: metricBuilder.setIntValue(((Byte)metric.getValue()).intValue()); break; case Int16:
protoMsg.addMetrics(convertMetric(metric)); } catch(Exception e) { logger.error("Failed to add metric: " + metric.getName()); throw new RuntimeException(e);
System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); && splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean) metric.getValue())) { publishBirth(); } else { System.out.println("TODO - handle writes to tag: " + metric.getName()); for (Metric metric : inboundPayload.getMetrics()) { System.out.println("TODO - handle writes to tag: " + metric.getName());
System.out.println("Metric " + metric.getName() + "=" + metric.getValue()); splitTopic[3].equals(edgeNode)) { for (Metric metric : inboundPayload.getMetrics()) { if ("Node Control/Rebirth".equals(metric.getName()) && ((Boolean)metric.getValue())) { publishBirth(); } else { System.out.println("Unknown Node Command NCMD: " + metric.getName()); null); for (Metric metric : inboundPayload.getMetrics()) { String name = metric.getName(); Object value = metric.getValue(); if ("Device Control/Rebirth".equals(metric.getName()) && ((Boolean)metric.getValue())) { publishDeviceBirth(); } else if ("Outputs/0".equals(name)) {
System.out.println("Metric: " + metric.getName() + " :: " + metric.getValue()); if (metric.getName().equals("Node Control/Next Server")) { System.out.println("Received a Next Server command."); } else if (metric.getName().equals("Node Control/Rebirth")) { publishBirth(); } else if (metric.getName().equals("Node Control/Reboot")) { System.out.println("Received a Reboot command."); } else if (metric.getName().equals("Node Control/Scan Rate ms")) { scanRateMs = (Integer) metric.getValue(); if (scanRateMs < 100) { System.out.println("Metric: " + metric.getName() + " :: " + metric.getValue()); if (metric.getName().equals("Outputs/e")) { pibrella.getOutputPin(PibrellaOutput.E).setState((Boolean) metric.getValue()); 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,