服務器下發命令到設備一般經過哪些步驟,簡單來說就是服務器通過MQTT把需要設置的設備的屬性值發送到設備具體流程,通常情況下設備一般都有像開關(打開,關閉的操作),還有就是語音控制的一些設備(百度的小度,阿里的天貓精靈),一般都是需要區分開來控制的,你可能是控制天貓精靈說什麼或者是做什麼,具體到數據庫設計的話就是如果不是語音控制設備,一般需要一張屬性表(attribute)保存這個設備都有哪些操作,操作之間可能還有聯動(後續有能力再寫),
1:DevicesAction的setAttribute()方法
參數:deviceId(設備ID),index(attribute表的attribute_index字段),content(具體下發的內容,控制開關等等操作,其他設備查看錶attribute表的name和content_info字段做對應的操作,語音設備不查表)
eg:下發一個語音設備說:你好
具體調用RoomServiceImpl的setDevice方法
public boolean setDevice(Long deviceId, Integer index, String content) throws RemoteConnectFailureException {
如果不是語音設備和電動窗簾,則需要調用DeviceCenterService的setDevice方法
deviceCenterService.setDevice(roomDeviceDO.getSerialId(), indexValueMapToSet, Constant.SMARTHOTEL_DOMAIN_NAME);
方法參數serialId, Map<Integer, AttributeDTO>(indexValueMapToSet),smart-hotel,map裏放入index和對應的attribute