#include <WiFiClientSecure.h>
#include <PubSubClient.h> //MQTT
//#include "certs.h";
#define MQTT_SERVER "test.mosquitto.org"
#define MQTT_PORT 8884 // Port 8884 para TLS con Client Certs
#define MQTT_USERNAME ""
#define MQTT_PASSWORD ""
#define MQTT_NAME "ESP32"
const char*topic = "Load";
WiFiClientSecure espClient;
PubSubClient client(espClient);
const char*WIFI_NAME = "Wokwi-GUEST";
const char*WIFI_PASS = "";
const int potePin = 33;
char msg[8];
int valorant=0;
// Set ssl certificate
static const char *root_ca PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
MIIEAzCCAuugAwIBAgIUBY1hlCGvdj4NhBXkZ/uLUZNILAwwDQYJKoZIhvcNAQEL
BQAwgZAxCzAJBgNVBAYTAkdCMRcwFQYDVQQIDA5Vbml0ZWQgS2luZ2RvbTEOMAwG
A1UEBwwFRGVyYnkxEjAQBgNVBAoMCU1vc3F1aXR0bzELMAkGA1UECwwCQ0ExFjAU
BgNVBAMMDW1vc3F1aXR0by5vcmcxHzAdBgkqhkiG9w0BCQEWEHJvZ2VyQGF0Y2hv
by5vcmcwHhcNMjAwNjA5MTEwNjM5WhcNMzAwNjA3MTEwNjM5WjCBkDELMAkGA1UE
BhMCR0IxFzAVBgNVBAgMDlVuaXRlZCBLaW5nZG9tMQ4wDAYDVQQHDAVEZXJieTES
MBAGA1UECgwJTW9zcXVpdHRvMQswCQYDVQQLDAJDQTEWMBQGA1UEAwwNbW9zcXVp
dHRvLm9yZzEfMB0GCSqGSIb3DQEJARYQcm9nZXJAYXRjaG9vLm9yZzCCASIwDQYJ
KoZIhvcNAQEBBQADggEPADCCAQoCggEBAME0HKmIzfTOwkKLT3THHe+ObdizamPg
UZmD64Tf3zJdNeYGYn4CEXbyP6fy3tWc8S2boW6dzrH8SdFf9uo320GJA9B7U1FW
Te3xda/Lm3JFfaHjkWw7jBwcauQZjpGINHapHRlpiCZsquAthOgxW9SgDgYlGzEA
s06pkEFiMw+qDfLo/sxFKB6vQlFekMeCymjLCbNwPJyqyhFmPWwio/PDMruBTzPH
3cioBnrJWKXc3OjXdLGFJOfj7pP0j/dr2LH72eSvv3PQQFl90CZPFhrCUcRHSSxo
E6yjGOdnz7f6PveLIB574kQORwt8ePn0yidrTC1ictikED3nHYhMUOUCAwEAAaNT
MFEwHQYDVR0OBBYEFPVV6xBUFPiGKDyo5V3+Hbh4N9YSMB8GA1UdIwQYMBaAFPVV
6xBUFPiGKDyo5V3+Hbh4N9YSMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEL
BQADggEBAGa9kS21N70ThM6/Hj9D7mbVxKLBjVWe2TPsGfbl3rEDfZ+OKRZ2j6AC
6r7jb4TZO3dzF2p6dgbrlU71Y/4K0TdzIjRj3cQ3KSm41JvUQ0hZ/c04iGDg/xWf
+pp58nfPAYwuerruPNWmlStWAXf0UTqRtg4hQDWBuUFDJTuWuuBvEXudz74eh/wK
sMwfu1HFvjy5Z0iMDU8PUDepjVolOCue9ashlS4EB5IECdSR2TItnAIiIwimx839
LdUdRudafMu5T5Xma182OC0/u/xRlEm+tvKGGmfFcN0piqVl8OrSPBgIlb+1IKJE
m/XriWr/Cq4h/JfB7NTsezVslgkBaoU=
-----END CERTIFICATE-----
)EOF";
const char *esp_cert PROGMEM = R"EOF(
-----BEGIN CERTIFICATE-----
MIID0DCCArigAwIBAgIBADANBgkqhkiG9w0BAQsFADCBkDELMAkGA1UEBhMCR0Ix
FzAVBgNVBAgMDlVuaXRlZCBLaW5nZG9tMQ4wDAYDVQQHDAVEZXJieTESMBAGA1UE
CgwJTW9zcXVpdHRvMQswCQYDVQQLDAJDQTEWMBQGA1UEAwwNbW9zcXVpdHRvLm9y
ZzEfMB0GCSqGSIb3DQEJARYQcm9nZXJAYXRjaG9vLm9yZzAeFw0yNDAzMjEyMTAx
NTdaFw0yNDA2MTkyMTAxNTdaMIGpMQswCQYDVQQGEwJBUjEVMBMGA1UECAwMQnVl
bm9zIEFpcmVzMRUwEwYDVQQHDAxCdWVub3MgQWlyZXMxETAPBgNVBAoMCEJsaXNr
TmV0MRIwEAYDVQQLDAllbGVhcm5pbmcxFTATBgNVBAMMDDkxLjEyMS45My45NDEu
MCwGCSqGSIb3DQEJARYfc2VyZ2lvLmFsb25zby5sdXRoaWVyQGdtYWlsLmNvbTCC
ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALnPKVse+DBajka8Gt9G8KYK
D0fHmDTTfngTJXyyglqL0ozJlZxw3gHwagyfgYo/4+VKtar28vUVgchS8fGqsc3A
dx4Wb7w+pYoLLlSMgIfzIfiWH1Kn/aUVAb0c330ITBfOYk4+cDBq39jFq6Z7UcH0
QfaCDdtbf+utHR9d/lhxL7bOGVHtpBrc/l0Z0x8Y6bUZKq2aKZZfiBrLpAi6t/0s
Bod3N5u3BQypZJDU7ma2rW1lX4vRUoCcFduo+bj8d6ZGLr5R9Z4AaFr/yK6jT1nG
Bm4k/RrkHoi+VfJErZhVohPx6FuA9pLYVEc1bdq89Xub467H6blZvku4Pxx1xrsC
AwEAAaMaMBgwCQYDVR0TBAIwADALBgNVHQ8EBAMCBeAwDQYJKoZIhvcNAQELBQAD
ggEBAAPU5WcS1ibMNiv8k3FcdqKiCTaBGJImn/2csg+uPv3K08Us4EIaC6cV8Hg+
dPRAfVf03VK7LxGTZYg2zIWDOeECov1vozjQ50nsVXtPTjZ2hjRBpRfyLYbcrfSZ
iEII2t7kaX3jBPcT3WXIVRRMPOMZsGU0p9Wm+P7bu32j8OYZ7cioPRpOCf+n2AQW
trhp2W4+bGKsoH0Eii7vC3EH5YpD5nwfE/ke2HgCHx37DQd0e7f2qWBWZM3JXV2I
UOKdLch+h51QTztH3LWJ0vg9FMUW7ej2j+gYRGdCUyceEn8WuXq06q7WajtnHjsx
80x/smWZx5EhobbjpowpVPdm5x0=
-----END CERTIFICATE-----
)EOF";
const char *esp_key PROGMEM = R"EOF(
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC5zylbHvgwWo5G
vBrfRvCmCg9Hx5g00354EyV8soJai9KMyZWccN4B8GoMn4GKP+PlSrWq9vL1FYHI
UvHxqrHNwHceFm+8PqWKCy5UjICH8yH4lh9Sp/2lFQG9HN99CEwXzmJOPnAwat/Y
xaume1HB9EH2gg3bW3/rrR0fXf5YcS+2zhlR7aQa3P5dGdMfGOm1GSqtmimWX4ga
y6QIurf9LAaHdzebtwUMqWSQ1O5mtq1tZV+L0VKAnBXbqPm4/HemRi6+UfWeAGha
/8iuo09ZxgZuJP0a5B6IvlXyRK2YVaIT8ehbgPaS2FRHNW3avPV7m+Oux+m5Wb5L
uD8cdca7AgMBAAECggEAAqb94KKbCVmpkUHrIkfJdJ1NJYmoVwyzz/P6A4Mq0C8R
xNe1zoNf7+gmI2L9fuM1lhbQbA3VXwE9FoZ0lK4KlrTKHoBUfPvp8gQB18wfo5Ep
aXp/HPdv6/TWTwRD/m1pZKeaCKLkiBRmeJotvpUhECMz89hcaUavl0Yj1chKMqn4
rA0XOxpKqVcuk7NjYO3or/TWAnwQwxOkqwGhmyCJ9tRK0AkIGW0H1jol0kV4T2Qv
HfOGcziL+A6hDO3LXHDyw9VsZYcbf524PCBVIlYAVLECgJtv86r4gt0pnhiw0zlT
1kGiIFmM5aCM2NHec4rajolqHV0p2iRlGq9R1etaPQKBgQD4zEF+tL7RZxhmPDIN
QRI8I6sy9wrPT3msmB8GMCSr5S8UkfiiSbTEGNW2/yFf1QaTuQnkNxkmjOsVdRJ+
8mcZM9vW75wf8uallTPKInFPWfQZP9Mvpv19rDTqAz3f5sDt7ySA5obT3QQCYqyG
pH6ctDlkrUoZMdYZob2pMbbVrQKBgQC/MB8RDTyR8p0TB5or2h3FAIZ396sPiA14
RW53meFpt93Y1I/sWlHQaV0skKn088sNfXOXCgOCq7HLBeUTInIC+HPblWEh9Kck
XwXM1X8fsKRPhrmjAhVfpB4E1Vsb+yat9rNNdvspo8hsVedgDYXhFjQ1LktEVjCF
20G6qFWLBwKBgQCpIuqPgb6LSuPqdJeuLQOBgNoczpc5shTMgantogL8HNTxzf5S
DXtnKF75hd4hcQeEm3GfBNoDPB+AudL2HEJ8fqXAK6peidnEzXakvt97C3MHSz19
kq+XpN9gCw4gTZXw6vdM7erQ0tqr6HrTGba9P0QZLjlGgXvEdxEhmZtrDQKBgCE9
+bjaR1TNDViYssq7Iv/05myHiJuruUPXNqze+Z2LFay00M10qtME7ulnwdVQalbP
IED7wb5/oes9/CWGkLJJhsOARqJDyqf9SaHi4TaeXQNi1nYsT5EQlROcETpdQc1v
np9yd5s22gtUKGXAFC4d0TgJ85ZPMiKkC9qrmCwTAoGAVdfbMJvmeXZjsaJWjCZD
OECc17y1w9SN7pDfPddRtGm5CEXxT2J3MiA6/7JkEwdGgBUBE/XiZIl6w2+0NQoY
qCqkuAD5ju1fJLFyfU8n+LFHj31PbnQE3jmgGAUa8qzBFubVs/vww0B4ikPXIQGi
LQN9chLdFJ63MErWS8viVHY=
-----END PRIVATE KEY-----
)EOF";
void setup() {
Serial.begin(115200);
Serial.println("Hola, ESP32!");
// Definir pin 33 como entrada
pinMode(potePin, INPUT);
// Intentar conexión WiFi y mostrar puntos hasta conectarse
WiFi.begin(WIFI_NAME,WIFI_PASS);
while(WiFi.status() != WL_CONNECTED)
{
delay(100);
Serial.print(".");
}
Serial.println("WiFi Conectado!");
espClient.setCACert(root_ca); //Root CA certificate
espClient.setCertificate(esp_cert); //for client verification if the require_certificate is set to true in the mosquitto broker config
espClient.setPrivateKey(esp_key); //for client verification if the require_certificate is set to true in the mosquitto broker config
//espClient.setInsecure(); // Desactiva la verificación del certificado del servidor
// Configurar Broker, port y callback
client.setServer(MQTT_SERVER,MQTT_PORT);
}
void loop() {
if(client.connect(MQTT_NAME))
{
int lect = analogRead(potePin); // Leer valor pote
int valor = map(lect, 0, 4095, 0, 180); // Mapear el valor leído a grados
if(valorant!=valor){
sprintf(msg,"%i",valor);
Serial.println(msg);
client.publish(topic, msg);
}
valorant=valor;
}
else
{
Serial.print("Fallo con return code = ");
Serial.println(client.state());
delay(3000);
return;
}
delay(1000);
}