Raspberry Piで実行するVPN上のWordPress

Raspberry Piの良いところ、Linuxが扱えることができるマイコンであるという点ですかね。さて、このRaspberry Piを使ってVPN上でWordPressを運用させると言うことは、本人もしくはVPNに参加する人間のみが編集、閲覧することが出来るサイトです。一種のクローズドサイトと呼ばれるものです。自分専用の忘備録であったり、日記であったり、仲間内での共同サイトであったりとVPNという閉鎖的回線を用いることによってプライバシが担保されるものです。簡易的な様子を図示しました。実際にはもっと複雑な処理をしていますが省いています。

vision_1.png
VPNを使えばどこでもWordPressを見ることができる。

因みに今回の設定は外部公開に向きませんのでご留意下さい(ポート開放等の公開行為)。あくまでもVPN上での運用が大前提です。

#1:Raspberry Piのセットアップ

Raspberry Piをセットアップする必要があります。筆者自身もはじめからセットアップを行いました。

#1-1:Raspberry Piに必要なイメージをダウンロード

Raspberry Piに必要なイメージとして、Raspbianを使います。今回筆者が使ったものはRaspbian Jessie LiteというものでRaspbian Jessie With Pixelではありません。Raspbian Jessie LiteはGUIモードがなくCUIモードのみとなっています。しかし、結局のところWordPressというWEB GUIを使用するので何ら問題ありません。また、個人の好みにもよるもので、With Pixelを選択してもLiteを選択しても動作には変わりありませんが、容量を少なく済ませたいのであればLiteをおすすめします。公式サイトよりダウンロードすることができます。

項目
OS Raspbian Jessie Lite
ヴァージョン November 2016
リリース日 2016年11月25日
カーネルバージョン 4.4

#1-2:ダウンロードしたイメージをMicro SDに書き込む

ダウンロードしたファイルを解凍(展開)し、Win32 Disk Imagerで対象のMicro SDに書き込む作業を行って下さい。Win32 Disk ImagerはOSDNよりダウンロードすることができます。詳しい書き込み方法はこちらを参考にして下さい。

#1-3:初期起動の設定

初期起動時、SSHはデフォルトで有効でしたが今回リリースされたヴァージョンではデフォルトでSSHが無効になっているため初期段階からSSHでログインすることができませんでした。有効にするには下記のコマンドを入力し、[5]=>[P5]の順に移動します。

$ sudo raspi-config

最後に自分自身のIPアドレスを確認します。有線LANの場合、eth0を参照し、無線LANの場合、wlan0を参照して下さい。割り当てられたIPアドレスはinet アドレスにて確認することができます。筆者の場合ですと、192.168.11.14に今回割り当てられました。

$ ifconfig
eth0 Link encap:イーサネット ハードウェアアドレス b8:27:eb:05:fc:33
     inetアドレス:192.168.11.14 ブロードキャスト:192.168.11.255 マスク:255.255.255.0

Windowsパソコンで操作する場合はTera TermでSSH接続を行います。Tera Termはこちらでダウンロードすることができます。先程取得したIPアドレスを入力して、ユーザ名とパスワードを入力して下さい。デフォルトのユーザ・パスワードは下記の表のとおりです。

項目
ユーザ名 pi
パスワード raspberry

ログインが完了したら、次にRaspbianのアップデートを行います。

$ sudo apt-get update
$ sudo apt-get upgrade

日本語化とタイムゾーンの変更を行います。下記のコマンドを実行し、必要な処理を行います。[2]よりpiのパスワードを変更して下さい。次に[4]=>[I1]より[en_GB.UTF-8 UTF-8]と[ja_JP.EUC-JP EUC-JP]と[ja_JP.UTF-8 UTF-8]を選択し、デフォルトで使用するロケールを[ja_JP.UTF-8]として下さい。最後に[4]=>[I2]を選択して[Asia]=>[Tokyo]と進んで下さい。

$ sudo raspi-config

次に日本語フォント等を導入します。

$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

vimエディタを追加(viが必要な場合のみ、nanoでも対応可能)

$ sudo apt-get install vim

以上を終えたら、下記のコマンドで再起動して下さい。

$ sudo reboot

#2:VPNの導入

VPNとして使うのはHamachiと呼ばれるものでSoftEtherよりも導入が簡単であり5台まで無料というメリットがあります。また、最近ではRaspberry Piへの導入が難なくできるのでおすすめであります。

#2-1:Hamachiへの登録

VPN.net – Hamachi by LogMeInにて登録を行います。

#2-2:クライアントへダウンロード&インストール

指示に従ってダウンロードを行って下さい。筆者の場合、Windowsにインストールしました。追加でiPhoneにもHamachiへ参加させました。

#2-3:Raspberry PiをHamachi VPNに参加させる

