1. 程式人生 > >Zstack home 1.2.2a相容對接ZHA標準裝置和2.5.1a私有裝置

Zstack home 1.2.2a相容對接ZHA標準裝置和2.5.1a私有裝置

前言
  • 寫不歸路前,先鳴謝各位大哥:專哥,龍哥,怪獸哥,臨哥,安聯德哥等各位zigbee的帶頭大哥,帶我走上了zigbee的不歸路。
  • 我儘量不插入圖片,無線的這個論壇有限制,遊客看不了。

基礎
  • 協議棧版本:zstack home 1.2.2a
  • SoC方案:CC2530F256
  • 標準對接產品:小米的門磁(很多小大哥說小米的不標準,大家理解不同,小米門磁搞的是開關,說標準也是標準,說不標準也行,不逼逼)
  • 非標對接產品:自己做的,基於zstack2.5.1a開發的私有協議產品。



疑問
  • 我打算在1.2.2a上面註冊一個任務,專門處理2.5.1a的非標準產品,我的理解是可行的。
  • 新任務中註冊新的端點號,因為標準的產品廠家用的是1,我自己的用的是8,這種方向對不對?
  • 新任務的無線收發是跳過ZCL的,需要在1.2.2a中有特殊處理嗎?還是直接註冊新的事件函式就行了?

疑問解答
  • 疑問1:方法不對的,因為非標的資料會通過ZCL上報。
  • 疑問2:方法也是不靠譜的,因為endpoint最好相同,否則會出現繫結等大坑。
  • 疑問3:無線的接收不方便跳過ZCL,無線的傳送方便跳過,直接AF。不用註冊新事件,直接在ZCL事件中阻止非標zigbee產品的上報。


具體實施步驟:

第一步:通訊基礎:端點號相同+簇包含+Profile ID相同
1.將自己做的2.5.1a的非標準的產品端點號改成和標準的一樣,我這裡都是1。

#define SAMPLEAPP_ENDPOINT               1       //2.5.1a的SampleApp.h裡面
#define SAMPLELIGHT_ENDPOINT            1      //標準的我的是在zcl_samplelight.h裡面

2.將2.5.1a裡面用到的輸入和輸出簇,新增到標準的裡面去,切記取值不要和標準的相同。

const cId_t zclSampleLight_InClusterList[] =
{
  ZCL_CLUSTER_ID_GEN_BASIC,
  ZCL_CLUSTER_ID_GEN_POWER_CFG,
  ZCL_CLUSTER_ID_GEN_IDENTIFY,
  ZCL_CLUSTER_ID_GEN_GROUPS,
  ZCL_CLUSTER_ID_GEN_SCENES,
  ZCL_CLUSTER_ID_GEN_ON_OFF,
  ZCL_CLUSTER_ID_GEN_ALARMS,
  ZCL_CLUSTER_ID_SS_IAS_ZONE,
   SAMPLEAPP_PERIODIC_CLUSTERID, 
  SAMPLEAPP_FLASH_CLUSTERID,
  SAMPLEAPP_P2P_CLUSTERID  
};

const cId_t zclSampleLight_OutClusterList[] =
{
  ZCL_CLUSTER_ID_GEN_BASIC,
  ZCL_CLUSTER_ID_GEN_POWER_CFG,
  ZCL_CLUSTER_ID_GEN_IDENTIFY,
  ZCL_CLUSTER_ID_GEN_GROUPS,
  ZCL_CLUSTER_ID_GEN_SCENES,
  ZCL_CLUSTER_ID_GEN_ON_OFF,
  ZCL_CLUSTER_ID_GEN_ALARMS,
  ZCL_CLUSTER_ID_SS_IAS_ZONE,
   SAMPLEAPP_PERIODIC_CLUSTERID, 
  SAMPLEAPP_FLASH_CLUSTERID,
  SAMPLEAPP_P2P_CLUSTERID  
};


3.非標的profile ID修改成標準的0x0104。
#define SAMPLEAPP_PROFID             0x0104     //2.5.1a的SampleApp.h裡面

注:
  • 完成上面三條後就能接收到資料了,但是資料被ZCL搞去了,出現“ZCL瞎雞巴解析”,因為你畢竟是自定義的,ZCL並不知道,他還是按照ZCL格式解析,就他媽亂了。
  • 整個zigbee的入網流程不需要做任何改動,因為ZCL是應用層的規範。


第二步:自定義協議禁止ZCL解析,完成自定義解析。

待續。。。。



結束
很多初學者問,學習zigbee找誰幫忙,請在論壇發帖留言 有問題請加QQ群671139854,裡面裝逼的zigbee大佬太多,只要能接受大佬的懟,就能解決一切zigbee雜症。



爭取早日走完這條不歸路。