地平線まで行ってくる。

記録あるいは忘備録。時には検討事項。

ぼちぼち準備の防水スプレー

  靴を新調したら必ず薄く吹き付けている、いつもの防水スプレー。傘やカバンにもできるだけ均一に吹きかける。雨が降ってから室内でやると刺激臭が結構キツイ。そこで本格的に雨が降る前にやっておくことにしている。

 幾つかあるけれども、定番のこれがやっぱしいい感じだ。安くはないけど常用なので、ぼちぼち仕入れる。

 高級革靴などはやめておいたほうがいいかも(ちゃんとお手入れしましょう!)

 

Raspberry PIでVPN( SoftEther )

フリーWifiも怖いがフリーVPNも怖くない?

 Free Wi-Fiにはパスワードすらないものも多い。流石に怖い。なんでもいいから暗号化キーくらいは設定してほしい。出張先ホテルのWifiサービスも気持ち悪いといえば気持ち悪い。

 かと言って、フリーのVPNは怖すぎる。通信を一手に監視できるからだ。広告収入だけならともかく個人情報が商材のところも多いだろう。

 Googleサービスを多用して、すでに魂を売っている気もしなくもない。今更感はなくもない(笑)

 

そこでラズパイ

 固定グローバルIPを持たないお家LAN内にVPNサーバーをRaspberryPiで運用してみることにした。SoftEtherはそういう環境にも対応しているという。VPN Azureという中継サーバーサービスを利用させていただくと実現できる。ただし、MS-SSTPに限定されるので、Android端末では標準では対応できずアプリを入れることになる。(アプリ入れたほうが便利なのだ・・・・)

 

ja.softether.org

 

インストール環境:

 Raspberry Pi 3B+

 Linux raspberrypi 4.19.36-v7+ #1213 SMP Thu Apr 25 15:08:02 BST 2019 armv7l GNU/Linux

 

インストールと動作確認 

参考にしたサイト https://nobuntu.jp/raspberrypi-vpn-server-softethervpn/

 

 このサイトは確認しつつ進めるような記述になっていて、分かりやすい。うまくいかないと後戻りしつつ作業。ただし、今回はAzureを使う予定なので、自宅からのアクセスで確認終了。

 

ブリッジ接続にしてラズパイ自身も見えるようにする。

 単にインターネットと外出先でのVPN接続だけを求めるなら「ブリッジ接続」はしないことを勧めます。トラブルとハマる。スキルがあれば全然問題ないだろうけれども、私のスキルだと解決に時間がかかった。

 

qiita.com

 

問題発生と解決策

 確かにAzureサービス経由でVPNアクセスできてラズパイ本体も見える様になった。が、ここで問題発生。CPU使用率25%程度、VPNseverで1コア分100%となるのだ。仮想NATをオンにすると顕著。それでも使えないこともない。気になる。どこかでループが発生しているのか。困った。

 実は、VPSでのVPNサーバー設置時にも同じ様に高負荷になるという現象にハマることになる。

 

 今回の場合の解決策。

 仮想DHCP機能でDNSをパブリックサーバ(グローバルアドレス)に指定。Googleさんの8.8.8.8(プライマリ)と8.8.8.4(セカンダリ)とした。デフォルトだとゲートウェイと同じになっているけれども仮想の内側にローカルにDNSサーバ持ってない。その外側のお家LANに直接繋げばルータのDHCP機能で配られるから問題ないのだが・・・。

 で、なんでループが解決したのかは細かくわからないが、ドメインネーム解決時に自分自身に問い詰めることがなくなったんだだろう。(え?)

 

 結果、CPU使用率は負荷大きい時にも6%以下くらい。1コア分で最大30%程度。動画再生させててもCPU使用率2~3%だった。常時使っても問題なさそう。

 

VPN接続用Androidアプリ

 SSTP接続できるアプリはあまりない。が、以下のアプリが快適。

 

 SSTP VPN Client

