Prechádzať zdrojové kódy

respond to all on/all off CCT commands

Chris Mullins 8 rokov pred
rodič
commit
9b85dba4fd

+ 12 - 4
lib/Udp/V5MiLightUdpServer.cpp

@@ -10,6 +10,7 @@ void V5MiLightUdpServer::handlePacket(uint8_t* packet, size_t packetSize) {
 }
 
 void V5MiLightUdpServer::handleCommand(uint8_t command, uint8_t commandArg) {
+  // On/off for RGBW
   if (command >= UDP_RGBW_GROUP_1_ON && command <= UDP_RGBW_GROUP_4_OFF) {
     const MiLightStatus status = (command % 2) == 1 ? ON : OFF;
     const uint8_t groupId = (command - UDP_RGBW_GROUP_1_ON + 2)/2;
@@ -18,17 +19,19 @@ void V5MiLightUdpServer::handleCommand(uint8_t command, uint8_t commandArg) {
     client->updateStatus(status);
 
     this->lastGroup = groupId;
+  // Command set_white for RGBW
   } else if (command >= UDP_RGBW_GROUP_ALL_WHITE && command <= UDP_RGBW_GROUP_4_WHITE) {
     const uint8_t groupId = (command - UDP_RGBW_GROUP_ALL_WHITE)/2;
     client->prepare(MilightRgbwConfig, deviceId, groupId);
     client->updateColorWhite();
     this->lastGroup = groupId;
-  } else if (uint8_t cctGroup = cctCommandIdToGroup(command)) {
+  // On/off for CCT
+  } else if (cctCommandIdToGroup(command) != 255) {
+    uint8_t cctGroup = cctCommandIdToGroup(command);
     client->prepare(MilightCctConfig, deviceId, cctGroup);
     client->updateStatus(cctCommandToStatus(command));
     this->lastGroup = cctGroup;
-  }
-  else {
+  } else {
     client->prepare(MilightRgbwConfig, deviceId, lastGroup);
     bool handled = true;
 
@@ -120,9 +123,12 @@ uint8_t V5MiLightUdpServer::cctCommandIdToGroup(uint8_t command) {
     case UDP_CCT_GROUP_4_ON:
     case UDP_CCT_GROUP_4_OFF:
       return 4;
+    case UDP_CCT_ALL_ON:
+    case UDP_CCT_ALL_OFF:
+      return 0;
   }
 
-  return 0;
+  return 255;
 }
 
 MiLightStatus V5MiLightUdpServer::cctCommandToStatus(uint8_t command) {
@@ -131,11 +137,13 @@ MiLightStatus V5MiLightUdpServer::cctCommandToStatus(uint8_t command) {
     case UDP_CCT_GROUP_2_ON:
     case UDP_CCT_GROUP_3_ON:
     case UDP_CCT_GROUP_4_ON:
+    case UDP_CCT_ALL_ON:
       return ON;
     case UDP_CCT_GROUP_1_OFF:
     case UDP_CCT_GROUP_2_OFF:
     case UDP_CCT_GROUP_3_OFF:
     case UDP_CCT_GROUP_4_OFF:
+    case UDP_CCT_ALL_OFF:
       return OFF;
   }
 }

+ 8 - 6
lib/Udp/V5MiLightUdpServer.h

@@ -7,9 +7,11 @@
 #include <MiLightUdpServer.h>
 
 #ifndef _V5_MILIGHT_UDP_SERVER
-#define _V5_MILIGHT_UDP_SERVER 
+#define _V5_MILIGHT_UDP_SERVER
 
 enum MiLightUdpCommands {
+  UDP_CCT_ALL_ON             = 0x35,
+  UDP_CCT_ALL_OFF            = 0x39,
   UDP_CCT_GROUP_1_ON         = 0x38,
   UDP_CCT_GROUP_1_OFF        = 0x3B,
   UDP_CCT_GROUP_2_ON         = 0x3D,
@@ -22,11 +24,11 @@ enum MiLightUdpCommands {
   UDP_CCT_TEMPERATURE_UP     = 0x3E,
   UDP_CCT_BRIGHTNESS_DOWN    = 0x34,
   UDP_CCT_BRIGHTNESS_UP      = 0x3C,
-  
+
   UDP_RGBW_ALL_ON            = 0x41,
   UDP_RGBW_ALL_OFF           = 0x42,
-  UDP_RGBW_SPEED_UP          = 0x43, 
-  UDP_RGBW_SPEED_DOWN        = 0x44, 
+  UDP_RGBW_SPEED_UP          = 0x43,
+  UDP_RGBW_SPEED_DOWN        = 0x44,
   UDP_RGBW_GROUP_1_ON        = 0x45,
   UDP_RGBW_GROUP_1_OFF       = 0x46,
   UDP_RGBW_GROUP_2_ON        = 0x47,
@@ -50,10 +52,10 @@ public:
   V5MiLightUdpServer(MiLightClient*& client, uint16_t port, uint16_t deviceId)
     : MiLightUdpServer(client, port, deviceId)
   { }
-  
+
   // Should return size of the response packet
   virtual void handlePacket(uint8_t* packet, size_t packetSize);
-    
+
 protected:
   void handleCommand(uint8_t command, uint8_t commandArg);
   void pressButton(uint8_t button);

+ 1 - 4
platformio.ini

@@ -18,10 +18,7 @@ lib_deps_external =
   ArduinoJson
   PubSubClient
   https://github.com/ratkins/RGBConverter
-build_flags = !python .get_version.py
-# -D MQTT_DEBUG
-# -D MILIGHT_UDP_DEBUG
-# -D DEBUG_PRINTF
+build_flags = !python .get_version.py -D MQTT_DEBUG -D MILIGHT_UDP_DEBUG -D DEBUG_PRINTF
 
 [env:nodemcuv2]
 platform = espressif8266