docs: def set_color_zones(self, start_index, end_index, color, duration=0, apply=1, callb=None, rapid=False):
          """Convenience method to set the colour status zone of the device
  
          This method will send a MultiZoneSetColorZones message to the device, and request callb be executed
          when an ACK is received. The default callback will simply cache the value.
  
              :param start_index: Index of the start of the zone of interest
              :type start_index: int
              :param end_index: Index of the end of the zone of interest. By default start_index+7
              :type end_index: int
              :param apply: Indicates if the colour change is to be applied or memorized. Default: 1
              :type apply: int
              :param value: The new state, a dictionary onf int with 4 keys Hue, Saturation, Brightness, Kelvin
              :type value: dict
              :param duration: The duration, in seconds, of the power state transition.
              :type duration: int
              :param callb: Callable to be used when the response is received. If not set,
                          self.resp_set_label will be used.
              :type callb: callable
              :param rapid: Whether to ask for ack (False) or not (True). Default False
              :type rapid: bool
              :returns: None
              :rtype: None
          """
          if len(color) == 4:
              args = {
                  "start_index": start_index,
                  "end_index": end_index,
                  "color": color,
                  "duration": duration,
                  "apply": apply,
              }
  
              mypartial=partial(self.resp_set_multizonemultizone, args=args)
              if callb:
                  mycallb=lambda x,y:(mypartial(y),callb(x,y))
              else:
                  mycallb=lambda x,y:mypartial(y)
  
              if rapid:
                  self.fire_and_forget(MultiZoneSetColorZones, args, num_repeats=1)
                  mycallb(self, None)
              else:
                  self.req_with_ack(MultiZoneSetColorZones, args, callb=mycallb)