サラリーに戻ってからというもの、特段新しい知識にありつく事もの無く、
ただ自分の引き出しを開けるだけでしたが、
運営店舗のレジシステムとのやり取りにと思い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の間違った使い方
上記の主様のお陰で簡単に出来ました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 | #!/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で。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/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送信。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //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送信。
1 | $hoge = file_get_contents ( $url , false, $options ); |
実際はここの返り値を使って、次の実行に繋げたりしてる。
サーバー側
1 2 3 4 5 6 7 8 9 10 | 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。
色々と想像を膨らませられる人なら、相当面白いデジガジェかも知れない。
ではでは