*当サイトのリンクにはAmazonアソシエイトやアフィリエイトリンクが含まれております。

PQI Air Card をPHPで便利に使う

サラリーに戻ってからというもの、特段新しい知識にありつく事もの無く、
ただ自分の引き出しを開けるだけでしたが、
運営店舗のレジシステムとのやり取りにと思い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。

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

ではでは


おすすめのコンテンツ

広告

コメントを残す

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.