我正在做一个物联网项目。我有一个带有各种传感器的覆盆子pi,这个覆盆子每分钟在SQL Server数据库上写入数据。 我在轨道上有一个ruby平台,用户可以看到数据。 我想创建一个新功能,用户可以创建多个警报。我在应用程序页面中有一个表单,用户定义警报。
示例:用户将星期五的最高温度设置为23º。如果周五温度高达23º,用户会收到一条消息(这是一个简单的警报可能会更困难)。
我该怎么做?
我不想在SQL服务器中创建触发器,因为查询可能很难(我没有SQL Server的经验)。
答案 0 :(得分:1)
我完成它的方法是使用调度程序,例如https://github.com/jmettraux/rufus-scheduler让它调用静态方法,检查是否符合每个报警条件,然后发送消息。
你的模型可能是
AlarmType - 具有多个类的STI - AlarmIfTemperatureTooHigh,AlarmPrecipiations等。
一个Alarm类,属于User和belongs_to AlarmType,包含为用户设置的参数 - 因此AlarmTemperature可能具有最高温度,例如变量。
然后从调度程序中每隔x分钟调用一个静态方法(无论你想要什么),它将遍历AlarmTypes,而AlarmTypes又会遍历属于它的Alarms,如果符合条件,则发送消息用户(也属于该警报)。由于AlertType是一个STI,您可以使用不同的方法来评估每个AlertType的数据,并且您可以拥有任意数量的方法,就像您喜欢的那样简单。我开始很简单。 :)
STI可能有点相反,但对我来说,我喜欢有一个单身:
has_many :alarm_types.
alarm_types.all do |alarm_type|
alarm_type.run
end
每次添加新的警报类型时都不必重新访问代码。