1.傳感器的數(shù)據(jù)處理后存到了mongdb
2.后臺(tái)設(shè)備綁定了對(duì)應(yīng)的傳感器
3.后臺(tái)給設(shè)備執(zhí)行設(shè)置了條件,存到mysql
4.現(xiàn)在是想,通過設(shè)置的執(zhí)行條件和傳感器處理后的數(shù)據(jù)作比較,如果達(dá)到執(zhí)行條件,給對(duì)應(yīng)的設(shè)備發(fā)送開關(guān)指令
5.定時(shí)任務(wù)中循環(huán)條件和數(shù)據(jù)比較->有達(dá)到執(zhí)行條件->連接gateway服務(wù)器->綁定->服務(wù)器向指定設(shè)備發(fā)送開關(guān)指令,這個(gè)流程要怎么實(shí)現(xiàn)呀,希望大神們能給點(diǎn)實(shí)現(xiàn)思路
解決了嗎?我這邊直接用的Tp5+Gatewayworker實(shí)現(xiàn)了你那邊的類似的功能。
其實(shí)這邊用到Gatewayworker的最主要的東西,就是 綁定UID以及向這個(gè)UID中發(fā)送處理結(jié)果的對(duì)應(yīng)的命令。
這個(gè)UID可以是您數(shù)據(jù)庫中設(shè)備的ID,每次對(duì)比后將開關(guān)指令存到對(duì)應(yīng)的mysql或者mongodb中。然后您這邊寫一個(gè)鉤子(也可以是一個(gè)中轉(zhuǎn)站),用于存儲(chǔ)發(fā)送的指令。等待設(shè)備觸發(fā)即可。
觸發(fā)的條件有下邊幾種:
1.等到設(shè)備上線或者有通訊時(shí),直接調(diào)用鉤子,執(zhí)行對(duì)應(yīng)的操作。
2.檢測到設(shè)備在線的時(shí)候,直接執(zhí)行鉤子,執(zhí)行對(duì)應(yīng)的操作。
就你的【定時(shí)任務(wù)中循環(huán)條件和數(shù)據(jù)比較->有達(dá)到執(zhí)行條件->連接gateway服務(wù)器->綁定->服務(wù)器向指定設(shè)備發(fā)送開關(guān)指令】這個(gè)來說,就是達(dá)到標(biāo)準(zhǔn)時(shí),直接在本地執(zhí)行連接Gateway的注冊端口,然后通過GatewayClient的接口直接返回對(duì)應(yīng)的命令