0

質問があります。私はプロジェクト、ドモティック(ホームオートメーション)システムを持っています。このシステムでは、いくつかのセンサー、温度センサー、電力センサー、接触センサーなどにインターフェースを介していくつかのコマンドを送信する必要があります。

オン/オフ/トグルコマンドをZigBeeセンサーに送信できる部分はすでに完了しています。私はこのマニュアルに従いました。このコマンドについては、196ページで説明しています。

私のプロジェクトには、センサーに送信する適切なパケットを設定するためのPythonのこの部分があります。

if command not in ['ON', 'OFF', 'TOGGLE']:
        raise tornado.web.HTTPError(404, "Unknown command: " + str(command))

    op_group = "70"
    op_code = "50"
    # *9999999999999999;70;50;;100260EB008060008000000D8#
    #                   70 50  100231AC00000000000008060008000101A9
    packet_meta = "*%s;%s;%s;%s;02%s%s600080000%s#"  # D8 i s the CRC who compute that?
    pkt_len = hextransform(16, 2)

    # Hexify the network ID
    netid = hextransform(int(nid), 16)
    # Hexify the sensor ID
    # TODO: - split sensor_id in ZTC sensor_id and endpoint!
    #       - ZTC sens ID is 2 bytes 
    #       - ZTC endpoint is 1 byte
#        sens_id = hextransform(int(sid) >> 8, 4)
#        end_point = hextransform(int(sid) & 0x0000FF, 2)


#        print("\nsens_id: '" + sens_id + "'\n")
#        print("\nendpoint: '" + end_point + "'\n")

    # TODO: - split sensor_id in ZTC sensor_id and clusterid!
    #       - ZTC sens ID is 2 bytes 
    #       - ZTC clusterid is 2 bytes
    sens_id = hextransform(int(sid) >> 16, 4)#elisa
    sens_id_little = invert2bytes(sens_id,0)
    cluster_id = hextransform(int(sid) & 0x00FFFF, 4)#elisa
    end_point = "08" #elisa

    if command == 'ON':
        cmd_data = "01"
    elif command == 'OFF':
        cmd_data = "00"
    elif command == 'TOGGLE':
        cmd_data = "02"

    packet = packet_meta % (netid, op_group, op_code, pkt_len, sens_id, end_point, cmd_data)
    packet = packet.upper()
    print("\t\t " + packet + "\n")

    ################ ELISA #########################################
    cmd_meta = "02%s000000000000080600080000%s" #elisa
    mycommand = cmd_meta % (sens_id_little, cmd_data) #elisa
    len_mycommand = len(mycommand)/2
    op_group_hex=0x70
    op_code_hex=0x50
    mynet_type ="ztc"

    cmdjson = packet2json(op_group_hex,op_code_hex, mycommand)
    #
    #
    #TODO : -write command into db  
    ts = datetime.datetime.now().isoformat()
    self.lock_tables("write", ['confcommands'])
self.db.execute("INSERT INTO confcommands (network_id, ntype, timestamp, command) \
                              VALUES (%s,%s,%s,%s)", nid, mynet_type, ts, cmdjson)
    self.unlock_tables();

ここで、マニュアルに従って、センサーを再起動するための再起動コマンドを追加します。次に、restorestartup構成コマンドも追加します。

したがって、これらのコマンドがマニュアルのどこにあるのかわかりません。それらのいくつかがあります。次に、コマンドrestartまたはrestorestartupconfigurationのeの値が明確にわかりません。オン/オフ/トグルに3つの値(00、01、02)がある場合、この場合、マニュアルには、センサーに送信する適切なパケットを作成するためにcmd_data変数に割り当てる値が記載されていません。

どこでこれを検索するのかもうわからないので、あなたが私を助けてくれることを願っています。どうもありがとうございます。

4

2 に答える 2

1

ZigBeeテクノはわかりませんが、ドキュメントによると、プレートフォームのリセットまたはネットワークマネージャーのリセットのために呼び出されたAPSメッセージを送信してみてくださいAPSME-RESET.RequestAPSME-REST.ConfirmNLME-Reset.RequestNLME-Reset.Confirm

于 2012-10-22T14:06:33.430 に答える
1

コマンドはコードの実行内容と一致するため、このコードはZigBee OnOffクラスター(0x0006)を使用しているようです。ZigBeeはリトルエンディアンであるため0600、コード内のシーケンスの1つはクラスターIDです。

基本クラスター(0x0000)は、デバイスを工場出荷時のデフォルトにリセットする単一のコマンド0x00をサポートします。このコマンドには注意してください。デバイスがネットワークを離れ、デフォルトのネットワーク設定に戻る可能性があります。

デバイスを再起動/再起動するために使用できるZCL(ZigBeeクラスターライブラリ)クラスターとコマンドを認識していません。ZigBeeセンサーは、再起動せずに何年も実行できるように設計されています。

ZCLクラスターとコマンドの詳細については、ZigBeeAllianceからZigBeeクラスターライブラリをダウンロードできます。

デバイスがセンサーを再起動する必要があるのはなぜですか?

于 2012-10-23T16:48:33.560 に答える