脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

raspberryPIにmp3再生ソフトmpg321をinstallする

1. 出力先の変更

  • raspi-configから音声出力をAutoから3.5mmジャックに変更(一応)

2. スピーカーのテスト

$ speaker-test -t sine -f 1000

3. mpg321のinstall

### library install
$ sudo apt-get install mpg321 

4. 確認

### 普通に再生
$ mpg321 foobar.mp3

### 音量指定(1-100)
$ mpg321 foo.mp3 -g 10
  
### ループ(0は無限ループ)
$ mpg321 foo.mp3 -l 3
  
### デーモンで起動する場合
$ mpg321 foo.mp3 -l 3 > /dev/null 2>&1 &

聞こえないときはraspi側の音量を最大にしてみる

$ alsamixer

f:id:portaltan:20170315123901p:plain
|

raspberryPiのバックアップ

raspberryPiはSDカードのバックアップをとることで簡単にコピーすることができます。

必要なツール

方法

読み込み(バックアップ)

Win32 Disk Imagerを起動すると以下のようなWindowが出てくるので、適当にイメージファイル名を入力して、Readを押すとイメージファイルの作成がはじまります
f:id:portaltan:20170313104134p:plain

書き込み(復元)

逆にバックアップしたイメージファイルをもとに復元したい時は以下の手順を行います

  1. SDカードをフォーマット
  2. imageファイルを指定してWriteボタンを押す

openCVのGaussianBlurで画像をぼやけさせる

opencvで以下のmballの画像をぼやけさせます
f:id:portaltan:20170209171749j:plain

method

cv2.GaussianBlur(img_src, average_square, sigma_x)
  • img_srcは読んで字のとおり画像
  • average_squareは正方形を画素数で指定して、その正方形内の色をまとめて平均化してしまう
    • だから(1,1)だとほとんど変わらない(んだと思う)
  • sigma_xはX軸方向の標準偏差らしい(よくわからん・・・)

試してみた

import cv2

# read image file
img = cv2.imread("mball.jpg")

# blur
blur_img = cv2.GaussianBlur(img, (25, 25), 0)

# write image file
cv2.imwrite('blur.jpg', blur_img)

出来た画像がこちら
f:id:portaltan:20170209172354j:plain
ちゃんとぼやけた画像にすることが出来た!

ちなみに色々値を変えると

cv2.GaussianBlur(img, (25, 25), 1)

f:id:portaltan:20170209172430j:plain
ぼやけ具合がかなり減った

cv2.GaussianBlur(img, (5, 5), 0)

f:id:portaltan:20170209172455j:plain
こちらも同じくぼやけ具合がかなり減った

cv2.GaussianBlur(img, (1, 1), 0)

f:id:portaltan:20170209172509j:plain
こちらはほとんど元画像と変わらない

raspberryPiにinfluxdb1.2をinstallする

以前v1.0.2のinstall方法を書きましたが、今回は最新版のinfluxdb1.2をraspberryPiにインストールする方法です。
必要であれば前のパッケージは以下のコマンドで削除しておきましょう

$ sudo dpkg --purge influxdb

手順

repositoryの設定

$ sudo apt-get update
$ sudo apt-get install apt-transport-https

$ curl -sL https://repos.influxdata.com/influxdb.key | sudo apt-key add -
$ source /etc/os-release
$ test $VERSION_ID = "7" && echo "deb https://repos.influxdata.com/debian wheezy stable" | sudo tee /etc/apt/sources.list.d/influxdb.list
$ test $VERSION_ID = "8" && echo "deb https://repos.influxdata.com/debian jessie stable" | sudo tee /etc/apt/sources.list.d/influxdb.list

$ sudo apt-get update

install influxdb

$ sudo apt-get install influxdb

influxdb 起動

$ sudo service influxdb start

確認

### プロセス確認
$ ps aux | grep influx
    influxdb 14488  0.3  2.1 800724 18936 ?        Ssl  12:55   0:07 /usr/bin/influxd -config /etc/influxdb/influxdb.conf
    pi       14569  0.0  0.2   4280  1852 pts/0    S+   13:31   0:00 grep influx

### port確認
$ ss -lntp | grep 808
    LISTEN     0      128                      :::8086                    :::*
    LISTEN     0      128                      :::8088                    :::*

### pingチェック
$ curl -sl -I  http://localhost:8086/ping
    HTTP/1.1 204 No Content
    Content-Type: application/json
    Request-Id: 93e1c7d3-edb7-11e6-800a-000000000000
    X-Influxdb-Version: 1.2.0
    Date: Wed, 08 Feb 2017 04:32:19 GMT

### queryチェック
$ curl http://localhost:8086/query?pretty=true --data-urlencode "q=SHOW DATABASES"
{
    "results": [
        {
            "statement_id": 0,
            "series": [
                {
                    "name": "databases",
                    "columns": [
                        "name"
                    ],
                    "values": [
                        [
                            "_internal"
                        ]
                    ]
                }
            ]
        }
    ]
}

※ちなみに今までport8083で立ち上がっていたweb interfaceは廃止されたようです
InfluxData | Documentation | Web Admin Interface

raspberryPiにgvmでGoをインストールする方法

gvmとはgo version managerで、文字通りgo のvesionマネジメントシステム
GitHub - moovweb/gvm: Go Version Manager
rvmに影響を受けているらしく、似たようなコマンドで使用することが出来る
f:id:portaltan:20170208125440p:plain

install library

$ sudo apt-get install curl git mercurial make binutils bison gcc build-essential

install gvm

