Use this forum to chat about hardware specific topics for the ESP8266 (peripherals, memory, clocks, JTAG, programming)

User avatar
By JyotiRajSharma
#61979 Hi,

I have implemented MQTT client based on ESP8266. Now requirement is to compare with COAP with DTLS security. I have implemted plane COAP client with ESP8266 using "CoAP-simple-library-master" library.

As I know, COAP is good as it has security related features.
Does anybody know how to include DTLS security such as OpenSSL etc too ?

#include <SPI.h>
#include <ESP8266WiFi.h> //http server library
#include <WiFiUDP.h> //udp library
#include <coap.h>
const char* ssid = "AndroidAP";
const char* password = "abcde12345";
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02 };
IPAddress ip(192, 168, 43, 7);
// CoAP client response callback
void callback_response(CoapPacket &packet, IPAddress ip, int port);

// UDP and CoAP class
WiFiUDP Udp;
Coap coap(Udp);

// CoAP client response callback
void callback_response(CoapPacket &packet, IPAddress ip, int port) {
Serial.println("[Coap Response got]");

char p[packet.payloadlen + 1];
memcpy(p, packet.payload, packet.payloadlen);
p[packet.payloadlen] = NULL;

Serial.println(p);
}

void setup() {
Serial.begin(115200);

if (WiFi.status() != WL_CONNECTED)
{
delay(1);
// Connect to WiFi network
Serial.println();
delay(10);
Serial.println();
delay(10);
Serial.print("Connecting to ");
delay(10);
Serial.println(ssid);
delay(10);
WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println("");
Serial.println("WiFi connected");

// Print the IP addres
Serial.print("ESP8266 IP: ");
Serial.println(WiFi.localIP());

//Serial.print("ESP8266 WebServer Port: ");
//Serial.println(SVRPORT);
delay(300);
}


// client response callback.
// this endpoint is single callback.
Serial.println("Setup Response Callback");
coap.response(callback_response);

// start coap server/client
coap.start();
}

void loop() {
// send GET or PUT coap request to CoAP server.
// To test, use libcoap, microcoap server...etc
int msgid = coap.put(IPAddress(192,168,43,7), 5683, "sensordata","temp 23 humid 35");
Serial.println("Send Request");
// int msgid1 = coap.get(IPAddress(192, 168, 43, 7), 5683, "time");

delay(1000);
coap.loop();
}
User avatar
By malachi
#67896 Technically DTLS capability is lurking in mbedtls within the RTOS SDK.

However, I have spent dozens of hours fighting with it and have never reached a satisfactory working state