code: def set_power(self, value,callb=None,duration=0,rapid=False):
          
          on = [True, 1, "on"]
          off = [False, 0, "off"]
          if value in on:
              myvalue = 65535
          else:
              myvalue = 0
          mypartial=partial(self.resp_set_lightpower,power_level=myvalue)
          if callb:
              mycallb=lambda x,y:(mypartial(y),callb(x,y))
          else:
              mycallb=lambda x,y:mypartial(y)
          if not rapid:
              response = self.req_with_ack(LightSetPower, {"power_level": myvalue, "duration": duration},callb=mycallb)
          else:
              response = self.fire_and_forget(LightSetPower, {"power_level": myvalue, "duration": duration}, num_repeats=1)
              self.power_level=myvalue
              if callb:
                  callb(self,None)
docs: Convenience method to set the power status of the device
  
          This method will send a SetPower message to the device, and request callb be executed
          when an ACK is received. The default callback will simply cache the value.
  
              :param value: The new state
              :type value: str/bool/int
              :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