Xively与树莓派监控温度与湿度

进入https://www.xively.com/注册登录

添加设备(Add Device) Link to heading

Development Devices页面点击Add Device添加设备

填写Device NameDevice Description,将Privacy设定为Public Device

设置API Key Link to heading

进入Device详情页,在API Keys中点击Add Key添加一个Key,将Permissions中的Read,Create,Update,Delete全部勾选,Label随便填。

向Xively提交数据 Link to heading

在这里通过CURL向xively提交JSON格式的数据

JSON数据格式

{
  "datastreams": [
    {
       "id": "load",
       "current_value": "9.00"
    },
    {
      "id": "temp",
	  "current_value": "89.15"
	}
  ]
}

其中每个id为数据定义的idcurrent_value为提交的值

脚本文件send_xively.sh

#!/bin/bash
LOCATION='/home/pi/xively_data'   #Path of Xively JSON DATA file
API_KEY='orxUhgjqSYPDbv5243534tG65464345eArxSVY9pE8ITnE' #API Key
FEED_ID='1354438558' #FEED_ID
####################################################

COSM_URL=https://api.xively.com/v2/feeds/${FEED_ID}?timezone=+8
cpu_load=`cat /proc/loadavg | awk '{print $2}'`
sen_t=`sudo /home/pi/st`
sen_h=`sudo /home/pi/sh`

for i in 1 2 3 4 5; do
		cpu_t=`cat /sys/class/thermal/thermal_zone0/temp | awk '{print $1/1000}'`
		if [[ "${cpu_t}" =~ ^- ]]
		then
				cpu_t='0.0'
		else
				echo ${cpu_t}
				break
		fi
done

STR=`awk 'BEGIN{printf "{\"datastreams\":[ {\"id\":\"cpu_load\",\"current_value\":\"%.2f\"}, {\"id\":\"cpu_temp\",\"current_value\":\"%.2f\"},{\"id\":\"sensor_t\",\"current_value\":\"%.2f\"}, {\"id\":\"sensor_h\",\"current_value\":\"%.2f\"}] } ",'$cpu_load','$cpu_t','$sen_t','$sen_h'}'`

echo ${cpu_t}
echo ${cpu_load}
echo ${sen_t}
echo ${sen_h}
echo ${STR}
echo ${STR} > ${LOCATION}/cosm.json
curl -s -v --request PUT --header "X-ApiKey: ${API_KEY}" --data-binary @${LOCATION}/cosm.json ${COSM_URL}

其中LOCATION为JSON文件存放目录,没有的话请新建。API_KEY和FEED_ID按照自己的配置填写。

其中**/home/pi/下的st,sh**为通过DHT11采集温度与湿度程序,参考树莓派通过DHT11采集温度与湿度

接下来添加cronta任务,每隔1分钟运行一次该脚本

# m h  dom mon dow   command
*/1 * * * * /home/pi/send_xively.sh>/dev/null 2>&1 &

然后可以通过https://personal.xively.com/feeds/1255758558来查看具体的数据以及图表

监控页面http://zjq.in/raspi_sensor

参考: