サラリーに戻ってからというもの、特段新しい知識にありつく事もの無く、
ただ自分の引き出しを開けるだけでしたが、
運営店舗のレジシステムとのやり取りにと思い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。
色々と想像を膨らませられる人なら、相当面白いデジガジェかも知れない。
ではでは