HamachiをRaspberry Pi (Raspbian)にインストールするのがとても簡単になりました。以前であればややこしい設定が必要でしたが、最近では自動起動まで勝手にやってくれます。Raspberry Piの操作に戻り、実際にHamachiをRaspberry Piに追加します。また、最新のヴァージョンはこちらで確認できます。選択する場合、『ARM HF version (BETA) *.deb』を選択して下さい。

$ wget https://www.vpn.net/installers/logmein-hamachi_2.1.0.174-1_armhf.deb
$ sudo dpkg -i logmein-hamachi_2.1.0.174-1_armhf.deb

次に参加要求を行います。最後のsudo hamachi joinの部分ですが、自動承認を選択した場合実行して下さい。通常であれば最後のsudo hamachi joinを実行せず、Hamachiの設定画面より『参加要求』から対象であるRaspberry Piを選択し、承認して下さい。

$ sudo hamachi login
$ sudo hamachi attach [Your Hamachi Email Address]
$ sudo hamachi set-nick [Whatever Nickname You Make]
$ sudo hamachi join [Network ID] [Password]

これでVPNへの参加を完了することができました。

#3:サイトに必要な条件を整える

Raspberry PiをウェブサーバとするにはApacheやPHPを導入する必要があります。これがなければ表示することが出来ません。

#3-1:Apache2を導入する

ApacheはHTMLを表示するためのものです。下記のコマンドより導入します。

$ sudo apt-get install apache2

先程ifconfigで調べた自身のIPアドレスをブラウザに入力すると次の表示がされます。

2016-12-24
It works!

#3-2:PHP5の導入

PHP5を導入する必要があります。下記のコマンドより導入します。

$ sudo aptitude install php5

#3-3:MySQLの導入

MySQLを導入します。途中でMySQLに設定するパスワードを聞かれますので、設定して下さい。ここでは例として”raspass”とします。二度聞かれるのでどちらも同じパスワードを入力して下さい。

$ sudo apt-get install mysql-server php5-mysql

#3-4:データベースの作成

実際に運用させるためのデータベースを作成します。今回は”wordpress”というデータベースを作成します。因みにMySQLにログインするには例として”mysql -uroot -praspass”で入ることができます。詳しく説明すると”mysql -u[User Name] -p[Password]”となっています。今回はwordpressというデータベースを作成します。

$ mysql -uroot -praspass
mysql> CREATE DATABASE wordpress;
mysql> exit

#3-5:phpMyAdminの導入

phpMyAdminを導入します。こちらも途中パスワードを聞かれますので問題なければ先程と同じパスワードを使います。嫌だと思う場合は、phpMyAdminで聞かれるパスワードのみを変え、2度目に同じものを入力して下さい。

$ sudo apt-get install phpmyadmin

#4:WordPressの導入

いよいよWordPressの導入です。日本語版を使って導入していきたいと思います。

#4-1:WordPress 4.7 日本語版をダウンロード

英語版が良いとお望みでしたら英語版もあるので参照するかと。ここでは日本語版について解説します。また、最新のWordPressについてはこちらから確認することが出来ます。

$ wget https://ja.wordpress.org/wordpress-4.7-ja.zip
$ unzip wordpress-4.7-ja.zip

#4-2:Apache上に配置する

Apache上でWordPressを再現する必要があるため、移動します。

$ sudo cp -r wordpress /var/www/html/wordpress

#4-3:権限問題の解決

どうしても生じるのが権限問題です。このまま実行してもwp-config.phpを手動で変更する必要がありますが、www-dataに権限を移行することによって今後生じる面倒事が無くなります。

$ sudo chown -R www-data:www-data /var/www/html/wordpress

#4-4:WEB上でWordPressの設定を行う

先程のifconfig IPアドレス値をブラウザ上に入力し、設定していきます。今回の場合ですと、私の場合、http://192.168.11.14/wordpressとなっています。環境が違うわけですからhttp://192.168.xxx.xxx/wordpressです。

2016-12-24 (1).png
正常表示

次に設定画面に先程設定したデータベース名などを入力していきます。データベースであるMySQLのパスワードは例として”raspass”を使用していますのでご自身が設定したパスワードを入力して下さい。その他の設定はそのままで十分です。

2016-12-24 (3).png
必要事項の入力

正しい値が入力されると以下の画面が出てきます。インストールの実行を行います。

2016-12-24 (5).png
正常にデータベースへ接続完了

 #4-5:サイトの基本情報の入力

サイトタイトルやユーザ名、パスワード、メールアドレスなどご自身のお好きな設定で。ここでは例を挙げているだけです。一応、公開はしませんが『検索エンジンがサイトをインデックスしないようにする』にチェックマークをつけましょう。

2016-12-24 (6).png
サイト基本情報の指定

#4-6:ログインをして動作を確認する

実際にログインを行って動作を確認して下さい。

