关于实时通知的问题。
Post: https://xxxiot.cumulocity.com/cep/realtime
Body:
[
{
"channel": "/meta/handshake",
"version": "1.0",
"mininumVersion": "1.0beta",
"supportedConnectionTypes": ["long-polling","callback-polling"],
"advice":{"timeout":120000,"interval":30000}
}
]我的回答是:
[
{
"minimumVersion": "1.0",
"supportedConnectionTypes": [
"smartrest-long-polling",
"long-polling"
],
"successful": true,
"channel": "/meta/handshake",
"ext": {
"ack": true
},
"clientId": "5o0ghvle7yy4ix41on423v6k3j87",
"version": "1.0"
}]
收到clientId后..我已经运行了以下命令:
Post: https://xxxiot.cumulocity.com/cep/realtime
Body:
[
{
"channel": "/meta/subscribe",
"clientId": "5o0ghvle7yy4ix41on423v6k3j87",
"subscription": "/alarms/overHeatAlarms"
}
]响应:
[
{
"error": "403:denied_by_security_policy:create_denied",
"subscription": "/alarms/overHeatAlarms",
"successful": false,
"channel": "/meta/subscribe"
}
]问题出在哪里?我在试着归结为"overheatAlarms"!可能它并不存在?我可以阅读现有的信息吗?谢谢,Alim
发布于 2016-02-02 17:12:28
模块名称是您在单击“新建模块”时输入的名称。语句名称是您添加到语句中的内容,例如
@Name('overHeatAlarms')
select * from AlarmsCreated where [your condition for overheat alarms](如果您不在其中输入名称,它们将是名称statement_1,statement_2,...)
要获取来自Java的通知,请看一下获取设备更改通知的example。在subscribe()方法中,传递"*“或设备ID。要获得通知,需要传递SubscriptionListener的实现,特别是onNotification方法。您可以将"channelPrefix“修改为"/alarms/”或"/measurements/“以获取其他通知。
发布于 2016-02-03 04:46:34
谢谢,安德烈。我已经测试了以下代码片段..它可以工作,但不是最好的解决方案:-)
MeasurementApi measurementApi = getMeasurementApi();
MeasurementFilter measurementFilter = new MeasurementFilter();
while (true) {
Calendar cal = Calendar.getInstance();
Date toDate = cal.getTime();
cal.add(Calendar.SECOND, -25);
Date fromDate = cal.getTime();
measurementFilter.byDate(fromDate, toDate);
measurementFilter.byFragmentType(TemperatureMeasurement.class);
measurementFilter.bySource(new GId(DEVICE_SIMULATOR));
MeasurementCollection mc = measurementApi
.getMeasurementsByFilter(measurementFilter);
MeasurementCollectionRepresentation measurements = mc.get();
for (; measurements != null; measurements = mc
.getNextPage(measurements)) {
for (MeasurementRepresentation measurement : measurements
.getMeasurements()) {
TemperatureMeasurement temperatureSensor = measurement
.get(TemperatureMeasurement.class);
System.out.println(measurement.getSource().getId() + " "
+ measurement.getTime()+ " " + temperatureSensor.getTemperature() );
}
}
}https://stackoverflow.com/questions/35148052
复制相似问题