Impinj R700 について

# Impinj R700 について
 Impinj Speedway Revolution(R420) の後継機種で本体内外の設計が一新され UHF 帯 RFID リーダです.

本記事にはカタログ性能的に良くなった点を記すのではなく, 実際に使用したことについて記しているため個人的見解であることにご注意してください.
使用可能になってから日が浅いので追記していきます.
![image0.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33399/b75ef36e-1487-8aa4-b585-f861f1640dc8.jpeg)


# Impinj R700 機種の設定
## アンテナハブ
本機種 R700, および Speedway Revolution R420 ではアンテナハブを増設することで最大 32 個のアンテナを接続することが可能となります.
Speedway Revolution R420 でアンテナハブを接続する場合専用の GPIO アダプタが必要となり, GPIO ポートが他の用途で使用することができなくなります.
GPIO ポートは RS232 Tx / Rx, 電圧の出力(OUTPUT) 4 ポート, 電圧の入力(INPUT) 4 ポートなどの機能をもち, このポートを使用することで電圧を印加するなどの条件でタグの読み込み開始を指示したり, 電圧を出力することでパトランプを点滅, ブザーを鳴らす等が可能となります.

R700 では, アンテナハブを接続する際に GPIO アダプタが不要となり同軸ケーブルのみでアンテナハブの増設することが可能となりました.
ただし, 入力ポートは2つ, 出力ポートは3つに減り, 接続用の端子は DB-15 から9ピンのターミナルブロックへ変更されました.

## RShell へのアクセス
リーダに固定 IP アドレスを割り当てたり, システムログの出力, ファームウェアの確認などリーダ自体の機能にアクセスするために `RShell` と呼ばれる独自のシェルにアクセスする必要があります.  
また, `RShell` には `SSH` よりアクセスすることが可能です.
`SSH` 以外の方法で Impinj 社製の RFID リーダ(ここでは国内で扱える機種のみを対象)である, Speedway Revolution, xSpan, xArray  では, RS232C ケーブルを介してコンソールポートへ接続するため使用する OS が対応したコンソールケーブルが必要でした.

R700 では Micro USB Type-B 端子が実装され RS232C ケーブルなしで RShell へアクセスすることが可能となりました.
![image1.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33399/15a81c5d-0016-6ff6-5203-81bd65bb3f3b.jpeg)

## mDNS の対応
mDNS は Octane Firmware 5.12.0 以降であれば使用することが可能です.
R700 の標準ファームウェアのバージョンは 7.4.0 移行なのですべての機種において mDNS が使用できる(だろう)ため記しています.  
mDNS が対応したリーダへウェブブラウザからのアクセス方法は, `https://impinj-xx-yy-zz.local` となります. xx-yy-zz はリーダの MAC アドレス 下三桁 (00:16:25:xx:yy:zz) となります.
Windows であれば事前に mDNS の送受信の許可, Linux であれば avahi-daemon を有効化にする必要があります.  

# Impinj IoT Device Interface
[Impinj IoT Device Interface | Impinj Developers](https://platform.impinj.com/site/docs/reader_api_welcome/index.gsp)  
Impinj 公式のウェビナーなどでも公表されていた, リーダを REST API で制御する方法についてです.  
これまでリーダは Octane SDK や LLRP を使用して制御するため, プログラムやリーダを設定するプロパティやメッセージを詳しく理解する必要がありました.
リーダをプログラムで制御せず, `http` 経由でデータを受信する方法として, 以前のリーダには `Speedway Connect` と呼ばれるソフトウェアがありました.
このソフトウェアはライセンスを必要であり, 別途ライセンスの購入をする必要があります.
ライセンス未入力の場合は, デモモードとして動作して 500 枚のタグを読み込んだ後にリーダの動作が停止します(ブラウザより再度駆動させることは可能).  
このソフトウェアについては追々追記します.  

SpeedwayConnect との違いは多々ありますが, 複数の事前設定を設定できることや事前設定の追加, 更新, 削除, 読込の開始 / 停止 など
基本的なリーダの制御がすべて REST API で行えることが利点であると存じます.  
Impinj IoT Device Interface は現在(2021/06/02) R700 のみの機能であるため, タグの通過を検出する `Direction` モード, タグの位置を検出する `Location` モードは対応していません.

## データストリーミング
R700 では, REST API で制御できる機能が通常の機能として実装されているため, 簡単にリーダの制御が行えます.
例えば下記の `curl` コマンドよりタグの読み込みデータを受信することができます.

```sh
curl -L https://impinj-xx-yy-zz.local/api/v1/data/stream \
    -k \
    -u root:impinj
```

![impinj_iot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/33399/76ad65a9-3ae3-57fe-a463-cc51f005225f.png)

## 事前の設定(preset)を使用してリーダの動作を開始 / 停止
### 動作開始 - /profiles/inventory/presets/{presetId}/start
`POST /api/v1/profiles/inventory/presets/{presetId}/start`

```sh
curl -L https://impinj-xx-yy-zz.local/api/v1/profiles/inventory/presets/default/start \
    -k -u root:impinj \
    -X POST
```

R700 に既定として `default` の設定が用意され, 上記の例では, その既定の設定を用いてリーダの動作を開始させています.  
タグ EPC の検出開始(Inventory)を動作開始と表現しております.

### 動作停止 - /profiles/stop
`POST /api/v1/profiles/stop`

```sh
curl -L https://impinj-xx-yy-zz.local/api/v1/profiles/stop \
    -k -u root:impinj \
    -X POST
```

リーダの動作を停止.