PQI Air Card をPHPで便利に使う

サラリーに戻ってからというもの、特段新しい知識にありつく事もの無く、
ただ自分の引き出しを開けるだけでしたが、
運営店舗のレジシステムとのやり取りにと思いWIFI内蔵のSDカードを弄ってみる事にしました。

広告

linux搭載のPQI Air Card

Wi-Fi内蔵SDカードアダプタ 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。

色々と想像を膨らませられる人なら、相当面白いデジガジェかも知れない。

ではでは


おすすめのコンテンツ

広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください