text:
2 PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
13 活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 15.12.20
PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
Trek 2000 デジタルカメラ対応Wi-Fi機能付きSDカード 16GB Flucard16
これに関して、Flucard Proの開発元であるTrek2000は承知のことではないようで、PQI Air CardはFlucard Proを勝手にコピーしたもののようです。
— Trek2000 (@JpnTrek2000) October 23, 2012
オープンソースの成果物でできたFlucard Proで、どの程度権利を主張できるものか分かりませんが、我々ユーザーも、PQI Air CardとFlucard Proとの微妙な関係性については知っておいていいかもしれません。
PQI Air Cardをいじくるために、PQI Air Cardに無線LANで接続します。
A. まずは通常通りPQI Air Cardを無線LANアクセスポイントとして機能させ、そこに接続しに行く方法。この場合は、PQI Air Cardでネットワークが行き止まりとなり、PQI Air Cardに接続している間は、インターネットに接続できなくなってしまいます。
B. もう一つは、無線LANルータのアクセスポイントにPQI Air Cardを接続させ、無線LANルータを経由して接続する方法。Hotspot接続機能と言っているやつですね。この場合は、PQI Air Cardに接続しながら、同時にインターネットも利用できるため、こちらの方が便利です。
このB.の方法で接続させるためには、まずPQI Air CardのWifi SetupでHotspotsの項を埋めます。自宅の無線LANルータなどのSSIDとKEYを入力。欄が三組ありますが、PQI Air Cardは、上の欄から下の欄の順に向けて、最初につながるものに接続します。例えば、自宅のルータ、ポケットルータ、テザリング機能付きスマートフォンといった感じになるでしょうか。
PQI Air Cardに接続したら、PQI Air Cardに対してpingを実行し続けると接続が安定します。
posted with amazlet at 15.12.20
— Akinori (@muraky) November 5, 2012
— F@L (@falms) November 5, 2012
ELECOM 消しゴムみたいなメモリリーダライタ SD系専用 レッド MR-C21RD
posted with amazlet at 12.11.06
エレコム (2009-10-30)
売り上げランキング: 74033
Amazon.co.jp で詳細を見る
100円ショップで入手できる丸七のMR-27で動作しました。コメントで教えてもらった同じく丸七のMT-05でもいけるそうです。
コメントで教えてもらいましたが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもいけるそうです。
PQI Air Cardへのエントリポイントautorun.sh
autorun.shという名前のシェルスクリプトをmicroSDHCのルートディレクトリに置いておくと、それがPQI Air Cardの起動処理の最後に実行されます。
autorun.sh が実行されるのは起動処理の一番最後なので、それ以前の段階に割り込んで何かをすることはできませんが、それでもいろいろなことができます。
autorun.shを使うと、PQI Air Cardの動作をユーザー側で変更してしまうことができるのです。
▲Flucard ProにはTXD、RXDのパッドがあり、ここからシリアルコンソールを引き出せそうなので、PQI Air Cardでも、同様にしてuboot経由でより深いハックが可能かもしれません。(Photo: @numpad0 (License CC-BY-SA))
autorun.shの中でコマンドが実行できます。
#!/bin/sh find /mnt/sd/DCIM >/mnt/sd/filelist.txt sync
microSD側に何か変更を加えたら、syncコマンドを実行しておいた方がよさそうです。
PQI Air CardのOSはRAMディスク上で動いており、あまり空き容量がありません。
autorun.shからOS側にファイルを追加したい場合は、ファイルをコピーするのでなく、lnコマンドでシンボリックを張るようにします。
#!/bin/sh ln -s /mnt/sd/DCIM/somefile /usr/bin/ ln -s /mnt/sd/DCIM/somedir/* /etc/
OSに含まれるファイルを置き換える場合は、元ファイルを消してからシンボリックリンクを張るといった手順を踏みます。
#!/bin/sh rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi
起動中のサーバの設定を変更
Webサーバ、telnetサーバ、ftpサーバなど、最初からPQI Air Card上で動作しているサーバがありますが、これらの設定を変更することもできます。
以下はftpサーバであるftpdを一度終了させて、設定を変えて再度起動しています。
#!/bin/sh killall tcpsvd tcpsvd 0 21 ftpd -w / &
ファイル操作において注意すべきこと
PQI Air Cardは、ローカルのファイル操作と、ネットワークを介してのファイル操作との間で衝突が起きないように作られているようで、したはずのファイル操作、例えばテキストファイル、スクリプトを編集したはずなのに、それが反映されていない、ということがまま起きます。
再現性についてちゃんと検証できていませんが、そういう不整合が起きる可能性があることを知識として知っておいてください。
起動直後からホットスポット接続する(クライアントモードで起動する)
PQI Air Cardを無線LANアクセスポイントに接続し、クライアントとして動作させたい。
そのようにすれば、PQI Air Cardからインターネットに接続するコマンドを実行できますし、調べ物をしながらの作業もしやすくなります。
しかし、一度無線LANアクセスポイントとして機能させ、そこに接続した上でクライアント動作(ホットスポット接続)に切り替えるというのは、何とも面倒です。
この場合は、「PQI Air Cardとの無線LAN接続」の項で説明した設定をした上で、autorun.shに以下の内容を記述します。
#!/bin/sh sleep 5 /usr/bin/w2
/usr/bin/w2が、PQI Air Cardをクライアント動作させるコマンドです。
sleep 5は移行までの待ち時間として設定したものですが、環境依存はあるかと思いますので試行錯誤してみてください。
/usr/bin/w2を実行すると、設定にあるSSIDに接続しに行きます。
接続先が無線LANルータなら、無線LANルータがPQI Air CardにIPアドレスを払い出しますから、無線LANルータのDHCPテーブルなどを参照してIPアドレスを調べてください。
IPアドレスが分かったら、先述のようにそのIPアドレスへ向けてpingを実行し、接続を安定させます。
ping [IPアドレス]
PQI Air Cardへの接続
PQI Air Cardにtelnet接続するのは簡単です。
telnet [IPアドレス]
これでつながります。特にユーザ名などを指定する必要はありません。
ftp [IPアドレス]
Webインターフェースの方もしかりで、言ってみれば、セキュリティも糞もありませんので、無線LANの方のセキュリティには気をつけてください。
環境強化のためにvi、ruby、phpなどを導入する
PQI Air Cardにtelnetでログインして最初に面食らうのが、エディタが無いことでしょう。
当然あるものと思うviを実行しようとしても、「vi: applet not found」というメッセージをくらうはずです。
これは、PQI Air Cardに入っているbusybox(UNIXコマンドの集合体)のサイズを小さくするために、必要のないアプレットが省かれているからです。
先ほどの「ファイルを追加する」、「ファイルを置き換える」の項でやったように、microSDHCの領域を活用するならば、そんな制約を気にする必要はありませんので、いろいろなコマンドを入れていきましょう。
PQI Air Cardは、先達となるFlucard Proと酷似したプラットフォーム。
Flucard Proは少し前に一部の組み込みクラスタで流行したガジェットで、そのときの成果物を流用できます。
その中心人物になるのが、@tonsuke85氏、@osakanataro氏。彼らの成果物を活用させてもらうことにします。
とんすけ氏のdeploy_20120420.zipの導入
とんすけ氏がFlucard Pro用にビルドしてきた追加コマンドが下記のページにあります。
ページ中段にあるdeploy_20120420.zipがお目当てのものです。
この中には、アプレット全部入りのbusybox、ruby、perl、dropbear、JPEGからEXIFを抜き出すjheadなどが含まれています。こちらのbusyboxに含まれるアプレットは以下。
BusyBox v1.19.4 (2012-04-04 15:08:58 JST) multi-call binary. Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol, ubirmvol, ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip
値千金のzipですよ。
とりあえず、zipをmicroSDHCのルートディレクトリに展開します。
microSDHCのルートディレクトリからたどると「DCIM/122_TREK/.….」となるように展開できていればOKです。
PQI Air Cardには標準搭載されているperlが、このzipにも入っています。
PQI Air CardはWebインターフェースの動作に内蔵のperlを使っていますので、このまま導入すると問題が生じる可能性もあります。
zipに入っているperlをとりあえず削除します。
122_TREK/usr/bin/perlを削除
122_TREK/usr/local/lib以下を削除
モジュールなどはzipに入っている方が充実しているかと思いますので、もしperlを重要視するならば、そこは使う人がどちらを残すか決めてください。
rubyの動作のためにlibpthread.so.0をzipのものに置き換える
zipに入っているrubyを動かそうとすると、/lib/libpthread.so.0に関係したエラーが出ます。
影響が未知数ですが、PQI Air Cardに元からある/lib/libpthread.so.0の代わりにzipに入っているものを代わりに使うようにします。
rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/libpthread.so.0 /lib/
これをautorun.shの中で実行します。実際には、後出のautorun.shの中で/mnt/sd/DCIM/122_TREK/lib/にある別のライブラリといっしょに、ワイルドカードでいっぺんにシンボリックリンクを張ることになります。
PQI Air Card向けカスタム版autorun.sh
前述のような事情のほか、Flucard Proには最初から入っているviがPQI Air Cardには入っていなかったりといった違いがあるので、それを反映して作ったautorun.shが以下です。
これをzipに入っているautorun.shの代わりに使います。つまり、microSDHCのルートディレクトリに置きます。
#!/bin/sh ln -s /mnt/sd/DCIM/122_TREK/bin/* /bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/bin/* /usr/bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/local /usr/local ln -s /mnt/sd/DCIM/122_TREK/usr/lib /usr/lib ln -s /mnt/sd/DCIM/122_TREK/usr/include /usr/include ln -s /mnt/sd/DCIM/122_TREK/usr/libexec /usr/libexec ln -s /mnt/sd/DCIM/122_TREK/sbin/* /sbin/ rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/* /lib/ ln -s /mnt/sd/DCIM/122_TREK/etc/* /etc/ ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/connect2hotspot.cgi /www/cgi-bin/ #ln -s /mnt/sd/DCIM/122_TREK/www/* /www/ #ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/* /www/cgi-bin/ rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/top ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/awk ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/dd rm /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/killall ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/less ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/passwd ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/sed ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/tar rm /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/whoami # ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd #ftp #killall tcpsvd #tcpsvd 0 21 ftpd -w / & # connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
このほかにも、busyboxへのシンボリックリンクとして存在するコマンドがあっても、標準搭載のbusyboxにはそのアプレットが存在しないということがあるので、必要に応じてzip内のアプレット全部盛りのbusyboxへのシンボリックリンクに張り直してください。
rm /bin/somecommand ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/somecommand
busyboxは、何というコマンドとして自分が実行されたかによって、振る舞いを変えるように出来ています。
カスタム版autorun.sh補足説明: sshサーバ起動
カスタム版autorun.shの以下の部分がsshサーバにかかわる部分です。
コメントアウトしてあります。
# ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd
「#dropbear -A -N root -C admin -U 0 -G 0」をコメントアウトすると、ユーザroot、パスワードadminでログインできる状態でsshサーバが起動します。
それの代わりに「#dropbear -A -N root -C ‘-‘ -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s」の部分をコメントアウトすると、公開鍵認証でsshサーバが起動します。公開鍵は/mnt/sd/DCIM/122_TREK/authorized_keys2に置くようにしていますので、必要があれば変更を。
「#killall telnetd」をコメントアウトすると、telnetサーバを落とします。
カスタム版autorun.sh補足説明: ftpサーバのルートディレクトリ変更
デフォルトでは、ftpサーバのルートディレクトリは/mnt/sdに設定されており、それより上の階層へはアクセスできなくなっています。
ルートディレクトリにアクセスできるようにするには、カスタム版autorun.shの以下の部分をコメントアウトします。
#killall tcpsvd #tcpsvd 0 21 ftpd -w / &
カスタム版autorun.sh補足説明: ホットスポット接続(クライアントモード動作)
「起動直後からホットスポット接続する(クライアントモードで起動する)」の項で説明したのが、以下の部分に該当します。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
この例では、microSDHCカードのルートディレクトリにconnect2hotspotというファイルを置いておくと、起動直後からホットスポット接続を開始する、というようになっています。
起動直後からホットスポット接続をするかどうかをデジタルカメラ単体でコントロールできるようにするために、ホットスポット接続を司る緑色の画像、WSD00002.JPGの書き込み権限をチェックするのでもいいかと思います。
緑色の画像にデジタルカメラでロックをかけたら書き込み権限がなくなるので、PQI Air Card起動時にWSD00002.JPGの書き込み権限がなかったら(あるいはあったら)ホットスポット接続を始めてしまうようにするのです。
権限をチェックするコマンドって何でしたっけ……。
PQI Air Card用に使えるtoolchain
先述のとんすけ氏のページの受け売りですが、PQI Air Card用のバイナリをコンパイルするための開発環境として、Sourcery CodeBench Lite Editionが使えます。
「ARM processors>Download the GNU/Linux Release」とたどり、必要事項を記入して登録。メールで送られてくるものの中から「Download Sourcery CodeBench Lite 2011.09-70」をクリックしてダウンロード。
つまり、開発用のOSはLinuxになるわけですね。
toolchainのprefixは「arm-none-linux-gbueabi」となります。gccなら「arm-none-linux-gbueabi-gcc」。これをCCに指定し、といった感じで作業します。
リンク過程で-staticオプションを付けてスタティックリンクしないとならないかもしれません。
とんすけ氏のブログに詳しく書いてありますのでご参照を。
活用例: スマートフォンにプッシュ通知を送る
Flucard Proには、あの小さなSDカードの中に圧電スピーカーが内蔵されており、各種ステータス変更の通知を、音を通じてするようになっていました。
Photo: @numpad0 (License CC-BY-SA)
その名残がPQI Air Cardにも/usr/bin/buzzerというコマンドの存在としてあります。
PQI Air Cardには、圧電スピーカーは搭載されていません。
カード側からユーザーに対して物理的手段で何かを通知することができないのですが、ホットスポット接続を通じたインターネット接続を使って、ユーザーに通知する手段は残されています。
各種の処理を終わらせたときなどに、スマートフォンへのプッシュ通知を飛ばすということをやってみましょう。
iOSではProwl、AndroidではNotify My Androidを使うつもりで考えていたのですが、件のzipに入っているrubyにはopensslが含まれていなかったのでhttpsは使えませんでした。
Twitterを使ってPQI Air CardからiOS機にプッシュ通知を飛ばす
httpsが使えないとなると一苦労なので、httpでTwitterへのポストが可能な、 @whosaysniさんのゲートウェイ、StewGateを使います。
下記のページを参考に、StewGateのtokenを取得してください。
rubyを使ってやってみましょう。
以下のスクリプトをtest.rbというファイル名でmicroSDHCのルートディレクトリに作成。スクリプトは @northeyeさんの TwiProwl をパクらせてもらいました。
STEW_GATE_TOKENを自分のStewGateのtokenに。
MENTION_TOのTwitterアカウントを自分のものに書き換えて保存。
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby # -*- coding: utf-8 -*- require 'net/http' require 'uri' # ------------------------------ # user configuration # ------------------------------ # http://stewgate.appspot.com/sg1/ STEW_GATE_TOKEN = "あなたのStewGateのtoken" MENTION_TO = "@your_twitter_account" # ------------------------------ # constants # ------------------------------ STEW_GATE_API = "http://stewgate.appspot.com/sg1/post/" # ------------------------------ # methods # ------------------------------ def generate_signature() a = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a return " " + ( Array.new(4) do a[rand(a.size)] end ).join end def post_escape( string ) string.gsub(/([^ a-zA-Z0-9_.-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end.tr(' ', '+') end def post(msg) params = { "_t" => STEW_GATE_TOKEN, "msg" => "#{MENTION_TO} " + msg + generate_signature, } begin uri = URI::parse( STEW_GATE_API ) http = Net::HTTP.new( uri.host, uri.port ) request = Net::HTTP::Post.new( uri.request_uri ) request.content_type = "application/x-www-form-urlencoded" query = params.map do |key, val| "#{key}=#{post_escape(val.to_s)}" end res = http.request( request, query.join( '&' ) ) puts "Response: #{res.code}" rescue post("Error while Stewing: #{$!}") end end post("Hello, Twitter!")
/mnt/sd/test.rb
自分に対してMentionを飛ばせたでしょうか。Twitterは同じメッセージを続けて送れないので、末尾にランダムな文字列を添付しています。
実際の運用時は、Twitter検索を汚さないよう、通知用のTwitterアカウントを取得、鍵をかけておけばいいかと思います。
iOSでは、プッシュ通知のあるTwitterクライアントを、Androidでは公式クライアントを使えばいいでしょう。
/usr/bin/w2でのホットスポット接続時に、ルータやテザリングしたスマートフォンから取得したIPアドレスを含むURLを自分宛に送るとか、何かの通知を飛ばしたいときに使いましょう。
活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Cardをホットスポット接続(クライアントモードで起動)、スマートフォンのテザリング機能、ポケットルータなどを通して出先でインターネットに接続できるとなれば、やってみたいのはPQI Air Cardからの画像のアップロード。
まず問題になるのは、どの画像をアップロードするかの指定方法です。
もちろん、デジカメにPQI Air Card連携のための機能の存在を期待できません。
DPOFを使いましょう。DPOFは、Digital Print Order Formatの略。
デジカメ上で、プリントを実行したい画像を指定するためのもので、デジカメにはほぼ必ず存在する機能です。
DPOF機能のデジカメ上での操作の詳細はデジカメのマニュアルを参照してもらうとして、大概は画像のプレビューモードでメニューボタンを押すと指定ができます。
複数の画像を指定できるので、どんどんプリント指定していくと、「MISC/AUTPRINT.MRK」というファイルに、その情報が書き込まれていきます。PQI Air Cardから見た場合は「/mnt/sd/MISC/AUTPRINT.MRK」です。
AUTPRINT.MRKは以下のような構造となっています。
[HDR] GEN REV = 01.10 GEN CRT = "SIGMA" -01.00 [JOB] PRT PID = 001 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J [JOB] PRT PID = 002 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J
これを読み込んで、印刷指定された画像をアップロード対象にします。
PQI Air Cardのホットスポット接続(クライアントモード動作)後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」の存在をチェックし、存在した場合は、そこにリストアップされている画像をアップロード。アップロード後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」を削除、とします。
ユーザーの操作としては、アップロードしたい画像をDPOFで印刷指定し、一度デジカメの電源をオフ。再度オンにするとアップロードが開始されるといったことになります。
アップロード終了のタイミングで、先述のTwitterのMentionを飛ばして状況が確認できるようにします。
アップロード途中でデジカメの電源が切れてしまう状況が想定されます。
1枚アップロードが済んだ時に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」から済んだ画像の情報を削除、といった処理ならば、残された画像はリトライされることになるのでよさそうでしょうか。
AUTPRINT.MRKは、Windowsのiniファイルによく似た構造です。
rubyでiniファイルを扱えるようにする、Ruby inifileのgemをローカルインストールしてみます。
cd /mnt/sd wget http://rubygems.org/downloads/inifile-2.0.2.gem gem install inifile --local
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby require 'rubygems' require 'inifile' ini = IniFile.load("/mnt/sd/MISC/AUTPRINT.MRK") p ini["JOB"] puts ini["JOB"]["<IMG SRC"]
ぬぬぬ、[JOB]の部分の名前が同じであるため、パースした内容が、最後のJOBで上書きされてしまいます。
じゃあこんなので。autupload.rbとします。
autupload.rb解説
autupload.rbは、DPOFでプリント指定した画像を、rubyを使ってftpサーバにアップロードするものです。
これをmicroSDHCのルートディレクトリに保存したとします。つまり、/mnt/sd/autupload.rbです。
プリント指定した後、一度デジカメの電源を切り、再度電源を入れたらアップロード開始とするために、いくつか設定が必要です。
ホットスポット接続をするコマンド/usr/bin/w2をコピーしてきて、末尾で/mnt/sd/autupload.rbを実行するようにします。以下のような感じです。
#!/bin/sh echo "w2..." buzzer -f 1 #ifconfig mlan0 down #load wifi driver a0 a1 sleep 5 iwconfig ifconfig mlan0 192.168.1.1 netmask 255.255.255.0 up sleep 1 echo "auto connect available router" wifi_connect_router buzzer -f 5 sleep 2 udhcpc -i mlan0 -s /etc/dhcp.script buzzer -f 5 #cp /mnt/sd/iperf /bin #iperf -c 192.168.6.21 -N -w 512K -i 1 -t 300 /mnt/sd/autupload.rb
microSDHCのルートディレクトリにw2bというファイル名で保存したとします。/mnt/sd/w2bです。
autorun.shの末尾で、w2bを実行します。前述のPQI Air Card向けカスタム版autorun.shの最後がこうなります。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /mnt/sd/w2b & fi
PQI Air Card起動
connect2hotspotが存在する?→存在しなければ通常動作
存在したら/mnt/sd/w2bが実行され、ホットスポット接続開始
/mnt/sd/MISC/AUTPRINT.MRKが存在する?→存在しなければ何もしない
存在したらDPOFでプリント指定された画像をftpでアップロード
アップロードが終了したら/mnt/sd/MISC/AUTPRINT.MRKを削除
こんな感じの動作となります。
画像のアップロードが完了すると、Twitterでその都度Mentionが飛んできます。
素晴らしく楽しいPQI Air Card
どうでしたか? めちゃくちゃ夢が膨らみませんか?
ftpサーバなんかにアップロードしねーよという意見は受け入れません。
気に入らなかったら自分の好きなようにいじくればいいからです。
このほかできそうなこととしては、PQI Air Cardで集めた周囲の無線LANアクセスポイントのMACアドレスをGoogleのGeolocation APIにかけて、緯度経度を割り出し、それを画像に埋め込むということがあります。
iwlist mlan0 scanning | grep Address | sed -e 's/^.\{29\}\(.\+\)/\1/g'
本当はインターネット接続無しにローカルでMACアドレス→位置情報の変換をやりたいのですが、使えるデータベースが手に入りません。ポケットルータ、スマートフォンのテザリングに依存せず、スタンドアローンで位置情報を記録するために、画像とMACアドレスを対にしてログを取っておいて、後処理で位置情報に変換、埋め込みするというのでもいいかもしれません。
カメラ側からPQI Air Cardへのインタラクトの方法としては、DPOFの枚数指定なんかも使えそうです。枚数指定を送信先の指定や、送信した後の処理の仕方の指定に使うことができるでしょう。
ファイルの削除を監視するdaemonを常駐させ、独自に管理用画像を用意するのでもいいかもしれません。
こう考えると、工夫のしがいがあるでしょう? あつをリーダーとUSB電源を組み合わせたら、無線LANベースではありますがGPSロガーのようなものが出来てしまいます。
皆でこの素晴らしいPQI Air Cardをはやらせましょう。
Android用アプリTaskerを使ったPQI Air Cardへの接続の自動化
オフトピックとなりますが、Androidでの自動化の事例です。
PQI Air Cardを無線LANアクセスポイントとして動作させ、そこに接続し、専用アプリを起動。やや面倒ですね。
Androidでは、PQI Air Cardへの接続の部分をTaskerを使って自動化可能ということです。
PQI Air CardをAPモード、PQI AirCard+で使う場合、Androidなら https://t.co/uRH143jX このアプリとTaskerを組み合わせ、PQI AirCard+起動時に接続先を自動で切り替えるようにすると捗るかと。
— Mey (@meyskld) October 28, 2012
開発元:Crafty Apps EU
平均評価:4.6(合計37,336件)
ダウンロード:50万回以上
(2015年12月20日時点)
SSID指定の無線LAN(wifi)接続ショートカット作成
開発元:watarusoft
平均評価:4.3(合計21件)
ダウンロード:500回以上
(2015年12月20日時点)
神製品PQI Air Card
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 1077
Amazon.co.jp で詳細を見る
PQI Air Cardの開発環境に「あつをリーダー」
グリーンハウス SDXC対応USB2.0カードリーダ/ライタ ホワイト GH-CRSDXC
posted with amazlet at 15.12.20
グリーンハウス (2010-07-19)
売り上げランキング: 18,644
Amazon.co.jpで詳細を見る
現在世界最速のmicroSDHCで、最速の無線LAN内蔵SDカードを作ろう
Sandisk microSDHC 16GB Extreme PRO 95MB/s エクストリーム プロ SDSDQXP-016G サンディスク 並行輸入品 海外パッケージ品
posted with amazlet at 12.11.02
売り上げランキング: 2841
Amazon.co.jp で詳細を見る
そこそこ速いmicroSDHC
サンディスク SanDisk microSDHC UHS-I Class10 32GB 超高速30MB/秒アダプター付パッケージ品 並行輸入品SDSDQUA-032G
posted with amazlet at 12.11.02
売り上げランキング: 115
Amazon.co.jp で詳細を見る
PQI Air CardとClass10のmicroSDHCのセット
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 32GB Class10付属) 6W25-032GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7348
Amazon.co.jp で詳細を見る
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 16GB Class10付属) 6W25-016GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7492
Amazon.co.jp で詳細を見る
- Android, iPad, iPhone, Linux, Ruby, ガジェット, デジタルカメラ
【月額594円】Dropbox Plusが45%オフになる爆安セールが実施中!(〜3/31)
【月額294円】Evernoteプレミアムプランを値上げ前の料金より安く使えるセール実施中!(〜3/31)
Adobe Creative Cloud コンプリートとAdobe Creative Cloud フォトプランの12か月版オンラインコードが10%オフでセール中
低金利「じぶん銀行」の住宅ローン仮審査申込みで8,000円プレゼント!お得なキャンペーン実施中(〜3/31)
この記事が気に入ったら
最新情報をお届けします
2012年11月2日 12:08 PM
AirDriveにAirCard入れて、エアドラの電源入れたら、
Android機からPQI Air cardとAir Driveの2つのAPが見えました((((;゚Д゚))))
AirStashにAirCard入れて、エアスタの電源入れたら、、
エアスタのAPのみ見えます
ただどうも、エアスタ、いつの間にかカードリーダーとして機能しなくなったw
2012年12月29日 3:34 PM
100均にある丸七のMT-05でもWiFiが起ちましたよ。
2015年9月25日 9:33 PM
moyashi氏ととおりすがり氏とシルクとメーカーに感謝
2013年1月19日 1:32 PM
はじめましてWiFiのSSIDとKEYの設定は対応したデジカメがないとできないのでしょうか?カードリーダでPCから設定とかは無理でしょうか?
moyashi より:
2013年1月19日 2:47 PM
WiFiの設定はmicroSDHCでなくPQI Air Card上の不揮発性メモリ(nvram? eeprom?)に書き込まれています。
telnetかftpで接続して関連ファイルをいじることはできると思いますが、
何をどうしていいやら分からないと思います。
そもそも無線LANがおかしくてそこまでたどり着けないという話なら、
赤画像を削除してファクトリーリセットをかけてください。
オープンネットワークに戻るので、WiFi接続してブラウザから設定し直してください。
デジカメに頼らずPQIを動かしたいというなら、ここで紹介しているメモリーカードリーダーを
USB充電器(ACアダプタ)につなぐと動作します(するという話です)
カードリーダでPCにマウントして設定しなければならないという理由が分からないので、
このような回答になってしまいます。
microSDHCに独自定義の無線LAN設定用テキストファイルと、
自動設定用のautorun.shを作成して、autorun.sh経由で設定することは、
つまりmicroSDHC上にファイルを置くだけで無線LANの設定をすることは技術上可能です。
ですが、それはおおよそプログラミングに相当する行為ですので、
junさんの技量次第です。
方針としてはPQIの中でWebサーバが起動するのを待ち、
起動を確認したらwgetコマンドの–postdataでWebからの設定操作をエミュレート、
しかる後に再起動するというものになります。
一度設定を終えたら、設定用のファイルをリネームするなどで毎回設定されてしまわないようにします。
2013年1月19日 4:09 PM
説明不足ですみません。私はPICやAVRのマイコンとPC間でデータの送受信がしたくてこのページを検索で見つけてきたのですが、やりたいことはマイコンでPQI Air CardのmicroSDHCにデータを保存しておいてPQI Air CardのWiFi機能でPCと接続してデータ受信出来たらいいなと思っているのですが、PQI Air Cardが無線LANに接続できないことには何もできないので、こちらの記事を読んだところデジカメからしか無線LANの設定はできないのかな?と思い質問しました。PQI Air Cardは購入後初期状態でご紹介の方法で電源をつなげば無線ルータに勝手に接続してくれてブラウザから設定できるということでしょうか?PQI Air Cardの知識が全くないのですが(ここで初めて知りました)希望としては対応デジカメは持っていなし使い方が違うので、無線ルータに接続してくれてLinuxサーバみたいに動いてくれてスクリプトも自由に動かせるといいなと思っているのですが・・・どのようなものなのでしょうか?
moyashi より:
2013年1月19日 6:10 PM
工場出荷時のオープンネットワークで十分なら設定する必要はありません。
デジカメに入れて電源を入れれば無線LANのアクセスポイントが見えるようになります。
ただ、マイコンに接続する場合は、PQI Air Cardに3.3Vを供給するだけでは動きません。
「CMD0,ACMD41と思われる初期化コマンド」をPIC、AVRから発行する必要があります。
https://twitter.com/lynxeyed_black/statuses/261782427201044480
あとは恐らくPQI Air CardはSPIモードでは使えないので、
FATを扱えるライブラリ経由で操作する必要があると思います。
マイコンからPQI Air Cardに「CMD0,ACMD41と思われる初期化コマンド」を発行して、
起動するところまで持っていくのは、ご自身で手法を模索するほかないかと思います。
Wi-Fiの設定はPQI Air Cardの不揮発性メモリに保存されるので、
動的に設定を変える必要性が無ければ、マイコンから操作できるかどうかを気にする必要はありません。
デジカメ等で普通に設定した後でマイコンに差し替えればいいのです。
PQI Air Card上でのスクリプト云々については、このページにある情報、そして以下のページを手がかりにやってください。
http://hitoriblog.com/?p=14505
2013年3月16日 2:58 AM
はじめまして。@tetsu_kobaさんのツイートで見て来ました。さっそくポチりました。明日はダイソー巡りしますw
moyashi より:
2013年3月16日 5:13 AM
ありがとうございます。
ダイソーのリーダーはダークホースですね。
2013年3月30日 4:25 PM
上記コメント、もしかしたら当方の勘違いでシェルスクリプトでシンボリックリンクが張れて無かったかもしれないです。どうも、上記のアプレット一覧は純正のようでした。お騒がせして申し訳ありません。
最終的にはDPOFで電源オンオフをやらずにftp転送と常時フォルダ監視でのリアルタイムビューアによるftp転送を考えています。ちょっと試行錯誤してまた頑張ってみます。
2013年4月4日 5:00 PM
貴殿の記事を参考にさせて頂き、とりあえずfttputを使ったBusyBox内のシェルスクリプトのみでカメラ側のDPOFを利用したファイルアップロードが可能になりました。
もし必要であればヘタクソなコードでは御座いますが挙げさせていただきます。
現在、まだ動的にftpサーバーのIPアドレスを得る事が出来ていませんが、それが出来てしまえばcrontabで回す事で最小1分間隔でDPOFファイルを検索し存在した場合転送シェルを回す事が可能だと思います。
大変参考になりました。有り難う御座いました。
fujiaya より:
2013年4月6日 2:24 AM
USBカードリーダーですが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもUSB電源アダプタでの単体動作が確認できました。参考になれば。
moyashi より:
2013年4月6日 3:10 AM
情報ありがとうございます
2013年4月24日 8:38 AM
Eye-Fiが遅くてゲンナリしていたところ、
こちらのサイトにたどり着きました。
私はそちらのような知識と経験がなく、
はっきりいってサッパリわからないのですが、
ご指導いただけると大変助かります(汗)
同時記録のRAW+JPEGで撮影してJPEGだけを
モバイル端末に即アップロードするということを
モバイルルーターとEye-Fiでおこなっていました。
…しかし不安定なうえに転送があまりに遅いので、
どうにかならないものかとヘボな私なりに調べて
みると、PQIが速いよ!ということでした。
とはいえ、ど素人の私が理解してどうにか出来る
器量も度量もないので、
お助けいただけますでしょうか。
iOSのShuttersnitchを利用しています。
Flucardを購入してみたのですが、
同時記録で撮影後、最小サイズ&高圧縮JPEGだけを
FTPで転送する方法を試してみました。
Flucardに搭載されている機能です。
一枚あたり30秒かかりました。
…お、遅い。これをPQIで行うと速くなるので
しょうか。期待は胸膨らみますが、
どうやって良いのかサッパリわかりません。
お忙しいところ恐縮ですが、ご教授いただけると
大変助かります。よろしくお願いします。
moyashi より:
2013年4月24日 2:14 PM
こちらで紹介しているのはDPOFで選んだ写真をftpで送るというスクリプトだけですが、
30秒はかからないと思いますよ。
撮影した端からJPEGをftp送信するものについては書いてません。
できなくはないと思いますが、それについては新しくスクリプトを書かないとなりませんね。
2013年4月24日 4:58 PM
コメントありがとうございます。
新規に書かないといけないのですね。
わたしが当然書けるわけもないので、
何かほかの道を探してみます。
重ね重ねですが、ありがとうございました!
2013年6月15日 4:09 PM
こちらのサイトが非常に参考になったのでお礼もかねてシリアルで引き出したデータを置いておきます。
DPOFが生成されてない状態。
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
カメラでDPOFを生成されると以下のコマンドを吐き出す。
# (0>4)(4>0)get_Kcard_app cmd 6
umount(unmount後、すぐにマウントされている模様↓)
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
# rm /mnt/sd/MISC/AUTPRINT.MRK
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
(再度、DPOFをカメラ本体で生成)
# (0>4)(4>0)get_Kcard_app cmd 6
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
このような感じでカメラ側からSDにアクセスがあるとkcard_cmdがcallされています。perlなのかJavaなのかまではまだ調べてはいませんが。
以下はシャッター切った時のコマンド吐き出しです。
(0>4)(4>5)(5>0)get_Kcard_app cmd 7
DPOFでの転送は当方はスクリプトで処理していますが、生成をls叩いて監視してDPOFが生成されたタイミングで転送するものと、リアルタイム転送と両方を行なっています。
重ね重ね、貴殿のサイトが参考になりました。ありがとう御座います。
moyashi より:
2013年6月15日 4:30 PM
おお!これは興味深い!
しかし、殻割りしてUEWで引き出してカメラ内で動かしたとかでしょうか?
2013年6月15日 11:22 PM
3つ買って1つ加工失敗してボード割っちゃいましたけどもw
ずーっと遊んでUSB-SDホルダに突っこんでウニャウニャやってたんですが、そーいやカメラに突っこんで実挙動みてないやと思いやってみました。
今の所、カメラ側に何かエコー返さないと?カメラのDPOF指定がftp転送後にAUTPRINT.MRKをrm-fしても指定が外れていませんが(DPOFのI/F仕様書見たいんですが、見れなくてorz)、一度全解除してから新たに指定しなおすと、また転送が始まります。私は、なるべく軽くしたかったのと、GNUに引っかからない範囲で公開したかったので、全てシェルスクリプトで処理してます。
initramfs3を解体してprogram.binをバイナリ編集すれば解凍する前のデータ(initramfs3)が3MB以上でもOKなんですが、GNU的にそこがハードルですorz
今の使い方は一度initramfs3をバラして必要な分だけビルドしたbusyboxの追加とshの追加をrcSを変更して、カメラ側でフォーマットしても自動生成出来るようにしてカメラで利用しています。
シリアルは38400-N-8-1で接続できます。私はFT-2303でやっていますが普通に繋がりますね。
このサイトは本当に為になりました。ありがとう御座います。
2013年6月15日 11:26 PM
すいません、編集できないので追記で。
SDへのアクセスは基本、シャッターを切った時とか書きこまれた時に上のようなコマンドが返されていますが、カメラ側でプロテクト(画像の消去プロテクト)をかけた場合のパーミッションは、シャッターを切ってしまえばunmountされるのでパーミッション変更が反映されます。
今は、そのパーミッション変更を使ってリアルタイム転送を作っている最中です。Linuxカーネル的にはinotifyをサポートしているVerの筈なのですが、削られているようでカーネルが見つからないと返されてしまうので、カーネル突っ込んだビルドまで出来れば終了かなと思っています。
何かヒントにして頂ければ幸いです。
長文すいませんでした。
moyashi より:
2013年6月16日 12:58 AM
僕もリアルタイムで何かというのは考えていて、ポーリングでチェックかけてタイムスタンプでソートして
前回チェック時の記録と比較して判定するしかないのかなと思っていたので、
大変参考になりました。いやー、こんな濃い話が聞けるとは。ブログは書いておくものですね。
NEX7さんはTwitterとかブログやってらっしゃらないんですか?
2013年6月16日 1:49 AM
メールアドレスにG+のURLを貼りつけておきました。ツイッターはオバカな事ばかりつぶやいているのでw
G+の方ではAIrCardのことを貼りつけていたりします。(たぶん、相当しつこくやってたので、20投稿位はあるかもですw)
ツイッターから知り合いになった方が、組み込み系の本物のスペシャリストだったので、その方の助言も貰いながら遊んでいます♪
G+はサークル申請?ですかね?頂けたらすぐに承認しますので見れると思います。
実の所、組み込み系をこんなに触るのは初めてでして、アドバイス頂ければ嬉しいです♪
トカゲのテレパシー より:
2013年6月28日 1:51 AM
(古い記事にコメントつけてすみません!)
すばらしい良記事でした。
「wifiつきの極小webサーバー」を自作しようとしていて、
こちら拝見させて頂いてめちゃくちゃ参考になりました。
ありがとうございます。
シェルスクリプトも記事に書かれている通りに記述して、
無事/wwwに放りこんだhtmlファイルをスマフォから
(PQIのwifiにつないだうえで)覗きにいけるようになりました。
覗きに行く時に、192.168.1.1/hoge/index.html
とブラウザに入力するわけですが、
これ入力せずにPQIのwifi(単に親機として
インターネット関係なくwifi飛ばしている状態)につないだだけで、
/wwwにあるページを表示させることとかってできたりするでしょうか。。
イメージとしては街のwifiアクセススポットに
つないでブラウザ立ち上げると、
強制的にログイン画面出ると思うのですが、
気が向かれたらお知恵拝借頂けると幸いです。
よろしくお願い致します。
moyashi より:
2013年6月28日 2:03 PM
ちょっと違いますがここで紹介しているスクリプトはPQI Air CardがiPhoneにテザリング子機としてぶらさがった瞬間に
Twitterのプッシュ通知を送るようにしているので、間接的にそんなようなことができています。
http://hitoriblog.com/?p=14505
その逆で、PQI Air CardのAPにつないだ瞬間Twitterのプッシュ通知をというのは、
インターネットにつながらなくなってしまうので無理ですもんね。
ログインダイアログを出すようにする方法というのはちょっと分かりません。
接続先のAPのMACアドレスないしはSSIDをチェックして、設定のものだった場合に強制的に所定のURLを開く。接続先のAPが変わるか無くなったら再度待機開始、というJailbreak Tweakはできそうですが、必要とする人も少ないでしょうし、自分は作る動機がありません。
2014年3月11日 6:26 PM
USBカードリーダー 105円
USB電源(コンセントに接続するタイプ)201円(OutPut 5V 1000mA)
で揃う時代ですからね。
2014年3月11日 6:30 PM
なんだか、dstributed.netの計算用に手軽でいい感じですね。
2016年12月1日 5:47 PM
スマホにUSB接続して、外部接続の無線LAN子機 として使えませんか?ドライバが必要か・・・
moyashi より:
2016年12月2日 11:38 PM
残念ながら、その接続は無理ですね。
2017年1月11日 12:05 AM
今更ですけどcurlコマンドがほしいですね….
moyashi より:
2017年1月11日 1:00 AM
rubyで何とかしてみては http://www.boenkyo.com/archives/2042
フニャフニャ にコメントする コメントをキャンセル
メールアドレスが公開されることはありません。
新しいコメントをメールで通知
新しい投稿をメールで受け取る
email confirm*
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
今話題のCrossOver Macを使ってOS X上で秀丸エディタを動かそう
Evernote 5パブリックベータ版が公開!アップデート方法を紹介
プッシュ通知を購読(Push7)
新規口座開設+諸条件で最大30,000円相当贈呈
デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方