2016-12-24 (7).png
管理画面
2016-12-24 (8).png
実際のサイト画面

#5:VPN上での改善

VPN上で表示するとレイアウトが崩れて正しく表示されない現象が発生します。これはWordPress上のアドレスがhttp://192.168.xxx.xxxであってVPNのアドレスであるhttp://25.xxx.xxx.xxxに対応していない為です。もし、正しく表示されているとしても、http://192.168.xxx.xxxに転送されているだけかもしれません。

因みに、これをVPN上のアドレスに対応させるだけでは不十分で次はローカルIP上からアクセス出来なくなります。

つまりIPアドレスである、http://192.168.xxx.xxx及びhttp://25.xxx.xxx.xxx (とhttp://raspberry.local)、に対応する必要があります。つまりWordPressのURLであるIPアドレスが2つ以上、つまり能動的(可変的)に動作する必要があります。

IP.png
処理のイメージ

#5-1:wp-config.phpの編集

wp-config.phpを編集し、サイトのURLを優先的に決定させ、能動的(可変的)にURLを変更可能にする設定を行います。ファイルの編集を行って下記の行を追加します。基本的に指定ありませんが(91行以下から制限あり)、データベースの照合順序[define(‘DB_COLLATE’, ”);](44行目)の下に追加するのが順当だと思います。

$ sudo vi /var/www/html/wordpress/wp-config.php
/** 動的URLに対応するめの設定 */
define('WP_SITEURL', 'http://' .$_SERVER['HTTP_HOST']. '/wordpress');
define('WP_HOME', 'http://' .$_SERVER['HTTP_HOST']. '/wordpress');

#5-2:記事本文中の画像等のURLを能動的(可変的)なものにする

wp-config.phpの設定のみでは不十分で、本文中の画像等のURLは変化しません。記事中で対応させるために『Insert PHP』というプラグインを新規追加します。[insert_php]XXXXXXX[/insert_php]で囲まれた範囲はphpが実行されます。つまりHTTP_HOSTが出力されるPHPを挿入すると可変的なURLにもメディアが対応することができます。[insert_php]echo $_SERVER[‘HTTP_HOST’];[/insert_php]をhttp://192.168.xxx.xxxの部分に置換することで対応することができます。IMGのURL部分に置換することで画像の能動的(可変的)な改善が得られます。

現在のアクセスURLは『http://[insert_php]echo $_SERVER['HTTP_HOST'];[/insert_php]』です。

#6:WordPress(PHP)のメディアアップロード容量を増やす

通常であれば、2MBですがこれは少ないのでメディアの許容アップロード値を増加させるべく対応させます。php.iniの変更を行います。

#6-1:php.iniの編集

$ sudo vi /etc/php5/apache2/php.ini
#393行
memory_limit = 128M
#660行
post_max_size = 80M
#820行
upload_max_filesize = 60M

#6-2:.htaccessの編集

次に.htaccessを編集します。以下を追加します。

$ sudo vi /var/www/html/wordpress/.htaccess
php_value memory_limit 128M
php_value post_max_size 80M
php_value upload_max_filesize 60M

#7:あとがき

最後に再起動を済ませると良いかもしれませんね。

$ sudo reboot

#7-0:

さて、ここまでどうでしたか?筆者も実行のみだと1時間くらいで終わりました。しかし、記事にするとなると3倍以上の時間がかかります。意外と大変…。でも、自分の忘備録ともなりますし、まぁ多分将来約に立つのかも。なにかエラー等が出ましたらコメント欄もしくは、お問い合わせページより報告お願いします。(クリスマスになに書いてるんだろ…。)

以上

本日の筆者

こんにちは、筆者です。12月は書く記事もなく終わりそうなのでくだらないことを記事にします。

筆者の本日の昼飯

Amazonのセールにて大量にポテチを購入した筆者。昼飯にはポテチは欠かせないのです。それとからしマヨネーズをつけて食べるのがマイブーム。

からしマヨネーズとコンソメポテトチップス
奇跡のコラボレーション

AMD Athlon 5350でVMware

1年前くらいに筆者はAMDのAthlon 5350という省電力かつ安価なCPUを購入しました。作っていつも満足している筆者。今回は5350を使ってVMwareでUbuntu Mateを動作させたいと思います。そして動作の感想などを報告したいと思います。

インストールに成功

解像度の調整やアップデートをしてきのこタイムをFireFoxでみてみました。動作も問題なく比較的安定していました。これはVMwareだからかもしれませんね!それを加味しても5350で仮想を動かせるとはかなりコスパの良いCPUといえます。ヌルヌル動いてくれました。

実際にサイトを観てみた

 

こんな感じで今日も筆者はダラダラ過ごしています。

以上

L-02Cの設定法(初期セットアップ)

