Page 1 of 1

BLE MESH string sending

Posted: Thu Jun 18, 2020 1:32 pm
by flachvr
Hello,

I am new to ble mesh and I have troubles modifying the generic on/off example to suit my needs.

I need to send a string between two ESP32-WROOM. I use the nRF Mesh app as the provisionner.
I am trying to use user property model, but I am note sure about the accuracy of my choices.
Does anyone have a sample code or could help me understand better what I need to do for it to work ?

Thank you by advance for your time !

Re: BLE MESH string sending

Posted: Tue Aug 25, 2020 11:24 am
by abansal22
hello,
I donot know how to send the string in the ble mesh. If you share the code with me I can help in debugging it.

Re: BLE MESH string sending

Posted: Tue Sep 01, 2020 11:56 am
by abansal22
Hello,

completed and tested the user property model. Please let me know if you still need help!

Re: BLE MESH string sending

Posted: Wed Sep 15, 2021 8:42 pm
by RodrigoSchardong
I'm with the same issue. The client and server ble mesh codes are here in espressif github: https://github.com/espressif/esp-idf/tr ... _mesh_node.

I don't know if I need to change the model in SKD or do something in .c file.

Re: BLE MESH string sending

Posted: Wed Jan 26, 2022 12:17 am
by mp54000
I also have the same issue, I'm unable to write a simple code that uses the user property model to pass strings. @abansal22 could you help us by providing a sample code that sends a string from a node to another, please? That would be immensely helpful

Re: BLE MESH string sending

Posted: Wed Feb 02, 2022 5:11 am
by mp54000
Hey folks! Update on this matter, I was able to pass a string from a node to another by making a simple modification to the custom vendor model example (git patch below):

Code: Select all

diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c
index ef9afa98de..80e11833bb 100644
--- a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c
+++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_client/main/main.c
@@ -483,8 +483,10 @@ static void example_ble_mesh_custom_model_cb(esp_ble_mesh_model_cb_event_t event
     case ESP_BLE_MESH_MODEL_OPERATION_EVT:
         if (param->model_operation.opcode == ESP_BLE_MESH_VND_MODEL_OP_STATUS) {
             int64_t end_time = esp_timer_get_time();
-            ESP_LOGI(TAG, "Recv 0x%06x, tid 0x%04x, time %lldus",
-                param->model_operation.opcode, store.vnd_tid, end_time - start_time);
+            uint8_t *d = param->model_operation.msg;
+            char *levalue = (char *)d;
+            ESP_LOGI(TAG, "Recv 0x%06x, tid 0x%04x, time %lldus the string %s",
+                param->model_operation.opcode, store.vnd_tid, end_time - start_time, levalue);
         }
         break;
     case ESP_BLE_MESH_MODEL_SEND_COMP_EVT:
diff --git a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c
index 4d4decff4f..10b67d2cb6 100644
--- a/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c
+++ b/examples/bluetooth/esp_ble_mesh/ble_mesh_vendor_model/vendor_server/main/main.c
@@ -157,10 +157,11 @@ static void example_ble_mesh_custom_model_cb(esp_ble_mesh_model_cb_event_t event
     case ESP_BLE_MESH_MODEL_OPERATION_EVT:
         if (param->model_operation.opcode == ESP_BLE_MESH_VND_MODEL_OP_SEND) {
             uint16_t tid = *(uint16_t *)param->model_operation.msg;
+            char *mydata = "TEST STRING PASSING";
             ESP_LOGI(TAG, "Recv 0x%06x, tid 0x%04x", param->model_operation.opcode, tid);
             esp_err_t err = esp_ble_mesh_server_model_send_msg(&vnd_models[0],
                     param->model_operation.ctx, ESP_BLE_MESH_VND_MODEL_OP_STATUS,
-                    sizeof(tid), (uint8_t *)&tid);
+                    strlen(mydata)+1, (uint8_t *)mydata);
             if (err) {
                 ESP_LOGE(TAG, "Failed to send message 0x%06x", ESP_BLE_MESH_VND_MODEL_OP_STATUS);
             }
So, you can just press the button (GPIO 0, which should be the onboard button for most esp32 boards) in the client node, and you'll see the string "TEST STRING PASSING" in the console, that came from the server node.

Re: BLE MESH string sending

Posted: Fri Jun 10, 2022 11:02 am
by Stella
hello, i'm new to ble mesh and i can't send string via ble mesh using user property model. Can you help me to implement sending string, RodrigoSchardong? i really need your help.

abansal22 wrote:
Tue Sep 01, 2020 11:56 am
Hello,

completed and tested the user property model. Please let me know if you still need help!

Re: BLE MESH string sending

Posted: Mon Apr 08, 2024 10:56 am
by celia diaz
Hi! Has anyone tried to implement this sending the message to more than one node? I have implemented this same concept using the Vendor approach but I can't make it work for more than CLIENT-SERVER communication, I thought about implementing this same thing using the Fast Provisioning example to involve more nodes in the communication but I don't really know how to do it.

If anyone have any info or code snippet to begin with would be of so much help!