からくりブログ

株式会社からくり社員のブログです

FlashAir + LINEで簡単に写真をシェアしよう!!

FlashAir + LINEで簡単に写真をシェアしよう!!

今回はよりFlashAirのすごさをご理解頂くため、FlashAirとLINEの連携をご紹介したいと思います。

FlashAirは持ってるけどもっと簡単に撮った写真を皆とシェアしたいという方は必見です。なんと撮った写真をすぐに自動でメッセージ付きでLINEにアップすることができます。
あとはLINEの機能を使用してシェアしたい方々を招待すれば、撮った写真をいつものLINEと同じように皆で共有することができるようになります。

ご用意いただくものは
・LINEアプリがインストールされたスマホ
・FlashAirを挿入したカメラなど
・ネットワーク環境(外出先などではテザリングでOK)
の3つとなります。

LINE Notifyの登録

皆様は「LINE Notify」というサービスをご存知でしょうか?

詳細はHPをご確認頂くとして簡単に説明しますと「色々調査なWebサービスをLINEと連携できる」サービスとなります。
今回行うFlashAirとLineの連携にはこの「LINE Notify」というサービスを使用します。

まず初めに下記のURLにアクセスしてLINE Notifyへの登録を行います。

LINE Notify

右上にある「ログイン」をクリックしてログイン画面に遷移します。

そこでメールアドレスとパスワードを入力する画面が表示されますが、なんだこれはとお思いの方もご安心ください。
皆様が使用しているラインアプリを起動し、「設定」(右上の歯車アイコン)をクリックしてください。

次に「設定」画面で「アカウント」をクリックすると、「メールアドレス」、「パスワード」と表示されます。
もしまだ「メールアドレス」、「パスワード」が設定されていない場合は設定をお願いします。

設定後、「LINE Notify」のログイン画面に戻り、設定した「メールアドレス」、「パスワード」を入力して「ログイン」をクリックしてください。
そうすると右上の「ログイン」がLINEで使用している名前になっているかと思います。

その「LINEの名前」をクリックし、「マイページ」をクリックすると「マイページ」画面に遷移します。

「マイページ」画面の「トークンを発行する」ボタンをクリックすると「トークンを発行する」ダイアログが表示されます。

ここはお好みで構いませんが今回は「トークン名を記入してください」には「flashair」、「通知を送信するトークルームを選択してください」は「1:1でLINE Notifyから通知を受け取る」を選択し、「発行する」をクリックしてください。

すると「発行したトークンはこちらです。」と書かれたダイアログが表示されますので、このトークンを保管してから閉じてください。今後使用する大事なキーワードとなります。(保管する前に間違って閉じてしまった場合はもう一度「トークンを発行する」からやり直してください。)

「LINE Notify」でのトークン発行が完了すると連携中サービスに登録したサービスが表示されるとともに、LINEアプリに「LINE Notify」からのメッセージが送信されていることと思います。

以上で「LINE Notify」の登録は完了です、次はFlashAirの設定に入りたいと思います。

LINE Notifyの登録

まず初めに「FlashAir」をPCに接続し、「FlashAir」の中身を確認してください。(「表示」タブの「ファイル名拡張子」、「隠しファイル」にチェックを入れて表示してください。)
そこに「line-notify.lua」というファイルと「images」というフォルダを作成します。

次に「line-notify.lua」ファイルをテキストエディタで開き、下記のソースをペーストします。
コピー後「local NOTIFY_TOKEN = “”」の””内に先ほど保管したトークンをペーストし保存します。
(メッセージを変えたい方は「local MESSAGE = “Hello!!”」の「Hello!!」を変更してください。)

print("HTTP/1.1 200 Internal OK\n\n")

local NOTIFY_TOKEN = ""
local MESSAGE = "Hello!!"
local IMAGE_FOLDR = "/images"
local NOTIFY_URL = "https://notify-api.line.me/api/notify"

local function uploadFile(path, file)
    local filesize = lfs.attributes(path, "size")
    if filesize ~= nil then
        print("Uploading " .. path .. " size: " .. filesize)
    else
        print("Failed to find " .. path .. "... something wen't wrong!")
        return
    end

    local boundary = "------------------------908511f2c01b0981"
    local contenttype = "multipart/form-data; boundary=" .. boundary
    local mes = "--" .. boundary .. "\r\n"
                 .. "Content-Disposition: form-data; name=\"message\"\r\n"
                 .. "\r\n"
                 .. MESSAGE .. "\r\n"
                 .. "--" .. boundary .. "\r\n"
                 .. "Content-Disposition: form-data; name=\"imageFile\"; filename=\"" .. file .. "\"'\r\n"
                 .. "Content-Type: image/jpeg\r\n"
                 .. "\r\n"
                 .. "\r\n"
                 .. "--" .. boundary .. "--"
    local blen = filesize + string.len(mes) - 17
    local b, c, h = fa.request {
        url = NOTIFY_URL,
        method = "POST",
        headers = {
            ["Authorization"] = " Bearer " .. NOTIFY_TOKEN,
            ["Content-Length"] = tostring(blen),
            ["Content-Type"] = contenttype
        },
        file = path,
        bufsize = 1460*10,
        body = mes
    }
    print(b)
    print(c)
    print(h)