どうも、こんにちは筆者です。オークションで競り落としたL-02Cが到着したので使い倒していきたいと思います!送料込みで1,800円くらいでした。

オークションで競り落としたL-02C

さてここでは自分への備忘録としてセットアップ方法を紹介していきたいと思います。

1 SIMをL-02Cにセットする

SIMの使い方。

①SIMサイズの確認

標準SIMであればそのまま使うことができますが、nano SIMで使うのであればアダプターがあります。

SIM下駄にセット

使ったSIM下駄
Amazon.co.jp – Ciscle Nano SIM MicroSIM 変換アダプター 4点セット iPhone5S/5C/5/4S/4/3GS/3 xperia スマホ 拡張 便利 micro 全部入り 交換 代替 (ブラック)

②SIMをL-02Cにセットする

セットに若干手間取りましたが問題なく完了。

セット完了

2 ドライバー等のインストール

L-02Cを使うにあたって接続ソフトが必要となります。これを使わないと使い物になりません。NTT Docomoさんが配布しているドライバーを使いましょう。地味にWindows 10に対応しているところが好きです。

注意:L-02Cを接続するとCDドライブとして開いてしまう場合があります。この状態ではモデムとして使用することができません。『ハードウェアを安全に取り外してメディアを取り出す』を実行することによって正しく使うことができます。この問題の解消を図るために最後らへんに説明します。

①ドライバーをダウンロードする

初期設定であれば『L-02C接続ソフト(ドライバーを含む)』をダウンロードすればよいかと。
こちらからダウンロード可能:L-02C | お客様サポート | NTTドコモ

②インストールを行う

ZIPから解凍してインストールを行います。さすが大手通信会社とだけあってインストール方法がわかりやすいので詳しいことは省略。

③接続先を変更

インストールが完了したならば、デスクトップ上に作成された『L-02C 接続ソフト』を起動させます。デフォルト状態なら”mopera.net”となってSIMによっては接続されません。ちなみに私が使っているSIMはDMM SIMなので初期起動時にはもちろん接続できませんでした。

失敗した…。

ここでAPN設定を行います。設定に移動(歯車マークを押して)、プロファイル設定を押します。そしてプロバイダから指定されたAPNを導入します。

DMMに接続する場合のAPN設定

ホームに戻り接続を押しますと無事に接続が完了するというわけです。お疲れ様でした。

3 ファームウェアアップデート

最新版である10eが安定しているのでこちらにアップデートします。アップデート中に止まってしまう問題などあるそうですが、筆者の環境ではそのようなことはありませんでした。ちなみにWindows 10 64bitです。

①ファームアップデートのためのソフトをダウンロード

ファームウェアアップデートをするためソフトウェアをダウンロードする必要があります。
こちらからダウンロード可能:L-02Cの製品アップデート情報 | お客様サポート | NTTドコモ

②ダウンロードしたファームアップデートを起動

これも簡単なので省略。ちなみにオークションで買ったこのL-02Cはどうやらバージョン “L-02C_V10d”のようです。

アップデート中
アップデート中ランプはフシギダネ緑色となる
これでL-02C_V10eになった。

あとは指示に従うだけで終わりとなります!

4 CDドライブとして認識されてしまう問題解消

これが結構厄介なのだッ!初期セットアップのためにドライバー等が入ったものがCDドライブとして認識されてしまう。仮想ドライブとか余計なお世話なのである。バージョン10eでもそれは変わらない。さてどうしたものか!実はATコマンドが使えるのである!そこで仮想ドライブが勝手に開くのを止める。

①COMポートの把握

COMポートを最初に探す必要があります。『コンピューターの管理』と検索し、起動してください。

『コンピューターの管理』⇒『デバイスマネージャー』⇒『モデム』⇒『docomo L02C』⇒『プロパティ』
『モデム』でポートをチェックする。今回は『COM4』

②Tera Termを起動する

インストールしていない場合はTera Termをダウンロードしインストールしてください。Tera TermでATコマンドを送信することが可能です。先程確認したCOM4を選択します。

『COMポート』の選択

③ブロードキャストコマンドの送信

最初の端末で打ち込みたい気持ちはわかります!でもブロードキャストコマンドを使ってコマンドを送信します。『コントロール』より『ブロードキャストコマンド』を選択してください。

『コントロール』⇒『ブロードキャストコマンド』を選択

④ブロードキャストコマンドの操作

操作方法は難しくありません。以下のように設定します。

1:『リアルタイム』のチェックを外します。
2:『COM4 – Tera Term VT』を選択します。
3:手始めに『AT』と送信して確認しましょう。
4:『送信』を押します。

ATコマンドの送信

このように正常であれば『OK』という返り値が帰ってきます。

『OK』と返答される

