XbeeでArduinoとRaspberry piを通信させる

http://qiita.com/simukappu/items/7a7262736e3f80e389f2

http://gist.github.com/shohei/5430972407822ab89ccbcf75615df1f5

#include <DHT.h>
#include <DHT_U.h>

#include <XBee.h>
#include "DHT.h"
#define DHTPIN 2
#define DHTTYPE DHT11

// Initialize XBee ZB client
XBee xbee = XBee();
// Payload byte array
uint8_t payload[8];
// Send to coordinator
XBeeAddress64 addr64 = XBeeAddress64(0, 0);
// Create request for XBee ZB
ZBTxRequest zbTx = ZBTxRequest(addr64, payload, sizeof(payload));

// Initialize DHT sensor module
DHT dht(DHTPIN, DHTTYPE);

void set_float_to_payload(float value, int index) {
  uint8_t *value_array;
  value_array = reinterpret_cast<uint8_t*>(&value);
  for(int i=0; i<sizeof(value); i++){
    payload[i+index] = value_array[i];
  }
}

void setup() {
  Serial.begin(9600); 
  xbee.setSerial(Serial);
  dht.begin();
}

void loop() {
  delay(3000);

  float temperature = dht.readTemperature();
  float humidity = dht.readHumidity();

  set_float_to_payload(temperature, 0);
  set_float_to_payload(humidity, 4);

  xbee.send(zbTx);
}
#!/usr/bin/python

"""
Application to receive data from XBee ZB using XBee Python Library.
"""

from xbee import ZigBee
import serial
import struct
import codecs

# TODO Replace with the serial port where your receiver module is connected.
PORT = '/dev/ttyUSB0'
# TODO Replace with the baud rate of you receiver module.
BAUD_RATE = 9600

# Open serial port
myDevice = serial.Serial(PORT, BAUD_RATE)

# Create API object
xbee = ZigBee(myDevice)

def prettyHexString(str):
    "split string by 2 length"
    return ' '.join([str[i:i+2] for i in range(0, len(str), 2)])

# Continuously read and print packets
print(">> Waiting for data...")
while True:
    try:
        response = xbee.wait_read_frame()
        source_addr = codecs.encode(response['source_addr_long'],'hex').upper()
        payload = prettyHexString(codecs.encode(response['rf_data'],'hex').upper())
        data = struct.unpack('ff', response['rf_data'])
        print('From %s >> [%s] | { temperature: %.1f degrees, humidity: %.1f%% }' % (source_addr, payload, data[0], data[1]))

    except KeyboardInterrupt:
        break

myDevice.close()