my (simple) xbee network and how to broadcast the MY value of nodes w/out query

maybe i am going about this from the wrong angle, and feel free to say so if there's abetter way of managing it...

here's the short explanation of what i am trying to acheive. 'Valet/Concierge Paging Network'
xbees are x24 ser 1 pcbs
the remote devices have xbee set to
unique MY values
on the same PAN/CH
API is set to API w escape
End Device
Sleep is off but want it to be on eventually
Pin 0 is set as a digital out connected to a single momentary switch.
central/coordinator set consists of
xbee set to
unique MY values
on same PAN/CH
API is set to API w/ escape
Cordinator
tx/rx attached to arduino uno rx/tx
Pin 0 set to digital out and connected to Pin 2 on arduino uno with resistor between pins pulling to ground
arduino uno is confgured
rx/tx to xbee
pin 2 set to digital in connected to pin 0 on the xbee
pin 2 currently outputs to pin 13 LED
3 x 4 LED matrix connected to 7 pins 4,5,6 and 8,9,10,11.
matrix is currently controlled by a switch/case argument that reads a value from serial and responds to values 1-12
triggering the correct led in the matrix

a single button push lights the pin 13 led. it stays lit until a quad button sequence is read and the led will then stay off until it receives the next single push.

what i am trying to accomplish is that each remote device when it's button is pushed will send the 'service request' to the coordinator a long with it's 'MY ID' (bare minimum) and the LED assigned to that remote device will turn on and stay on at the central/cordinator until the remote with the correct 'MT ID' enters the correct 4 push sequence. eventually the single button remote will be a sensor array monitoring all sorts of environmental data to better serve clients. right now i just want the remotes to send the button HIGH data and their MY ID.
currently i get the button push digital data (90% of the time) and the LED at the central unit responds correctly on and off. I correctly get a DigitalRead of PIN 2 and correctly count the number of times pushed. i can also trigger the led matrix with its value in the serial monitor.
when i attempt to serial read or use the xbee arduino library function to read the serial stream i always get back an error code of 3. i have yet to be able to read the data from the tx/rx stream at all.
i can use AT and API commands from the coordinator to get MY ID values, but I want this data sent along with the digital push button info. Am i just really over complicating this and missing the obvious solution?

what i am trying to accomplish is that each remote device when it's button is pushed will send the 'service request' to the coordinator a long with it's 'MY ID' (bare minimum) and the LED assigned to that remote device will turn on and stay on at the central/cordinator until the remote with the correct 'MT ID' enters the correct 4 push sequence. eventually the single button remote will be a sensor array monitoring all sorts of environmental data to better serve clients. right now i just want the remotes to send the button HIGH data and their MY ID.

I presume that that is supposed to be "MY ID" in the third line. If so, how is an XBee with one switch supposed to "enter the correct 4 push sequence"?

currently i get the button push digital data (90% of the time) and the LED at the central unit responds correctly on and off. I correctly get a DigitalRead of PIN 2 and correctly count the number of times pushed. i can also trigger the led matrix with its value in the serial monitor.

Get the "button push data" where?

when i attempt to serial read or use the xbee arduino library function to read the serial stream i always get back an error code of 3. i have yet to be able to read the data from the tx/rx stream at all.

There is a problem with your XBee configuration on the remote device, the XBee configuration on the central device, or with your code. You've shared none of that information.

i can use AT and API commands from the coordinator to get MY ID values, but I want this data sent along with the digital push button info. Am i just really over complicating this and missing the obvious solution?

If the remote Xbee(s) are in API mode, the packet that it/they send(s) contains the MY ID of the sender.

I presume that that is supposed to be "MY ID" in the third line. If so, how is an XBee with one switch supposed to "enter the correct 4 push sequence"?

yessir, if the button is pressed AND ledPIN = LOW , then set ledPIN=HIGH and buttoncount =0, if button is pushed AND ledPIN = HIGH then buttoncount = buttoncount+1 and ledPIN =HIGH (stays on); if buttoncount mod 4 ==0 then ledPIN=LOW AND buttoncount=1;