ATZで初期化します。次に実際に仮想ドライブを停止するためのコマンドを打ち込みます。『AT%USBMODEM=0』とブロードキャストコマンド入力欄に打ち込みます。『[0] MODEM DRIVER』と『OK』と表示され無事完了です。

正常に完了するとこうなる。

最後にブロードキャストコマンドで『ATZ0』と入力して保存してください。

5 Windows 10の接続ツールでLTEに接続する

接続ツールはいいのだが!いちいち起動するのは面倒なのでWindowsで使用したい。その場合の設定です。

Windowsの設定を開くこと。『設定』⇒『ネットワークとインターネット』⇒『携帯電話』⇒『44010』⇒『詳細オプション』⇒『インターネットAPNの追加』で与えられたAPN設定値を入力して下さい。

DMMの場合のAPN設定
44010に接続完了

『44010』はドコモの表示です。

DMM SIM検証

こんにちは筆者です。DMM SIMを購入してみました。筆者にとって初めて契約したMVNO。なぜMVNOに契約したかというとL-02Cで遊ぶため契約したのです。Raspberry Piで使えたりPCでも使えたり色々面白いので。

なぜDMMなのか

なぜDMM SIMをチョイスしたかというと価格にあります。筆者が契約したプランは1GBプランで値段は480円とかなり低価格。一番安いライトプランは440円。ライトプランでも良かったのですが、1GBくらいあったほうがいいだろうということで1GBプランにしました。

DMM SIM各種データプランの比較 (データSIM)
参照:『DMM | 格安スマホのプランと月額料金』 確認2016/11/23

プラン 価格
ライト 440円
1GB 480円
2GB 770円
3GB 850円
5GB 1,210円
7GB 1,860円
8GB 1,980円
10GB 2,190円
15GB 3,600円
20GB 4,980円

ライト料金を差し引いた1GBあたりの価格

プラン 料金 – ライト料金  = 差額 1GBあたり
ライト 440円 – 440円 = 0円 N/A
1GB 480円 – 440円 = 40円 40円 ÷ 1GB = 40円
2GB  770円 – 440円 = 330円 330円 ÷ 2GB = 165円
3GB 850円 – 440円 = 410円 410円 ÷ 3GB = 136.7円
5GB 1,210円 – 440円 = 770円 770円 ÷ 5GB = 154円
7GB 1,860円 – 440円 = 1,420円 1,420円 ÷ 7GB = 202.9円
8GB 1,980円 – 440円 = 1,540円 1,540円 ÷ 8GB = 192.5円
10GB 2,190円 – 440円 = 1,750円 1,750円 ÷ 10GB = 175円
15GB 3,600円 – 440円 = 3,160円 3,160円 ÷ 15GB = 210.7円
20GB 4,980円 – 440円 = 4,540円 4,540円 ÷ 20GB = 227円

ライト料金を差し引いた1GBの料金で見ると1GBプランが一番安いことになります。まぁライフスタイルによって使用GB数は変わってくると思いますがね。ちなみにある人から聞いたものですが、ロケットモバイル SIMというものがあって200kbpsで298円の神プランなんてものもあります。こちらも検討してみては?1GBプランは590円なのでちょっと高い。200kbpsの使用を考えているなら断然ロケットモバイルがお得です。

DMMから契約すると事務手数料3,000円が取られてしまうのでAmazon.co.jpで購入しました。500円くらいで売っているのでこっちの方が安いです。

Amazon.co.jp – 【Amazon.co.jp限定】 [iPhone5~7 / Galaxy S6 / Xperia Z3~Z5 他対応] DMM mobile SIMカード データ通信専用 nanoSIM 月額440円~ DDN001

届いたので接続

Amazonから届いた。

パッケージ
nano SIM
SIM 変換アダプター

SIMのサイズがnanoなので変換アダプターが必要です。今回はテキトーに見繕ってきました。もっと安いのもあるので要検討。nano SIMはアダプターを使えばかなり汎用性が高くなります。SIMは返却するので加工ができないので基本的に『nano SIM + SIMアダプター』がおすすめとなります。

Amazon.co.jp – Ciscle Nano SIM MicroSIM 変換アダプター 4点セット iPhone5S/5C/5/4S/4/3GS/3 xperia スマホ 拡張 便利 micro 全部入り 交換 代替 (ブラック)

とりまL-02Cがまだ届いていないのでiPhoneで使ってみました。au版iPhone 6s Plusを使いました。無事に接続できました。iPhoneの場合はこちらDMM参照すれば大丈夫です。

接続を確認 バンド1

200kbpsの場合速度は?(随時追加予定)

200kbpsの速度は表にまとめときました。随時追加していく予定です。

