首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django数据记录前端- phidgets

Django数据记录前端- phidgets
EN

Stack Overflow用户
提问于 2011-01-19 04:39:04
回答 1查看 849关注 0票数 2

使用Django创建类似于OpenNMS或任何类似网络管理工具的应用程序的最佳方法是什么?

Django应用程序需要不断轮询1个或多个设备,每个设备都有1个或多个模拟和数字输入。

基本上,如何将必要的轮询功能集成到django应用程序中,以便在轮询设备传感器时,将结果值存储在Django ORM中,以便用户可以拉出正在记录的数据的图形、图表等?

Django不是做这种事情的合适基础吗?我正在轮询的嵌入式设备具有python API,用于设置事件处理程序,或者在需要时仅轮询当前正在读取的对象。(http://www.phidgets.com)

最终目标是这个Django站点驻留在PhidgetSBC上,然后可以通过网络轻松地访问和控制。传感器数值的轮询和存储需要全天候运行,除非web用户通过Django站点上的"device admin area“明确禁用。

我现在不担心图表,输出引脚上的控制设备等,因为将数据可靠地放入数据库是最重要的。我不认为我创建的当前python包能够很好地移植到Django上,所以我宁愿从头开始,正确地开始。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-19 07:49:04

您如何处理数据日志记录实际上取决于您希望如何呈现数据。但是,除非您只对实时显示感兴趣(即没有图表),否则任何负责日志记录的代码都必须在HTTP请求/响应周期之外运行,因此也必须在Django之外运行。

也许最直接的方法是编写一个在后台运行的单独的python脚本,该脚本将定期轮询phidget API并将数据转储到DB中。这种方法的一个潜在主要问题是,传感器配置本质上是硬编码的-如果您希望添加或删除传感器,则必须更改python脚本。这可能对您的应用程序很重要,也可能不重要。

为了更好地将脚本检索到的数据集成到Django中,您可以创建几个这样的模型:

代码语言:javascript
复制
class Device(models.Model):
    """A sensor"""
    name = models.CharField(max_length=20)
    ...

class DataPoint(models.Model):
    value = models.DecimalField(decimal_places=2, max_digits=10) # whatever is appropriate
    timestamp = models.DateTimeField()
    device = models.ForiegnKey(Device)

运行syncdb时,您可以看到将要创建的表名。它应该是这样的:

代码语言:javascript
复制
appname_device
appname_data_point

然后,您的后台脚本将在appname_data_point表中创建记录,然后可以通过Django ORM访问这些记录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4728779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档