Communication between onoff-app Zephyr sample and light switch example of NRF52 Mesh SDK


Martin <ma@...>
 

Hi,
While doing experiments with the OnOff samples provided, I stumbled
across a strange phenomenon:
There are two ways used to send STATUS messages in
samples\boards\nrf52\mesh\onoff-app: One is by using
bt_mesh_model_send (line 319 ff.), and the other one is by using
bt_mesh_model_publish (line 352 ff.). When I run Zephyr on both of my
boards, everything works fine. But when I run Zephyr on one of the
boards and install the light switch client example of NRF52 Mesh SDK
on the other, only STATUS messages that are sent by using
bt_mesh_model_send appear on the board powered by the NRF52 Mesh SDK.
I am kind of stuck here and wondering why I get these differring
results. Does anyone have an idea on what is the reason for it might
be (e.g. difference in behavior of _publish and _send)?

Thanks,
Martin


Johan Hedberg
 

Hi Martin,

On Fri, Nov 02, 2018, Martin wrote:
There are two ways used to send STATUS messages in
samples\boards\nrf52\mesh\onoff-app: One is by using
bt_mesh_model_send (line 319 ff.), and the other one is by using
bt_mesh_model_publish (line 352 ff.). When I run Zephyr on both of my
boards, everything works fine. But when I run Zephyr on one of the
boards and install the light switch client example of NRF52 Mesh SDK
on the other, only STATUS messages that are sent by using
bt_mesh_model_send appear on the board powered by the NRF52 Mesh SDK.
I am kind of stuck here and wondering why I get these differring
results. Does anyone have an idea on what is the reason for it might
be (e.g. difference in behavior of _publish and _send)?
The bt_mesh_model_publish() API depends on the model publication state.
So if that state hasn't been set correctly (e.g. the publish address)
then you wont get the results that you expect. The bt_mesh_model_send()
API on the other hand is more explicit and intended for any
non-publishing messaging (e.g. a server model's responses or client
model messages which aren't part of model publication).

Johan


Martin <ma@...>
 

Hi!
Thanks guys, Virkrant pointed me into the right direction. It seems as
if for the NRF52 Mesh SDK to process STATUS messages sent from
bt_mesh_model_publish(), it has to explicitly subscribe to a group
address to which the STATUS messages are published. And thanks Johan
for the clarification regarding _send and _publish. I think I've got
in now :)

Martin
Am Fr., 2. Nov. 2018 um 05:32 Uhr schrieb Vikrant More <vikrant8051@...>:


Hi,
In case of Board executing Nordic SDK (Client) , to accept published message by
NODE executing Zephyr(Server) should subscribe to address on which Server is publishing.


Do following configuration to received published message from Server:

In case of Server:
Subscribed it to 0xC000
& let it Publishing on 0xC00A

In case of Client:
Publish it on 0xC000
& Subscribed it on 0xC00A




On Fri, Nov 2, 2018 at 5:12 AM Martin <ma@...> wrote:

Hi,
While doing experiments with the OnOff samples provided, I stumbled
across a strange phenomenon:
There are two ways used to send STATUS messages in
samples\boards\nrf52\mesh\onoff-app: One is by using
bt_mesh_model_send (line 319 ff.), and the other one is by using
bt_mesh_model_publish (line 352 ff.). When I run Zephyr on both of my
boards, everything works fine. But when I run Zephyr on one of the
boards and install the light switch client example of NRF52 Mesh SDK
on the other, only STATUS messages that are sent by using
bt_mesh_model_send appear on the board powered by the NRF52 Mesh SDK.
I am kind of stuck here and wondering why I get these differring
results. Does anyone have an idea on what is the reason for it might
be (e.g. difference in behavior of _publish and _send)?

Thanks,
Martin