如何在积雨度/Java中直接设置测量的显示名称

如何在积雨度/Java中直接设置测量的显示名称,java,cumulocity,Java,Cumulocity,我想将MeasurementValues发送到Cumulocity并使用给定的工具可视化数据。我的软件发送的值是在JSON中指定的,并且在编译后必须更改 我的问题: JavaCumulocity框架不允许我指定将在其网站上显示的度量片段的名称。名称始终是我用来创建度量的POJO的类名。因为我想发送许多不同的变量(这些变量也会随着时间的推移而改变),所以事先创建许多POJO类是不可行的 我的问题: 如何使用JavaCumulocity框架,从一个类发送测量值,在Cumulocity中以不同的名称显

我想将
MeasurementValues
发送到
Cumulocity
并使用给定的工具可视化数据。我的软件发送的值是在JSON中指定的,并且在编译后必须更改

我的问题:

Java
Cumulocity
框架不允许我指定将在其网站上显示的度量片段的名称。名称始终是我用来创建度量的
POJO
的类名。因为我想发送许多不同的变量(这些变量也会随着时间的推移而改变),所以事先创建许多POJO类是不可行的

我的问题:

如何使用Java
Cumulocity
框架,从一个类发送测量值,在
Cumulocity
中以不同的名称显示不同的值

到目前为止我所尝试的:

  • 没有允许我更改displayname的度量属性
  • 无法在运行时更改类名(已编译^^)
  • Cumulocity Java框架不允许我直接访问该属性

我不知道我是否完全理解您要更改的度量名称,但我假设您指的是度量片段的名称

在Java项目中创建自定义度量值后,可以使用@Alias对其进行注释,以提供自定义名称

package c8y.tinkerforge.measurements;

import java.math.BigDecimal;

import org.svenson.AbstractDynamicProperties;
import org.svenson.JSONProperty;

import com.cumulocity.model.measurement.MeasurementValue;
import com.cumulocity.model.util.Alias;

@Alias("c8y_Acceleration")
public class AccelerationCombinedMeasurement extends AbstractDynamicProperties {

    private static final long serialVersionUID = -2491579656609755745L;

    public static final String DEFAULT_UNIT = "g";

    private final String unit;

    private MeasurementValue accelerationX;

    private MeasurementValue accelerationY;

    private MeasurementValue accelerationZ;

    public AccelerationCombinedMeasurement(double accelerationX, double accelerationY, double accelerationZ,
            final String unit) {
        this.unit = unit;
        this.accelerationX = new MeasurementValue(new BigDecimal(accelerationX), unit);
        this.accelerationY = new MeasurementValue(new BigDecimal(accelerationY), unit);
        this.accelerationZ = new MeasurementValue(new BigDecimal(accelerationZ), unit);
    }

    @JSONProperty("accelerationX")
    public MeasurementValue getAccelerationX() {
        return accelerationX;
    }

    public void setAccelerationX(double accelerationX) {
        this.accelerationX = new MeasurementValue(new BigDecimal(accelerationX), unit);
    }

    @JSONProperty("accelerationY")
    public MeasurementValue getAccelerationY() {
        return accelerationY;
    }

    public void setAccelerationY(double accelerationY) {
        this.accelerationY = new MeasurementValue(new BigDecimal(accelerationY), unit);
    }

    @JSONProperty("accelerationZ")
    public MeasurementValue getAccelerationZ() {
        return accelerationZ;
    }

    public void setAccelerationZ(double accelerationZ) {
        this.accelerationZ = new MeasurementValue(new BigDecimal(accelerationZ), unit);
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((accelerationX == null) ? 0 : accelerationX.hashCode());
        result = prime * result + ((accelerationY == null) ? 0 : accelerationY.hashCode());
        result = prime * result + ((accelerationZ == null) ? 0 : accelerationZ.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        AccelerationCombinedMeasurement other = (AccelerationCombinedMeasurement) obj;
        if (accelerationX == null) {
            if (other.accelerationX != null)
                return false;
        } else if (!accelerationX.equals(other.accelerationX))
            return false;
        if (accelerationY == null) {
            if (other.accelerationY != null)
                return false;
        } else if (!accelerationY.equals(other.accelerationY))
            return false;
        if (accelerationZ == null) {
            if (other.accelerationZ != null)
                return false;
        } else if (!accelerationZ.equals(other.accelerationZ))
            return false;
        return true;
    }

    @Override
    public String toString() {
        return "AccelerationCombinedMeasurement [accelerationX=" + accelerationX + ", accelerationY=" + accelerationY
                + ", accelerationZ=" + accelerationZ + "]";
    }

}
在这种情况下,它应该使用名称c8y_Acceleration。当我为使用此测量类的传感器创建数据点图时,您会得到:

您可以在红色轮廓中看到名称