### install
$ bash < <(curl -s -S -L https://raw.githubusercontent.com/moovweb/gvm/master/binscripts/gvm-installer)
	Cloning from https://github.com/moovweb/gvm.git to /home/pi/.gvm
	No existing Go versions detected
	Installed GVM v1.0.22

	Please restart your terminal session or to get started right away run
	 `source /home/pi/.gvm/scripts/gvm`
$ source /home/pi/.gvm/scripts/gvm

### confirm
$ gvm help
	Usage: gvm [command]

	Description:
	  GVM is the Go Version Manager

	Commands:
	  version    - print the gvm version number
	  get        - gets the latest code (for debugging)
	  use        - select a go version to use (--default to set permanently)
	  diff       - view changes to Go root
	  help       - display this usage text
	  implode    - completely remove gvm
	  install    - install go versions
	  uninstall  - uninstall go versions
	  cross      - install go cross compilers
	  linkthis   - link this directory into GOPATH
	  list       - list installed go versions
	  listall    - list available versions
	  alias      - manage go version aliases
	  pkgset     - manage go packages sets
	  pkgenv     - edit the environment for a package set

$ gvm version
	Go Version Manager v1.0.22 installed at /home/pi/.gvm

install Go

gvmは全ての基点に1.4を利用しているようで、他のversionを利用するつもりでもまずは1.4をinstallしなければならない

install go1.4

$ gvm install go1.4
	Installing go1.4...
	 * Compiling...
	go1.4 successfully installed!

$ gvm list
	gvm gos (installed)
	   go1.4

$ gvm use go1.4
	Now using version go1.4
$ gvm list
	gvm gos (installed)
	=> go1.4

install go1.5

他のversionのinstallの確認として、stableの最新版である1.7.5をinstallしてみる

### install
$ echo $GOROOT
	/home/pi/.gvm/gos/go1.4

$ export GOROOT_BOOTSTRAP=$GOROOT

$ gvm install go1.7.5
	Installing go1.7.5...
	 * Compiling...
	go1.7.5 successfully installed!

$ gvm use go1.7.5 --default
	Now using version go1.7.5

$ gvm list
	gvm gos (installed)
	   go1.4
	=> go1.7.5

### confirm
$ go version
	go version go1.7.5 linux/arm

特定のファイルでだけvimでsyntax onが効かない場合

他のファイルはsyntax onが効くのに特定のファイルでsyntax onが反応しなくてカラー表示できない場合

そのファイルのvimの設定ファイルを削除してリセットしてやるといい

cd ~/.vim/view
rm -i ~=+path+to+file=

これで再度vimでファイルを開くと設定ファイルが1から作成しなおされて、変な設定もリセットされる

raspberryPi にnoipでDDNSの設定をする方法

raspberryPi3 jessieにnoipでDDNSの設定をする方法です。

no-ipの登録

DDNSサービスを提供している会社は色々ありますが、今回は調べていて割りと名前をよく目にするno-ipを利用することにしました
Free Dynamic DNS - Managed DNS - Managed Email - Domain Registration - No-IP

ユーザ登録

sign upを選ぶと以下のような画面が出てくるので、情報を入力します。
hostnameは後から変更できるので適当でも構いません。
f:id:portaltan:20170207085720p:plain

入力したメールアドレスに確認メールが来るので、そこからログインします。
ログインすると以下のようなGUIの管理画面が表示されます。
f:id:portaltan:20170207090352p:plain

hostname登録

画面の中段あたりのQuick Addというパネルから任意のhostnameを入力し、Add Hostnameボタンをクリックすることでhostnameの登録ができます
f:id:portaltan:20170207090735p:plain

これで登録は完了です。次は実際にサーバで利用するための設定を行います。

noip DUCの設定

DUCとはDynamic Domain Update Clientの略らしいです(それだとDDUCになりそうだけど)
以下の設定はraspberryPi側で行います。

### clientのダウンロード
$ wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
$ sudo tar zxvf noip-duc-linux.tar.gz
$ cd noip-2.1.9-1/

### clientのインストール
$ sudo make
$ sudo make install
  if [ ! -d /usr/local/bin ]; then mkdir -p /usr/local/bin;fi
  if [ ! -d /usr/local/etc ]; then mkdir -p /usr/local/etc;fi
  cp noip2 /usr/local/bin/noip2
  /usr/local/bin/noip2 -C -c /tmp/no-ip2.conf

  Auto configuration for Linux client of no-ip.com.

  Please enter the login/email string for no-ip.com  # => no-ipに登録したユーザ名を入力します
  Please enter the password for user '*****'         # => 同じく登録したパスワードを入力します

  Only one host [foobar.ddns.net] is registered to this account.
  It will be used.
  Please enter an update interval:[30]  # => 何分毎に設定を確認するかを入力します
  Do you wish to run something at successful update?[N] (y/N)  n

  New configuration file '/tmp/no-ip2.conf' created.

  mv /tmp/no-ip2.conf /usr/local/etc/no-ip2.conf

### 自動起動の設定
$ sudo cp debian.noip2.sh /etc/init.d/noip2
$ sudo vi /etc/rc.lcal
  # 以下の1行を追加します
  /etc/init.d/noip2 start

### 設定
$ sudo /etc/init.d/noip2 stop
$ sudo /usr/local/bin/noip2 -C # 再度設定
$ sudo /etc/init.d/noip2 start # 起動

### 確認
$ sudo /usr/local/bin/noip2 -S

これで30分毎および起動時にIPを確認して、IPが変わっている場合には自動でno-ipにリクエストを投げてDNS情報を変更してくれるようになりました