document_lang: ja

langs: ja id ja ja en ja en ja fr ja ja ja en ja en ja fr ja fr ja ro ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja uk ja ja ja en ja ja ja ja ja en ja ja ja ja en en ja ja ja ja ja ja en ja ja ja ja ja ja ja en zh en ja ja ja ja ja ja en en ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja en ja ja ja ja ja en ja en ja ja ja ja ja en ja en ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja en ja ja en ja ja ja en ja ja ja ja ja ja ja ja en ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ru ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja en ja en ja ja ja ja en ja ja ja ja ja ja en ja ja en ja ja ja ja uk ja ja ja ja ja ja ja ja pt ja ja ja ja ja ja ja ja ja ja ja ja en ja ru ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja en ja id ja ja en ja ja ja ja en ja ja en en mn ja mn ja mn ja mn ja mn ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja en da en zh ja ja ja ja ja zh ja ja ja ja ja en en ja ja ja ja en ja ja ja ja ja en ja ja ja en ja en nn ja ja ja ja en en ja ja ja en en ja ja es es en en en ja pt en ja ja ja ja ja ja ja ja en en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja en ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja th en en ja it ja th en en de ru ja th en en ja it en th en en de en ja ja fr en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja en ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja ja zh ja ja ja ja ja ja ja ja ja ja ja ja ja ja en en ja en ja en ja ja en ja ja ja ja ja en

