Для разработчиков: протокол COAP

Здесь все о протоколе COAP

здравствуйте! прошу помочь подключиться к вашему объекту COAP с помощью SIM7020. Привожу список нужных АТ-команд и то что я в консоли выдавал. Сокет UDP открывает, создает соединение COAP. но данные не посылаются -пишет ошибка. Непонятно что писать в АТ-команде в позиции token и option .

пробовал по разному -ничего не вышло- пишет ошибка – посмотрите как я пробовал

. я думаю что я должен послать POST - запрос не требующий подтверждения по адресу и наверно без токена( пробовали и с токеном тоже)

coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature

atOK

ATOK

AT+COPS?+COPS: 0,2,“25001”,9

OK

AT+CGCONTRDP+CGCONTRDP: 1,5,“APN_REG”,“10.8.214.30.255.255.255.0”,“213.87.0.1”,“213.87.1.1”,1500

OK

AT+CSOC=1,2,1+CSOC: 0

OK

AT+CSOCON=0,5683,89.108.112.87OK

AT+CCOAPNEW=?+CCOAPNEW: (0-255).(0-255).(0-255).(0-255),(0-65535),(0-10)

OK

AT+CCOAPNEW=89.108.112.87,5683,1+CCOAPNEW: 1

OK

AT+CCOAPCSEND=?+CCOAPCSEND: (1-2),(1),(0-3),(0-7),(0-31),“token”,“option”,(0-512),“data”

OK

AT+CCOAPSEND=1,1,0,0,2,api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2, 255ERROR

AT+CCOAPSEND=1,1,0,0,2,api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2, ABERROR

AT+CCOAPSEND=1,1,0,0,2,coap://dev.rightech.io:5683/api/v1/objects/: valiad1973-yzp4q7/ base/state/temperature,2, ABERROR

AT+CCOAPSEND=1,1,0,0,2,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/ base/state/temperature,2, ABERROR

AT+CCOAPSEND=1,1,0,0,2,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7,/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7,coap://dev.rightech.io:5683/api/v1/objects/: valiad1973-yzp4q7/ base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,0,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,0,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABCDERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7, coap-URI =coap://dev.rightech.io:5683/api/v1/objects/: valiad1973-yzp4q7/ base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7,coap-URI =coap://dev.rightech.io:5683/api/v1/objects/: valiad1973-yzp4q7/ base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7, 636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,2,ABCDERROR

AT+CCOAPSEND=1,1,0,0,2, 636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,2,ABCDERROR

AT+CCOAPSEND=1,1,0,0,2,valiad1973-yzp4q7,636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,2,ABCDERROR

AT+CCOAPSEND=1,1,0,0,2, 636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,ERROR

AT+CCOAPSEND=1,1,0,0,2,636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,ERROR

AT+CCOAPSEND=1,1,1,0,2,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABERROR

AT+CCOAPSEND=1,1,1,0,2,636f61703a2f2f6465762e72696768746563682e696f3a353638332f6170692f76312f6f626a656374732f76616c696164313937332d797a703471372f626173652f73746174652f74656d7065726174757265,2,ABERROR

AT+CCOAPSEND=1,1,1,0,2,63d117274c07ee001076c05f,coap://dev.rightech.io:5683/api/v1/objects/valiad1973-yzp4q7/base/state/temperature,2,ABCDERROR

К сожалению данного оборудования под рукой нет, поэтому на реальном железе проверить не смогу.

Но насколько я понял из документации команда CCOAPSEND ожидает полный CoAP пакет в виде hex

AT+CCOAPSEND=<coap_id>,<data_len>,<data>

Для теста можно попробовать сформировать такой пакет при помощи python и библиотеки aiocoap

from aiocoap import *

id = "valiad1973-yzp4q7"
param = "base/state/temperature"

uri = f"coap://dev.rightech.io/objects/{id}/{param}"
payload = bytes("30", 'ascii')

msg = Message(mtype=CON, mid=1, code=POST, uri=uri, payload=payload)
data = msg.encode()

print(f"AT+CCOAPSEND=1,{len(data)},{data.hex()}")
AT+CCOAPSEND=1,74,400200013d026465762e72696768746563682e696f876f626a656374730d0476616c696164313937332d797a7034713704626173650573746174650b74656d7065726174757265ff3330

Для кодирования пакета на устройстве можно посмотреть как это делается в libcoap :

Или можно попробовать более простые библиотеки:

Тот формат что вы приложили больше похож на команду CCOAPCSEND,
через которую можно задавать отдельные поля CoAP-пакета,

AT+CCOAPCSEND=<coap_id>,<version>,<type>,<h_code>,<l_code>,<token>,<option>,<data_len>,<data>

но как минимум CoAP заголовок и опции запроса (Uri-Path) всё равно придется кодировать в hex по протоколу

здравствуйте! Спасибо! по вашему коду я подключился . извините что долго не смотрел. был занят другими делами

будем теперь из вашей питоновской программы делать для микроконтроллера на с++