Здесь все о протоколе 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 по протоколу
здравствуйте! Спасибо! по вашему коду я подключился . извините что долго не смотрел. был занят другими делами
будем теперь из вашей питоновской программы делать для микроконтроллера на с++