end

local function targetFile()
    local tgtPath = ""
    local tgtFile = ""
    local tgtFileMod = 0
    local tgtDirMod = 0
    local tgtDir = IMAGE_FOLDR

    for dirname in lfs.dir(IMAGE_FOLDR) do        
        local dirpath = IMAGE_FOLDR .. "/" .. dirname
        local tgtMode = lfs.attributes(dirpath, "mode")
        if tgtMode == "directory" then
            local dirMod = lfs.attributes(dirpath, "modification")
            if dirMod > tgtDirMod then
                tgtDirMod = dirMod
                tgtDir = dirpath
            end
        end
    end
    for filename in lfs.dir(tgtDir) do
        if(string.sub(filename, 1, 1) ~= ".") then
            local filepath = tgtDir .. "/" .. filename
            local mod = lfs.attributes(filepath, "modification")
            if mod > tgtFileMod then
                tgtFileMod = mod
                tgtPath = filepath
                tgtFile = filename
            end
        end
    end
    uploadFile(tgtPath, tgtPath)
end

targetFile()
print("Fin!!")

次にCONFIGファイルの修正を行います。
「SD_WLAN」フォルダの中にある「CONFIG」ファイルをテキストエディタで開き、下記のソースをペーストします。

IPアドレスを固定しない場合
[Vendor]

CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=5
APPNAME=myflashair
APPSSID=ssid
APPNETWORKKEY=password
VERSION=F15DBW3BW4.00.03
CID=0000000000000000000000000000000
PRODUCT=FlashAir
VENDOR=TOSHIBA
APPAUTOTIME=0
MASTERCODE=123456789XYZ
LOCK=1
TIMEZONE=36
STA_RETRY_CT=0
IPアドレスを固定する場合
[WLANSD]

DHCP_Enabled=NO
IP_Address=192.168.1.10
Subnet_Mask=255.255.255.0
Default_Gateway=192.168.1.1
Preferred_DNS_Server=192.168.1.1

[Vendor]

CIPATH=/DCIM/100__TSB/FA000001.JPG
APPMODE=5
APPNAME=myflashair
APPSSID=ssid
APPNETWORKKEY=password
VERSION=F15DBW3BW4.00.03
CID=0000000000000000000000000000000
PRODUCT=FlashAir
VENDOR=TOSHIBA
APPAUTOTIME=0
MASTERCODE=123456789XYZ
LOCK=1
TIMEZONE=36
STA_RETRY_CT=0

下記の項目はご使用のネットワーク環境により修正してください
・IP_Address
・Subnet_Mask
・Default_Gateway
・Preferred_DNS_Server
・APPSSID
・APPNETWORKKEY

また下記の項目はご使用のFlashAirにより書き換わります
・VERSION
・CID

次に「APPSSID」「APPNETWORKKEY」を接続するネットワーク環境(テザリング)に合わせて設定します。
(接続出来ない場合はステーションモードの利用をご確認ください)

保存後「FlashAir」を再起動し、先ほど作成した「images」フォルダにLINEに送信したいJPG画像を入れると成功している場合、LINEに画像データがアップされます。
※今回の例ではブラウザからクリックせずとも新規のファイルがFlashAirに書き込まれたタイミングで、更新日時が一番新しいファイルがLINEに送信されます。

LINEに画像データがアップされなかった場合、FlashAirが接続されているかを確認するために同じネットワークに接続しているデバイスでブラウザを起動し、URLに「http://myflashair/」と入力し、下記の画面が表示されれば成功です。
また「http://myflashair/」で接続できない場合はIPアドレスで接続してみてください。
(IPアドレスの固定方法は「flashair ip 固定」で検索してみてください。)

次にブラウザに表示されている「line-notify.lua」をクリックしてください。
LINEへの送信が成功している場合、下記の画面が表示されます。

送信に成功した場合、LINEアプリを確認すると下記のようにimagesフォルダに保存した画像が表示されるかと思います。

以上で「LINE Notify」を使用したFlashAirとLINEの連携は完了です。

カメラなどで撮影した画像をLINEにあげたい場合は、「line-notify.lua」ファイルの「local IMAGE_FOLDR = “/images”」の「/images」をカメラで撮影した場合に画像が保存されるフォルダに変更すると撮影のたび、LINEに写真をアップするなどができるかと思います。

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>