树莓派智能家居:分区扩容与控制中心

作者: lushitao 分类: 智能家居 发布时间: 2017-08-18 16:04

前面我们在安装树莓派系统之后,并没有做任何的分区调整,通过df –h命令可以看到,树莓派16GB的内存卡只占用了其中的3.5GB,而/dev/root这个目录才分配了2GB的内存,这着实是不够用的,因为我们在后面开发Java程序之后,如果引入了各种jar包,轻轻松松能达到几十MB,所以我们需要对树莓派进行扩容,磁盘扩容有风险,扩容前记得备份重要文件。

系统是CentOS7的树莓派版本,具体的扩容步骤如下:

$ sudo df -h #这个是查看当前树莓派磁盘大小的命令,在显示出来的列表中我们可以看到dev/root只有2GB

$ sudo fdisk /dev/mmcblk0 #这个是用来开启分区命令

$ p #根据提示按p键,这个是用来显示当前多少个分区和分区的大小,CentOS显示的是3个分区,我们要更改的是第三个分区

$ d #按d键,删除分区,然后提示你删除哪个分区,需要删除的是3分区

$ p #列出来发现当前只有两个分区了

$ n #增加分区的命令

$ p #根据提示,选择p,主要的

$ 3 #根据提示,我们选择3分区

此时会提示你输入分区开始和结尾的地址,开始就选择默认值(分区2的结尾值+1),结尾值选择默认的最大值,此时可以大概计算出开始值到结尾值大约有14GB的大小

$ p #输入完毕后,按p列出当前分区是否预设成功

$ w #按键w,保存刚才的分区修改

$ reboot #重启

$ sudo resize2fs /dev/mmcblk0p3 #把我们刚刚修改的分区进行最终的修复,经过一段时间大约1分钟左右,分区便重写完毕了

$ reboot #重启使得所有的设置生效

当这个时候我们再执行df –h之后,我们可以看到dev/root已经有14GB内存了,这足够我们折腾一段时间了。

树莓派智能家居:分区扩容与控制中心

分区完毕了,而且前面我们已经实现了闹钟功能和音乐播放器功能,房间里还有一些需要控制的地方:窗帘、灯、空调、语音控制、远程控制。那么先从简单的开始,搭建一个总控中心,这个总控中心主要负责数据的转发,命令的执行,具有扩展功能,可以方便后面硬件指令的接入。语言呢,有Python、Java、C,因为我一直都是用Java来做开发的,所以也就选择Java语言了。

安装jdk环境,目前有SUN Java和openjdk可用,SunJava有些代码是闭源不可见的,openjdk我们可以认为是精简版的Java,开发足够用,所有我们选择openjdk:

$ yum install java-1.8.0-openjdk* #把openjdk的所有包安装进行,安装后约占用500MB内存

等待Java安装完成,然后我们输入java、javac、java –version如果均有内容输出,那么我们的Java便安装成功了。

为了能够分布式实现控制中心,我决定采用两级结构的控制中心,大概思路是这样的,外网服务器有一个控制中心,用于转发外部的控制请求,比如在外面就可以用手机APP控制家里的电器,内网,即树莓派上有一个内网控制中心,它跟外网控制中心相连,时刻接收外网控制中心的请求,但是如果手机连接上内部局域网,手机APP便不再发送报文到外网控制中心了,直接通过内网进行控制,这样可以保证外网的流量减少,减少不必要的网络延迟。

那么,控制中心我们怎么做呢?目前初步决定采用Apache的开源框架MINA,这个是一个封装完善的JavaSocket,我们无需关注具体的连接过程,只需要实现心跳包,报文推送即可,下面我将会对MINA进行初步的测试,看是否能够满足复杂网络环境下的心跳请求。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注