計測日時 計測場所 Ping
(ms)
DL
速度
UP
速度
2016/11/23 16:43 青森県八戸市 89 0.21Mbps 0.28Mbps
2016/11/23 16:44 青森県八戸市 87 0.30Mbps 0.20Mbps
2016/11/23 16:45 青森県八戸市 96 0.23Mbps 0.31Mbps
2016/11/23 16:53 青森県八戸市 87 0.21Mbps 0.25Mbps
2016/11/23 19:06 青森県八戸市 61 0.24Mbps 0.30Mbps
※DL速度・・・ダウンロード速度、下がり速度
※UP速度・・・アップロード速度、上がり速度

DMM SIM、200kbpsでAbema.TV見れるのか?

最低画質で見てみましたが厳しかったです。200kbps環境下ではまともに見れないと思ったほうが良さそうですね。

AliExpressで頼んだものが届いたもの報告 #02

こんにちは筆者です。報告2日目です。iPhone関連のアクセサリーが思った以上に速く届くので嬉しいなーなんて思ってるところです。

トップバッターはMicro USBをMini USBに変換するアダプターです。1つで0.85 USDです。日本だと200~300円しちゃいます。結構お買い得だったので2つ買いました。

Micro USBをMini USBに変換するアダプタ

昨日に引き続きiPhoneのLightning Cableが届きました。PZOZというもので3つ買いました。グレーとシルバーでどちらも1.87 USDです。

PZOZ iPhone Lightning Cable
しっかりとした作りでした。
別アングル

充電とPCとの同期も確認しました。ちなみに筆者の使ってるiPhoneはiOS 10.1.1です。機種はiPhone 6s Plus。コスパいいですねこのケーブル。

次はXiaomiのイヤホン PISTON 4 (2016)です。19.92 USDで購入しました。中国で大手のXiaomiは品質がよく筆者が大好きなメーカーです。ちなみにXiaomiのイヤホンは中国国内で偽物が出回るほど人気の商品です。

しっかりとしたパッケージ
中身は取扱説明書、イヤーピース イヤホン本体
ケーブルには正規品か確認するQRコードがあります。

ちなみにこのQRコード読み取ってみると502 Bad Gatewayが発生します。

502 Bad Gateway

解決方法として中国のプロキシ(Proxy)を使うことによって正しく認証画面が表示されたことを確認できました。

最後に電池ボックスです。日本で買うとケッコー高いのです。こちらは1つ0.18 USDです。20個も買っちゃいました。

Battery Box

今日はこれくらいで報告終了。

報告以上

激安iPhonケーブルのレビュー

先程投稿した記事のiPhoneケーブルのレビューです。1mのライトニングケーブルでお値段は一本2.40 USDです。まぁ240円くらいと思って下さい。メーカーはUSAMSです。

iOS 10対応 USAMS 2.1A Lightning Cable
箱を空けると…ケーブル!
充電を確認

両面を刺してみました。結果として裏表問題なく充電することを確認しました。まぁおすすめですよ。ケーブルはそこそこしっかりしていました。

商品へのURLです。
AliExpress – For IPhone Cable IOS 10 9 USAMS 2.1A Fast Charging 1m 1.5m Flat Usb Charger Cable For iPhone 7 i6 iPhone 6 6s Cable

AliExpressで頼んだものが届いたもの報告 #01

2016/11/11にAliExpressでセールやっていましたよね。以前に注文報告したと思います。そして今日(2016/11/21)に届いたものを報告したいと思います。なんか最近届くのが速いような…!

超音波距離測定モジュール:HC-SR04

超音波で距離を測定するものです。これをRaspberryPiに接続して積雪計(積尺計)にしようと思います。ちなみに5つ入り4.08 USD (米ドル)でした。米ドル口座からクレジットで引く出しているのでレート換算はできませんが100円 – 110円くらいかな?日本円で買うとVISAの事務手数料が取られるのでおすすめですよ(笑)

熱収縮チューブ 5m:左から5mm 4mm 3mm 2mm 1mm

こちらは熱収縮チューブです。5mで大きさ5mm以外は0.99 USD、5mmが1.29 USDでした。こちらもかなり安い!

iPhoneケーブル

こちらはiPhoneケーブル。一本2.40 USDでした。かなりおっとくー。

これくらいかなー。

報告以上

DC-DC コンバータの購入

こんにちは筆者です。DC-DCコンバータを購入しましたので報告します。(報告するほどでもないのですが…。)ちなみに二種類買いました。まだ手元にないので使用報告は1ヶ月後くらいかな。

DC-DCコンバータ其の一

こちらは10個入りで2.75 USDなので1つあたり0.28 USDです。こちらは1セット買いました。

AliExpress – 10PCS DC 3V to 5V USB Output charger step up Power Module Mini DC-DC Boost Converter

項目 詳細
機能 DC-DC コンバータ
原産国 中国本土
出力タイプ USB出力
サイズ 24.0mm × 18.0mm
入力電圧 1.0V – 5.0V
出力電圧 5.1V – 5.2V
出力電流 1.0A – 1.5A
変換効率 最大 96%