https://play.google.com/store/apps/details?id=it.colucciweb.sstpvpnclient&hl=ja

 

 

 指定のSSIDWifiに繋いだらVPN接続をする、もしくは指定のSSIDでなければVPN接続をする、との設定も可能。

 900円だけど有料VPNと契約しなくてすむし、ラズパイ実験くんの手間賃と思えばリーズナブルと購入。動作状況のログが表示されるのでサーバーの設定ができているのかも確認できるし、購入してよかった。

 

 

 

Raspberry pi 起動時にipアドレスをメール

RaspberryPIで遊ぶときの環境つくり。

 

 DHCP環境下でRaspberryPIを使っているとIPアドレスが分からなくて右往左往することが多い。ディプレイやキーボードをいつもつけているわけでもないし、電源が落ちてしまって再起動しちゃったとか、分からないからだ。

 

 そこで、定番のリブートさせた後のIPアドレスをメールで通知してくれるようにした。

 

raspi.ryo.sc

www.wanna-continue.com

 を参考にしつつ、sSMTP(sendmail)を入れて起動時にメールする仕組みにした。

 

やることは、

  1. sSMTP(sendmail)の設置と設定
  2. IPアドレスを付記したメール送信
  3. 毎回、起動時メール送信のし掛け

 

sSMTP(sendmail)の設置と設定

 設定ファイル(ssmtp.conf)は、簡単だけれども、メールサーバーに仕様によって色々あるので試行錯誤が必要だった。専用のgmail作ろうかと思ったが、それはそれで面倒なので、レンタルサーバを使うこととした。

 

 /var/log/mail.err みながらエラーを確かめつつ・・・。mail コマンドで送信ができることが確認できたら、次にIPを入れ込んで送信するshellスクリプトを作ります。

 

IPアドレスを付記したメール送信

参考にさせていただいたものからほぼ頂いてshellスクリプトにした。

!#/bin/bash

ip_add=$(hostname -I | cut -f1 -d' ')
title="$(hostname) restarted"
echo $ip_add | mail -s "$title" <mail address>

 これで何度かテスト。なお、これだと複数IP持っていると最初の一つしか送られてきませんので注意。VNC接続だけだと今のところこれで十分。

 

毎回、起動時メール送信のし掛け

 実現できる方法が複数ある。rc.localとかsystemdとか。rc.localが一般的なきがするけれども、調べるとbootでネットワーク起動のタイミングによっては正しい値が採取できない。設定弄るのもメンドイし、そんな大層な仕掛けでもない。そこで、cronでもできるらしいので採用。起動時にネットワークが立ち上がるまで待つためにsleep 30(sec)入れておいた。

 cronなら後で一日一回メールといった設定追加も簡単。

 

!#/bin/bash

sleep 30;

ip_add=$(hostname -I | cut -f1 -d' ')
title="$(hostname) restarted"
echo $ip_add | mail -s "$title" <mail address>

  

これもテストをした後、cronに登録。

qiita.com

 

@reboot 指定でOK。

 

自動起動の仕方とその比較です。勉強になります。

hendigi.karaage.xyz

 

というわけで、再起動したらIPアドレスの通知メールが来るようになりました。

 

意外とsSMTPの設定で手間取った。

 

ラーメンの具と袋ラーメン

  時々、とんこつラーメンが食べたくなる。

 そんな時、うまかっちゃんは心強い味方だ。小腹が減っている時に限って具がない。というわけで乾燥野菜の出番になった。

  

 近くになければ通販・・・。近所のスーパーにあれば、そちらがやすいかも。チキンラーメンも割と好き。

 

 後から入れてもすぐに水を吸ってくれてお手軽。

ラーメンの具

ラーメンの具

 

 

  少し煮込んだほうが良さそう。麺と同時入れ・・・かな。 

九州ドライベジ 乾燥野菜 九州産 野菜&わかめ ミックス 100g 1袋

九州ドライベジ 乾燥野菜 九州産 野菜&わかめ ミックス 100g 1袋

 

 

 と、インスタントラーメン買い置きより安い?きも

 

