树莓派+Nginx+MySQL打造个人气象站

其实说实话个人感觉树莓派是个很鸡肋的东西,当初知道这东西的时候毫不犹豫就买了回来,但是实际上买来之后常年在自己柜子里吃灰,于是总想着用来做些什么东西。这里就跟大家分享之前用树莓派做服务器来搭建的一个简单的气象站。

第一步:树莓派安装MySQL+nginx+php搭建服务器

先说明下我使用的设备是树莓派B+,系统为Raspbian。由于学校福利我自己有一个静态ip但是80端口被限制因此校外无法访问,所以很遗憾没有办法给大家链接展示最终效果。

树莓派的安装配置这里不再赘述,直接从安装数据库和nginx开始。
首先安装Nginx,SQL以及php:

sudo apt-get update
sudo apt-get install nginx php5-fpm php5-cgi php5-cli php5-curl php5-gd php5-mcrypt php5-mysql php5-memcache php5-gd php5-sqlite php5-cgi php5-xmlrpc mysql-server mysql-client

ps.如果提示找不到包的话,可能是源的问题,需要考虑换一个apt-get的源了。

接下来要找到nginx的配置文件进行修改来开启php支持:

vim /etc/nginx/sites-availiable/default

修改成如下效果:

server {
listen 80;#Web服务端口号,大陆用户可能需要修改为81或8080等
server_name pi.chensibo.com;
root /var/www; #站点存储位置

access_log /var/log/nginx/localhost.access.log;
#error_page 404 /404.html;

if (!-e $request_filename)
{
rewrite ^(.*)$ /index.php$1 last;
}

location / {
index index.html index.htm index.php default.html default.htm default.php; #加入index.php为默认页面
}

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|xml)$ {
access_log off;
expires 1d;
}

location ~ .*\.php(\/.*)*$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params; #开启php解析,使用php-fpm作为Fastcgi通信模块
}
}

接下来是SQL的配置,用来给root用户设置外部访问权限:

mysql -uroot
>use mysql;
>grant all privileges on *.* to root@'your ip addresss' identified by 'root password'

这样一来我们的服务器基本就搭建完成了。

第二步:中国天气网API申请

这里的数据库不是十分复杂,主要是根据中国天气网API提供的关键字来设计数据库的表格,所以首先我们先要申请到中国天气网的API:

气象数据开放平台:http://openweather.weather.com.cn/

在上面的网站注册可以免费申请到个人使用的API,每天两次更新,十分方便(关键是免费啊有木有)。

API一共有两种,反正都是免费,于是乎都买下得了:

API名称 介绍 期限 价格
常规气象数据接口 包含国内全站2566个县级以上城市未来3天常规预报以及三个气象指数(穿衣指数,舒适度指数,晨练指数)等天气服务数据。 1年 ¥0
基础气象数据接口 包含国内369个地级市未来3天常规预报以及三个气象指数(穿衣指数,舒适度指数,晨练指数)等天气服务数据。 1年 ¥0

完成之后(其实并没有付钱……)会收到邮件,收到邮件之后就可以获得一个AppId和一个Private_Key用以访问API。

最基本的使用方法是HTTP GET,拿到API之后可以马上去尝试下:

http://open.weather.com.cn/data/?areaid=""&type=""&date=""&appid=""&key=".urlencode($key);

ps.引号里面的参数可以在官网上下载到表格,areaid等都是查表可得,date等的格式详见官方文档。

这里附上基础调用方式的官方说明:
请求方式:http get
接口组成:由固定URL加5个不同的参数组成,完整URL需客户端经过固定方式加密后使用。
数据返回:json
完整URL:http://open.weather.com.cn/data/?areaid=“”&type=”“&date=”“&appid=”“&key=”.urlencode($key);
固定URL:http://open.weather.com.cn/data/

参数名称 参数含义 参数样例
Areaid 区域id 单区域:101010100;多区域:101010100
Type 数据类型 指数:index_f(基础接口);index_v(常规接口); 3天预报:forecast_f(基础接口);forecast_v(常规接口);
Date 客户端日期 按照格式yyyyMMddHHmm获取客户端当前时间
Appid 固定分配的型号标识 某某:004906671841487 传递参数时:截取appid的前6位 生成公钥时:取完整的appid
Key 令牌 由公钥(public_key)和私钥(private_key)通过固定算法加密生成

加密方式:
private_key
某某:793ffb_SmartWeatherAPI_662cbc7
private_key仅负责与public_key共同合成key传参,私钥不可见,客户端与服务端各存储一份;
public_key为不包含key在内的完整URL其它部分(此处appid为完整appid)
示例:
http://open.weather.com.cn/data/?areaid=101010100&type=index_f&date=201410230335&appid=22290667181111
key的算法
key=base64_encode(hash_hmac(‘sha1’, publickey, private_key,TRUE));
key加密后通过urlencode对其编码后传参
注:每一个产品使用用户分配一个唯一标识appid,用于统计用户访问情况、区分用户提供差异服务,终端用户按照终端型号分配,一个型号对应一个标识。

关于这个API我是使用python来调用的,在这之后的部分中会给大家具体的代码,这里先不赘述。
官网上的许多表格都要下载下来,以后建立数据库的时候需要将这些表都添加进去的。

第三步:数据库设计和搭建

终于开始数据库的搭建了,首先先看下ER图(看不懂也没关系):

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值