IoTとブロックチェーン

# 概要

Raspberry PI Zero Wを使ってBluetooth対応体温計のデータを取得してブロックチェーンにデータを保存します。

ブロックチェーンに体温データを刻むことで対改竄性が担保されます。また、アカウントを参照することで誰でもデータを閲覧することもできます（もちろん個人情報的にはアレなので暗号化等と組み合わせる必要はあると思います）

# 作るもの

以下のような構成で実装します。


![Untitled (3).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/e06dc1e3-0f88-baec-ca41-ab35e76a1e03.png)

##### 記録先アドレス
https://testnet.symbol.fyi/accounts/TBEMA3X4O7VZCBAUDSXIVZNUUTF3CKKIZD67AWY

# サンプル動画
MP4動画はQiitaに上げられなかったのでGIF動画にしました。（わかりにくい、、、）

![体温計サンプル1.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/39305ddf-6826-ac22-3422-18046a3f2cb5.gif)

![体温計サンプル2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/da48d799-88be-1552-cf49-f5032878ef3e.gif)

![体温計サンプル3.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/1737880f-c70b-beb7-8b11-236b00dd7efd.gif)

# 開発環境

## **Raspberry Pi Zero W**

[Raspberry Pi Zero W - ヘッダー ハンダ付け済み - ラズベリー・パイ ゼロ W ワイヤレス](https://www.amazon.co.jp/gp/product/B07BHMRTTY/ref=ppx_yo_dt_b_asin_title_o02_s00?ie=UTF8&psc=1)

## **A&D Bluetooth内蔵 体温計 UT-201BLE**

今回は[A&D Bluetooth内蔵 体温計 UT-201BLE](https://www.amazon.co.jp/A-D-Bluetooth%E5%86%85%E8%94%B5-%E4%BD%93%E6%B8%A9%E8%A8%88-UT-201BLE/dp/B00ZQMNV94)を使いました。

## 環境

```bash
$ cat /etc/os-release 
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
```

# SSH接続

初期設定にてWi-Fiに接続出来る状態であればSSHコマンドにてラズパイZeroWにSSH接続可能。

```bash
ssh pi@raspberry.local
raspberry.local's password:
Linux opening 5.15.84+ #1613 Thu Jan 5 11:58:09 GMT 2023 armv6l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
```

### キーボード入力の修正

（リブートが必要かも）

```bash
echo "set nocompatible" >> /etc/skel/.vimrc
echo "set backspace=indent,eol,start" >> /etc/skel/.vimrc
sudo echo "set nocompatible" >> /root/.vimrc
sudo echo "set backspace=indent,eol,start" >> /root/.vimrc
echo "set nocompatible" >> /home/pi/.vimrc
echo "set backspace=indent,eol,start" >> /home/pi/.vimrc
```

## **１．ペアリングデバイスの検索**

https://qiita.com/noraworld/items/55c0cb1eb52cf8dccc12


piユーザー（初期）をbluetoothグループに追加

```bash
$ sudo usermod -a -G bluetooth pi
$ sudo reboot
```

## ２．**繋ぎたいデバイスのBluetoothアドレスを特定**

リブート後、`bluetoothctl`コマンドを実行

```bash
$ bluetoothctl
[bluetooth]# scan on
```

※scan onは自分で入力

以下のようにデバイスが列挙される。

```bash
[bluetooth]# scan on
Discovery started
[CHG] Controller B8:27:EB:13:4A:0D Discovering: yes
[NEW] Device 6C:17:F8:88:CE:C5 6C-17-F8-88-CE-C5
```

![Untitled (4).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/84d78eab-e526-a971-0bc9-2bb6b83cb0d8.png)


沢山出て来たら、目当ての品を探す。

xx:xx:xx:xx:xx:xxという書かれ方をしている文字列が、各Bluetooth機器のMACアドレス

## ３．**ペアリングする**

![Untitled (5).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/0d757870-9af9-bdd6-9881-3594cf128fe1.png)


`pair MACアドレス`で接続する

```bash
pair 64:33:DB:D8:AF:D2
```

Enterを押下して、`Pairing successful`と表示されたらあとは`connect MACアドレス`と打てば成功。

![Untitled (6).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/e29f9a23-db31-07d3-aa0a-02eb8c7fb8fb.png)

![Untitled (7).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/934471/1f09c84d-5e21-38cd-80ef-f2ed8abde0ce.png)


最後に`trust MAC`アドレスにて信頼できるデバイスとして追加しておけば次回以降この手間が省けるので便利。

あとはPythonを使ってごにょごにょすれば完成！（実はソースコード保管してなかったので紛失してる。。。余裕があればまた作成します）

:::note warn
この実験は2023/01頃に実施したものになります。
検証時期から時間が経っているのでうまく動作しない可能性があります。
:::

以上です。