CoAP паб / подсистема

В настоящее время я пытаюсь создать клиент CoAP для микроконтроллера, который может взаимодействовать с брокером, уже созданным kkdai.

Я не могу нормально общаться с брокером (сервером): он продолжает отрицать сообщение, отправленное моим издателем.

Я пытаюсь этот формат:

IP address:portUDP/ps/topic/value

основанный на клиентском коде, предоставленном kkdai (я провёл анализ, используя Wireshark, потому что документ недостаточно для определения правильного формата данных).

Это не подтверждает тему, созданную моим клиентом. Он показывает сообщение, как если бы клиент отправлял сообщение в неизвестную тему, даже если эта тема уже существует (создается с помощью предоставленного клиентского кода). Когда оно не будет подтверждено сервером, сообщение не будет передано подписчику.

#include <ESP8266WiFi.h>
#include "coap_client.h"#include "DHT.h"
#define DHTPIN 12
#define DHTTYPE DHT11

coapClient coap;

//WiFi connection info
const char* ssid = "SFE";
const char* password = "7777777777";

IPAddress ip(192, 168, 2, 14);
int port = 5683;

void callback_response(coapPacket &packet, IPAddress ip, int port);

void callback_response(coapPacket &packet, IPAddress ip, int port) {
char p[packet.payloadlen + 1];
memcpy(p, packet.payload, packet.payloadlen);
p[packet.payloadlen] = NULL;
//response from coap server
if (packet.type == 3 && packet.code == 0) {
Serial.println("ping ok");
}
Serial.println(p);
}

DHT dht(DHTPIN, DHTTYPE);

void setup() {
Serial.begin(115200);
dht.begin();
WiFi.begin(ssid, password);
Serial.println(" ");
// Connection info to WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
yield();
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println(WiFi.localIP());
coap.response(callback_response);
coap.start();
int msgid = coap.post(ip, port, "/ps/", "temp", 32);
}
int n;

void loop() {
bool state;
int t = dht.readTemperature();
if (isnan(t) || t >= 150) {
//Serial.println("Failed to read from DHT sensor!");
return;
} else {
String dataTemp = "";
dataTemp += String(t);
String sendDataTemp = dataTemp;
n = sendDataTemp.length() + 1;
char dmdBuff[n];
sendDataTemp.toCharArray(dmdBuff, n);
int msgid = coap.post(ip, port, "/temp", dmdBuff, strlen("11"));
state = coap.loop();
Serial.print("Send to ");
Serial.print(ip);
Serial.print(":" + String(port) + "/");
Serial.println(sendDataTemp);
Serial.print("Msg ID: ");
Serial.println(msgid);
Serial.println();
delay(1000);
}
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector