Sending single transmission to multiple nodes?

Started by blebson, March 16, 2017, 12:35:08 AM

blebson

So what I ended up doing was splitting the voltage into two different bytes and then combining them after transmission. It's a bit hackey but it works just fine.

TomWS

Quote from: blebson on May 14, 2017, 06:37:16 PM
So what I ended up doing was splitting the voltage into two different bytes and then combining them after transmission. It's a bit hackey but it works just fine.
Uh, how is your 'basestation' implemented?  Is the packet processed by the same type of AVR processor as your node or is it processed by a different type of processor?

Tom


blebson

Different processor, it's sending from a Moteino to an ESP8266.

TomWS

Quote from: blebson on May 14, 2017, 10:47:52 PM
Different processor, it's sending from a Moteino to an ESP8266.
Ok, you didn't post your code so I can't comment on that, therefore I suggest you do some research on "data alignment within structures" for the various processors you're using.  I think you'll find the answer to your difficulties in that research.

Tom

blebson


syrinxtech

Good catch Tom....definitely sounds like a packing primitive is going to be in order here.

TomWS

#21
Quote from: syrinxtech on May 15, 2017, 11:35:55 AM
Good catch Tom....definitely sounds like a packing primitive is going to be in order here.
Maybe not.  The ESP8266 does not like to have its primitives unaligned.  Reordering maybe...
Actually, on second thought, I'm not 100% sure that the radio.DATA is guaranteed to be aligned on a word although it should be.  OP can research and educate us ;-)

Tom

CrayBer

Quote from: joelucid on March 16, 2017, 02:53:43 AM
That's easily possible: just send the packet to node address 255 and all nodes will receive. The problem with broadcasts is ACKs which would collide. The typical approach to deal with that weakness is to just send the data redundantly. So instead of one packet you send 3 and hope that at least one makes it to every destination.

joe

Not sure if I'm missing something, but I have set node address to 255 and sent packet 3 times with 40ms delay between, however none of my nodes are receiving anything.


#define NODEALL       255                 // ID to send to ALL nodes

if (radio.sendWithRetry(NODEALL, (const void*)(&theData), sizeof(theData)))
  {
    Serial.println("ok 1");
  }


Any help appreciated