我正在做一个物联网项目。我得到了一个带有各种传感器的树莓派,这个树莓派每分钟都会在SQL Server数据库上写入数据。我有一个ruby on rails的平台,用户可以看到数据。我想创建一个新的功能,用户可以创建多个警报。我在一个用户定义警报的应用程序页面中得到了一个表单。
示例:用户将星期五的最高温度设置为23º。如果周五温度高达23º,用户会收到一条消息(这是一个简单的警报,但可能更难)。
我该怎么做呢?
我不想在SQL服务器中创建触发器,因为查询可能很难(我没有SQL Server的经验)。
发布于 2016-01-12 02:03:15
我这样做的方式是使用调度程序,例如https://github.com/jmettraux/rufus-scheduler,并让它调用一个静态方法,该方法检查是否满足每个警报条件,然后发送一条消息。
你的模型可能是
AlarmType -具有多个类的STI - AlarmIfTemperatureTooHigh、AlarmPrecipiations等。
一个警报类,属于用户和belongs_to AlarmType,包含为用户设置的参数-因此AlarmTemperature可能有一个最高温度,例如作为一个变量。
然后,从调度器中,它将每隔x分钟(无论您想要什么)调用一个静态方法,该方法将迭代通过AlarmTypes,反过来,将迭代属于它的告警,如果满足条件,则向用户(也属于该告警)发送消息。由于AlertType是一种AlertType,因此您可以使用不同的方法来评估每个STI的数据,并且可以使用任意数量的STI,可以使用任意多的STI,可以使用任意复杂的STI。我会从简单的开始。:)
STI可能有点矛盾,但对我来说,我喜欢有一首单曲:
has_many :alarm_types.
alarm_types.all do |alarm_type|
alarm_type.run
end而不必在每次添加新的警报类型时重新查看代码。
https://stackoverflow.com/questions/34726883
复制相似问题