* [家庭分布式鼠電站](https://www.h5jun.com/post/hamster-elec.html#toc-d4e)
* [同步數據到云端](https://www.h5jun.com/post/hamster-elec.html#toc-86b)
* [其他問題](https://www.h5jun.com/post/hamster-elec.html#toc-bf5)
* [總結](https://www.h5jun.com/post/hamster-elec.html#toc-25f)

當今社會,許多人喜歡養寵物陪伴自己和家人。而倉鼠以其可愛的外表、愛干凈的習性和溫順可愛的性格成為許多城市家庭養寵物的選擇。
在這個物聯網時代,共享經濟是人類發展的未來。讓可愛的小倉鼠不僅僅能作為賣萌討巧的寵物,還可以發揮其經濟價值,為家庭做出貢獻,正是新的萬維物聯網(Web of Things)云平臺將要做的事情。

## [](https://www.h5jun.com/post/hamster-elec.html#toc-d4e)家庭分布式鼠電站
要安裝家庭分布式鼠電站,你需要購買一塊[樹莓派](http://baike.so.com/doc/6240059-6453436.html)、一個特制的終端倉鼠滾筒(google 搜索 ep hamster roller):

將倉鼠滾筒的電流輸出端接入一個移動電源,比如[這一款](https://item.jd.com/11339988444.html),將信號輸出端接入樹莓派 GPIO 的 18、29、30 三個引腳,如果你不知道什么是 GPIO,可以參考[這一篇文章](https://www.h5jun.com/post/raspberry-pi.html)。
這樣,當你的倉鼠在滾筒里奔跑的時候,你的移動電源的電量就會增加,同時,倉鼠活動產生的電量數據就會通過信號輸出端發送到樹莓派。
接下來,我們要在樹莓派上對應的安裝 npm 包(如果你還沒在你的樹莓派上安裝 Node,請先安裝 Node.js 到你的樹莓派上!):
~~~
$ npm install -g hamster-elec
~~~
這樣你就安裝了鼠電模塊,接下來,在運行它之前,我們需要配置一下:
先到 APP Store 下載應用“倉鼠電樁”,然后打開倉鼠電樁 APP,將你的倉鼠丟進智能滾筒(注意:一次只能丟一只!),用你的 APP 掃一掃,就會得到你的倉鼠 ID。用你的倉鼠 ID 啟動 hamster-elec 服務:
~~~
$ hamster-elec --hid=<你的倉鼠ID> -p <端口> start
~~~
你會看到如下輸出信息:
~~~
hamster & rice launched! at port <端口>
~~~
然后你在局域網內訪問?`http://raspberrypi.local:7777`?就能看到你的倉鼠發電的情況。
如果你打開“倉鼠電樁” APP,你也能實時看到倉鼠發電的情況,當然前提是你的手機連接的網絡和你的樹莓派是在同一個局域網里。
### [](https://www.h5jun.com/post/hamster-elec.html#toc-86b)同步數據到云端
經過上面的配置,雖然你在本地可以訪問你的 APP 或者樹莓派 URL 來查看你的倉鼠發電情況,但是如果你想隨時隨地查看家里的倉鼠發電情況,我們就需要將它同步到云端。
而這也很容易做到,我們已經實現了一個記錄和同步發電數據的 REST API。你只需要:
~~~
curl -X PUT "https://qiwoo.org/hamster/actions/_setStatus" \
-H "Authorization: 倉鼠 ID" \
-H "Content-Type: application/json" \
-d '{ "type": "_setStatus", "elec":"電量值"}'
~~~
就可以更新數值到云端。
當然,這個我們需要做成自動的,所以,我們需要手動調用 hamster-elec 模塊:
~~~
const request = require('request');
const hamsterServer = require('hamster-elec').Server;
const hamsterID = '<你的倉鼠ID>';
const cloud = 'https://qiwoo.org/hamster/actions/_setStatus';
hamsterServer.createServer((req, res) => {
//... 處理服務
});
hamsterServer.on('electricity generation', (err, power) => {
if(err) throw new Error(err);
request.put({
url: cloud,
headers: {
Authorization: hamsterID,
Content-Type: "application/json"
}
}, {"type": "_setStatus", "elec": power});
});
hamsterServer.listen(7777);
~~~
這樣,一旦倉鼠開始發電,電量的變化就會被發送到云端。
### [](https://www.h5jun.com/post/hamster-elec.html#toc-bf5)其他問題
* Q: 我的倉鼠吃吃睡睡,不去滾筒里跑,發不了電怎么辦?
* A: 正常的情況,小家伙心情好了自然會去發電了,不能強求。
* Q: 我家倉鼠發了很多電,但是移動電源還是沒電是怎么回事?
* A: 檢查移動電源和滾筒的連接,接觸不良會導致電量損耗,另外移動電源自身質量不佳也會導致問題。
* Q: 我家有多只倉鼠,能不能同時發電。
* A: 暫不支持,但該需求已經列入開發計劃。將來會支持的。
### [](https://www.h5jun.com/post/hamster-elec.html#toc-25f)總結
喂飽你的倉鼠,它會給你帶來驚喜。

本文鏈接:[https://www.h5jun.com/post/hamster-elec.html](https://www.h5jun.com/post/hamster-elec.html)
--?EOF?--
作者?[`admin`?](https://www.h5jun.com/author/admin)發表于?*2017-03-31 17:54:12*?,最后修改于?*2017-04-01 09:49:47*