FlashAirの画像をGoogle Driveへ自動アップロードする方法

したいこと
---

カメラ等でFlashAirに保存した画像を、Google Driveへ自動アップロードします。
スマホやパソコンを介さず、自宅Wi-Fiの電波が入ったら自動処理します。
IFTTTを使うので、応用編としてSNS等への通知もできます。
[FlashAir Developers - FlashAir IoT HubとIFTTTの連携1（トリガー編）](https://flashair-developers.com/ja/documents/tutorials/iot-hub/8/)のまとめになります。

使うサービス
---

- [FlashAir IoT Hub](https://iot-hub.flashair-developers.com/ja/#/) ... FlashAirとクラウドをつなぐサービス
- [IFTTT](https://ifttt.com/)
- [Google Drive](https://www.google.com/intl/ja_ALL/drive/)

データの流れ
---

**FlashAir**→**FlashAir IoT Hub**→**IFTTT**(If Webhooks Then Google Drive)→**Google Drive**

<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/0f5f204a-5589-288a-d670-7fa8c0c35927.png">

設定環境
---

Ubuntu 18.04

設定方法
---

####1. IFTTTの設定

If **Webhooks** Then **Google Drive** を設定します。

|:one:|:two:<br>Webhooksを選択します|:three:<br>Event Nameを設定します|
|:--:|:--:|:--:|
|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/99711ae6-b32b-3670-e882-d02a6616f74b.png">|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/948ff9b4-459b-5d02-28e6-6f08a51ce6db.png">|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/ae424ee3-3ecc-b1d2-2b28-488903488da1.png">|
|:four:|:five:<br>**Google Driveを選択します**|:six:<br>**下記の通り設定します**|
|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/686a0aee-54f8-d67b-faaa-2c04a0b47c8f.png">|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/957caf28-6db0-9e75-4d89-51287192f943.png">|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/555e16a8-5f04-5631-111b-4c84da8c2e09.png">|
|:seven:|||
|<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/3d0fc073-690c-fc59-8ba5-96cd774c9764.png">|||


####2. FlashAirとFlashAir IoT Hubの設定

:one:FlashAir IoT HubでFlashAirを登録します。

FlashAir IoT Hubでサインアップしログインします。
現状では未登録なので**オフライン**になっています。
**FlashAirの追加登録**をクリックし、**アクセストークン**と**スクリプト**をダウンロードします。

<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/8e0efe40-dab2-405f-ae78-2fcb1c53099c.png">

:two:カードリーダ経由でFlashAirをパソコンに接続します。そうするとFlashAirがマウントされファイルが見れるようになります。

:three:ダウンロードした**アクセストークン**と解凍した**スクリプト**を、FlashAirのルート・ディレクトリにコピーします。

:four:コンフィグ・ファイル**SD_WLAN/CONFIG**をバックアップしてから書き換えます。

- FlashAirが無線LAN子機となるSTAモード（ステーションモード）で設定します。自宅Wi-Fi環境に合わせてネットワーク設定をします。 **APPSSID**と**APPNETWORKKEY**は、Wi-Fiアクセス・ポイントのSSIDとパスワードです。
- **CID**は初期値をそのまま設定します。**UPDIR**はアップロードの対象となるディレクトリを設定します。

```
[WLANSD]

ID=HomeFA
DHCP_Enabled=NO
IP_Address=192.168.8.150
Subnet_Mask=255.255.255.0
Default_Gateway=192.168.8.1
Preferred_DNS_Server=192.168.8.1

[Vendor]

CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=5
APPSSID=SSID
APPNETWORKKEY=PASSWORD
VERSION=F15DBW3BW4.00.01
CID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
PRODUCT=FlashAir
VENDOR=TOSHIBA
WEBDAV=2
UPLOAD=1
UPDIR=/DCIM
LUA_RUN_SCRIPT=/bootscript.lua
LUA_SD_EVENT=/upload_image.lua
TIMEZONE=36
```

参考：

- [FlashAir Developers - CONFIG](https://www.flashair-developers.com/ja/documents/api/config/)

:five:コンフィグ・ファイルを保存したらFlashAirを一度マウントし抜き差しします。そうするとWi-Fiに接続でき、FlashAir IoT Hubのステータスが**オンライン**になります。

<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/9e812109-d7ec-9c04-ca36-c31b9f63340b.png">

:six: **ファイル**をクリックし、IFTTTで設定したWebhooksの**Event Name**と**key**を登録します。

<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/eadafd13-cf47-d6a0-e549-5c1b6dd8314b.png">
<img src="https://qiita-image-store.s3.amazonaws.com/0/63318/653dea1d-4284-9428-2eca-32c11d8673b8.png">

これでFlashAirのディレクトリ**/DCIM**に画像が保存されると、FlashAir IoT Hub、IFTTT経由で、Google Driveにアップロードされます。

ちなみに、FlashAirをフォーマットしてしまった時の復旧方法
---

:one:Windows10パソコンで[東芝メモリ - FlashAir設定ソフトウェア](https://jp.toshiba-memory.com/support/download/flashair/software/we/software02.htm)をダウンロードした後インストールします。今回はWindows版の**FlashAir_tool_v400_b.exe**を利用しています

:two:"C:\Program Files (x86)\TOSHIBA\FlashAirTool\default\W-04”の中身をFlashAirのルートにまるごとコピーします。
その際、一度Windows10パソコンでフォルダW-04を圧縮し、Ununtuパソコンへ転送します。Ubuntuパソコンで解凍したものをFlashAirにコピーします。
そうしないとフォルダ**System Volume Information**が勝手に作成され、やっかいなことになります。

:three:その後FlashAir設定ソフトウェアを起動してもなぜかFlashAirを認識できませんが、FlashAirのWi-FI機能は使えるようになります。完全に元の状態で使えるかは未確認ですが。

参考：

- [父ロボの開発覚書 - FlashAir をフォーマットしてしまった時の対処法](https://titirobo-develop.hatenablog.jp/entry/2018/08/19/010447)

役立つサイト
---

- [FlashAir開発者向け非公式wiki](https://seesaawiki.jp/flashair-dev/)


わくわく
---
FlashAirっていろいろ応用できそうですね(=^・^=)