Skip to content

Commit

Permalink
Using Ubidots STEM and MQTT SSL
Browse files Browse the repository at this point in the history
  • Loading branch information
dalmago committed Dec 17, 2020
1 parent 03ceaa2 commit 62a8aed
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 15 deletions.
71 changes: 60 additions & 11 deletions main/messenger.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,73 @@ const static uint8_t MQTT_ERROR_BIT = BIT1;

static esp_mqtt_client_handle_t mqtt_client = NULL;

const char* UBIDOTS_MQTT_ORG_PEM =
R"(-----BEGIN CERTIFICATE-----
MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw
TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh
cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4
WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu
ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY
MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc
h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+
0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U
A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW
T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH
B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC
B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv
KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn
OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn
jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw
qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI
rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV
HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq
hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL
ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ
3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK
NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5
ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur
TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC
jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc
oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq
4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA
mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d
emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVow
PzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMRcwFQYDVQQD
Ew5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
AN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmTrE4O
rz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEq
OLl5CjH9UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9b
xiqKqy69cK3FCxolkHRyxXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw
7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40dutolucbY38EVAjqr2m7xPi71XAicPNaD
aeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNV
HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQMA0GCSqG
SIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69
ikugdB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXr
AvHRAosZy5Q6XkjEGB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZz
R8srzJmwN0jP41ZL9c8PDHIyh8bwRLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5
JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubSfZGL+T0yjWW06XyxV3bqxbYo
Ob8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ
-----END CERTIFICATE-----)";

bool mqtt_app_start(void){
mqtt_event_group = xEventGroupCreate();
const esp_mqtt_client_config_t mqtt_cfg = {
.event_handle = mqtt_event_handler,
.host = MQTT_BROKER_URL,
.port = MQTT_BROKER_PORT,
// .port = MQTT_BROKER_PORT,
.username = MQTT_USER,
.password = MQTT_PASSWD
.password = MQTT_PASSWD,
.cert_pem = UBIDOTS_MQTT_ORG_PEM
};

mqtt_client = esp_mqtt_client_init(&mqtt_cfg);
// xEventGroupClearBits(mqtt_event_group, MQTT_CONNECTED_BIT | MQTT_ERROR_BIT);

// ESP_LOGI(TAG, "set_uri");
// esp_mqtt_client_set_uri(mqtt_client, MQTT_BROKER_URL);
esp_mqtt_client_set_uri(mqtt_client, "mqtts:https://"MQTT_BROKER_URL);

ESP_LOGD(TAG, "esp_mqtt_client_start");
esp_mqtt_client_start(mqtt_client);
ESP_LOGD(TAG, "Note free memory: %d bytes", esp_get_free_heap_size());
EventBits_t bits = xEventGroupWaitBits(mqtt_event_group, MQTT_CONNECTED_BIT | MQTT_ERROR_BIT, pdFALSE, pdFALSE, portMAX_DELAY);

bool result = false;
Expand All @@ -45,7 +93,7 @@ void mqtt_stop_app(void){

bool mqtt_app_send(const uint16_t value){
std::string payload = generate_payload(UBIDOTS_VARIABLE_LABEL, value);
ESP_LOGD(TAG, payload.c_str());
// ESP_LOGD(TAG, payload.c_str());

int result = esp_mqtt_client_publish(mqtt_client, UBIDOTS_MQTT_TOPIC, payload.c_str(), payload.size(), 0, 0);

Expand All @@ -71,6 +119,7 @@ esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event){
break;
case MQTT_EVENT_DISCONNECTED:
ESP_LOGI(TAG, "MQTT_EVENT_DISCONNECTED");
xEventGroupSetBits(mqtt_event_group, MQTT_ERROR_BIT);
break;
case MQTT_EVENT_PUBLISHED:
ESP_LOGD(TAG, "MQTT_EVENT_PUBLISHED, msg_id=%d", event->msg_id);
Expand All @@ -83,7 +132,7 @@ esp_err_t mqtt_event_handler(esp_mqtt_event_handle_t event){
break;
default:
ESP_LOGW(TAG, "Other event id:%d", event->event_id);
// xEventGroupSetBits(mqtt_event_group, MQTT_ERROR_BIT);
xEventGroupSetBits(mqtt_event_group, MQTT_ERROR_BIT);
break;
}
return ESP_OK;
Expand Down
6 changes: 3 additions & 3 deletions main/messenger.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@
#define UBIDOTS_DEVICE_LABEL "soil_monitor"
#define UBIDOTS_VARIABLE_LABEL "humidity1"

#define MQTT_BROKER_URL "things.ubidots.com"
#define MQTT_BROKER_PORT 1883
#define MQTT_BROKER_URL "industrial.api.ubidots.com"
// #define MQTT_BROKER_PORT 8883

#define MQTT_USER CONFIG_UBIDOTS_API_TOKEN
#define MQTT_PASSWD ""
#define MQTT_PASSWD "" // any character - not required -

#define UBIDOTS_MQTT_TOPIC "/v1.6/devices/" UBIDOTS_DEVICE_LABEL

Expand Down
5 changes: 5 additions & 0 deletions main/monitor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ extern "C" void app_main(){
}

if (!mqtt_app_start()){
mqtt_stop_app();
wifi_disconnect();
monitor_sleep(30 * 60, "Error connecting to MQTT. Will try again later."); // 30 min
}

Expand Down Expand Up @@ -46,5 +48,8 @@ void monitor_sleep(uint32_t seconds, const char* const message){
ESP_LOGE(TAG, message);
}

if (seconds > 1800) // more than 30min
seconds *= 1.04; /// + 4% for timer imprecision

esp_deep_sleep(seconds * 1e6);
}
2 changes: 1 addition & 1 deletion sdkconfig
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set
CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
# CONFIG_MBEDTLS_SSL_PROTO_TLS1 is not set
CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
Expand Down

0 comments on commit 62a8aed

Please sign in to comment.