我正在创建一个物联网设备,用户可以在其中设置特定时间来触发物联网设备的操作。例如:下午 1:00,空调自动启动。我正在使用谷歌云平台。我检查了 GCP 中的 Cron 作业,它在特定时间或指定时间间隔触发特定 URL。由于我的触发时间存储在数据存储中,因此我必须在每分钟后使用可以编写逻辑的 cron 作业查询数据库,以在时间匹配时触发操作。但在最坏的情况下总会有 59 秒的延迟,否则我可以每秒调用 URL。每秒调用一次 ulr 将非常昂贵,因为我需要每 1 秒查询一次数据库。有没有其他有效的方法来实现这一点?
问问题
160 次
1 回答
1
只是为了确保我理解,您试图避免的用例是用户将 AC 设置为在下午 1 点继续,并将其设置为 13:00:01(所以他们有等到 13:01:00 空调打开)?
假设是这种情况,那么,如果您使用的是 Firebase/Firestore,则可以使用 GCF(Google Cloud Function)来实际触发 AC 开启(例如,向设备发送 IoT Core 配置消息,不确定如何你实际上是在打开空调)。GCF 可以由每分钟触发的 CRON 作业触发,也可以让它响应(它是事件触发器之一)Firebase 中的数据库值更改。
因此,用户设置 AC 开启的时间,这会在 Firebase 数据库中设置一个值,这会触发 GCF 检查该值并查看它是否应该打开 AC。这样,您就不必单独依靠 CRON 作业来打开 AC,您还可以通过数据更改事件来检查时间。在您的情况下,这应该可以消除 59 秒的等待时间。
于 2018-03-12T16:55:33.957 回答