Django数据记录前端phidgets

2024-05-16 01:42:15 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

Django不是这样的基地吗?我正在轮询的嵌入式设备有pythonapi来设置事件处理程序,或者在需要时轮询当前读取的对象。 (http://www.phidgets.com

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

我现在不担心绘制图表、控制输出管脚上的设备等,因为将数据可靠地输入数据库是当务之急。我不认为我创建的当前python包能够很好地移植到Django,所以我宁愿从头开始并正确地启动它。在

谢谢


Tags: 工具数据django方法用户功能应用程序站点
1条回答
网友
1楼 · 发布于 2024-05-16 01:42:15

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

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

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

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时,可以看到将要创建的表名。应该是这样的:

^{pr2}$

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

相关问题 更多 >