text:
2 PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
13 活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 15.12.20
PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
Trek 2000 デジタルカメラ対応Wi-Fi機能付きSDカード 16GB Flucard16
これに関して、Flucard Proの開発元であるTrek2000は承知のことではないようで、PQI Air CardはFlucard Proを勝手にコピーしたもののようです。
— Trek2000 (@JpnTrek2000) October 23, 2012
オープンソースの成果物でできたFlucard Proで、どの程度権利を主張できるものか分かりませんが、我々ユーザーも、PQI Air CardとFlucard Proとの微妙な関係性については知っておいていいかもしれません。
PQI Air Cardをいじくるために、PQI Air Cardに無線LANで接続します。
A. まずは通常通りPQI Air Cardを無線LANアクセスポイントとして機能させ、そこに接続しに行く方法。この場合は、PQI Air Cardでネットワークが行き止まりとなり、PQI Air Cardに接続している間は、インターネットに接続できなくなってしまいます。
B. もう一つは、無線LANルータのアクセスポイントにPQI Air Cardを接続させ、無線LANルータを経由して接続する方法。Hotspot接続機能と言っているやつですね。この場合は、PQI Air Cardに接続しながら、同時にインターネットも利用できるため、こちらの方が便利です。
このB.の方法で接続させるためには、まずPQI Air CardのWifi SetupでHotspotsの項を埋めます。自宅の無線LANルータなどのSSIDとKEYを入力。欄が三組ありますが、PQI Air Cardは、上の欄から下の欄の順に向けて、最初につながるものに接続します。例えば、自宅のルータ、ポケットルータ、テザリング機能付きスマートフォンといった感じになるでしょうか。
PQI Air Cardに接続したら、PQI Air Cardに対してpingを実行し続けると接続が安定します。
posted with amazlet at 15.12.20
— Akinori (@muraky) November 5, 2012
— F@L (@falms) November 5, 2012
ELECOM 消しゴムみたいなメモリリーダライタ SD系専用 レッド MR-C21RD
posted with amazlet at 12.11.06
エレコム (2009-10-30)
売り上げランキング: 74033
Amazon.co.jp で詳細を見る
100円ショップで入手できる丸七のMR-27で動作しました。コメントで教えてもらった同じく丸七のMT-05でもいけるそうです。
コメントで教えてもらいましたが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもいけるそうです。
PQI Air Cardへのエントリポイントautorun.sh
autorun.shという名前のシェルスクリプトをmicroSDHCのルートディレクトリに置いておくと、それがPQI Air Cardの起動処理の最後に実行されます。
autorun.sh が実行されるのは起動処理の一番最後なので、それ以前の段階に割り込んで何かをすることはできませんが、それでもいろいろなことができます。
autorun.shを使うと、PQI Air Cardの動作をユーザー側で変更してしまうことができるのです。
▲Flucard ProにはTXD、RXDのパッドがあり、ここからシリアルコンソールを引き出せそうなので、PQI Air Cardでも、同様にしてuboot経由でより深いハックが可能かもしれません。(Photo: @numpad0 (License CC-BY-SA))
autorun.shの中でコマンドが実行できます。
#!/bin/sh find /mnt/sd/DCIM >/mnt/sd/filelist.txt sync
microSD側に何か変更を加えたら、syncコマンドを実行しておいた方がよさそうです。
PQI Air CardのOSはRAMディスク上で動いており、あまり空き容量がありません。
autorun.shからOS側にファイルを追加したい場合は、ファイルをコピーするのでなく、lnコマンドでシンボリックを張るようにします。
#!/bin/sh ln -s /mnt/sd/DCIM/somefile /usr/bin/ ln -s /mnt/sd/DCIM/somedir/* /etc/
OSに含まれるファイルを置き換える場合は、元ファイルを消してからシンボリックリンクを張るといった手順を踏みます。
#!/bin/sh rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi
起動中のサーバの設定を変更
Webサーバ、telnetサーバ、ftpサーバなど、最初からPQI Air Card上で動作しているサーバがありますが、これらの設定を変更することもできます。
以下はftpサーバであるftpdを一度終了させて、設定を変えて再度起動しています。
#!/bin/sh killall tcpsvd tcpsvd 0 21 ftpd -w / &
ファイル操作において注意すべきこと
PQI Air Cardは、ローカルのファイル操作と、ネットワークを介してのファイル操作との間で衝突が起きないように作られているようで、したはずのファイル操作、例えばテキストファイル、スクリプトを編集したはずなのに、それが反映されていない、ということがまま起きます。
再現性についてちゃんと検証できていませんが、そういう不整合が起きる可能性があることを知識として知っておいてください。
起動直後からホットスポット接続する(クライアントモードで起動する)
PQI Air Cardを無線LANアクセスポイントに接続し、クライアントとして動作させたい。
そのようにすれば、PQI Air Cardからインターネットに接続するコマンドを実行できますし、調べ物をしながらの作業もしやすくなります。
しかし、一度無線LANアクセスポイントとして機能させ、そこに接続した上でクライアント動作(ホットスポット接続)に切り替えるというのは、何とも面倒です。
この場合は、「PQI Air Cardとの無線LAN接続」の項で説明した設定をした上で、autorun.shに以下の内容を記述します。
#!/bin/sh sleep 5 /usr/bin/w2
/usr/bin/w2が、PQI Air Cardをクライアント動作させるコマンドです。
sleep 5は移行までの待ち時間として設定したものですが、環境依存はあるかと思いますので試行錯誤してみてください。
/usr/bin/w2を実行すると、設定にあるSSIDに接続しに行きます。
接続先が無線LANルータなら、無線LANルータがPQI Air CardにIPアドレスを払い出しますから、無線LANルータのDHCPテーブルなどを参照してIPアドレスを調べてください。
IPアドレスが分かったら、先述のようにそのIPアドレスへ向けてpingを実行し、接続を安定させます。
ping [IPアドレス]
PQI Air Cardへの接続
PQI Air Cardにtelnet接続するのは簡単です。
telnet [IPアドレス]
これでつながります。特にユーザ名などを指定する必要はありません。
ftp [IPアドレス]
Webインターフェースの方もしかりで、言ってみれば、セキュリティも糞もありませんので、無線LANの方のセキュリティには気をつけてください。
環境強化のためにvi、ruby、phpなどを導入する
PQI Air Cardにtelnetでログインして最初に面食らうのが、エディタが無いことでしょう。
当然あるものと思うviを実行しようとしても、「vi: applet not found」というメッセージをくらうはずです。
これは、PQI Air Cardに入っているbusybox(UNIXコマンドの集合体)のサイズを小さくするために、必要のないアプレットが省かれているからです。
先ほどの「ファイルを追加する」、「ファイルを置き換える」の項でやったように、microSDHCの領域を活用するならば、そんな制約を気にする必要はありませんので、いろいろなコマンドを入れていきましょう。
PQI Air Cardは、先達となるFlucard Proと酷似したプラットフォーム。
Flucard Proは少し前に一部の組み込みクラスタで流行したガジェットで、そのときの成果物を流用できます。
その中心人物になるのが、@tonsuke85氏、@osakanataro氏。彼らの成果物を活用させてもらうことにします。
とんすけ氏のdeploy_20120420.zipの導入
とんすけ氏がFlucard Pro用にビルドしてきた追加コマンドが下記のページにあります。
ページ中段にあるdeploy_20120420.zipがお目当てのものです。
この中には、アプレット全部入りのbusybox、ruby、perl、dropbear、JPEGからEXIFを抜き出すjheadなどが含まれています。こちらのbusyboxに含まれるアプレットは以下。
BusyBox v1.19.4 (2012-04-04 15:08:58 JST) multi-call binary. Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol, ubirmvol, ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip
値千金のzipですよ。
とりあえず、zipをmicroSDHCのルートディレクトリに展開します。
microSDHCのルートディレクトリからたどると「DCIM/122_TREK/.….」となるように展開できていればOKです。
PQI Air Cardには標準搭載されているperlが、このzipにも入っています。
PQI Air CardはWebインターフェースの動作に内蔵のperlを使っていますので、このまま導入すると問題が生じる可能性もあります。
zipに入っているperlをとりあえず削除します。
122_TREK/usr/bin/perlを削除
122_TREK/usr/local/lib以下を削除
モジュールなどはzipに入っている方が充実しているかと思いますので、もしperlを重要視するならば、そこは使う人がどちらを残すか決めてください。
rubyの動作のためにlibpthread.so.0をzipのものに置き換える
zipに入っているrubyを動かそうとすると、/lib/libpthread.so.0に関係したエラーが出ます。
影響が未知数ですが、PQI Air Cardに元からある/lib/libpthread.so.0の代わりにzipに入っているものを代わりに使うようにします。
rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/libpthread.so.0 /lib/
これをautorun.shの中で実行します。実際には、後出のautorun.shの中で/mnt/sd/DCIM/122_TREK/lib/にある別のライブラリといっしょに、ワイルドカードでいっぺんにシンボリックリンクを張ることになります。
PQI Air Card向けカスタム版autorun.sh
前述のような事情のほか、Flucard Proには最初から入っているviがPQI Air Cardには入っていなかったりといった違いがあるので、それを反映して作ったautorun.shが以下です。
これをzipに入っているautorun.shの代わりに使います。つまり、microSDHCのルートディレクトリに置きます。
#!/bin/sh ln -s /mnt/sd/DCIM/122_TREK/bin/* /bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/bin/* /usr/bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/local /usr/local ln -s /mnt/sd/DCIM/122_TREK/usr/lib /usr/lib ln -s /mnt/sd/DCIM/122_TREK/usr/include /usr/include ln -s /mnt/sd/DCIM/122_TREK/usr/libexec /usr/libexec ln -s /mnt/sd/DCIM/122_TREK/sbin/* /sbin/ rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/* /lib/ ln -s /mnt/sd/DCIM/122_TREK/etc/* /etc/ ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/connect2hotspot.cgi /www/cgi-bin/ #ln -s /mnt/sd/DCIM/122_TREK/www/* /www/ #ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/* /www/cgi-bin/ rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/top ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/awk ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/dd rm /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/killall ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/less ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/passwd ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/sed ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/tar rm /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/whoami # ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd #ftp #killall tcpsvd #tcpsvd 0 21 ftpd -w / & # connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
このほかにも、busyboxへのシンボリックリンクとして存在するコマンドがあっても、標準搭載のbusyboxにはそのアプレットが存在しないということがあるので、必要に応じてzip内のアプレット全部盛りのbusyboxへのシンボリックリンクに張り直してください。
rm /bin/somecommand ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/somecommand
busyboxは、何というコマンドとして自分が実行されたかによって、振る舞いを変えるように出来ています。
カスタム版autorun.sh補足説明: sshサーバ起動
カスタム版autorun.shの以下の部分がsshサーバにかかわる部分です。
コメントアウトしてあります。
# ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd
「#dropbear -A -N root -C admin -U 0 -G 0」をコメントアウトすると、ユーザroot、パスワードadminでログインできる状態でsshサーバが起動します。
それの代わりに「#dropbear -A -N root -C ‘-‘ -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s」の部分をコメントアウトすると、公開鍵認証でsshサーバが起動します。公開鍵は/mnt/sd/DCIM/122_TREK/authorized_keys2に置くようにしていますので、必要があれば変更を。
「#killall telnetd」をコメントアウトすると、telnetサーバを落とします。
カスタム版autorun.sh補足説明: ftpサーバのルートディレクトリ変更
デフォルトでは、ftpサーバのルートディレクトリは/mnt/sdに設定されており、それより上の階層へはアクセスできなくなっています。
ルートディレクトリにアクセスできるようにするには、カスタム版autorun.shの以下の部分をコメントアウトします。
#killall tcpsvd #tcpsvd 0 21 ftpd -w / &
カスタム版autorun.sh補足説明: ホットスポット接続(クライアントモード動作)
「起動直後からホットスポット接続する(クライアントモードで起動する)」の項で説明したのが、以下の部分に該当します。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
この例では、microSDHCカードのルートディレクトリにconnect2hotspotというファイルを置いておくと、起動直後からホットスポット接続を開始する、というようになっています。
起動直後からホットスポット接続をするかどうかをデジタルカメラ単体でコントロールできるようにするために、ホットスポット接続を司る緑色の画像、WSD00002.JPGの書き込み権限をチェックするのでもいいかと思います。
緑色の画像にデジタルカメラでロックをかけたら書き込み権限がなくなるので、PQI Air Card起動時にWSD00002.JPGの書き込み権限がなかったら(あるいはあったら)ホットスポット接続を始めてしまうようにするのです。
権限をチェックするコマンドって何でしたっけ……。
PQI Air Card用に使えるtoolchain
先述のとんすけ氏のページの受け売りですが、PQI Air Card用のバイナリをコンパイルするための開発環境として、Sourcery CodeBench Lite Editionが使えます。
「ARM processors>Download the GNU/Linux Release」とたどり、必要事項を記入して登録。メールで送られてくるものの中から「Download Sourcery CodeBench Lite 2011.09-70」をクリックしてダウンロード。
つまり、開発用のOSはLinuxになるわけですね。
toolchainのprefixは「arm-none-linux-gbueabi」となります。gccなら「arm-none-linux-gbueabi-gcc」。これをCCに指定し、といった感じで作業します。
リンク過程で-staticオプションを付けてスタティックリンクしないとならないかもしれません。
とんすけ氏のブログに詳しく書いてありますのでご参照を。
活用例: スマートフォンにプッシュ通知を送る
Flucard Proには、あの小さなSDカードの中に圧電スピーカーが内蔵されており、各種ステータス変更の通知を、音を通じてするようになっていました。
Photo: @numpad0 (License CC-BY-SA)
その名残がPQI Air Cardにも/usr/bin/buzzerというコマンドの存在としてあります。
PQI Air Cardには、圧電スピーカーは搭載されていません。
カード側からユーザーに対して物理的手段で何かを通知することができないのですが、ホットスポット接続を通じたインターネット接続を使って、ユーザーに通知する手段は残されています。
各種の処理を終わらせたときなどに、スマートフォンへのプッシュ通知を飛ばすということをやってみましょう。
iOSではProwl、AndroidではNotify My Androidを使うつもりで考えていたのですが、件のzipに入っているrubyにはopensslが含まれていなかったのでhttpsは使えませんでした。
Twitterを使ってPQI Air CardからiOS機にプッシュ通知を飛ばす
httpsが使えないとなると一苦労なので、httpでTwitterへのポストが可能な、 @whosaysniさんのゲートウェイ、StewGateを使います。
下記のページを参考に、StewGateのtokenを取得してください。
rubyを使ってやってみましょう。
以下のスクリプトをtest.rbというファイル名でmicroSDHCのルートディレクトリに作成。スクリプトは @northeyeさんの TwiProwl をパクらせてもらいました。
STEW_GATE_TOKENを自分のStewGateのtokenに。
MENTION_TOのTwitterアカウントを自分のものに書き換えて保存。
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby # -*- coding: utf-8 -*- require 'net/http' require 'uri' # ------------------------------ # user configuration # ------------------------------ # http://stewgate.appspot.com/sg1/ STEW_GATE_TOKEN = "あなたのStewGateのtoken" MENTION_TO = "@your_twitter_account" # ------------------------------ # constants # ------------------------------ STEW_GATE_API = "http://stewgate.appspot.com/sg1/post/" # ------------------------------ # methods # ------------------------------ def generate_signature() a = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a return " " + ( Array.new(4) do a[rand(a.size)] end ).join end def post_escape( string ) string.gsub(/([^ a-zA-Z0-9_.-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end.tr(' ', '+') end def post(msg) params = { "_t" => STEW_GATE_TOKEN, "msg" => "#{MENTION_TO} " + msg + generate_signature, } begin uri = URI::parse( STEW_GATE_API ) http = Net::HTTP.new( uri.host, uri.port ) request = Net::HTTP::Post.new( uri.request_uri ) request.content_type = "application/x-www-form-urlencoded" query = params.map do |key, val| "#{key}=#{post_escape(val.to_s)}" end res = http.request( request, query.join( '&' ) ) puts "Response: #{res.code}" rescue post("Error while Stewing: #{$!}") end end post("Hello, Twitter!")
/mnt/sd/test.rb
自分に対してMentionを飛ばせたでしょうか。Twitterは同じメッセージを続けて送れないので、末尾にランダムな文字列を添付しています。
実際の運用時は、Twitter検索を汚さないよう、通知用のTwitterアカウントを取得、鍵をかけておけばいいかと思います。
iOSでは、プッシュ通知のあるTwitterクライアントを、Androidでは公式クライアントを使えばいいでしょう。
/usr/bin/w2でのホットスポット接続時に、ルータやテザリングしたスマートフォンから取得したIPアドレスを含むURLを自分宛に送るとか、何かの通知を飛ばしたいときに使いましょう。
活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Cardをホットスポット接続(クライアントモードで起動)、スマートフォンのテザリング機能、ポケットルータなどを通して出先でインターネットに接続できるとなれば、やってみたいのはPQI Air Cardからの画像のアップロード。
まず問題になるのは、どの画像をアップロードするかの指定方法です。
もちろん、デジカメにPQI Air Card連携のための機能の存在を期待できません。
DPOFを使いましょう。DPOFは、Digital Print Order Formatの略。
デジカメ上で、プリントを実行したい画像を指定するためのもので、デジカメにはほぼ必ず存在する機能です。
DPOF機能のデジカメ上での操作の詳細はデジカメのマニュアルを参照してもらうとして、大概は画像のプレビューモードでメニューボタンを押すと指定ができます。
複数の画像を指定できるので、どんどんプリント指定していくと、「MISC/AUTPRINT.MRK」というファイルに、その情報が書き込まれていきます。PQI Air Cardから見た場合は「/mnt/sd/MISC/AUTPRINT.MRK」です。
AUTPRINT.MRKは以下のような構造となっています。
[HDR] GEN REV = 01.10 GEN CRT = "SIGMA" -01.00 [JOB] PRT PID = 001 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J [JOB] PRT PID = 002 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J
これを読み込んで、印刷指定された画像をアップロード対象にします。
PQI Air Cardのホットスポット接続(クライアントモード動作)後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」の存在をチェックし、存在した場合は、そこにリストアップされている画像をアップロード。アップロード後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」を削除、とします。
ユーザーの操作としては、アップロードしたい画像をDPOFで印刷指定し、一度デジカメの電源をオフ。再度オンにするとアップロードが開始されるといったことになります。
アップロード終了のタイミングで、先述のTwitterのMentionを飛ばして状況が確認できるようにします。
アップロード途中でデジカメの電源が切れてしまう状況が想定されます。
1枚アップロードが済んだ時に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」から済んだ画像の情報を削除、といった処理ならば、残された画像はリトライされることになるのでよさそうでしょうか。
AUTPRINT.MRKは、Windowsのiniファイルによく似た構造です。
rubyでiniファイルを扱えるようにする、Ruby inifileのgemをローカルインストールしてみます。
cd /mnt/sd wget http://rubygems.org/downloads/inifile-2.0.2.gem gem install inifile --local
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby require 'rubygems' require 'inifile' ini = IniFile.load("/mnt/sd/MISC/AUTPRINT.MRK") p ini["JOB"] puts ini["JOB"]["<IMG SRC"]
ぬぬぬ、[JOB]の部分の名前が同じであるため、パースした内容が、最後のJOBで上書きされてしまいます。
じゃあこんなので。autupload.rbとします。
autupload.rb解説
autupload.rbは、DPOFでプリント指定した画像を、rubyを使ってftpサーバにアップロードするものです。
これをmicroSDHCのルートディレクトリに保存したとします。つまり、/mnt/sd/autupload.rbです。
プリント指定した後、一度デジカメの電源を切り、再度電源を入れたらアップロード開始とするために、いくつか設定が必要です。
ホットスポット接続をするコマンド/usr/bin/w2をコピーしてきて、末尾で/mnt/sd/autupload.rbを実行するようにします。以下のような感じです。
#!/bin/sh echo "w2..." buzzer -f 1 #ifconfig mlan0 down #load wifi driver a0 a1 sleep 5 iwconfig ifconfig mlan0 192.168.1.1 netmask 255.255.255.0 up sleep 1 echo "auto connect available router" wifi_connect_router buzzer -f 5 sleep 2 udhcpc -i mlan0 -s /etc/dhcp.script buzzer -f 5 #cp /mnt/sd/iperf /bin #iperf -c 192.168.6.21 -N -w 512K -i 1 -t 300 /mnt/sd/autupload.rb
microSDHCのルートディレクトリにw2bというファイル名で保存したとします。/mnt/sd/w2bです。
autorun.shの末尾で、w2bを実行します。前述のPQI Air Card向けカスタム版autorun.shの最後がこうなります。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /mnt/sd/w2b & fi
PQI Air Card起動
connect2hotspotが存在する?→存在しなければ通常動作
存在したら/mnt/sd/w2bが実行され、ホットスポット接続開始
/mnt/sd/MISC/AUTPRINT.MRKが存在する?→存在しなければ何もしない
存在したらDPOFでプリント指定された画像をftpでアップロード
アップロードが終了したら/mnt/sd/MISC/AUTPRINT.MRKを削除
こんな感じの動作となります。
画像のアップロードが完了すると、Twitterでその都度Mentionが飛んできます。
素晴らしく楽しいPQI Air Card
どうでしたか? めちゃくちゃ夢が膨らみませんか?
ftpサーバなんかにアップロードしねーよという意見は受け入れません。
気に入らなかったら自分の好きなようにいじくればいいからです。
このほかできそうなこととしては、PQI Air Cardで集めた周囲の無線LANアクセスポイントのMACアドレスをGoogleのGeolocation APIにかけて、緯度経度を割り出し、それを画像に埋め込むということがあります。
iwlist mlan0 scanning | grep Address | sed -e 's/^.\{29\}\(.\+\)/\1/g'
本当はインターネット接続無しにローカルでMACアドレス→位置情報の変換をやりたいのですが、使えるデータベースが手に入りません。ポケットルータ、スマートフォンのテザリングに依存せず、スタンドアローンで位置情報を記録するために、画像とMACアドレスを対にしてログを取っておいて、後処理で位置情報に変換、埋め込みするというのでもいいかもしれません。
カメラ側からPQI Air Cardへのインタラクトの方法としては、DPOFの枚数指定なんかも使えそうです。枚数指定を送信先の指定や、送信した後の処理の仕方の指定に使うことができるでしょう。
ファイルの削除を監視するdaemonを常駐させ、独自に管理用画像を用意するのでもいいかもしれません。
こう考えると、工夫のしがいがあるでしょう? あつをリーダーとUSB電源を組み合わせたら、無線LANベースではありますがGPSロガーのようなものが出来てしまいます。
皆でこの素晴らしいPQI Air Cardをはやらせましょう。
Android用アプリTaskerを使ったPQI Air Cardへの接続の自動化
オフトピックとなりますが、Androidでの自動化の事例です。
PQI Air Cardを無線LANアクセスポイントとして動作させ、そこに接続し、専用アプリを起動。やや面倒ですね。
Androidでは、PQI Air Cardへの接続の部分をTaskerを使って自動化可能ということです。
PQI Air CardをAPモード、PQI AirCard+で使う場合、Androidなら https://t.co/uRH143jX このアプリとTaskerを組み合わせ、PQI AirCard+起動時に接続先を自動で切り替えるようにすると捗るかと。
— Mey (@meyskld) October 28, 2012
開発元:Crafty Apps EU
平均評価:4.6(合計37,336件)
ダウンロード:50万回以上
(2015年12月20日時点)
SSID指定の無線LAN(wifi)接続ショートカット作成
開発元:watarusoft
平均評価:4.3(合計21件)
ダウンロード:500回以上
(2015年12月20日時点)
神製品PQI Air Card
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 1077
Amazon.co.jp で詳細を見る
PQI Air Cardの開発環境に「あつをリーダー」
グリーンハウス SDXC対応USB2.0カードリーダ/ライタ ホワイト GH-CRSDXC
posted with amazlet at 15.12.20
グリーンハウス (2010-07-19)
売り上げランキング: 18,644
Amazon.co.jpで詳細を見る
現在世界最速のmicroSDHCで、最速の無線LAN内蔵SDカードを作ろう
Sandisk microSDHC 16GB Extreme PRO 95MB/s エクストリーム プロ SDSDQXP-016G サンディスク 並行輸入品 海外パッケージ品
posted with amazlet at 12.11.02
売り上げランキング: 2841
Amazon.co.jp で詳細を見る
そこそこ速いmicroSDHC
サンディスク SanDisk microSDHC UHS-I Class10 32GB 超高速30MB/秒アダプター付パッケージ品 並行輸入品SDSDQUA-032G
posted with amazlet at 12.11.02
売り上げランキング: 115
Amazon.co.jp で詳細を見る
PQI Air CardとClass10のmicroSDHCのセット
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 32GB Class10付属) 6W25-032GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7348
Amazon.co.jp で詳細を見る
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 16GB Class10付属) 6W25-016GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7492
Amazon.co.jp で詳細を見る
- Android, iPad, iPhone, Linux, Ruby, ガジェット, デジタルカメラ
【月額594円】Dropbox Plusが45%オフになる爆安セールが実施中!(〜3/31)
【月額294円】Evernoteプレミアムプランを値上げ前の料金より安く使えるセール実施中!(〜3/31)
Adobe Creative Cloud コンプリートとAdobe Creative Cloud フォトプランの12か月版オンラインコードが10%オフでセール中
低金利「じぶん銀行」の住宅ローン仮審査申込みで8,000円プレゼント!お得なキャンペーン実施中(〜3/31)
この記事が気に入ったら
最新情報をお届けします
2012年11月2日 12:08 PM
AirDriveにAirCard入れて、エアドラの電源入れたら、
Android機からPQI Air cardとAir Driveの2つのAPが見えました((((;゚Д゚))))
AirStashにAirCard入れて、エアスタの電源入れたら、、
エアスタのAPのみ見えます
ただどうも、エアスタ、いつの間にかカードリーダーとして機能しなくなったw
2012年12月29日 3:34 PM
100均にある丸七のMT-05でもWiFiが起ちましたよ。
2015年9月25日 9:33 PM
moyashi氏ととおりすがり氏とシルクとメーカーに感謝
2013年1月19日 1:32 PM
はじめましてWiFiのSSIDとKEYの設定は対応したデジカメがないとできないのでしょうか?カードリーダでPCから設定とかは無理でしょうか?
moyashi より:
2013年1月19日 2:47 PM
WiFiの設定はmicroSDHCでなくPQI Air Card上の不揮発性メモリ(nvram? eeprom?)に書き込まれています。
telnetかftpで接続して関連ファイルをいじることはできると思いますが、
何をどうしていいやら分からないと思います。
そもそも無線LANがおかしくてそこまでたどり着けないという話なら、
赤画像を削除してファクトリーリセットをかけてください。
オープンネットワークに戻るので、WiFi接続してブラウザから設定し直してください。
デジカメに頼らずPQIを動かしたいというなら、ここで紹介しているメモリーカードリーダーを
USB充電器(ACアダプタ)につなぐと動作します(するという話です)
カードリーダでPCにマウントして設定しなければならないという理由が分からないので、
このような回答になってしまいます。
microSDHCに独自定義の無線LAN設定用テキストファイルと、
自動設定用のautorun.shを作成して、autorun.sh経由で設定することは、
つまりmicroSDHC上にファイルを置くだけで無線LANの設定をすることは技術上可能です。
ですが、それはおおよそプログラミングに相当する行為ですので、
junさんの技量次第です。
方針としてはPQIの中でWebサーバが起動するのを待ち、
起動を確認したらwgetコマンドの–postdataでWebからの設定操作をエミュレート、
しかる後に再起動するというものになります。
一度設定を終えたら、設定用のファイルをリネームするなどで毎回設定されてしまわないようにします。
2013年1月19日 4:09 PM
説明不足ですみません。私はPICやAVRのマイコンとPC間でデータの送受信がしたくてこのページを検索で見つけてきたのですが、やりたいことはマイコンでPQI Air CardのmicroSDHCにデータを保存しておいてPQI Air CardのWiFi機能でPCと接続してデータ受信出来たらいいなと思っているのですが、PQI Air Cardが無線LANに接続できないことには何もできないので、こちらの記事を読んだところデジカメからしか無線LANの設定はできないのかな?と思い質問しました。PQI Air Cardは購入後初期状態でご紹介の方法で電源をつなげば無線ルータに勝手に接続してくれてブラウザから設定できるということでしょうか?PQI Air Cardの知識が全くないのですが(ここで初めて知りました)希望としては対応デジカメは持っていなし使い方が違うので、無線ルータに接続してくれてLinuxサーバみたいに動いてくれてスクリプトも自由に動かせるといいなと思っているのですが・・・どのようなものなのでしょうか?
moyashi より:
2013年1月19日 6:10 PM
工場出荷時のオープンネットワークで十分なら設定する必要はありません。
デジカメに入れて電源を入れれば無線LANのアクセスポイントが見えるようになります。
ただ、マイコンに接続する場合は、PQI Air Cardに3.3Vを供給するだけでは動きません。
「CMD0,ACMD41と思われる初期化コマンド」をPIC、AVRから発行する必要があります。
https://twitter.com/lynxeyed_black/statuses/261782427201044480
あとは恐らくPQI Air CardはSPIモードでは使えないので、
FATを扱えるライブラリ経由で操作する必要があると思います。
マイコンからPQI Air Cardに「CMD0,ACMD41と思われる初期化コマンド」を発行して、
起動するところまで持っていくのは、ご自身で手法を模索するほかないかと思います。
Wi-Fiの設定はPQI Air Cardの不揮発性メモリに保存されるので、
動的に設定を変える必要性が無ければ、マイコンから操作できるかどうかを気にする必要はありません。
デジカメ等で普通に設定した後でマイコンに差し替えればいいのです。
PQI Air Card上でのスクリプト云々については、このページにある情報、そして以下のページを手がかりにやってください。
http://hitoriblog.com/?p=14505
2013年3月16日 2:58 AM
はじめまして。@tetsu_kobaさんのツイートで見て来ました。さっそくポチりました。明日はダイソー巡りしますw
moyashi より:
2013年3月16日 5:13 AM
ありがとうございます。
ダイソーのリーダーはダークホースですね。
2013年3月30日 4:25 PM
上記コメント、もしかしたら当方の勘違いでシェルスクリプトでシンボリックリンクが張れて無かったかもしれないです。どうも、上記のアプレット一覧は純正のようでした。お騒がせして申し訳ありません。
最終的にはDPOFで電源オンオフをやらずにftp転送と常時フォルダ監視でのリアルタイムビューアによるftp転送を考えています。ちょっと試行錯誤してまた頑張ってみます。
2013年4月4日 5:00 PM
貴殿の記事を参考にさせて頂き、とりあえずfttputを使ったBusyBox内のシェルスクリプトのみでカメラ側のDPOFを利用したファイルアップロードが可能になりました。
もし必要であればヘタクソなコードでは御座いますが挙げさせていただきます。
現在、まだ動的にftpサーバーのIPアドレスを得る事が出来ていませんが、それが出来てしまえばcrontabで回す事で最小1分間隔でDPOFファイルを検索し存在した場合転送シェルを回す事が可能だと思います。
大変参考になりました。有り難う御座いました。
fujiaya より:
2013年4月6日 2:24 AM
USBカードリーダーですが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもUSB電源アダプタでの単体動作が確認できました。参考になれば。
moyashi より:
2013年4月6日 3:10 AM
情報ありがとうございます
2013年4月24日 8:38 AM
Eye-Fiが遅くてゲンナリしていたところ、
こちらのサイトにたどり着きました。
私はそちらのような知識と経験がなく、
はっきりいってサッパリわからないのですが、
ご指導いただけると大変助かります(汗)
同時記録のRAW+JPEGで撮影してJPEGだけを
モバイル端末に即アップロードするということを
モバイルルーターとEye-Fiでおこなっていました。
…しかし不安定なうえに転送があまりに遅いので、
どうにかならないものかとヘボな私なりに調べて
みると、PQIが速いよ!ということでした。
とはいえ、ど素人の私が理解してどうにか出来る
器量も度量もないので、
お助けいただけますでしょうか。
iOSのShuttersnitchを利用しています。
Flucardを購入してみたのですが、
同時記録で撮影後、最小サイズ&高圧縮JPEGだけを
FTPで転送する方法を試してみました。
Flucardに搭載されている機能です。
一枚あたり30秒かかりました。
…お、遅い。これをPQIで行うと速くなるので
しょうか。期待は胸膨らみますが、
どうやって良いのかサッパリわかりません。
お忙しいところ恐縮ですが、ご教授いただけると
大変助かります。よろしくお願いします。
moyashi より:
2013年4月24日 2:14 PM
こちらで紹介しているのはDPOFで選んだ写真をftpで送るというスクリプトだけですが、
30秒はかからないと思いますよ。
撮影した端からJPEGをftp送信するものについては書いてません。
できなくはないと思いますが、それについては新しくスクリプトを書かないとなりませんね。
2013年4月24日 4:58 PM
コメントありがとうございます。
新規に書かないといけないのですね。
わたしが当然書けるわけもないので、
何かほかの道を探してみます。
重ね重ねですが、ありがとうございました!
2013年6月15日 4:09 PM
こちらのサイトが非常に参考になったのでお礼もかねてシリアルで引き出したデータを置いておきます。
DPOFが生成されてない状態。
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
カメラでDPOFを生成されると以下のコマンドを吐き出す。
# (0>4)(4>0)get_Kcard_app cmd 6
umount(unmount後、すぐにマウントされている模様↓)
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
# rm /mnt/sd/MISC/AUTPRINT.MRK
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
(再度、DPOFをカメラ本体で生成)
# (0>4)(4>0)get_Kcard_app cmd 6
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
このような感じでカメラ側からSDにアクセスがあるとkcard_cmdがcallされています。perlなのかJavaなのかまではまだ調べてはいませんが。
以下はシャッター切った時のコマンド吐き出しです。
(0>4)(4>5)(5>0)get_Kcard_app cmd 7
DPOFでの転送は当方はスクリプトで処理していますが、生成をls叩いて監視してDPOFが生成されたタイミングで転送するものと、リアルタイム転送と両方を行なっています。
重ね重ね、貴殿のサイトが参考になりました。ありがとう御座います。
moyashi より:
2013年6月15日 4:30 PM
おお!これは興味深い!
しかし、殻割りしてUEWで引き出してカメラ内で動かしたとかでしょうか?
2013年6月15日 11:22 PM
3つ買って1つ加工失敗してボード割っちゃいましたけどもw
ずーっと遊んでUSB-SDホルダに突っこんでウニャウニャやってたんですが、そーいやカメラに突っこんで実挙動みてないやと思いやってみました。
今の所、カメラ側に何かエコー返さないと?カメラのDPOF指定がftp転送後にAUTPRINT.MRKをrm-fしても指定が外れていませんが(DPOFのI/F仕様書見たいんですが、見れなくてorz)、一度全解除してから新たに指定しなおすと、また転送が始まります。私は、なるべく軽くしたかったのと、GNUに引っかからない範囲で公開したかったので、全てシェルスクリプトで処理してます。
initramfs3を解体してprogram.binをバイナリ編集すれば解凍する前のデータ(initramfs3)が3MB以上でもOKなんですが、GNU的にそこがハードルですorz
今の使い方は一度initramfs3をバラして必要な分だけビルドしたbusyboxの追加とshの追加をrcSを変更して、カメラ側でフォーマットしても自動生成出来るようにしてカメラで利用しています。
シリアルは38400-N-8-1で接続できます。私はFT-2303でやっていますが普通に繋がりますね。
このサイトは本当に為になりました。ありがとう御座います。
2013年6月15日 11:26 PM
すいません、編集できないので追記で。
SDへのアクセスは基本、シャッターを切った時とか書きこまれた時に上のようなコマンドが返されていますが、カメラ側でプロテクト(画像の消去プロテクト)をかけた場合のパーミッションは、シャッターを切ってしまえばunmountされるのでパーミッション変更が反映されます。
今は、そのパーミッション変更を使ってリアルタイム転送を作っている最中です。Linuxカーネル的にはinotifyをサポートしているVerの筈なのですが、削られているようでカーネルが見つからないと返されてしまうので、カーネル突っ込んだビルドまで出来れば終了かなと思っています。
何かヒントにして頂ければ幸いです。
長文すいませんでした。
moyashi より:
2013年6月16日 12:58 AM
僕もリアルタイムで何かというのは考えていて、ポーリングでチェックかけてタイムスタンプでソートして
前回チェック時の記録と比較して判定するしかないのかなと思っていたので、
大変参考になりました。いやー、こんな濃い話が聞けるとは。ブログは書いておくものですね。
NEX7さんはTwitterとかブログやってらっしゃらないんですか?
2013年6月16日 1:49 AM
メールアドレスにG+のURLを貼りつけておきました。ツイッターはオバカな事ばかりつぶやいているのでw
G+の方ではAIrCardのことを貼りつけていたりします。(たぶん、相当しつこくやってたので、20投稿位はあるかもですw)
ツイッターから知り合いになった方が、組み込み系の本物のスペシャリストだったので、その方の助言も貰いながら遊んでいます♪
G+はサークル申請?ですかね?頂けたらすぐに承認しますので見れると思います。
実の所、組み込み系をこんなに触るのは初めてでして、アドバイス頂ければ嬉しいです♪
トカゲのテレパシー より:
2013年6月28日 1:51 AM
(古い記事にコメントつけてすみません!)
すばらしい良記事でした。
「wifiつきの極小webサーバー」を自作しようとしていて、
こちら拝見させて頂いてめちゃくちゃ参考になりました。
ありがとうございます。
シェルスクリプトも記事に書かれている通りに記述して、
無事/wwwに放りこんだhtmlファイルをスマフォから
(PQIのwifiにつないだうえで)覗きにいけるようになりました。
覗きに行く時に、192.168.1.1/hoge/index.html
とブラウザに入力するわけですが、
これ入力せずにPQIのwifi(単に親機として
インターネット関係なくwifi飛ばしている状態)につないだだけで、
/wwwにあるページを表示させることとかってできたりするでしょうか。。
イメージとしては街のwifiアクセススポットに
つないでブラウザ立ち上げると、
強制的にログイン画面出ると思うのですが、
気が向かれたらお知恵拝借頂けると幸いです。
よろしくお願い致します。
moyashi より:
2013年6月28日 2:03 PM
ちょっと違いますがここで紹介しているスクリプトはPQI Air CardがiPhoneにテザリング子機としてぶらさがった瞬間に
Twitterのプッシュ通知を送るようにしているので、間接的にそんなようなことができています。
http://hitoriblog.com/?p=14505
その逆で、PQI Air CardのAPにつないだ瞬間Twitterのプッシュ通知をというのは、
インターネットにつながらなくなってしまうので無理ですもんね。
ログインダイアログを出すようにする方法というのはちょっと分かりません。
接続先のAPのMACアドレスないしはSSIDをチェックして、設定のものだった場合に強制的に所定のURLを開く。接続先のAPが変わるか無くなったら再度待機開始、というJailbreak Tweakはできそうですが、必要とする人も少ないでしょうし、自分は作る動機がありません。
2014年3月11日 6:26 PM
USBカードリーダー 105円
USB電源(コンセントに接続するタイプ)201円(OutPut 5V 1000mA)
で揃う時代ですからね。
2014年3月11日 6:30 PM
なんだか、dstributed.netの計算用に手軽でいい感じですね。
2016年12月1日 5:47 PM
スマホにUSB接続して、外部接続の無線LAN子機 として使えませんか?ドライバが必要か・・・
moyashi より:
2016年12月2日 11:38 PM
残念ながら、その接続は無理ですね。
2017年1月11日 12:05 AM
今更ですけどcurlコマンドがほしいですね….
moyashi より:
2017年1月11日 1:00 AM
rubyで何とかしてみては http://www.boenkyo.com/archives/2042
匿名 にコメントする コメントをキャンセル
メールアドレスが公開されることはありません。
新しいコメントをメールで通知
新しい投稿をメールで受け取る
email confirm*
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
今話題のCrossOver Macを使ってOS X上で秀丸エディタを動かそう
Evernote 5パブリックベータ版が公開!アップデート方法を紹介
プッシュ通知を購読(Push7)
新規口座開設+諸条件で最大30,000円相当贈呈
デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方


