COSM Feed接收更新但图表在零处平坦

时间:2013-05-06 08:25:23

标签: cosm xively

上下文

我与COSM的第一个项目是记录我的电表的数据点。当我查看graph of the feed时,即使数据点似乎被正确接收,它仍然为零。

知道什么是错的,或者我应该寻找的东西来调试它?

更多信息:

当我调试我的Feed时,我发现它每分钟会收到大约8个API请求。

这是COSM的“调试源”界面查看的接收数据点的实例。请特别注意响应是200 [ok],并且请求正文具有合理的时间戳和非零值:

200 POST /api/v2/feeds/129722/datastreams/1/datapoints 06-05-2013 | 08:16:54 +0000

Request Headers
Version HTTP/1.0
Host    api.cosm.com
X-Request-Start 1367828214422267
X-Apikey    <expunged>
Accept-Encoding gzip, deflate, compress
Accept  */*
User-Agent  python-requests/1.2.0 CPython/2.7.3 Linux/3.6.11+
Origin  

Request Body
{"at": "2013-05-06T08:16:57", "value": 164.0}

Response Headers
X-Request-Id    245ee3ca6bd99efd156bff2416404c33f4bb7f0f
Cache-Control   max-age=0
Content-Type    application/json; charset=utf-8
Content-Length  0

Response Body
[No Body]

更新

即使文档指定JSON是默认值,我也明确地将“.json”添加到POST URL(/api/v2/feeds/129722/datastreams/1/datapoints.json),但这似乎没有任何区别。

更新2

我在字符串中附加了“value”值,因此请求正文现在读取(例如):

{"at": "2013-05-06T15:37:06", "value": "187.0"}

仍然表现相同:我在调试视图中看到了更新,但在图表视图中只报告了零。

更新3

我尝试使用API​​而不是COSM提供的图表来查看数据。我的猜测是数据点由于某种原因没有被存储(尽管200 OK返回状态)。如果我将此URL放在Web浏览器中:

http://api.cosm.com/v2/feeds/129722.json?interval=0

我得到了回应:

{"id":129722,
 "title":"Rainforest Automation RAVEn",
 "private":"false",
 "tags":["power"],
 "feed":"https://api.cosm.com/v2/feeds/129722.json",
 "status":"frozen",
 "updated":"2013-05-06T05:07:30.169344Z",
 "created":"2013-05-06T00:16:56.701456Z",
 "creator":"https://cosm.com/users/fearless_fool",
 "version":"1.0.0",
 "datastreams":[{"id":"1",
                 "current_value":"0",
                 "at":"2013-05-06T05:07:29.982986Z",
                 "max_value":"0.0",
                 "min_value":"0.0",
                 "unit":{"type":"derivedSI","symbol":"W","label":"watt"}}],
 "location":{"disposition":"fixed","exposure":"indoor","domain":"physical"}
}

请注意,尽管调试工具每分钟显示七次或八次更新,但状态仍列为“已冻结”(最后一次更新时间> 15分钟前)。我的数据点在哪里?

2 个答案:

答案 0 :(得分:2)

解决。正如cosm.com支持的@Calum亲切地指出的那样,我没有发送一个正确形成的请求。我发送了以下JSON:

{"at": "2013-05-06T08:16:57", "value": 164.0}

当我应该发送时:

{
  "datapoints":[
    {"at": "2013-05-06T08:16:57", "value": 164.0}
  ]
}

Calum还指出,我可以一次批量累积几个点来减少交易数量。我会谈到这一点,但就目前来说,只要说修复请求的主体就可以使一切开始工作了。

答案 1 :(得分:0)

这听起来像图中的一个错误,我已经看过几次非常相似的东西了。

我经常使用Cosm Feed Viewer Chrome扩展程序,它使用WebSocket endpoint实时显示最新值。

将自定义图表与RickshawCosmJS放在一起应该不会太难。