Get the "button push data" where?

it prints the 'push button count' output to the serial monitor and the LED responds as expected

There is a problem with your XBee configuration on the remote device, the XBee configuration on the central device, or with your code. You've shared none of that information.

clearly, otherwise i wouldnt be here asking for help. I didnt save the code i was using when i got the error code 3. my configs for the xbees are 'reset firmware' default settings aside from the mentioned changes. both remote and central are in API mode, central is coordinator, remote is end point, the remote has one pin set to DO and the coordinator has one pins set to DI

If the remote Xbee(s) are in API mode, the packet that it/they send(s) contains the MY ID of the sender.

does this data transmit across the tx/rx pins? how is it associated (time? file name? ref #) to the data digitial.read (button push or not pushed) on pin 0? ccan i simply capture the header of the incoming to identify the sender's MY ID?

yessir, if the button is pressed AND ledPIN = LOW

Maybe I'm missing something here, but the remote XBee doesn't have a ledPIN.

If you have some code on the central Arduino, it's (past) time to show it.

it prints the 'push button count' output to the serial monitor

I'm sure you know what you are talking about. I don't. It is a pronoun that has no referent. I have no idea what prints that output.

clearly, otherwise i wouldnt be here asking for help.

You don't seem to recognize hints when you trip over them.

central is coordinator, remote is end point

"coordinator" and "end point" are terms that make sense only for Series 2 (mesh network) models. You claim to be using Series 1 models.

does this data transmit across the tx/rx pins?

That depends on how the XBee is connected to the Arduino. If you are using a rubber band or duct tape, no. If you are using a shield, maybe. Or maybe not. Depends on the shield, and possibly switch or jumper settings.

how is it associated (time? file name? ref #) to the data digitial.read (button push or not pushed) on pin 0?

There's that pronoun again. making no sense.

ccan i simply capture the header of the incoming to identify the sender's MY ID?

Exactly.

Maybe I'm missing something here, but the remote XBee doesn't have a ledPIN.

the xbee does not have an ledPIN, but i do have a switch attached to pin0 on the remote xbee and pin0 on the coordinator xbee's pin0 is connected to the arduino's pin2

here's the code

#include <XBee.h>


const int  buttonPin = 2;    // the pin that the pushbutton is attached to via xbee coordinator PIN 0
const int ledPin = 13;     // output to LED

int rowPinA = 4;
int rowPinB = 5;
int rowPinC = 6;
int colPin1 = 8;
int colPin2 = 9;
int colPin3 = 10; 
int colPin4 = 11; 
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;  


void setup() {
Serial.begin(9600);
pinMode(rowPinA, OUTPUT);
pinMode(rowPinB, OUTPUT);
pinMode(rowPinC, OUTPUT);
pinMode(colPin1, OUTPUT);
pinMode(colPin2, OUTPUT);
pinMode(colPin3, OUTPUT);
pinMode(colPin4, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);


     
}

void loop()
{
  buttonState = digitalRead(buttonPin);
  //Serial.println(buttonState);
   if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
      
    } 
    else {

    }
  }
  lastButtonState = buttonState;
    if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, LOW);
  } else {
   digitalWrite(ledPin, HIGH);
  }
  

  
  if (Serial.available() > 0) {
    int inByte = Serial.read();
     switch (inByte) {
    case '1':   
      digitalWrite(colPin1, LOW); //col
      digitalWrite(colPin2, LOW);
      digitalWrite(colPin3, LOW);
      digitalWrite(colPin4, LOW); 
      digitalWrite(rowPinA, LOW); //colb
      digitalWrite(rowPinB, LOW);//colc
      digitalWrite(rowPinC, LOW);//cold
  
      digitalWrite(colPin1, HIGH); //1
      digitalWrite(rowPinA, HIGH); //colb
      digitalWrite(rowPinB, HIGH);//colc
        break;
    case '2':    
        digitalWrite(colPin1, LOW); //col
      digitalWrite(colPin2, LOW);
      digitalWrite(colPin3, LOW);
      digitalWrite(colPin4, LOW); 
      digitalWrite(rowPinA, LOW); //colb
      digitalWrite(rowPinB, LOW);//colc
      digitalWrite(rowPinC, LOW);//cold
         digitalWrite(colPin1, HIGH); //c2
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinC, HIGH);//cold
          break;
    case '3': 
        digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin1, HIGH); //3
        digitalWrite(rowPinB, HIGH);//colc
        digitalWrite(rowPinC, HIGH);//cold
        break;
   case '4': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin2, HIGH);//4
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinB, HIGH);//colc
        break;
   case '5': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin2, HIGH);//5
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinC, HIGH);//cold
        break;
   case '6': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin2, HIGH);//6
        digitalWrite(rowPinB, HIGH);//colc
        digitalWrite(rowPinC, HIGH);//cold
          break;
   case '7': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin3, HIGH);//7
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinB, HIGH);//colc
          break;
   case '8': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin3, HIGH);//8
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinC, HIGH);//cold
          break;
   case '9':   
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin3, HIGH);//9
        digitalWrite(rowPinB, HIGH);//colc
        digitalWrite(rowPinC, HIGH);//cold
          break;
   case 'a': 
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin4, HIGH); //10
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinB, HIGH);//colc
          break;
   case 'b':   
    digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin4, HIGH); //11
        digitalWrite(rowPinA, HIGH); //colb
        digitalWrite(rowPinC, HIGH);//cold
          break;
   case 'c': 
        digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
        digitalWrite(colPin4, HIGH); //12
        digitalWrite(rowPinB, HIGH);//colc
        digitalWrite(rowPinC, HIGH);//cold
        
        break;
    default:
        digitalWrite(colPin1, LOW); //col
        digitalWrite(colPin2, LOW);
        digitalWrite(colPin3, LOW);
        digitalWrite(colPin4, LOW); 
        digitalWrite(rowPinA, LOW); //colb
        digitalWrite(rowPinB, LOW);//colc
        digitalWrite(rowPinC, LOW);//cold
      }
    }
  }