超音波洗浄機

 ちょっとした小物を洗浄するのに超音波洗浄は便利だ。もちろん、なんでも入れちゃうと・・・破壊される危険性もあるので注意するべし。痛み始めた眼鏡のコーティングがはがれちゃった経験がある。

 

 家庭用洗剤を数滴入れたりと小技はあるが、汚れがひどいものは水を張ってから別の容器に水や洗剤を入れてかけるのがいい。やっぱし、そんなときはある程度の出力があるといいのかな。

 

 武骨な化学実験室的なこいつが気に入った・・・。

 

 

ミニゲームパッド

 タブレットに懐かしいゲームをインストールした。だが、タッチパッドでキャラを動かすのは感覚が付いてこない。ボタンの感覚がないということもあるけれども、画面を隠すし、タブレットを支えながらだと力も入りすぎる。

 要は、操作に気を取られ楽しめないのだ。

 というわけで、ミニゲームパッドを探している

 

  これはちっちゃくてよさそうなんだけれども。

 

8Bitdo ゲームパッド (N30 PRO)

8Bitdo ゲームパッド (N30 PRO)

 

  たぶん、これぐらいあったほうが操作はしやすそう。

 

 よく考えると持ち歩くなら小型だろう。というわけで小型にしようかと思い始めた。

 

 

リラックス用椅子

 リラックスできる椅子でかつ片付けられるものを探していた。そうするとアマゾンブランド?でこいつを見つけた。リクライニングして本とかタブレットとか持ちつつ、飲み物でも脇においてると幸せになりそう。

 

 6千円もしないのでお手頃。

 

 

 コールマンの製品と酷似しているので、安心・・・でしょう。 

コールマン(Coleman) チェア インフィニティチェア 2000033139

コールマン(Coleman) チェア インフィニティチェア 2000033139

 

 

ヘッドセットを繋ぎたいけど・・・。

 Skypeを使う機会が増えた。だが・・PCもマイクと音声が分かれてない4極タイプのものが増えてきて、今まで使ってたヘッドセットが使えなくなった。

 どうしたものかと思ってたら、やっぱりありました。

 

  それだけなんだけれども、ないと困る。

 

  でも、こっちを買えばいいんだよ・・ね。

 

 

 

Bluetoorh ヘッドセット

 スマホ用のヘッドセット。移動中にニュースでも聞くのも悪くない。といっても、耳穴に負担が大きいと辛い。

 そこで、PLANTRONICSのVoyager Legendを狙ってた。 

 

 でも、高い・・・。

 

 まぁ、このあたりでお試しかな。

 

 使ってみたけど、思ったよりも音が悪くないのでニュース程度は十分視聴に耐えます。 

  まぁ、どう考えてもパクリ製品。電池容量が多い割に重心が耳に近いところにあるので、楽ちんです。

 

画像認識で遊ぶ

Yoloを使うと割とお手軽に画像認識が体験できると聞いて、チャレンジ。

 

まずは、

 

www.anaconda.com

 

次に

desktop.github.com

 

 次に、Anacondaのコマンドラインを使ってPyTorchをインストール。環境に応じてコマンドオプションを指示してくれる。素晴らしい。

 と、その前に作業用フォルダを作って、そこで作業を続けます・・・。

pytorch.org

 

 OpenCV忘れてたので・・・

 conda install opencv

  でOpenCVもインストール。

 続いて pytorch用のyolo v3を有り難く収得。

 git clone https://github.com/ayooshkathuria/pytorch-yolo-v3.git

 

GitHub - ayooshkathuria/pytorch-yolo-v3: A PyTorch implementation of the YOLO v3 object detection algorithm

 

 学習済みのデータ・セットも有り難くいただく。YOLO本家のサイトにあります。 pjreddie.com

  そのうち、

https://pjreddie.com/media/files/yolov3.weights

 を選んでダウンロードした後に作業フォルダに同じく入れ込む。

 

 USBカメラを引っ張り出してきて

 python cam_demo.py

 ですんなり起動・・・。できた!

 GPUない貧弱PCなので、CUDAはなしです。が、こんなに簡単にお試しできたのでびっくり。

 次は、教示データ作り!?

 

参考:

qiita.com