# 设备策略使用示例
#### 使用场景
- [场景一： 策略允许OR禁止发布某Topic]
- [场景二： 端到端（M2M）+策略]
 #### 场景一： 策略允许OR禁止发布某Topic
1. 创建产品和设备
   - 参考[创建产品](https://support.huaweicloud.com/usermanual-iothub/iot_01_0054.html)创建产品。
   
   - 参考[注册单个设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0031.html)创建设备。
    
2. 生成策略
   - 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
   
   - 左侧导航栏单击"设备 \> 策略"，进入策略界面。
     图1设备策略-进入界面   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981577933.png "点击放大") 
   
   - 在策略界面单击"创建策略"，填写策略参数，单击生成策略。策略的应用范围是资源空间（appId），其中资源"topic:"开头代表MQTT中的Topic，用于发布与订阅。允许发布和订阅主题：/v1/test/hello。
     图2设备策略-创建策略   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950378356.png "点击放大") 
   
   - 绑定策略。下面以某个设备为例进行绑定。策略目标类型选择"设备"，单击需要绑定策略的设备。
     图3设备策略-绑定设备   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981497785.png "点击放大") 
   
   - 验证策略。
     1. 获取连接参数。在"管理控制台"单击左侧导航栏"设备 \> 所有设备"，找到上述策略绑定的设备，进入设备详情页面，查看连接参数。详情可见[使用MQTT.fx调测](https://support.huaweicloud.com/devg-iothub/iot_01_2127.html)。
        图4设备-设备详情   
        ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981489741.png "点击放大")
        图5设备-设备详情-MQTT连接参数   
        ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002127228254.png "点击放大") 
     
     2. 使用MQTT.fx连接云平台。打开MQTT.fx软件，配置上述策略绑定的设备的鉴权参数，然后单击"Apply"保存，单击"Connect"进行连接鉴权。
     
     3. 订阅允许的topic。订阅主题：/v1/test/hello，订阅成功。
        图6订阅成功   
        ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001732255941.png "点击放大") 
     
     4. 订阅其他Topic。订阅主题：/v2/test/hello，订阅失败。
        图7订阅失败   
        ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001684336474.png "点击放大")
        
        
      
    
 
 #### 场景二： 端到端（M2M）+策略
接下来讲述产品A下的设备a，对产品B下的所有设备进行1对N通信（假设转发的Topic为以/test/M2M/开头的消息）。同时，只允许产品A下设备a、产品B下的所有设备进行发布、订阅Topic以/test/M2M/开头的消息。
1. 创建产品和设备
   - 参考[创建产品](https://support.huaweicloud.com/usermanual-iothub/iot_01_0054.html)创建产品。
   
   - 参考[注册单个设备](https://support.huaweicloud.com/usermanual-iothub/iot_01_0031.html)创建设备。
    
2. 设置流转规则
   - 访问[设备接入服务](https://www.huaweicloud.com/product/iothub.html)，单击"管理控制台"进入设备接入控制台。选择您的实例，单击实例卡片进入。
   
   - 在左侧导航栏"规则"中单击"数据转发"，可到数据转发界面。
     图8数据转发-列表   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001982215757.png "点击放大") 
   
   - 单击"创建规则"按照业务具体填写需要转发的数据参数，填写完成后单击"创建规则"。配置SQL过滤语句为：STARTS_WITH(notify_data.body.topic,'/test/M2M/')。
     图9新建流转规则-M2M   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001982218753.png "点击放大")
     ![](https://support.huaweicloud.com/usermanual-iothub/public_sys-resources/note_3.0-zh-cn.png)
     SQL过滤语句的使用详情可见：[SQL语句](https://support.huaweicloud.com/usermanual-iothub/iot_01_0025.html)。
     STARTS_WITH(notify_data.body.topic,'/test/M2M/')代表的是筛选主题（Topic）以"/test/M2M/"开头的数据。
     
   
   - 设置转发到的目标。请将转发目标设置为"设备"，Topic填写"$topic()"(表示转发的Topic不变，按原本Topic下发)，单击"确定"。
     图10新建转发目标-转发至设备   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000002322442206.png "点击放大") 
   
   - 启动规则。单击页面中央的"启动规则"，完成规则设置。
     图11启动规则-转发至设备   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001982225273.png "点击放大") 
    
3. 设置策略
   - 左侧导航栏单击"设备 \> 策略"，进入策略界面。
     图12设备策略-进入界面   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001981577933.png "点击放大") 
   
   - 在策略界面单击"创建策略"，填写策略参数，单击生成策略。
     图13设备策略-创建策略(M2M)   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950727196.png "点击放大") 
   
   - 绑定策略。把需要开放的产品及设备进行绑定。策略目标类型选择"产品"，单击需要绑定策略的产品。确定后可以在"策略详情"页面，进行"编辑"，添加要绑定的设备。
     图14设备策略-绑定产品   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001982376073.png "点击放大")
     图15设备策略-编解策略   
     ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001950822326.png "点击放大") 
   
   
   
   
4. 验证策略。
   1. 打开两个MQTT.fx，分别模拟产品A下的设备a（test111）、产品B下的设备b（test222）。如何使用MQTT.fx可参考[使用MQTT.fx调测](https://support.huaweicloud.com/devg-iothub/iot_01_2127.html)。
   
   2. 设备b在Subscribe页面中输入Topic" /test/M2M/#"后，单击"Subscribe"订阅。
      图16设备b（test222）在Subscribe页面中输入topic   
      ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001764900785.png "点击放大") 
   
   3. 设备a（test111）向设备b（test222）发送消息，在设备a（test111）的MQTT.fx的"Publish"页面中，输入topic"/test/M2M/${任意单词}"（其中"${任意单词}"替换成任意单词） ，在内容输入框中输入要发送的消息（如：hello）单击"Publish"即可发送。
      图17设备a Publish页面输入消息   
      ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001717260916.png "点击放大")
      在设备b的Subscribe页面可以看到接收的消息如下：
      图18设备b Subscribe页面展示   
      ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001717101492.png "点击放大") 
   
   4. 非产品B名下设备订阅或发布Topic：" /test/M2M/#"，订阅、发布失败。
      图19订阅失败   
      ![](https://support.huaweicloud.com/usermanual-iothub/figure/zh-cn_image_0000001764821557.png "点击放大") 
    
 
