This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LAUNCHTXL-CC26X2R1:占用传感器+灯泡

Guru**** 2468460 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1083468/launchxl-cc26x2r1-occupancy-sensor-light-bulb

部件号:LAUNCHTXL-CC26X2R1
主题中讨论的其他部件: Z-stack

大家好,我有一个LAUNCHTXL-CC26X2R1担任协调员,一个OSRAM灯泡,一个8 l 温度传感器,我想用它作为一个八度传感器,并使用I2C连接到协调员。 我从Zigbee Coordinator Switch项目开始,我能够从CUI切换灯。 然后,我将温度传感器代码添加到项目中,并在菜单中创建了一个新选项。 到目前为止,我也可以从传感器读取温度。

下一步是根据温度传感器的输出自动切换灯。 可以使用此设置完成吗? 我不知道我是否只能为温度传感器添加群集选项,它是否正常工作,或者我需要更改此设置或添加另一个启动板... 即使与I2C连接,温度传感器也可用作测量设备,对吗?

我遵循"使用SampleApp"设计自定义Zigbee 3.0 认证产品",但我想确定温度传感器+灯泡是否可以与协调员连接并使其工作。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    读取温度传感器并使用温度数据从开关发送开/关/切换命令应该没有问题。 但是,这应该由您自己在应用程序中实现。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我现在来看一下这篇文档 ,占用传感器设备规格。 如果您说这应该由我自己在我的应用程序中实现,则意味着可以在没有它的情况下实现,或者我必须集成其中一个设备描述? 只是确定。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的意思是什么“可以不使用它,或者我必须集成其中一个设备描述?”

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    对不起,我会更详细地解释自己。

    此时,我正在使用端点8 ZCL_DEVICEID_ON_OFF_LIGHT _SWITCH,其中列出了群集和从协调员切换灯所需的属性。 现在我想添加一个占用传感器,我是否应该从设备ID开/关灯开关更改为设备ID开/关,以便集成Ocuppancy传感 属性0x406并能够从ocupancy传感器的输出控制灯泡? 或者我不应该这样做?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Dani,

     您所指的ZigBee照明和占用设备规范基于被Zigbee 3.0 (PRO 2017/R23)取代的弃用ZLL配置文件,但它仍然是设置设备时应遵循的有益指南。  您还可以在一台设备上存在多个Zigbee端点。  因此ZC可以在单独的注册端点上同时存在开/关灯开关和占用传感器设备ID。  如果没有此功能或用途,则不会使用开/关指示灯设备ID。  您也可以将占用感应作为附加群集添加到开/关灯开关端点。  但是,如果您只是在本地测量占用传感器(I2C连接),而不需要向Zigbee网络上的其它设备报告或传输此信息,则无需将占用感应群集集成到您的项目中。  由于您已经表达了从传感器读取和打开/关闭灯的能力,我同意YK的观点,即您已经拥有了根据应用程序传入的传感器数据控制灯所需的一切。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。

    例如,我有3个灯泡,我将其接入网络,协调员与占用传感器相连。 是否可以根据占用传感器输出打开所有三个灯泡? 我也不需要添加占用传感器ID,对吧? 如何选择要打开的灯泡? 有可能吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您可以将开/关命令逐个发送到所有灯,也可以先将它们分组,然后发送群组转换命令以打开/关闭同一组中的灯。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。

    在我的应用中,灯泡和Zed或ZR可以加入网络。 我可以将它们分成2组吗? 一组灯泡和一组zed。 如果可能,如何操作? 我曾考虑寻找匹配的分组,但我不知道。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,您可以有不同的组。 使用ZCL添加组命令时,您可以分配不同的组ID。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    一个SimpleLink Academy Lab ,它涵盖Zigbee组群集。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢,我会试试的。

    我现在发现的问题是,我根据资源文件上的类似项目测试了D6T-8 l 传感器。 但是,现在我尝试将其与zc项目一起使用,不能以同样的方式配置SYSCFG。 我认为我需要以同样的方式配置I2C,但我无法添加Bas Sensors Mark II I2C。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您不需要在Zigbee示例中不可用的Exact BAS Sensors Mark II (使用硬件)选项,使用与以前基于传感器的项目相同的配置和PinMux就足够了。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 这就够了,它起了作用。

    根据您的建议和涵盖该项目的简单学院实验室,我尝试将两个小组,即洗衣台和灯泡分成两组。 我有一些疑问。 此代码在zcl_samplesw.c的"zclSampleSw_processZStackMsgs"中使用,我不太理解。 我知道它从ZR/ZT开关的客户端查找群集ID_General。 如果找到它,则存在绑定或其他任何内容。 对吗?

     

    case zstackmsg_CmdIDs_ZDO_SIMPLE_DESC_RSP:
              {
                    zstackmsg_zdoSimpleDescRspInd_t *pInd;
                    pInd = (zstackmsg_zdoSimpleDescRspInd_t*)pMsg;
        
                    if((pInd->rsp.status == zstack_ZdpStatus_SUCCESS) && (pInd->rsp.simpleDesc.n_outputClusters))
                    {
                        while((*(pInd->rsp.simpleDesc.pOutputClusters) != ZCL_CLUSTER_ID_GENERAL_ON_OFF) && (pInd->rsp.simpleDesc.pOutputClusters != NULL))
                        {
                            pInd->rsp.simpleDesc.pOutputClusters++;
                        }
        
                        if(pInd->rsp.simpleDesc.pOutputClusters != NULL)
                        {
                            ...

    此时,zr_switch已定义了basic,标识为输入(client?) 并将,开,关 和组标识为输出(服务器?)。 但是这些组合在灯泡和其他的洗涤台,对吗? 那么,我是否应该在启动板INR中引入不同的群集,以便能够区分?

    另一个选项是使用另一个终结点。 使用此选项,我必须在所有启动板中添加新的端点,对吗? 在简单描述符中,只能定义1个端点。  我不知道如何注册更多端点。

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您引用的SLA代码专门用于手动查找可以本地绑定的群集。  我不建议使用它 来标识 节点类别。  服务器是输入群集,客户端是输出群集。

    端点在 zclport_registerEndpoint中注册,通常在设备初始化期间注册。  但是,不建议将其用于区分设备,也不建议使用不同的群集。  相反,您可以选择使用 zcl_ReadAttrData读取属性,以收集 ZCL_cluster_ID_General基本群集 的ATTRID_BASIC制造商名称或 ATTRID_BASIC模型标识符属性(必须在节点中启用)。  由于TI和OSRAM具有不同 的OUI,另一个选项是在 zstackmsg_Cmdids_ZDO_DEVICE_NOLETATE期间按IEEE地址进行过滤。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢你。 现在一切都更加清楚了。

    我正在尝试首先使用zcl_ReadAttrData读取属性。 此命令在项目中的AddGroup函数中使用过一次,因此我尝试模仿此示例。 所以我在zcl_sampleapps_ui.c中创建了这个函数,以便在CUI中显示该值。 我调用zcl_ReadAttrData是为了读取包含端点的属性,基本群集的ID,制造商名称的属性,一些用于保存属性及其长度的参数。 但是,我只是尝试打印返回的状态,但我无法显示任何内容。 就像它不会归还任何东西,就会停下来。

    它不起作用,因为我必须首先创建绑定,然后在创建绑定后立即调用它? 我要说,它必须在每一个委员会之后,在确立了一项约束之后发出。 但我不确定。 谢谢你。

    static void uiActionSetIFTT(const char _input, char* _pLines[3], CUI_cursorInfo_t* _pCurInfo)
    {
        if (CUI_ITEM_INTERCEPT_START == _input) {
            ZStatus_t status = 0;
    
            uint8_t *atrLeido = FALSE;
            uint16_t *atrLen;
            status = zcl_ReadAttrData(SAMPLESW_ENDPOINT, ZCL_CLUSTER_ID_GENERAL_BASIC, ATTRID_BASIC_MANUFACTURER_NAME, atrLeido, NULL);
    
            char temp[16];
            uiUintToString(status, temp, 10, 2, TRUE, FALSE);
            strncpy(_pLines[0], temp, MAX_MENU_LINE_LEN);
            strncpy(_pLines[1], "*** EN DESARROLLO ***", MAX_MENU_LINE_LEN);
    
        }
    
    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    很抱歉,我忘记问另一个问题,像OSRAM这样的灯泡可能没有制造商名称吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您需要实现 CUI_statusLinePrintf API才能实际看到CUI输出中的更改。  我建议您在  UI_Init期间实施额外的CUI_statusLineResourceRequest,以根据需要添加自己的信息行来生成数据。  制造商名称是基本群集的可选属性,因此在 这些实例中您将收到ZCL_STATUS_UNSUPPORTED_ATTRIBUTE。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我尝试在一台设备中使用两个端点,但我有一些疑问。 我创建了一个类似于zcl_samplesw_data.c的新文件,以保存新的端点配置。 然后在zcl_samplesw.c中注册端点,就像已经注册的开/关灯开关一样。 我不知道这样做是否正确。 我也上传这些文件。  

    e2e.ti.com/.../6574.zcl_5F00_samplesw.zip

    另一个问题是,只有"开/关配接开关"设备,我是否可以只添加占用传感器组? 还是只能是"开/关指示灯"组合? 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    可以在一个应用程序中注册两个端点,就像在您提供的应用程序中注册一样。  您应该有 一个单独的ZCL一般群集库回调函数列表,以便在 SAMPLESW_ENPODENT_Occupancy,zclGeneral注册器CmdlCallbacks中注册。  您还可以重新使用 zclSampleSw_ResetAttributeToDefaultValues,而不是 使用单独的占用传感器属性。  我怀疑Occupation_data.c是否会正确构建,因为 zclSampleSwOccupancy _Attrs似乎缺少大括号,而且定义了重复的常量。  我建议 zclSampleSwOccupancy SimpleDesc对 AppDeviceId使用ZCL_DEVICEID_Occupation_sensor。  您应该进一步生成,运行和调试项目以观察其行为。

    还可以将占用传感器总成添加到现有的开/关灯开关端点。

    此致,
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    是的,它有一些错误,我写得很快,因为首先我需要知道这是否是一个好的选择。 我对问题进行编号,以便更容易回答。

    1.是否为该类型的传感器保留了端点? 即端点9. 或者,您可以选择您想要的任何选项?

    2.当您说:“您应该有一个单独的 ZCL常规群集库回调函数列表,以便在 SAMPLESW_ENPOPENDENT_Occupancy,zclGeneral注册器CmdlCallbacks中注册”时。 例如,当达到某个值时,将使用这种类型的回调,并可用于切换指示灯?

    3.但是我不应该创建zcl_samplesw.c之类的新文件来管理新的端点,对吗?

    谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.你可以选择你想要的任何东西。

    2.不能很好地理解您的问题。 “当达到某个值并可用于切换灯时”的含义是什么?
    3.没关系。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    1.避免端点0 (Zigbee设备对象)和0xF2 (绿色电源),任何其它选项都可供选择。

    2. 这对于开/关开关和占用传感器设备类型几乎不重要,但是,例如,您可能希望每个 端点的重置回调有所不同。  占用传感还使用ZCL_MS,因此可以通过 zclMS_RegisterCmdlCallbacks_t分别注册zclMS_AppCallbacks_t回调 (尽管当前只是Z-Stack ZCL MS实现中的占位符)。

    3.您可以使用单个c文件来管理多个端点, 您可以选择是否需要单独的应用程序文件。

    此致,
    Ryan