DC-DCコンバータ其のニ

こちらは1個 0.44 USDです。こちらは7個かいました。

AliExpress – Free Shipping DC-DC USB Output charger step up Power Boost Module 0.9 – 5V to 5V 600MA USB Mobile Power Boost Board

項目 詳細
機能 DC-DC コンバータ
原産国 中国 (深セン市)
出力タイプ USB出力
サイズ 34.0mm × 16.2mm
入力電圧 0.9V – 5.0V
出力電圧 5.0V
出力電流  0.6A
変換効率 #####

これを使うとなにが出来るのか?

死にそうな電池を使ってスマホを充電できちゃったりするかもしれませんね。そこが楽しみなのです!まぁ電流等の不足が予想されそうですが…。

DC-DC.png
使用例

AliExpressで買ったもの

こんにちは筆者です。AliExpressでは11月11日に11.11セールを行っています。どうやら独身の日ということらしく、セールを行っているようです。日本ではポッキーの日ですが…。さて、筆者は何を買ったかというと電子部品を中心に購入しました。ちなみになんですが決済通過はUSDです。銀行に予めJPYをUSD(米ドル)になおしておくとVISAの事務手数料がかかりません。表の通過はUSD(米ドル)となっています。

番号 品名 個数 単価 合計
01 超音波距離測定モジュール HC-SR04 5セット 1 4.08 4.08
02 金属皮膜抵抗 600本 30種類 各20本 2 2.35 4.70
03 HC-SR04 ブラケット 5セット 1 1.90 1.90
04 LED 3mm 500ピース 赤・緑・黄・青・白 1 2.90 2.90
05 LED 5mm 940nm IR(赤外線) 100ピース 1 2.28 2.28
06 IR(赤外線) 受光器 10ピース 2 0.75 1.50
07 ピンヘッダー 2.54mm 10ピース 3 0.57 1.71
08 土壌センサモジュール 3 0.55 1.65
09 5V2A MicroUSBケーブル 120cm 3 1.78 5.34
10 MicroUSB OTG ケーブル 1 1.80 1.80
11 単3 電池ボックス 2本収納 10 0.25 2.50
12 結束バンド 3*100mm ブルー 100ピース 3 0.75 2.25
13 MicroUSB コネクタジャック メス 5ピン 10ピース 3 0.74 2.22
14 ダイオード詰め合わせ 100ピース 1 1.58 1.58
15 iPhone Lightning Cable 100cm 2 2.40 4.80
16 PZOZ iPhone Lightning Cable 200cm シルバー 2 1.87 3.74
17 PZOZ iPhone Lightning Cable 200cm グレー 1 1.87 1.87
18 Original Xiaomi ハイブリッドイヤホン Piston 4 1 19.92 19.92
19 ブレッドボード 820ポイント 3 1.47 4.41
20 Bastec iPhone Lightning Cable 1m ブラック 1 1.32 1.32
21 Bastec iPhone Lightning Cable 1m ローズゴールド 1 1.32 1.32
22 熱収縮チューブ 直径1mm 5m 1 0.99 0.99
23 熱収縮チューブ 直径2mm 5m 1 0.99 0.99
24 熱収縮チューブ 直径3mm 5m 1 0.99 0.99
25 熱収縮チューブ 直径4mm 5m 1 0.99 0.99
26 熱収縮チューブ 直径5mm 5m 1 1.29 1.29
27 単3 電池ボックス 1本収納 20 0.18 3.60
28 ブレッドボード 400ポイント 5 0.96 4.80
29 音声音検センサモジュール ※送料含みあり 4 0.44 2.09

以上です!結構買ったなーなんて。HAHAHA。

RaspberryPiと携帯回線網(+VPN)の死活監視プログラム

こんにちは、筆者です。RaspberryPiと携帯回線網の組み合わせは最強です。しかし、時々ですが携帯回線がダウンしてしまう場合があります。それの対策として死活監視プログラムの作成が必須となります。L-02Cのファームアップデートだけでは対処できないかも…。

Pythonを使ったPingの確認

Pythonを使ったPingの確認は前回の記事に詳しくかいています。pypingを使う方法です。pypingを使うためにはpipで追加する必要があります。

$sudo pip install pyping

LEDを組み合わせる

GPIO 17,27,22 (Board 11, 13, 15)を使います。LEDと抵抗を準備してください。

Pythonで作ってみる(ベータ版)

ちょっと急いで作ったので使用は自己責任で。多分大丈夫だとは思う。送り先と繰り返し調整は注意して下さい。間違えがあればコメントよろしくお願いします。一応確認はしていますが…。

※追記:pypingは多分pingを送るinterfaceがないとエラーが発生します。つまり、エラーが繰り返してしまうトラブルが発生します。これを解消するためpypingのエラーに対して例外処理を施して再起動を円滑に行えるように対処しました。

