所以,我正在管理一系列租来的度假屋,它们都有动态的IP,ADSL互联网连接。
我们想要跟踪几种类型的数据,例如每个房间的用电量,热水温度,恒温器设置,燃气使用,网络带宽使用等等,并集中保存,以便我们可以实时进行分析和绘图。
我很乐意构建每1-5秒记录这些变量所需的硬件,并将它们放入例如一个Raspberry Pi,但我想知道什么样的框架适合在服务器端传输和存储数据。
我最初的想法是类似SNMP,但是a)这似乎不是为非网络用途而设计的,b)它不是很安全,而且c)我正在寻找代理到服务器的东西(所以我不必知道代理的IP,它也会遍历NAT,所以我可以让多个设备在同一网络上记录不同的东西。)
我的第二个想法是使用REST API,但是通过不同的TCP连接每秒可能进行数百次API调用似乎有点浪费。
我遇到了Cubism,但这似乎与某种REST API具有相同的缺点;如果每个传感器每5秒发送一次数据,那么每个连接都会传输大量冗余数据。
AMQP和MQTT等名称出现了,但这些名称似乎都不适合(本地)通过公共互联网旅行而不配置VPN等。
思想?
[这似乎不是一个特别小的问题,现在我考虑一下 - 天气记录,股价等等......虽然这可能是一个较小的间隔]
答案 0 :(得分:0)
我有一个地理空间/环境监测背景,可以告诉你一些关于今天在环境/基础设施(电力和供水网络)监测传感器网络中使用的两个主要标准。
专有的:大多数传感器只是以自己的本地数据格式存储时间序列测量值。服务器进程不时调用每个传感器来收集时间序列数据(在大多数情况下通过简单的GPRS上行链路),将其转换为交换格式,然后将其存储到可以处理数据的集中式数据库中。行业领先的公司之一是Kisters AG和他们的交换格式ZRXP。因此,这只是将时间序列数据存储为ASCII格式(即ZXXP),并通过任何连接调用传感器将其导入数据库。
开放地理空间标准:我认为Sensor Observation Service和SensorML更符合您的需求,因为这些是Web服务规范,而上述专有内容是由一家供应商构建的完整系统解决方案。由52 north提供的SOS几乎可以使用的Java参考实现应该可以在Pi上轻松运行。尽管SOS规范具有非常强大的地理空间背景,但这并不意味着我认为它不能用于您的目的。至少SensorML应该给你一些想法。