text:
2 PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
13 活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 15.12.20
PQI Air CardとTrek2000 Flucard Proの微妙なカンケイ
Trek 2000 デジタルカメラ対応Wi-Fi機能付きSDカード 16GB Flucard16
これに関して、Flucard Proの開発元であるTrek2000は承知のことではないようで、PQI Air CardはFlucard Proを勝手にコピーしたもののようです。
— Trek2000 (@JpnTrek2000) October 23, 2012
オープンソースの成果物でできたFlucard Proで、どの程度権利を主張できるものか分かりませんが、我々ユーザーも、PQI Air CardとFlucard Proとの微妙な関係性については知っておいていいかもしれません。
PQI Air Cardをいじくるために、PQI Air Cardに無線LANで接続します。
A. まずは通常通りPQI Air Cardを無線LANアクセスポイントとして機能させ、そこに接続しに行く方法。この場合は、PQI Air Cardでネットワークが行き止まりとなり、PQI Air Cardに接続している間は、インターネットに接続できなくなってしまいます。
B. もう一つは、無線LANルータのアクセスポイントにPQI Air Cardを接続させ、無線LANルータを経由して接続する方法。Hotspot接続機能と言っているやつですね。この場合は、PQI Air Cardに接続しながら、同時にインターネットも利用できるため、こちらの方が便利です。
このB.の方法で接続させるためには、まずPQI Air CardのWifi SetupでHotspotsの項を埋めます。自宅の無線LANルータなどのSSIDとKEYを入力。欄が三組ありますが、PQI Air Cardは、上の欄から下の欄の順に向けて、最初につながるものに接続します。例えば、自宅のルータ、ポケットルータ、テザリング機能付きスマートフォンといった感じになるでしょうか。
PQI Air Cardに接続したら、PQI Air Cardに対してpingを実行し続けると接続が安定します。
posted with amazlet at 15.12.20
— Akinori (@muraky) November 5, 2012
— F@L (@falms) November 5, 2012
ELECOM 消しゴムみたいなメモリリーダライタ SD系専用 レッド MR-C21RD
posted with amazlet at 12.11.06
エレコム (2009-10-30)
売り上げランキング: 74033
Amazon.co.jp で詳細を見る
100円ショップで入手できる丸七のMR-27で動作しました。コメントで教えてもらった同じく丸七のMT-05でもいけるそうです。
コメントで教えてもらいましたが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもいけるそうです。
PQI Air Cardへのエントリポイントautorun.sh
autorun.shという名前のシェルスクリプトをmicroSDHCのルートディレクトリに置いておくと、それがPQI Air Cardの起動処理の最後に実行されます。
autorun.sh が実行されるのは起動処理の一番最後なので、それ以前の段階に割り込んで何かをすることはできませんが、それでもいろいろなことができます。
autorun.shを使うと、PQI Air Cardの動作をユーザー側で変更してしまうことができるのです。
▲Flucard ProにはTXD、RXDのパッドがあり、ここからシリアルコンソールを引き出せそうなので、PQI Air Cardでも、同様にしてuboot経由でより深いハックが可能かもしれません。(Photo: @numpad0 (License CC-BY-SA))
autorun.shの中でコマンドが実行できます。
#!/bin/sh find /mnt/sd/DCIM >/mnt/sd/filelist.txt sync
microSD側に何か変更を加えたら、syncコマンドを実行しておいた方がよさそうです。
PQI Air CardのOSはRAMディスク上で動いており、あまり空き容量がありません。
autorun.shからOS側にファイルを追加したい場合は、ファイルをコピーするのでなく、lnコマンドでシンボリックを張るようにします。
#!/bin/sh ln -s /mnt/sd/DCIM/somefile /usr/bin/ ln -s /mnt/sd/DCIM/somedir/* /etc/
OSに含まれるファイルを置き換える場合は、元ファイルを消してからシンボリックリンクを張るといった手順を踏みます。
#!/bin/sh rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi
起動中のサーバの設定を変更
Webサーバ、telnetサーバ、ftpサーバなど、最初からPQI Air Card上で動作しているサーバがありますが、これらの設定を変更することもできます。
以下はftpサーバであるftpdを一度終了させて、設定を変えて再度起動しています。
#!/bin/sh killall tcpsvd tcpsvd 0 21 ftpd -w / &
ファイル操作において注意すべきこと
PQI Air Cardは、ローカルのファイル操作と、ネットワークを介してのファイル操作との間で衝突が起きないように作られているようで、したはずのファイル操作、例えばテキストファイル、スクリプトを編集したはずなのに、それが反映されていない、ということがまま起きます。
再現性についてちゃんと検証できていませんが、そういう不整合が起きる可能性があることを知識として知っておいてください。
起動直後からホットスポット接続する(クライアントモードで起動する)
PQI Air Cardを無線LANアクセスポイントに接続し、クライアントとして動作させたい。
そのようにすれば、PQI Air Cardからインターネットに接続するコマンドを実行できますし、調べ物をしながらの作業もしやすくなります。
しかし、一度無線LANアクセスポイントとして機能させ、そこに接続した上でクライアント動作(ホットスポット接続)に切り替えるというのは、何とも面倒です。
この場合は、「PQI Air Cardとの無線LAN接続」の項で説明した設定をした上で、autorun.shに以下の内容を記述します。
#!/bin/sh sleep 5 /usr/bin/w2
/usr/bin/w2が、PQI Air Cardをクライアント動作させるコマンドです。
sleep 5は移行までの待ち時間として設定したものですが、環境依存はあるかと思いますので試行錯誤してみてください。
/usr/bin/w2を実行すると、設定にあるSSIDに接続しに行きます。
接続先が無線LANルータなら、無線LANルータがPQI Air CardにIPアドレスを払い出しますから、無線LANルータのDHCPテーブルなどを参照してIPアドレスを調べてください。
IPアドレスが分かったら、先述のようにそのIPアドレスへ向けてpingを実行し、接続を安定させます。
ping [IPアドレス]
PQI Air Cardへの接続
PQI Air Cardにtelnet接続するのは簡単です。
telnet [IPアドレス]
これでつながります。特にユーザ名などを指定する必要はありません。
ftp [IPアドレス]
Webインターフェースの方もしかりで、言ってみれば、セキュリティも糞もありませんので、無線LANの方のセキュリティには気をつけてください。
環境強化のためにvi、ruby、phpなどを導入する
PQI Air Cardにtelnetでログインして最初に面食らうのが、エディタが無いことでしょう。
当然あるものと思うviを実行しようとしても、「vi: applet not found」というメッセージをくらうはずです。
これは、PQI Air Cardに入っているbusybox(UNIXコマンドの集合体)のサイズを小さくするために、必要のないアプレットが省かれているからです。
先ほどの「ファイルを追加する」、「ファイルを置き換える」の項でやったように、microSDHCの領域を活用するならば、そんな制約を気にする必要はありませんので、いろいろなコマンドを入れていきましょう。
PQI Air Cardは、先達となるFlucard Proと酷似したプラットフォーム。
Flucard Proは少し前に一部の組み込みクラスタで流行したガジェットで、そのときの成果物を流用できます。
その中心人物になるのが、@tonsuke85氏、@osakanataro氏。彼らの成果物を活用させてもらうことにします。
とんすけ氏のdeploy_20120420.zipの導入
とんすけ氏がFlucard Pro用にビルドしてきた追加コマンドが下記のページにあります。
ページ中段にあるdeploy_20120420.zipがお目当てのものです。
この中には、アプレット全部入りのbusybox、ruby、perl、dropbear、JPEGからEXIFを抜き出すjheadなどが含まれています。こちらのbusyboxに含まれるアプレットは以下。
BusyBox v1.19.4 (2012-04-04 15:08:58 JST) multi-call binary. Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko and others. Licensed under GPLv2. See source distribution for full notice. Usage: busybox [function] [arguments]... or: busybox --list[-full] or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. Most people will create a link to busybox for each function they wish to use and BusyBox will act like whatever it was invoked as. Currently defined functions: [, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash, awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl, bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod, chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd, deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff, dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap, dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake, expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat, fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk, fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty, grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid, hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave, ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip, ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel, kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64, linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread, losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount, mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath, reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont, setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep, smemcap, softlimit, sort, split, start-stop-daemon, stat, strings, stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true, tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol, ubirmvol, ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, umount, uname, unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users, usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip
値千金のzipですよ。
とりあえず、zipをmicroSDHCのルートディレクトリに展開します。
microSDHCのルートディレクトリからたどると「DCIM/122_TREK/.….」となるように展開できていればOKです。
PQI Air Cardには標準搭載されているperlが、このzipにも入っています。
PQI Air CardはWebインターフェースの動作に内蔵のperlを使っていますので、このまま導入すると問題が生じる可能性もあります。
zipに入っているperlをとりあえず削除します。
122_TREK/usr/bin/perlを削除
122_TREK/usr/local/lib以下を削除
モジュールなどはzipに入っている方が充実しているかと思いますので、もしperlを重要視するならば、そこは使う人がどちらを残すか決めてください。
rubyの動作のためにlibpthread.so.0をzipのものに置き換える
zipに入っているrubyを動かそうとすると、/lib/libpthread.so.0に関係したエラーが出ます。
影響が未知数ですが、PQI Air Cardに元からある/lib/libpthread.so.0の代わりにzipに入っているものを代わりに使うようにします。
rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/libpthread.so.0 /lib/
これをautorun.shの中で実行します。実際には、後出のautorun.shの中で/mnt/sd/DCIM/122_TREK/lib/にある別のライブラリといっしょに、ワイルドカードでいっぺんにシンボリックリンクを張ることになります。
PQI Air Card向けカスタム版autorun.sh
前述のような事情のほか、Flucard Proには最初から入っているviがPQI Air Cardには入っていなかったりといった違いがあるので、それを反映して作ったautorun.shが以下です。
これをzipに入っているautorun.shの代わりに使います。つまり、microSDHCのルートディレクトリに置きます。
#!/bin/sh ln -s /mnt/sd/DCIM/122_TREK/bin/* /bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/bin/* /usr/bin/ ln -s /mnt/sd/DCIM/122_TREK/usr/local /usr/local ln -s /mnt/sd/DCIM/122_TREK/usr/lib /usr/lib ln -s /mnt/sd/DCIM/122_TREK/usr/include /usr/include ln -s /mnt/sd/DCIM/122_TREK/usr/libexec /usr/libexec ln -s /mnt/sd/DCIM/122_TREK/sbin/* /sbin/ rm /lib/libpthread.so.0 ln -s /mnt/sd/DCIM/122_TREK/lib/* /lib/ ln -s /mnt/sd/DCIM/122_TREK/etc/* /etc/ ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/connect2hotspot.cgi /www/cgi-bin/ #ln -s /mnt/sd/DCIM/122_TREK/www/* /www/ #ln -s /mnt/sd/DCIM/122_TREK/www/cgi-bin/* /www/cgi-bin/ rm /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/vi ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/top ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/awk ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/dd rm /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/hexdump ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/killall ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/less ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/passwd ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/sed ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/tar rm /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /usr/bin/telnet ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/whoami # ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd #ftp #killall tcpsvd #tcpsvd 0 21 ftpd -w / & # connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
このほかにも、busyboxへのシンボリックリンクとして存在するコマンドがあっても、標準搭載のbusyboxにはそのアプレットが存在しないということがあるので、必要に応じてzip内のアプレット全部盛りのbusyboxへのシンボリックリンクに張り直してください。
rm /bin/somecommand ln -s /mnt/sd/DCIM/122_TREK/busybox /bin/somecommand
busyboxは、何というコマンドとして自分が実行されたかによって、振る舞いを変えるように出来ています。
カスタム版autorun.sh補足説明: sshサーバ起動
カスタム版autorun.shの以下の部分がsshサーバにかかわる部分です。
コメントアウトしてあります。
# ssh # user: root password: admin #dropbear -A -N root -C admin -U 0 -G 0 # public key auth #dropbear -A -N root -C '-' -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s # kill telnetd #killall telnetd
「#dropbear -A -N root -C admin -U 0 -G 0」をコメントアウトすると、ユーザroot、パスワードadminでログインできる状態でsshサーバが起動します。
それの代わりに「#dropbear -A -N root -C ‘-‘ -U 0 -G 0 -R /mnt/sd/DCIM/122_TREK/authorized_keys2 -s」の部分をコメントアウトすると、公開鍵認証でsshサーバが起動します。公開鍵は/mnt/sd/DCIM/122_TREK/authorized_keys2に置くようにしていますので、必要があれば変更を。
「#killall telnetd」をコメントアウトすると、telnetサーバを落とします。
カスタム版autorun.sh補足説明: ftpサーバのルートディレクトリ変更
デフォルトでは、ftpサーバのルートディレクトリは/mnt/sdに設定されており、それより上の階層へはアクセスできなくなっています。
ルートディレクトリにアクセスできるようにするには、カスタム版autorun.shの以下の部分をコメントアウトします。
#killall tcpsvd #tcpsvd 0 21 ftpd -w / &
カスタム版autorun.sh補足説明: ホットスポット接続(クライアントモード動作)
「起動直後からホットスポット接続する(クライアントモードで起動する)」の項で説明したのが、以下の部分に該当します。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /usr/bin/w2 & fi
この例では、microSDHCカードのルートディレクトリにconnect2hotspotというファイルを置いておくと、起動直後からホットスポット接続を開始する、というようになっています。
起動直後からホットスポット接続をするかどうかをデジタルカメラ単体でコントロールできるようにするために、ホットスポット接続を司る緑色の画像、WSD00002.JPGの書き込み権限をチェックするのでもいいかと思います。
緑色の画像にデジタルカメラでロックをかけたら書き込み権限がなくなるので、PQI Air Card起動時にWSD00002.JPGの書き込み権限がなかったら(あるいはあったら)ホットスポット接続を始めてしまうようにするのです。
権限をチェックするコマンドって何でしたっけ……。
PQI Air Card用に使えるtoolchain
先述のとんすけ氏のページの受け売りですが、PQI Air Card用のバイナリをコンパイルするための開発環境として、Sourcery CodeBench Lite Editionが使えます。
「ARM processors>Download the GNU/Linux Release」とたどり、必要事項を記入して登録。メールで送られてくるものの中から「Download Sourcery CodeBench Lite 2011.09-70」をクリックしてダウンロード。
つまり、開発用のOSはLinuxになるわけですね。
toolchainのprefixは「arm-none-linux-gbueabi」となります。gccなら「arm-none-linux-gbueabi-gcc」。これをCCに指定し、といった感じで作業します。
リンク過程で-staticオプションを付けてスタティックリンクしないとならないかもしれません。
とんすけ氏のブログに詳しく書いてありますのでご参照を。
活用例: スマートフォンにプッシュ通知を送る
Flucard Proには、あの小さなSDカードの中に圧電スピーカーが内蔵されており、各種ステータス変更の通知を、音を通じてするようになっていました。
Photo: @numpad0 (License CC-BY-SA)
その名残がPQI Air Cardにも/usr/bin/buzzerというコマンドの存在としてあります。
PQI Air Cardには、圧電スピーカーは搭載されていません。
カード側からユーザーに対して物理的手段で何かを通知することができないのですが、ホットスポット接続を通じたインターネット接続を使って、ユーザーに通知する手段は残されています。
各種の処理を終わらせたときなどに、スマートフォンへのプッシュ通知を飛ばすということをやってみましょう。
iOSではProwl、AndroidではNotify My Androidを使うつもりで考えていたのですが、件のzipに入っているrubyにはopensslが含まれていなかったのでhttpsは使えませんでした。
Twitterを使ってPQI Air CardからiOS機にプッシュ通知を飛ばす
httpsが使えないとなると一苦労なので、httpでTwitterへのポストが可能な、 @whosaysniさんのゲートウェイ、StewGateを使います。
下記のページを参考に、StewGateのtokenを取得してください。
rubyを使ってやってみましょう。
以下のスクリプトをtest.rbというファイル名でmicroSDHCのルートディレクトリに作成。スクリプトは @northeyeさんの TwiProwl をパクらせてもらいました。
STEW_GATE_TOKENを自分のStewGateのtokenに。
MENTION_TOのTwitterアカウントを自分のものに書き換えて保存。
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby # -*- coding: utf-8 -*- require 'net/http' require 'uri' # ------------------------------ # user configuration # ------------------------------ # http://stewgate.appspot.com/sg1/ STEW_GATE_TOKEN = "あなたのStewGateのtoken" MENTION_TO = "@your_twitter_account" # ------------------------------ # constants # ------------------------------ STEW_GATE_API = "http://stewgate.appspot.com/sg1/post/" # ------------------------------ # methods # ------------------------------ def generate_signature() a = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a return " " + ( Array.new(4) do a[rand(a.size)] end ).join end def post_escape( string ) string.gsub(/([^ a-zA-Z0-9_.-]+)/) do '%' + $1.unpack('H2' * $1.bytesize).join('%').upcase end.tr(' ', '+') end def post(msg) params = { "_t" => STEW_GATE_TOKEN, "msg" => "#{MENTION_TO} " + msg + generate_signature, } begin uri = URI::parse( STEW_GATE_API ) http = Net::HTTP.new( uri.host, uri.port ) request = Net::HTTP::Post.new( uri.request_uri ) request.content_type = "application/x-www-form-urlencoded" query = params.map do |key, val| "#{key}=#{post_escape(val.to_s)}" end res = http.request( request, query.join( '&' ) ) puts "Response: #{res.code}" rescue post("Error while Stewing: #{$!}") end end post("Hello, Twitter!")
/mnt/sd/test.rb
自分に対してMentionを飛ばせたでしょうか。Twitterは同じメッセージを続けて送れないので、末尾にランダムな文字列を添付しています。
実際の運用時は、Twitter検索を汚さないよう、通知用のTwitterアカウントを取得、鍵をかけておけばいいかと思います。
iOSでは、プッシュ通知のあるTwitterクライアントを、Androidでは公式クライアントを使えばいいでしょう。
/usr/bin/w2でのホットスポット接続時に、ルータやテザリングしたスマートフォンから取得したIPアドレスを含むURLを自分宛に送るとか、何かの通知を飛ばしたいときに使いましょう。
活用例: デジタルカメラで画像を選択してPQI Air Cardからアップロード
PQI Air Cardをホットスポット接続(クライアントモードで起動)、スマートフォンのテザリング機能、ポケットルータなどを通して出先でインターネットに接続できるとなれば、やってみたいのはPQI Air Cardからの画像のアップロード。
まず問題になるのは、どの画像をアップロードするかの指定方法です。
もちろん、デジカメにPQI Air Card連携のための機能の存在を期待できません。
DPOFを使いましょう。DPOFは、Digital Print Order Formatの略。
デジカメ上で、プリントを実行したい画像を指定するためのもので、デジカメにはほぼ必ず存在する機能です。
DPOF機能のデジカメ上での操作の詳細はデジカメのマニュアルを参照してもらうとして、大概は画像のプレビューモードでメニューボタンを押すと指定ができます。
複数の画像を指定できるので、どんどんプリント指定していくと、「MISC/AUTPRINT.MRK」というファイルに、その情報が書き込まれていきます。PQI Air Cardから見た場合は「/mnt/sd/MISC/AUTPRINT.MRK」です。
AUTPRINT.MRKは以下のような構造となっています。
[HDR] GEN REV = 01.10 GEN CRT = "SIGMA" -01.00 [JOB] PRT PID = 001 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J [JOB] PRT PID = 002 PRT TYP = STD PRT QTY = 001 IMG FMT = EXIF2 -J
これを読み込んで、印刷指定された画像をアップロード対象にします。
PQI Air Cardのホットスポット接続(クライアントモード動作)後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」の存在をチェックし、存在した場合は、そこにリストアップされている画像をアップロード。アップロード後に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」を削除、とします。
ユーザーの操作としては、アップロードしたい画像をDPOFで印刷指定し、一度デジカメの電源をオフ。再度オンにするとアップロードが開始されるといったことになります。
アップロード終了のタイミングで、先述のTwitterのMentionを飛ばして状況が確認できるようにします。
アップロード途中でデジカメの電源が切れてしまう状況が想定されます。
1枚アップロードが済んだ時に「/mnt/sd/MISC/MISC/AUTPRINT.MRK」から済んだ画像の情報を削除、といった処理ならば、残された画像はリトライされることになるのでよさそうでしょうか。
AUTPRINT.MRKは、Windowsのiniファイルによく似た構造です。
rubyでiniファイルを扱えるようにする、Ruby inifileのgemをローカルインストールしてみます。
cd /mnt/sd wget http://rubygems.org/downloads/inifile-2.0.2.gem gem install inifile --local
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby require 'rubygems' require 'inifile' ini = IniFile.load("/mnt/sd/MISC/AUTPRINT.MRK") p ini["JOB"] puts ini["JOB"]["<IMG SRC"]
ぬぬぬ、[JOB]の部分の名前が同じであるため、パースした内容が、最後のJOBで上書きされてしまいます。
じゃあこんなので。autupload.rbとします。
autupload.rb解説
autupload.rbは、DPOFでプリント指定した画像を、rubyを使ってftpサーバにアップロードするものです。
これをmicroSDHCのルートディレクトリに保存したとします。つまり、/mnt/sd/autupload.rbです。
プリント指定した後、一度デジカメの電源を切り、再度電源を入れたらアップロード開始とするために、いくつか設定が必要です。
ホットスポット接続をするコマンド/usr/bin/w2をコピーしてきて、末尾で/mnt/sd/autupload.rbを実行するようにします。以下のような感じです。
#!/bin/sh echo "w2..." buzzer -f 1 #ifconfig mlan0 down #load wifi driver a0 a1 sleep 5 iwconfig ifconfig mlan0 192.168.1.1 netmask 255.255.255.0 up sleep 1 echo "auto connect available router" wifi_connect_router buzzer -f 5 sleep 2 udhcpc -i mlan0 -s /etc/dhcp.script buzzer -f 5 #cp /mnt/sd/iperf /bin #iperf -c 192.168.6.21 -N -w 512K -i 1 -t 300 /mnt/sd/autupload.rb
microSDHCのルートディレクトリにw2bというファイル名で保存したとします。/mnt/sd/w2bです。
autorun.shの末尾で、w2bを実行します。前述のPQI Air Card向けカスタム版autorun.shの最後がこうなります。
# connect to Hotspots if [ -e /mnt/sd/connect2hotspot ]; then sleep 5 /mnt/sd/w2b & fi
PQI Air Card起動
connect2hotspotが存在する?→存在しなければ通常動作
存在したら/mnt/sd/w2bが実行され、ホットスポット接続開始
/mnt/sd/MISC/AUTPRINT.MRKが存在する?→存在しなければ何もしない
存在したらDPOFでプリント指定された画像をftpでアップロード
アップロードが終了したら/mnt/sd/MISC/AUTPRINT.MRKを削除
こんな感じの動作となります。
画像のアップロードが完了すると、Twitterでその都度Mentionが飛んできます。
素晴らしく楽しいPQI Air Card
どうでしたか? めちゃくちゃ夢が膨らみませんか?
ftpサーバなんかにアップロードしねーよという意見は受け入れません。
気に入らなかったら自分の好きなようにいじくればいいからです。
このほかできそうなこととしては、PQI Air Cardで集めた周囲の無線LANアクセスポイントのMACアドレスをGoogleのGeolocation APIにかけて、緯度経度を割り出し、それを画像に埋め込むということがあります。
iwlist mlan0 scanning | grep Address | sed -e 's/^.\{29\}\(.\+\)/\1/g'
本当はインターネット接続無しにローカルでMACアドレス→位置情報の変換をやりたいのですが、使えるデータベースが手に入りません。ポケットルータ、スマートフォンのテザリングに依存せず、スタンドアローンで位置情報を記録するために、画像とMACアドレスを対にしてログを取っておいて、後処理で位置情報に変換、埋め込みするというのでもいいかもしれません。
カメラ側からPQI Air Cardへのインタラクトの方法としては、DPOFの枚数指定なんかも使えそうです。枚数指定を送信先の指定や、送信した後の処理の仕方の指定に使うことができるでしょう。
ファイルの削除を監視するdaemonを常駐させ、独自に管理用画像を用意するのでもいいかもしれません。
こう考えると、工夫のしがいがあるでしょう? あつをリーダーとUSB電源を組み合わせたら、無線LANベースではありますがGPSロガーのようなものが出来てしまいます。
皆でこの素晴らしいPQI Air Cardをはやらせましょう。
Android用アプリTaskerを使ったPQI Air Cardへの接続の自動化
オフトピックとなりますが、Androidでの自動化の事例です。
PQI Air Cardを無線LANアクセスポイントとして動作させ、そこに接続し、専用アプリを起動。やや面倒ですね。
Androidでは、PQI Air Cardへの接続の部分をTaskerを使って自動化可能ということです。
PQI Air CardをAPモード、PQI AirCard+で使う場合、Androidなら https://t.co/uRH143jX このアプリとTaskerを組み合わせ、PQI AirCard+起動時に接続先を自動で切り替えるようにすると捗るかと。
— Mey (@meyskld) October 28, 2012
開発元:Crafty Apps EU
平均評価:4.6(合計37,336件)
ダウンロード:50万回以上
(2015年12月20日時点)
SSID指定の無線LAN(wifi)接続ショートカット作成
開発元:watarusoft
平均評価:4.3(合計21件)
ダウンロード:500回以上
(2015年12月20日時点)
神製品PQI Air Card
PQI Air Card Wi-Fi内蔵SDカードアダプタ (アダプタのみモデル) 6W21-0000R1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 1077
Amazon.co.jp で詳細を見る
PQI Air Cardの開発環境に「あつをリーダー」
グリーンハウス SDXC対応USB2.0カードリーダ/ライタ ホワイト GH-CRSDXC
posted with amazlet at 15.12.20
グリーンハウス (2010-07-19)
売り上げランキング: 18,644
Amazon.co.jpで詳細を見る
現在世界最速のmicroSDHCで、最速の無線LAN内蔵SDカードを作ろう
Sandisk microSDHC 16GB Extreme PRO 95MB/s エクストリーム プロ SDSDQXP-016G サンディスク 並行輸入品 海外パッケージ品
posted with amazlet at 12.11.02
売り上げランキング: 2841
Amazon.co.jp で詳細を見る
そこそこ速いmicroSDHC
サンディスク SanDisk microSDHC UHS-I Class10 32GB 超高速30MB/秒アダプター付パッケージ品 並行輸入品SDSDQUA-032G
posted with amazlet at 12.11.02
売り上げランキング: 115
Amazon.co.jp で詳細を見る
PQI Air CardとClass10のmicroSDHCのセット
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 32GB Class10付属) 6W25-032GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7348
Amazon.co.jp で詳細を見る
PQI Air Card Wi-Fi内蔵SDカードアダプタ (microSDHC 16GB Class10付属) 6W25-016GR1
posted with amazlet at 12.11.02
PQI (2012-10-01)
売り上げランキング: 7492
Amazon.co.jp で詳細を見る
- Android, iPad, iPhone, Linux, Ruby, ガジェット, デジタルカメラ
【月額594円】Dropbox Plusが45%オフになる爆安セールが実施中!(〜3/31)
【月額294円】Evernoteプレミアムプランを値上げ前の料金より安く使えるセール実施中!(〜3/31)
Adobe Creative Cloud コンプリートとAdobe Creative Cloud フォトプランの12か月版オンラインコードが10%オフでセール中
低金利「じぶん銀行」の住宅ローン仮審査申込みで8,000円プレゼント!お得なキャンペーン実施中(〜3/31)
この記事が気に入ったら
最新情報をお届けします
2012年11月2日 12:08 PM
AirDriveにAirCard入れて、エアドラの電源入れたら、
Android機からPQI Air cardとAir Driveの2つのAPが見えました((((;゚Д゚))))
AirStashにAirCard入れて、エアスタの電源入れたら、、
エアスタのAPのみ見えます
ただどうも、エアスタ、いつの間にかカードリーダーとして機能しなくなったw
2012年12月29日 3:34 PM
100均にある丸七のMT-05でもWiFiが起ちましたよ。
2015年9月25日 9:33 PM
moyashi氏ととおりすがり氏とシルクとメーカーに感謝
2013年1月19日 1:32 PM
はじめましてWiFiのSSIDとKEYの設定は対応したデジカメがないとできないのでしょうか?カードリーダでPCから設定とかは無理でしょうか?
moyashi より:
2013年1月19日 2:47 PM
WiFiの設定はmicroSDHCでなくPQI Air Card上の不揮発性メモリ(nvram? eeprom?)に書き込まれています。
telnetかftpで接続して関連ファイルをいじることはできると思いますが、
何をどうしていいやら分からないと思います。
そもそも無線LANがおかしくてそこまでたどり着けないという話なら、
赤画像を削除してファクトリーリセットをかけてください。
オープンネットワークに戻るので、WiFi接続してブラウザから設定し直してください。
デジカメに頼らずPQIを動かしたいというなら、ここで紹介しているメモリーカードリーダーを
USB充電器(ACアダプタ)につなぐと動作します(するという話です)
カードリーダでPCにマウントして設定しなければならないという理由が分からないので、
このような回答になってしまいます。
microSDHCに独自定義の無線LAN設定用テキストファイルと、
自動設定用のautorun.shを作成して、autorun.sh経由で設定することは、
つまりmicroSDHC上にファイルを置くだけで無線LANの設定をすることは技術上可能です。
ですが、それはおおよそプログラミングに相当する行為ですので、
junさんの技量次第です。
方針としてはPQIの中でWebサーバが起動するのを待ち、
起動を確認したらwgetコマンドの–postdataでWebからの設定操作をエミュレート、
しかる後に再起動するというものになります。
一度設定を終えたら、設定用のファイルをリネームするなどで毎回設定されてしまわないようにします。
2013年1月19日 4:09 PM
説明不足ですみません。私はPICやAVRのマイコンとPC間でデータの送受信がしたくてこのページを検索で見つけてきたのですが、やりたいことはマイコンでPQI Air CardのmicroSDHCにデータを保存しておいてPQI Air CardのWiFi機能でPCと接続してデータ受信出来たらいいなと思っているのですが、PQI Air Cardが無線LANに接続できないことには何もできないので、こちらの記事を読んだところデジカメからしか無線LANの設定はできないのかな?と思い質問しました。PQI Air Cardは購入後初期状態でご紹介の方法で電源をつなげば無線ルータに勝手に接続してくれてブラウザから設定できるということでしょうか?PQI Air Cardの知識が全くないのですが(ここで初めて知りました)希望としては対応デジカメは持っていなし使い方が違うので、無線ルータに接続してくれてLinuxサーバみたいに動いてくれてスクリプトも自由に動かせるといいなと思っているのですが・・・どのようなものなのでしょうか?
moyashi より:
2013年1月19日 6:10 PM
工場出荷時のオープンネットワークで十分なら設定する必要はありません。
デジカメに入れて電源を入れれば無線LANのアクセスポイントが見えるようになります。
ただ、マイコンに接続する場合は、PQI Air Cardに3.3Vを供給するだけでは動きません。
「CMD0,ACMD41と思われる初期化コマンド」をPIC、AVRから発行する必要があります。
https://twitter.com/lynxeyed_black/statuses/261782427201044480
あとは恐らくPQI Air CardはSPIモードでは使えないので、
FATを扱えるライブラリ経由で操作する必要があると思います。
マイコンからPQI Air Cardに「CMD0,ACMD41と思われる初期化コマンド」を発行して、
起動するところまで持っていくのは、ご自身で手法を模索するほかないかと思います。
Wi-Fiの設定はPQI Air Cardの不揮発性メモリに保存されるので、
動的に設定を変える必要性が無ければ、マイコンから操作できるかどうかを気にする必要はありません。
デジカメ等で普通に設定した後でマイコンに差し替えればいいのです。
PQI Air Card上でのスクリプト云々については、このページにある情報、そして以下のページを手がかりにやってください。
http://hitoriblog.com/?p=14505
2013年3月16日 2:58 AM
はじめまして。@tetsu_kobaさんのツイートで見て来ました。さっそくポチりました。明日はダイソー巡りしますw
moyashi より:
2013年3月16日 5:13 AM
ありがとうございます。
ダイソーのリーダーはダークホースですね。
2013年3月30日 4:25 PM
上記コメント、もしかしたら当方の勘違いでシェルスクリプトでシンボリックリンクが張れて無かったかもしれないです。どうも、上記のアプレット一覧は純正のようでした。お騒がせして申し訳ありません。
最終的にはDPOFで電源オンオフをやらずにftp転送と常時フォルダ監視でのリアルタイムビューアによるftp転送を考えています。ちょっと試行錯誤してまた頑張ってみます。
2013年4月4日 5:00 PM
貴殿の記事を参考にさせて頂き、とりあえずfttputを使ったBusyBox内のシェルスクリプトのみでカメラ側のDPOFを利用したファイルアップロードが可能になりました。
もし必要であればヘタクソなコードでは御座いますが挙げさせていただきます。
現在、まだ動的にftpサーバーのIPアドレスを得る事が出来ていませんが、それが出来てしまえばcrontabで回す事で最小1分間隔でDPOFファイルを検索し存在した場合転送シェルを回す事が可能だと思います。
大変参考になりました。有り難う御座いました。
fujiaya より:
2013年4月6日 2:24 AM
USBカードリーダーですが、ローソンストア100で販売されている「来邦工業」製のSDカードリーダーでもUSB電源アダプタでの単体動作が確認できました。参考になれば。
moyashi より:
2013年4月6日 3:10 AM
情報ありがとうございます
2013年4月24日 8:38 AM
Eye-Fiが遅くてゲンナリしていたところ、
こちらのサイトにたどり着きました。
私はそちらのような知識と経験がなく、
はっきりいってサッパリわからないのですが、
ご指導いただけると大変助かります(汗)
同時記録のRAW+JPEGで撮影してJPEGだけを
モバイル端末に即アップロードするということを
モバイルルーターとEye-Fiでおこなっていました。
…しかし不安定なうえに転送があまりに遅いので、
どうにかならないものかとヘボな私なりに調べて
みると、PQIが速いよ!ということでした。
とはいえ、ど素人の私が理解してどうにか出来る
器量も度量もないので、
お助けいただけますでしょうか。
iOSのShuttersnitchを利用しています。
Flucardを購入してみたのですが、
同時記録で撮影後、最小サイズ&高圧縮JPEGだけを
FTPで転送する方法を試してみました。
Flucardに搭載されている機能です。
一枚あたり30秒かかりました。
…お、遅い。これをPQIで行うと速くなるので
しょうか。期待は胸膨らみますが、
どうやって良いのかサッパリわかりません。
お忙しいところ恐縮ですが、ご教授いただけると
大変助かります。よろしくお願いします。
moyashi より:
2013年4月24日 2:14 PM
こちらで紹介しているのはDPOFで選んだ写真をftpで送るというスクリプトだけですが、
30秒はかからないと思いますよ。
撮影した端からJPEGをftp送信するものについては書いてません。
できなくはないと思いますが、それについては新しくスクリプトを書かないとなりませんね。
2013年4月24日 4:58 PM
コメントありがとうございます。
新規に書かないといけないのですね。
わたしが当然書けるわけもないので、
何かほかの道を探してみます。
重ね重ねですが、ありがとうございました!
2013年6月15日 4:09 PM
こちらのサイトが非常に参考になったのでお礼もかねてシリアルで引き出したデータを置いておきます。
DPOFが生成されてない状態。
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
カメラでDPOFを生成されると以下のコマンドを吐き出す。
# (0>4)(4>0)get_Kcard_app cmd 6
umount(unmount後、すぐにマウントされている模様↓)
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:16 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
# rm /mnt/sd/MISC/AUTPRINT.MRK
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
(再度、DPOFをカメラ本体で生成)
# (0>4)(4>0)get_Kcard_app cmd 6
# ls -all /mnt/sd/MISC
drwxr-xr-x 2 0 0 32768 Jan 1 00:20 .
drwxr-xr-x 7 0 0 32768 Jan 1 1970 ..
-rwxr-xr-x 1 0 0 1393 Jun 15 2012 AUTPRINT.MRK
このような感じでカメラ側からSDにアクセスがあるとkcard_cmdがcallされています。perlなのかJavaなのかまではまだ調べてはいませんが。
以下はシャッター切った時のコマンド吐き出しです。
(0>4)(4>5)(5>0)get_Kcard_app cmd 7
DPOFでの転送は当方はスクリプトで処理していますが、生成をls叩いて監視してDPOFが生成されたタイミングで転送するものと、リアルタイム転送と両方を行なっています。
重ね重ね、貴殿のサイトが参考になりました。ありがとう御座います。
moyashi より:
2013年6月15日 4:30 PM
おお!これは興味深い!
しかし、殻割りしてUEWで引き出してカメラ内で動かしたとかでしょうか?
2013年6月15日 11:22 PM
3つ買って1つ加工失敗してボード割っちゃいましたけどもw
ずーっと遊んでUSB-SDホルダに突っこんでウニャウニャやってたんですが、そーいやカメラに突っこんで実挙動みてないやと思いやってみました。
今の所、カメラ側に何かエコー返さないと?カメラのDPOF指定がftp転送後にAUTPRINT.MRKをrm-fしても指定が外れていませんが(DPOFのI/F仕様書見たいんですが、見れなくてorz)、一度全解除してから新たに指定しなおすと、また転送が始まります。私は、なるべく軽くしたかったのと、GNUに引っかからない範囲で公開したかったので、全てシェルスクリプトで処理してます。
initramfs3を解体してprogram.binをバイナリ編集すれば解凍する前のデータ(initramfs3)が3MB以上でもOKなんですが、GNU的にそこがハードルですorz
今の使い方は一度initramfs3をバラして必要な分だけビルドしたbusyboxの追加とshの追加をrcSを変更して、カメラ側でフォーマットしても自動生成出来るようにしてカメラで利用しています。
シリアルは38400-N-8-1で接続できます。私はFT-2303でやっていますが普通に繋がりますね。
このサイトは本当に為になりました。ありがとう御座います。
2013年6月15日 11:26 PM
すいません、編集できないので追記で。
SDへのアクセスは基本、シャッターを切った時とか書きこまれた時に上のようなコマンドが返されていますが、カメラ側でプロテクト(画像の消去プロテクト)をかけた場合のパーミッションは、シャッターを切ってしまえばunmountされるのでパーミッション変更が反映されます。
今は、そのパーミッション変更を使ってリアルタイム転送を作っている最中です。Linuxカーネル的にはinotifyをサポートしているVerの筈なのですが、削られているようでカーネルが見つからないと返されてしまうので、カーネル突っ込んだビルドまで出来れば終了かなと思っています。
何かヒントにして頂ければ幸いです。
長文すいませんでした。
moyashi より:
2013年6月16日 12:58 AM
僕もリアルタイムで何かというのは考えていて、ポーリングでチェックかけてタイムスタンプでソートして
前回チェック時の記録と比較して判定するしかないのかなと思っていたので、
大変参考になりました。いやー、こんな濃い話が聞けるとは。ブログは書いておくものですね。
NEX7さんはTwitterとかブログやってらっしゃらないんですか?
2013年6月16日 1:49 AM
メールアドレスにG+のURLを貼りつけておきました。ツイッターはオバカな事ばかりつぶやいているのでw
G+の方ではAIrCardのことを貼りつけていたりします。(たぶん、相当しつこくやってたので、20投稿位はあるかもですw)
ツイッターから知り合いになった方が、組み込み系の本物のスペシャリストだったので、その方の助言も貰いながら遊んでいます♪
G+はサークル申請?ですかね?頂けたらすぐに承認しますので見れると思います。
実の所、組み込み系をこんなに触るのは初めてでして、アドバイス頂ければ嬉しいです♪
トカゲのテレパシー より:
2013年6月28日 1:51 AM
(古い記事にコメントつけてすみません!)
すばらしい良記事でした。
「wifiつきの極小webサーバー」を自作しようとしていて、
こちら拝見させて頂いてめちゃくちゃ参考になりました。
ありがとうございます。
シェルスクリプトも記事に書かれている通りに記述して、
無事/wwwに放りこんだhtmlファイルをスマフォから
(PQIのwifiにつないだうえで)覗きにいけるようになりました。
覗きに行く時に、192.168.1.1/hoge/index.html
とブラウザに入力するわけですが、
これ入力せずにPQIのwifi(単に親機として
インターネット関係なくwifi飛ばしている状態)につないだだけで、
/wwwにあるページを表示させることとかってできたりするでしょうか。。
イメージとしては街のwifiアクセススポットに
つないでブラウザ立ち上げると、
強制的にログイン画面出ると思うのですが、
気が向かれたらお知恵拝借頂けると幸いです。
よろしくお願い致します。
moyashi より:
2013年6月28日 2:03 PM
ちょっと違いますがここで紹介しているスクリプトはPQI Air CardがiPhoneにテザリング子機としてぶらさがった瞬間に
Twitterのプッシュ通知を送るようにしているので、間接的にそんなようなことができています。
http://hitoriblog.com/?p=14505
その逆で、PQI Air CardのAPにつないだ瞬間Twitterのプッシュ通知をというのは、
インターネットにつながらなくなってしまうので無理ですもんね。
ログインダイアログを出すようにする方法というのはちょっと分かりません。
接続先のAPのMACアドレスないしはSSIDをチェックして、設定のものだった場合に強制的に所定のURLを開く。接続先のAPが変わるか無くなったら再度待機開始、というJailbreak Tweakはできそうですが、必要とする人も少ないでしょうし、自分は作る動機がありません。
2014年3月11日 6:26 PM
USBカードリーダー 105円
USB電源(コンセントに接続するタイプ)201円(OutPut 5V 1000mA)
で揃う時代ですからね。
2014年3月11日 6:30 PM
なんだか、dstributed.netの計算用に手軽でいい感じですね。
2016年12月1日 5:47 PM
スマホにUSB接続して、外部接続の無線LAN子機 として使えませんか?ドライバが必要か・・・
moyashi より:
2016年12月2日 11:38 PM
残念ながら、その接続は無理ですね。
2017年1月11日 12:05 AM
今更ですけどcurlコマンドがほしいですね….
moyashi より:
2017年1月11日 1:00 AM
rubyで何とかしてみては http://www.boenkyo.com/archives/2042
moyashi にコメントする コメントをキャンセル
メールアドレスが公開されることはありません。
新しいコメントをメールで通知
新しい投稿をメールで受け取る
email confirm*
日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)
今話題のCrossOver Macを使ってOS X上で秀丸エディタを動かそう
Evernote 5パブリックベータ版が公開!アップデート方法を紹介
プッシュ通知を購読(Push7)
新規口座開設+諸条件で最大30,000円相当贈呈
デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方