$vi ping_monitor.py
#!/usr/bin/python
# -*- coding: utf-8 -*-

import pyping
import RPi.GPIO as GPIO
import time
import os
import sys
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11, GPIO.OUT)
GPIO.setup(13, GPIO.OUT)
GPIO.setup(15, GPIO.OUT)
################################################
#確認したいアドレス
host_dns     = "8.8.8.8"
host_vpn_A   = "25.18.1.235"
#代替比較アドレス
host_vpn_B   = "25.19.178.224"
################################################
#tが時間,sがtime sleep
def led_n3_f(t, s):
   n  = 0
   ts = t / (s * 2)
   while n < ts:
      GPIO.output(11, True)
      GPIO.output(13, True)
      GPIO.output(15, True)
      time.sleep(s)
      GPIO.output(11, False)
      GPIO.output(13, False)
      GPIO.output(15, False)
      time.sleep(s)
      n += 1
def led_n1_f(led_no, t, s):
   n  = 0
   ts = t / (s * 2)
   while n < ts:
      GPIO.output(led_no, True)
      time.sleep(s)
      GPIO.output(led_no, False)
      time.sleep(s)
      n += 1
def ping_tp(host_name, led_no, t):
   try:
      r_host = pyping.ping(host_name)
      if r_host.ret_code == 0:
         led_n1_f(led_no, t, 0.1)
         GPIO.output(led_no, True)
         return 0
      else:
         led_n1_f(led_no, t, 0.5)
         GPIO.output(led_no, False)
         return 1
   except:
      led_n1_f(led_no, t, 0.5)
      GPIO.output(led_no, False)
      return 1
def ping_sb(host_name_A, host_name_B, led_no, t):
   try:
      rA_host = pyping.ping(host_name_A)
      rB_host = pyping.ping(host_name_B)
      rAB     = (rA_host.ret_code) * (rB_host.ret_code)
      if rAB == 0:
         led_n1_f(led_no, t, 0.1)
         GPIO.output(led_no, True)
         return 0
      else:
         led_n1_f(led_no, t, 0.5)
         GPIO.output(led_no, False)
         return 1
   except:
      led_n1_f(led_no, t, 0.5)
      GPIO.output(led_no, False)
      return 1
def led_wait(t, s):
   n  = 0
   ts = t / (s * 2)
   while n < ts:
      GPIO.output(15, False)
      GPIO.output(11, True)
      time.sleep(s)
      GPIO.output(11, False)
      GPIO.output(13, True)
      time.sleep(s)
      GPIO.output(13, False)
      GPIO.output(15, True)
      time.sleep(s)
      n += 1
#EX:)解説:ホスト名, GPIOのPIN, 指定時間
#EX:)ping_tp(host_vpn_A, 11, 5)
#待ち時間
led_n3_f(10, 0.7)
led_wait(50, 0.25)

############################################################
while True:
   try:
      cn = 0
      while cn < 30:
         led_n1_f(15, 10, 1.5)
         GPIO.output(15, True)
         time.sleep(50)
         cn += 1
      tt1 = ping_tp(host_dns, 11, 20)
      if tt1 == 0:
         kk1 = ping_sb(host_vpn_A, host_vpn_B, 13, 20)
         if kk1 == 0:
            pass
         else:
            led_n1_f(15, 10, 0.5)
            os.system('sudo hamachi login')
            kk2 = ping_sb(host_vpn_A, host_vpn_B, 13, 20)
            if kk2 == 0:
               pass
            else:
               led_n1_f(15, 20, 0.05)
               os.system('sudo reboot')
               sys.exit()
      else:
         tt2 = ping_tp(host_dns, 11, 20)
         if tt2 == 0:
            kk3 = ping_sb(host_vpn_A, host_vpn_B, 13, 20)
            if kk3 == 0:
               pass
            else:
               led_n1_f(15, 10, 0.5)
               os.system('sudo hamachi login')
               kk2 = ping_sb(host_vpn_A, host_vpn_B, 13, 20)
               if kk2 == 0:
                  pass
               else:
                  led_n1_f(15, 20, 0.05)
                  os.system('sudo reboot')
                  sys.exit()
         else:
            led_n1_f(15, 20, 0.05)
            os.system('sudo reboot')
            sys.exit()
   except:
      led_n3_f(1800, 0.05)
      os.system('sudo reboot')
      sys.exit()

自動起動するようにする

再起動後自動起動することによってまた監視を続行する。

$sudo vi /etc/rc.local

#最後らへんに追加 先程作ったディレクトリを選択してください。ここではusr
python /usr/local/bin/ping_monitor.py &

exit 0

以上

自動起動を止めたい場合はrc.localの追加部分をコメントアウトするか削除してください。