サラリーに戻ってからというもの、特段新しい知識にありつく事もの無く、
ただ自分の引き出しを開けるだけでしたが、
運営店舗のレジシステムとのやり取りにと思いWIFI内蔵のSDカードを弄ってみる事にしました。
linux搭載のPQI Air Card
Wi-Fi内蔵SDカードアダプタ PQI Air Card。
PQI Air CardこのSDアダプタ、個人的にも持ってるんですが
つい最近までlinux搭載で動いてたとは知りませんでした。
という事で先駆者の皆様のブログを参考にしながら、私も挑戦です。
ですが、ワタクシ・・・・
Pearlやrubyは書けませぬ・・・。
という事でいつも通りPHPメインで行く事に。
まずはPHPやらrubyが使えるように強化。
デジカメ内部でRubyを動かす狂気!無線LAN内蔵SDカードアダプタPQI Air Cardの間違った使い方
上記の主様のお陰で簡単に出来ました。
#!/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 sleep 5 /usr/bin/w2
SSHで接続して弄れるように、一部のコメントアウトは消してます。
勿論、子機で接続するのでIPアドレスが分からないとSSH出来ないので、それはrubyで。
#!/mnt/sd/DCIM/122_TREK/usr/bin/ruby # -*- coding: utf-8 -*- require 'socket' def my_address udp = UDPSocket.new udp.connect("128.0.0.0", 7) adrs = Socket.unpack_sockaddr_in(udp.getsockname)[1] udp.close adrs end p my_address
PHPでも試したんだけど、取得出来なかった・・・。
なのでrubyを使う事にしてipget.rbで↑を保存。
このままメールとかで送ってしまえば良いんだけど、やりたい事はレジデータを離れたトコロから取得。
そして最終的にはデータベースに取り込んで、WEBショップの在庫との自動連動&売上の自動計算等。
という事で、PQI側と管理してるサーバー側にPHPをセットする事にしました。
PQI Air Card側
PQI Air Card側からは、必要なデータを会社管理のサーバーにPOST送信。
//IPアドレス取得の為にrubyを実行 $ipadrss = shell_exec('/mnt/sd/ipget.rb'); $url = 'ポスト送信するアドレス'; $data = array( 'ipdata' => $ipadrss ); $data = http_build_query($data); $header = array( "Content-Type: application/x-www-form-urlencoded", "Content-Length: ".strlen($data) ); $options = array('http' => array( 'method' => 'POST', 'header' => implode("\r\n", $header), 'content' => $data, )); $options = stream_context_create($options); $hoge = file_get_contents($url, false, $options);
ひとまずSSHするにもIPアドレスが知りたいので、ipget.rbを実行。
その後は管理してるサーバーにIPアドレスをPOST送信。
$hoge = file_get_contents($url, false, $options);
実際はここの返り値を使って、次の実行に繋げたりしてる。
サーバー側
if ( isset($_POST["ipdata"]) ) { $ipd = $_POST["ipdata"]; $to = "受信側のアドレス"; $subject = "PQIのIPアドレス"; $ipmessage = "PQIのIPアドレスは".$ipd; $headers = "From: 送信側のアドレス"; mail($to, $subject, $ipmessage, $headers); }
サーバー側は受け取ったデータをメール送信なり、データとして保存するなり好きにすれば良い。
今回のケースではCSVデータを管理サーバー側に保存して、離れた店から自動で転送されるようにした。
超便利なんですけどPQI Air Card。
色々と想像を膨らませられる人なら、相当面白いデジガジェかも知れない。
ではでは