code: async def set_target_temp(self, temp, temporary=True,
                                timeout=OTGW_DEFAULT_TIMEOUT):
          
          cmd = (OTGW_CMD_TARGET_TEMP if temporary
                 else OTGW_CMD_TARGET_TEMP_CONST)
          value = '{:2.1f}'.format(temp)
          status = {}
          ret = await self._wait_for_cmd(cmd, value, timeout)
          if ret is None:
              return
          ret = float(ret)
          if 0 <= ret <= 30:
              if ret == 0:
                  status[OTGW_SETP_OVRD_MODE] = OTGW_SETP_OVRD_DISABLED
                  status[DATA_ROOM_SETPOINT_OVRD] = None
              else:
                  if temporary:
                      ovrd_mode = OTGW_SETP_OVRD_TEMPORARY
                  else:
                      ovrd_mode = OTGW_SETP_OVRD_PERMANENT
                  status[OTGW_SETP_OVRD_MODE] = ovrd_mode
                  status[DATA_ROOM_SETPOINT_OVRD] = ret
              self._update_status(status)
              return ret
docs: Set the thermostat setpoint and return the newly accepted
          value.
          kwarg @temporary specifies whether or not the thermostat
              program may override this temperature.
  
          This method is a coroutine