您的位置:首頁>科技>正文

樹莓派智能家居:分區擴容與控制中心

前面我們在安裝樹莓派系統之後, 並沒有做任何的分區調整, 通過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進行初步的測試, 看是否能夠滿足複雜網路環境下的心跳請求。

Next Article
喜欢就按个赞吧!!!
点击关闭提示