"coordinator" and "end point" are terms that make sense only for Series 2 (mesh network) models. You claim to be using Series 1 models.

well the terms coordinator and end point are certainly options in the newest version of XCTU and whether they affect the flow of data or not I don't know for sure but I can assure you that they are not arbitrary labels. In XCTU when you attach to the coordinator directly to the pc with XCTU you have the ability to adjust the settings of all of the end point xbees from the GUI. You can identify but not change the xbees if you are connected directly with an end point.

That depends on how the XBee is connected to the Arduino. If you are using a rubber band or duct tape, no. If you are using a shield, maybe. Or maybe not. Depends on the shield, and possibly switch or jumper settings.

the coordinator xbee is connected to the arduino on the tx/rx pins (0 and 1), also pin0 of the coordinator is connected directly to pin2 of the arduino. that's it.

Exactly.

i'll have at least 12 remote xbees that could be transmitting 'push button' data to to the central unit via xbee pin0. currently all of the push button data is being read by the arduino by digitalRead on pin 2, regardless of which xbee remote sends data. i'm not getting any identifying data that i can access on the remote pin0=>pin2 arduino stream. if the header data is coming over the tx/rx link then iwill need to either find a way to accurastely associate the 'pin0=>pin2' data with the correct 'MY ID' data even when multiple xbees are sending data, so would have to have some sort of associative reference whether it's a time stamp, header etc.

or i could completely change the code if makes more sense.

      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);

Are you using the Serial instance to talk to the XBee or to talk to the PC? Both is the wrong answer. (So is yes.).

The packet that the XBee sends will tell you it's name and that it's digital pin changed state. You should not be configuring a pin as input or output on the receiving XBee.

The packet that the XBee sends is binary data. What that code dealing with ASCII data is supposed to do, I can't imagine.