Raspberry PiとPython2.7でXBee + Arduino + 温湿度センサー値受信

コーディネータは、ZIGBEE COORDINATOR APIに設定。
温湿度センサーは、ZIGBEE ROUTER APIに設定。

コーディネータとなるXBeeは、XBeeエクスプローラUSBなどでRaspberry Piと接続。
温湿度センサーのXBeeは、ワイヤレスプロトシールドなどで接続。


Rasbianに以下のライブラリをインストール。

$sudo apt-get install python-serial
$wget https://python-xbee.googlecode.com/files/XBee-2.0.0.tar.gz
$tar zxvf XBee-2.0.0.tar.gz
$sudo python ./XBee-2.0.0/setup.py install


コーディネータのポートを調べる。

$ls /dev/tty*


Pythonソースは以下となる。

# -*- coding: utf-8 -*-
#!/usr/bin/env python

import serial
import time
import datetime
from xbee import XBee,ZigBee

ser = serial.Serial(
    port='/dev/tty***',
    baudrate=9600,
    timeout=1
)

xbee = ZigBee(ser)

def main():
    try:
        while True:
            recv_data = xbee.wait_read_frame()
            
            if not recv_data:
                print 'not recv'
                time.sleep(0.1)
                continue

            if recv_data.has_key('rf_data'):
                thermo_hygro = recv_data['rf_data']
                date = datetime.datetime.today().strftime('%Y/%m/%d %H:%M:%S')
                print date, thermo_hygro

            time.sleep(0.1)
    finally:
        if xbee != None:
            xbee.halt()

        if ser != None:
            ser.close()

if __name__ == '__main__':
    main()