浏览代码

always forward commands, but dont duplicate state

Chris Mullins 8 年之前
父节点
当前提交
77747052e1
共有 1 个文件被更改,包括 13 次插入11 次删除
  1. 13 11
      src/main.cpp

+ 13 - 11
src/main.cpp

@@ -81,23 +81,25 @@ void onPacketSentHandler(uint8_t* packet, const MiLightRemoteConfig& config) {
     return;
     return;
   }
   }
 
 
-  uint16_t deviceId = result["device_id"];
-  uint16_t groupId = result["group_id"];
-  const MiLightRemoteConfig* remoteConfig = MiLightRemoteConfig::fromType(result.get<String>("device_type"));
+  if (mqttClient) {
+    uint16_t deviceId = result["device_id"];
+    uint16_t groupId = result["group_id"];
+    const MiLightRemoteConfig* remoteConfig = MiLightRemoteConfig::fromType(result.get<String>("device_type"));
 
 
-  GroupId bulbId(deviceId, groupId, remoteConfig->type);
-  GroupState* groupState = stateStore.get(bulbId);
-  bool changes = groupState->patch(result);
+    GroupId bulbId(deviceId, groupId, remoteConfig->type);
+    GroupState* groupState = stateStore.get(bulbId);
+    bool changes = groupState->patch(result);
 
 
-  if (changes && mqttClient) {
     char output[200];
     char output[200];
     result.printTo(output);
     result.printTo(output);
-    
+
     mqttClient->sendUpdate(config, deviceId, groupId, output);
     mqttClient->sendUpdate(config, deviceId, groupId, output);
 
 
-    groupState->applyState(result);
-    result.printTo(output);
-    mqttClient->sendState(config, deviceId, groupId, output);
+    if (changes) {
+      groupState->applyState(result);
+      result.printTo(output);
+      mqttClient->sendState(config, deviceId, groupId, output);
+    }
   }
   }
 
 
   httpServer->handlePacketSent(packet, config);
   httpServer->handlePacketSent(packet, config);