使用者坐便座的管理通过BLE和Redis进行管理
日立制作所OSS解决方案中心区块链推进部门梅田多一。
首先
为了改进使用树莓派进行远程检查厕所使用情况和气味的系统“今日うん性”,本次我们将创建一个使用BLE(低功耗蓝牙)和Redis来确认厕所使用者的环境。
前提条件
将Raspbian安装到树莓派3 Model B上。
$ lsb_release -a
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.6 (stretch)
Release: 9.6
Codename: stretch
在BLE环境下进行设置
使用Raspberry Pi将其设置为BLE中心设备,并能够接收来自BLE外围设备的广告。要实现此功能,需要在Raspberry Pi上安装并使用Node.js的bleacon模块。
- nobleの前提ライブラリをインストール
$ sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev
参考:
一个用于 Node.js 的 BLE(低功耗蓝牙)中心模块
- Node.js v8.xのインストール
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
- node-bleaconのインストール
$ npm install bleacon
一个用于创建、发现和配置 iBeacons 的 Node.js 库
BLE环境的工作确认
我将创建并执行以下程序。它将接收到的广告信息输出到控制台。
var Bleacon = require('bleacon');
// Start scanning
Bleacon.startScanning();
// Events
Bleacon.on('discover', function(bleacon) {
console.dir(bleacon);
});
我用iBeacon模拟器等工具尝试发送广告。我使用了Android应用的Beacon模拟器。根据广告中包含的UUID,可以判断当且接近度是立即或附近时是否在洗手间。
$ sudo node beacon.js
{ uuid: 'a881f9bec064434ba659df4cbb445b95',
major: 1,
minor: 1,
measuredPower: -65,
rssi: -97,
accuracy: 6.265184188618567,
proximity: 'far' }
{ uuid: 'a881f9bec064434ba659df4cbb445b95',
major: 1,
minor: 1,
measuredPower: -65,
rssi: -87,
accuracy: 3.5309536541092137,
proximity: 'near' }
Redis環境のセットアップ
安装Redis在Raspberry Pi上,以便可以管理来自BLE外设的广告传输。
- Redisのインストール
$ sudo apt-get install redis-server
- node-redisのインストール
$ npm install redis
参考:用于 Node 的 Redis 客户端
对Redis环境进行操作验证
使用上述的程序进行改造并执行。从接收到的广告中提取uuid和proximity,并将其注册到Redis中。将uuid作为键,proximity作为值进行设置。由于在将数据设置到Redis时使用了setex,并将TTL(Time to live)设置为5秒,因此当离开卫生间时,信息将自动从Redis中删除。
var Bleacon = require('bleacon');
var client = require('redis').createClient();
// Start scanning
Bleacon.startScanning();
// Events
Bleacon.on('discover', function(bleacon) {
console.dir(bleacon);
client.set(bleacon.uuid, bleacon.proximity, 'EX', 5, function(){});
});
只需要一个选项即可:
通过使用Redis附带的redis-cli工具,你可以轻松查找已注册的广告信息。
$ redis-cli
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> keys *
1) "a881f9bec064434ba659df4cbb445b95"
127.0.0.1:6379> get a881f9bec064434ba659df4cbb445b95
"near"
127.0.0.1:6379>
结尾处
通过一个树莓派简单地建立了一个管理附近人员的系统。它可以在各种工作中应用,例如工作改革。实现多样化的工作方式,不受时间和地点的限制,需要能够证明员工何时在何处工作的必要性。
提到工作证明,就不能不提到工作量证明(Proof of Work)。提到工作量证明,就不能不提到区块链。下一次我们将使用区块链来管理马桶使用情况。马桶和区块,持续关注,敬请期待。