ラズパイ って何だべ~? 私設 基板実験室

地元東松島市のイベントや、パソコン・ラズベリーパイの実験報告しています

Raspberry Pi 3 に chinachu-γ + Mirakurun + Samba で超廉価なTV録画サーバーが出来た!!、追加ハードは外付HD、USB-TVチューナー、B-CAS読取機

f:id:masa19569810303:20181106144746j:plain

 

 はじめに

今度は、ラズパイ3で、地デジTV録画サーバーを作ってみました(上記写真)。
簡単な構成図は、以下の通りです。やってみたところ、個人用として十分過ぎる機能とTV画質がありました。かかった費用としては、ネットワークとTV受信アンテナ、B-CASカードが既に有る条件で、ラズパイ3とTVチューナ、外部HD、B-CAS読み取り機で、2万円でおつりが来ると思います。その概要と作成コマンドをご紹介します。オープンソース開発者と活用ブログ公開の先駆者の皆さんには敬意を表します。

f:id:masa19569810303:20181107153131p:plain

 

f:id:masa19569810303:20181107153145p:plain

実際のパソコン表示画面はこのようになります。

 ホーム

f:id:masa19569810303:20181107153319p:plain

 番組表

f:id:masa19569810303:20181107153337p:plain

 録画中のホーム

f:id:masa19569810303:20181107153354p:plain

 ルールで予約した録画タイトル

f:id:masa19569810303:20181107153423p:plain

 準備した機材

 

Chinachu(ちなちゅう)とは、

 Chinachuは、七森中録画研究会さんが開発したオープンソースのソフトです。ソフトの名前はアニメ「ゆるゆり」のキャラクターの名前が元になっているそうです。アニメに特化したソフトかと思いきや、普通の録画サーバソフトです。

Chinachuなら Raspberry PiのPCボードでも動かせます。

 事前にB-CASカードリーダドライバ、チューナードライバ、録画コマンドのrecdvb などのインストールが必要になりますが、専用のインストールスクリプトを実行すれば必要なソフトウェアが全てインストールされます。

Webサーバ機能、データベース機能も同梱されているので、細かい設定をする必要がありません。Linuxの基本知識(設定ファイルのnanao又はviでの編集する方法、階層、デバイスのマウント、ファイル権限の設定など)が必要ですが、少し注意点はありますが、インストールは簡単にできます。実際に動作しているかは、単独コマンドで少しずつ確認必要もあり、確認には少し時間がかかりました。

 番組表、録画予約、ルール指定、基本的な機能までは確認でき、リアルタイムでのストリーミング再生ができるはずなのでが、まだ確認しています。今のところ必要性がないので後回しにします。また、Chinachuを外部から接続できるようにする方法があるようですが、必要性がなく確認していません。(資料を見ると、Chinachu-Airというもので、外部から接続できるように計画しているように思えます。)チューナー制御部であるMirakurunは、Chinachu-Airの先行リリースとの事です。Mirakurunは、地デジ・BS/CSチューナーをLAN内で共有するためのソフトウェアとの事です。今後の開発に期待したいです。
なお、ChinachuのAndroidアプリがあり、これでは番組予約のみ可能です。 

実際のソフト導入方法


RASPBIANの導入
RASPBIAN OSをダウンロードしてSDカードへ書き込みました。要点は以下の通り。

VNCを使い、サーバーを置いた部屋以外で設定作業を行いたいため、通常のRASPBIAN STRETCHを使用しました。

  1. 公式推奨の7zipを導入して解凍する。
  2. 公式推奨のWin32DiskImagerを使って書き込む。
  3. 一応、SSHも使えるようにSDカードのbootパーティションのルート直下にssh空ファイルを置く。
  4. SDカードと有線LAN(gitからのchinachuプログラムのコピーに時間がかかるので、Wi-Fiでも良いが、有線LAN使用をお勧めします。
  5. USB ストレージの接続、フォーマット。SDカードに録画データを保存するのは無理なので、USBに接続したハードディスク(最低でも2TB)を準備します。(フォーマット、マウントは後述で行っている。)


チューナーの導入


PX-S1UD firmware のインストール。ドライバは kernel に組み込まれていますが、別途 firmware が必要なので配置します。

sudo apt -y install unzip
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware
sudo reboot now

再起動が終わったら、以下続き。

準備ができたところでUSBチューナを刺してみます。

/>#何も挿していない状態

pi@raspberrypi:~ $ ls /dev/dvb/
ls: cannot access '/dev/dvb/': No such file or directory

 

#1本目挿入

pi@raspberrypi:~ $ ls /dev/dvb/
adapter0

 (複数チャンネル同時録画の場合は、複数チューナーの挿入と設定の繰り返し)

 

mirakurun のインストール

まずはnode.jsを導入
# node.jsのリポジトリを追加

pi@raspberrypi:~ $ curl -sL http://deb.nodesource.com/setup_8.x | sudo bash -

 

# node.jsをインストール

pi@raspberrypi:~ $ sudo apt-get install -y nodejs

PM2のインストール。バージョンを指定(Mirakurunの動作要件は >=2.4.0 <3.0.0 )


#PM2 Ver 2.10.4 をインストール

pi@raspberrypi:~ $ sudo npm install pm2@2.10.4 -g
Mirakurunのインストール


#Mirakurun をインストール

pi@raspberrypi:~ $ sudo npm install mirakurun -g --unsafe --production

接触ICカードリーダーツールのインストールと動作確認

#ICカードツールのインストール

pi@raspberrypi:~ $ apt-get install pcscd libpcsclite-dev pcsc-tools

 

# ICカードの読み込みテスト

pi@raspberrypi:~ $ pcsc_scan
(略)
Japanese Chijou Digital B-CAS Card (pay TV)
Ctrl+C で停止


#dvb-toolsパッケージのインストール

pi@raspberrypi:~ $ sudo apt install -y dvb-tools

 

日本の地デジ放送に合わせた周波数設定ファイルをダウンロード

#gitを導入

pi@raspberrypi:~$ sudo apt install -y git

 

#周波数設定ファイルをダウンロード

pi@raspberrypi:~$ cd /usr/local
pi@raspberrypi:/usr/local/$ sudo git clone https://github.com/Chinachu/dvbconf-for-isdb.git
pi@raspberrypi:/usr/local/$ cat /usr/local/dvbconf-for-isdb/conf/dvbv5_channels_isdbt.conf

 

 

実装参考用の decoder の インストール

#decoderのインストール

pi@raspberrypi:~ $ sudo npm install arib-b25-stream-test -g --unsafe


チューナーの設定
Mirakurunがインストールされると、/usr/local/etc/mirakurunに3つの設定ファイルが生成される。
設定が必要なのは、tuners.ymlとchannels.ymlの2つ。
tuners.ymlでは、チューナーの設定を行う。

とのことですので、設定追記。

$sudo nano /usr/local/etc/mirakurun/tuners.yml

#以下追加内容

- name: PX-S1UD-1
types:
- GR
command: recdvb --b25 --strip <channel> - -

追記が終わったら、再起動
#mirakurunの再起動

pi@raspberrypi:~ $ sudo mirakurun restart

チューナの設定が終わったらチャンネルをスキャンします

#チャンネルスキャンをmirakurunに指示
  局名出るまで、何度かmirakurunのインストールをトライする必要あり。

pi@raspberrypi:~ $ curl -X PUT "http://localhost:40772/api/config/channels/scan"
channel scanning... (type: "GR")
channel: "13" ...-> no signal. [Error: stream has closed before get network]
channel: "14" ...
(略)
channel: "52" ...-> no signal. [Error: stream has closed before get network]
-> total 12 channe ls found and 35 channels stored.
channel scan has completed and saved successfully.
**RESTART REQUIRED** to apply changes.


スキャン結果を確認、場合によっては不要なチャンネルを削除
#チャンネルスキャン結果を確認&編集

pi@raspberrypi:~ $ sudo mirakurun config channels  Viコマンドで編集
- name: NHKEテレ
type: GR
channel: '13'
- name: NHK総合
type: GR
channel: '17'
- name: TBCテレビ
type: GR
channel: '19'
- name: 仙台放送
type: GR
channel: '21'
- name: ミヤギテレビ
type: GR
channel: '24'
- name: 東日本放送
type: GR
channel: '28'

設定がおわったら再びmirakurunをリスタート


#mirakurunの再起動

pi@raspberrypi:~ $ sudo mirakurun restart


Chinachu γ(ガンマ)の導入

Gitリポジトリからクローン・インストール

#gitからクローン 

pi@raspberrypi:~ $ git clone git://github.com/kanreisa/Chinachu.git ~/chinachu

#クローンされたディレクトリへ移動

pi@raspberrypi:~ $ cd ~/chinachu/

#インストーラーを実行

pi@raspberrypi:~/chinachu $ ./chinachu installer
# 1 の Auto を選択

 

 約1~2時間かかった(放置にしましょう!)

>curl: (22) The requested URL returned error: 404
が出るがそのまま、流す!!(そういう仕様らしい)

(中略)
chinachu@0.9.5-gamma.0 /home/pi/chinachu
??? swagger-client@2.1.13 (git://github.com/kanreisa/swagger-js.git#82abd4fe41dbee957bff51463fcd6167852b3494) done.
--2018-11-04 07:21:56-- http://johnvansickle.com/ffmpeg/releases/ffmpeg-release-32bit-static.tar.xz (中略)
`ffmpeg-release-32bit-static.tar.xz' ???? ffmpeg-release-32bi 100%[===================>] 16.66M 36.4KB/s in 7m 28s 2018-11-04 07:29:26 (38.1 KB/s) - `ffmpeg-release-32bit-static.tar.xz' ????? [17468728/17468728] ffmpeg-release-32bit-static.tar.xz (1/1)
100 % 16.7 MiB / 121.2 MiB = 0.137 9.0 MiB/s 0:13
ffmpeg-4.0.2-32bit-static/manpages/
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-protocols.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-scaler.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-formats.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-resampler.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-devices.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-protocols.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-all.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-utils.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-all.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-formats.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-devices.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-filters.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-codecs.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffprobe.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-resampler.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-filters.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-bitstream-filters.txt
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-scaler.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-utils.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-bitstream-filters.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffprobe.pdf
ffmpeg-4.0.2-32bit-static/manpages/ffmpeg-codecs.txt
ffmpeg-4.0.2-32bit-static/readme.txt
ffmpeg-4.0.2-32bit-static/ffprobe
ffmpeg-4.0.2-32bit-static/ffmpeg-10bit
ffmpeg-4.0.2-32bit-static/qt-faststart
ffmpeg-4.0.2-32bit-static/ffmpeg
ffmpeg-4.0.2-32bit-static/GPLv3.txt
'ffmpeg-release-32bit-static.tar' ???????
Creating libav aliases...
'/home/pi/chinachu/usr/bin/avconv' -> '/home/pi/chinachu/usr/bin/ffmpeg'
'/home/pi/chinachu/usr/bin/avprobe' -> '/home/pi/chinachu/usr/bin/ffprobe'
ffmpeg --> done.

ルールファイルの初期化とコンフィグファイルの編集

pi@raspberrypi:~/chinachu $ echo "[]" > rules.json
pi@raspberrypi:~/chinachu $ cp config.sample.json config.json
pi@raspberrypi:~/chinachu $ is

サンプルのコンフィグファイルの "uid" "recordedDir" "wuiHost" を変更します。

config.json
{
"uid": "pi",
"gid": "video",
"mirakurunPath": "http+unix://%2Fvar%2Frun%2Fmirakurun.sock/",
"recordedDir" : "/mnt/",
"vaapiEnabled": false,
"vaapiDevice": "/dev/dri/renderD128",
"excludeServices": [
3273701416,
3232728088,
3273901183,
3274201456,
3239123992,
3239123993,
3273601408
],"serviceOrder": [
3273601024,
3273601025,
3273701032,
3273701033,
3273701034
],"wuiUsers": [
"chinachu:yoshikawa"
],
"wuiAllowCountries": ["JP"],"wuiPort": null,
"wuiOpenHost": "0.0.0.0",
"wuiTlsKeyPath": null,
"wuiTlsCertPath": null,
"wuiTlsRequestCert": false,
"wuiTlsRejectUnauthorized": true,
"wuiTlsCaPath": null,
"wuiOpenServer": true,
"wuiOpenPort": 20772,
"wuiXFF": false,
"wuiDLNAServerEnabled": false,
"wuiMdnsAdvertisement": true,"recordedFormat": "[<date:yymmdd-HHMM>][<type><channel>][<channel-name>]<title>.m2ts",
"storageLowSpaceThresholdMB": 3000,
"storageLowSpaceAction": "remove",
"storageLowSpaceNotifyTo": null,
"storageLowSpaceCommand": ""
}

 

動作チェック、chinachuが問題なく起動し、EPGの取得できるか確認します。
※この手順を飛ばすと次のpm2 start がすぐに異常終了してしまうので、このチェックは必須です。

 

pi@raspberrypi:~/chinachu $ ./chinachu update
Client {
basePath: '/api',
priority: 0,
host: '',
port: 40772,
socketPath: '/var/run/mirakurun.sock',
userAgent: 'Chinachu/0.9.5-gamma.0 (scheduler)',
_userAgent: 'MirakurunClient/2.7.4 Node/v6.11.2 (linux)' }
5 Nov 00:03:55 - GETTING EPG from Mirakurun.
5 Nov 00:03:55 - Mirakurun is OK.
5 Nov 00:03:55 - Mirakurun -> services: 21
5 Nov 00:03:55 - Mirakurun -> services: 21 (excluded)
5 Nov 00:03:55 - Mirakurun -> sorted services: 0
5 Nov 00:03:56 - Mirakurun -> programs: 4556
5 Nov 00:03:56 - Mirakurun -> tuners: 1
5 Nov 00:03:57 - WRITE: /home/pi/chinachu/data/schedule.json
5 Nov 00:03:57 - RUNNING SCHEDULER.
5 Nov 00:03:57 - TUNERS: {"GR":1}
5 Nov 00:03:57 - MATCHES: 0
5 Nov 00:03:57 - DUPLICATES: 0
5 Nov 00:03:57 - CONFLICTS: 0
5 Nov 00:03:57 - SKIPS: 0
5 Nov 00:03:57 - RESERVES: 0
5 Nov 00:03:57 - WRITE: /home/pi/chinachu/data/reserves.json
pi@raspberrypi-c:~/chinachu $

 

# EPG取得テスト(エラーが出た場合は恐らく Mirakurun に接続できていません)


起動させます。また、自動起動の設定を行います。


#chinachuを実行

pi@raspberrypi:~/chinachu $ sudo pm2 start processes.json
[PM2][WARN] Applications chinachu-wui, chinachu-operator not running, starting...
[PM2] App [chinachu-wui] launched (1 instances)
[PM2] App [chinachu-operator] launched (1 instances)

  Name   mode  status    cpu   memory  
 chinachu-operator fork online 0 87% 11.4 MB
 chinachu-wui fork online 0 77% 11.5 MB
mirakurun-server fork online 0 8% 94.4 MB

Use `pm2 show <id|name>` to get more details about an app
#statusが onlineになっていればOK!!

#mirakurun と Chinachuが実行されている状態をセーブ

pi@raspberrypi:~/chinachu $ sudo pm2 save
[PM2] Saving current process list...
[PM2] Successfully saved in /root/.pm2/dump.pm2
 

#PM2をスタートアップに登録

pi@raspberrypi:~/chinachu $ sudo pm2 startup
[PM2] Init System found: systemd
Platform systemd
Template
[Unit]
Description=PM2 process manager
Documentation=https://pm2.keymetrics.io/
After=network.target
[Service]
Type=forking
User=root
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
Environment=PATH=/usr/bin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin
Environment=PM2_HOME=/root/.pm2
PIDFile=/root/.pm2/pm2.pid
ExecStart=/usr/lib/node_modules/pm2/bin/pm2 resurrect
ExecReload=/usr/lib/node_modules/pm2/bin/pm2 reload all
ExecStop=/usr/lib/node_modules/pm2/bin/pm2 kill
[Install]
WantedBy=multi-user.target
Target path
/etc/systemd/system/pm2-root.service
Command list
[ 'systemctl enable pm2-root' ]
[PM2] Writing init configuration in /etc/systemd/system/pm2-root.service
[PM2] Making script booting at startup...
[PM2] [-] Executing: systemctl enable pm2-root...
[PM2] [v] Command successfully executed.
+---------------------------------------+
[PM2] Freeze a process list on reboot via:
$ pm2 save
[PM2] Remove init script via:
$ pm2 unstartup systemd

 

ここまででソフト導入は完了です。次に、クライアントのパソコンから実際に使用

http://(ラズパイのIPアドレス):20772/

へアクセスすることでChinachuが使えます。(有線LANのIPとWi-FiのIPがありますが、有線LANをお薦めします。)

動作確認は、同様にクライアントのパソコンからシステムステータス確認で行えます。

 

f:id:masa19569810303:20181114151628p:plain

また、ソフト更新は定期的に更新実行を行うと良いです。

pi@raspberrypi:~/chinachu $ ./chinachu installer
pi@raspberrypi:~/chinachu $ ./chinachu updater

でChinachuの更新が行えます

 

 

ログローテーションの設定
ログローテーションの設定を入れました。(必要に応じてで構いません。)


#ログローテートモジュールのインストール

pi@raspberrypi:~/chinachu $ sudo pm2 install pm2-logrotate

# mirakurun用ログローテーション設定の追加

pi@raspberrypi:~/chinachu $ sudo nano /etc/logrotate.d/mirakurun

毎日ログを圧縮して1週間分保存する設定、とのことです。

/usr/local/var/log/mirakurun.stdout.log
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
ssh@pi
# chinachu用ログローテーション設定の追加
pi@raspberrypi:~$ sudo nano /etc/logrotate.d/chinachu

毎週ログを圧縮して4週間分保存する設定、とのことです。

/usr/local/var/log/chinachu-operator.stderr.log
/usr/local/var/log/chinachu-operator.stdout.log
/usr/local/var/log/chinachu-wui.stderr.log
/usr/local/var/log/chinachu-wui.stdout.log
{
weekly
compress
rotate 4
missingok
notifempty
}

 

 外部ハードディスクへの変更

外部ハードディスクの正しい初期化方法が分かったのが、後になったので、

ソフトのインストール後に、さらに、Chinachuのホーム画面で設定変更を行っている

# sudo nano /home/pi/chinachu/config.json

6行目の"recordedDir"を変更したいディレクトリに変えます。ディレクトリ名の末尾は”/”
"recordedDir" : "./recorded/",
→"recordedDir" : "/mnt/hdd1/recorded/",

 

最初に、ハードディスクをアンマウントします。(マウント実行してある場合)

# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
pi@raspberrypi:~ $ df
?????? 1K-???? ?? ??? ??% ??????
/dev/root 7593848 6149268 1072628 86% /
devtmpfs 470116 0 470116 0% /dev
tmpfs 474724 0 474724 0% /dev/shm
tmpfs 474724 12388 462336 3% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474724 0 474724 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22502 21037 52% /boot
tmpfs 94944 0 94944 0% /run/user/1000
/dev/sda1 1921802500 77856 1824032584 1% /media/pi/e1e1258a-8143-49db-a87b-21b4a8b0c46b
17628 920356 2% /mnt/diskA
※ /sda1 がマウントされている</pr # umount /dev/sda1 ← /dev/sda1 をアンマウント
pi@raspberrypi:~ $ df
?????? 1K-???? ?? ??? ??% ??????
/dev/root 7593848 6149264 1072632 86% /
devtmpfs 470116 0 470116 0% /dev
tmpfs 474724 0 474724 0% /dev/shm
tmpfs 474724 12384 462340 3% /run
tmpfs 5120 4 5116 1% /run/lock
tmpfs 474724 0 474724 0% /sys/fs/cgroup
/dev/mmcblk0p1 43539 22502 21037 52% /boot
tmpfs 94944 0 94944 0% /run/user/1000

※ /dev/sda1のマウントが解除され表示されなくなった # パーティションテーブルの設定を行います

sudo fdisk /dev/sda1

# d でパーティションを削除

Command (m for help): d
Selected partition 1
Partition 1 has been deleted.

# p で現在の状態を確認

Command (m for help): p
Disk /dev/sda1: 1.8 TiB, 2000397868544 bytes, 3907027087 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19867eb5

# n でパーティションを作成 その後の設定で何も入力しない場合全てデフォルトとなる

pi@raspberrypi:~ $ sudo fdisk /dev/sda1
Welcome to fdisk (util-linux 2.29.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command. Device /dev/sda1 already contains a ext4 signature.
The signature will be removed by a write command. Device does not contain a recognized partition table.
Created a new DOS disklabel with disk identifier 0x19867eb5. Command (m for help): n
Partition type
p primary (0 primary, 0 extended, 4 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-3907027086, default 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-3907027086, default 3907027086): Created a new partition 1 of type 'Linux' and of size 1.8 TiB.

 

# p で再度現在の状態を確認

Command (m for help): p
Disk /dev/sda1: 1.8 TiB, 2000397868544 bytes, 3907027087 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x19867eb5 Device Boot Start End Sectors Size Id Type
/dev/sda1p1 2048 3907027086 3907025039 1.8T 83 Linux

 

# w で変更を書き込みます

Command (m for help): w
The partition table has been altered.
Calling ioctl() to re-read partition table.
Re-reading the partition table failed.:無効な引数です
The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8).

ext4でフォーマットする

sudo mkfs.ext4 /dev/sda1
pi@raspberrypi-c:~ $ sudo mkfs.ext4 /dev/sda1
mke2fs 1.43.4 (31-Jan-2017)
Found a dos partition table in /dev/sda1
Proceed anyway? (y,N) y
Creating filesystem with 488378385 4k blocks and 122101760 inodes
Filesystem UUID: e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848 Allocating group tables: done
Writing inode tables: done
Creating journal (262144 blocks): done
Writing superblocks and filesystem accounting information: done

 

マウントする

/etc/fstabに、デバイスを登録することにより、起動時に自動マウントすることができます。 またデバイスのパスではなくUUIDを登録しておくことにより、デバイスのパスが変更されてもマウントすることが可能です。

マウントポイントを作成
必要に応じてマウントポイントを作成します。今回は/mnt/hdd1としました。

sudo mkdir /mnt/hdd1

UUIDを調べる
# ブロックデバイスの情報を表示する

pi@raspberrypi:~ $ sudo blkid /dev/sda1
/dev/sda1: UUID="e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8" TYPE="ext4" PARTUUID="9bcc73b5-079a-4f69-a809-d0122aa289d1"

 

fstabを編集

# バックアップをとっておく

cd /etc
sudo cp fstab fstab.bak

# fstabを編集しマウント設定を追加

sudo nano fstab
# デバイス名 マウントポイント ファイルシステム オプション dump指定 fsck指定
UUID=e94a9fef-fc73-4b8c-ae9b-56f0ee10fce8 /mnt/hdd1 ext4 nofail 0 0

# 再起動

sudo reboot

確認
df

f | grep /mnt/hdd1
pi@raspberrypi:~ $ df | grep /mnt/hdd1
/dev/sda1 1921802500 77852 1824032588 1% /mnt/hdd1

所有者変更

さらに、chinachuの録画データの保存先を、外付けHDDにするには、所有者変更が必要でした。

 

フォルダ作成

$ cd /mnt/hdd1
$ sudo mkdir recorded

所有者変更
#デフォルトの保存先

$ ls -al ~/chinachu/
drwxr-xr-x 2 pi video 4096 Dec 30 12:55 recorded

#今回作成した保存先

$ ls -al /mnt/hdd1
drwxr-xr-x 2 root root 4096 Dec 30 13:10 recorded

変更

$ sudo chown pi recorded
$ sudo chown :video recorded


確認
デフォルトと所有者設定が同じになっていればOK

$ ls -al
drwxr-xr-x 2 pi video 4096 Dec 30 13:10 recorded
保存先を外付けに変更


ブラウザでChinachuを開き、設定画面で以下のように変更します。

"recordedDir" : "./recorded/",
→"recordedDir" : "/mnt/hdd1/recorded/",

これで保存先の変更は完了。

 

sambaのインストールと設定

録画フォルダをWindowsから読み出し、視聴できるようにします。

#sambaのインストール

pi@raspberrypi:~$ sudo apt install -y samba

設定ファイルに /mnt 以下を読み取り専用、ゲストアクセスOKで公開するよう設定を追加します。


#sambaの設定ファイルの編集

pi@raspberrypi:~$ sudo nano /etc/samba/smb.conf

/etc/samba/smb.conf
....
#ファイルの末尾に以下の行を追加

[recorded]
comment = Chinachu Recorded Folder
path = /mnt
browseable = yes
read only = yes
guest ok = yes

 

sambaを再起動して設定を有効にします。


#sambaの再起動

pi@raspberrypi:~$ sudo systemctl restart smbd nmbd

Windowsから ¥¥(録画サーバのIP)¥recorded  (¥は半角)にアクセスしてフォルダが見れれば成功です。

 

 これで、家庭内の各パソコンから、録画設定と、録画済(録画中)ファイルからTV視聴が自由にできるようになります。
現状、録画予約はブラウザから。視聴は、sambaの共用フォルダにアクセスして、録画ファイルをVLCで起動する手法です。

 

使用してみた感想

  • 冒頭にも書きましたが、MPEG2ファイルで録画するため、PCで見るツールとして申し分のない画質と、録画予約は簡単な操作でした。
  • ラズパイは、やはりサーバーに最適です。CPUが熱くならずに、ファンレスで音が静か。
  •  注意事項としては、今回のように、チューナー使用が1つの場合は、同時刻に複数のチャンネルを予約してしまうと、初めに予約した方がキャンセルされる仕様のようです。本当に予約されたか、ブラウザのホーム画面に戻って確認する事を忘れないことです。
  • 録画した番組は、Windowsパソコンで見る方が多いと思いますが、VLCのソフトで録画共用フォルダのファイルを アクセスして観る方法が、画質がベストです。録画ファイル名には、日付・題名が付いているので、特に困ることはないと思います。
  • 重要:放送番組に著作権がありますので、個人使用の範囲でお楽しみ下さい。

 

今後の予定

  • 現在、チューナーは1本のため、2局以上の同時録画は出来ない。チューナーを1本ずつ増設していけば、同時録画可能の局数が増えていく。最終的には、全チャンネル全番組の録画システムにバージョンアップして行きたい。
  • 現在の2TBの外部HDを使用しているが、何日で満杯になるか確認して置きたい。
  • 録画予約を外出先から可能にする仕組みも、オープンソースであるようなので追加して行きたい。また、開発中となっている Chinachu-Air にも期待したい。

 

 

 ・構築の参考にさせていただいたブログです。

qiita.com

 

qiita.com

 

qiita.com

 

 

 

 

Raspberry Pi Zero-WH、pHAT-DAC、Volumioで超廉価なネットラジオが出来た!!, JPOP 24Hノンストップ!

f:id:masa19569810303:20181022113727j:plain

 

はじめに

 前回、Raspberry Pi Zeroと、音楽再生ソフトVolumioでハイレゾの再生機を作りましたが、ホット・スポットモードでの使用でした。つまり、ハイレゾの再生のみ(Wi-Fi環境がない車内などでも使えるので、メリットはあります。)

 

www.m-miura.tech

次に、Volumioでやってみたかった事に、ネットラジオ機能があります。世界の音楽が聴けるものです。Raspberry Pi Zeroは、LAN端子がないため、ネット接続にはオンボードWi-Fiで受信できるはずでした。

ところが、私の持っているZeroでは、ホットスポットモードをOFFにしても、Wi-Fi接続が出来ません。いろいろやって見みたところ、苦肉の策として、上記写真のような(WindowsPCで使っていた)USB-Wi-FiアダプタをUSB変換ケーブルに繋げて方法で、簡単にネットラジオに接続出来ましたので紹介します。

 

手順1 Wi-Fi接続設定

再度スポットモードで使用した場合を考え、スポットモードを構築したマイクロSDのバックアップデータを取得し、保管しておきます。(スポットモードとネット接続の切り替えが自由に出来ない様子のため。)
さて、前回のように、Volumioのスポットモード使用になるように、PCでWi-Fi選択をVolumioにして、設定画面を出します。そして、自宅のWi-FiSSIDの選択とパスワード設定を行い、再起動します。

f:id:masa19569810303:20181022113825p:plain

 

手順2 接続IP確認

Raspberry Pi Zeroの電源を入れ、Volumioがネット接続したことと、pingコマンドでIPを含めて確認します。Windowsコマンドプロンプトを使い、起動したVolumioのIPをメモします。

f:id:masa19569810303:20181022113906p:plain

 

手順3 PCブラウザでVolumioネットラジオ開始

PCブラウザで、先ほどのpingでメモしたIPを入れると、Volumioが起動します。一覧表示をクリックして、ウェブラジオを選択すると、もうネットラジオが完成です。

f:id:masa19569810303:20181022113926p:plain

 

これで、世界のネットラジオが聴けますが、国別検索でJAPANにすると、JPOPのネットラジオなどが、いろいろ出て来ます。NHKラジオジャパンは聴けないようです。

※音楽著作権があると思いますので、個人的に聴くだけで録音などはされないように。

f:id:masa19569810303:20181022113951p:plain

 

まとめ

Raspberry Pi Zeroの有効活用として、ネットラジオになることが確認できました。
DACを使っているので、ハイレゾに近いFM音質で聴けます。

Raspberry Pi 3でも同様に使用可能ですが、Raspberry Pi 3は有線LANがあるので、LAN使用の方がが安定しています。

現状、イヤホンのみですが、小さなスピーカを接続して、JPOP、JAZZ、bossa nova などを BGMとして楽しめそうです。

 今回は、ここまで。

 

 

 

 

 

RaspberryPi-Zero でGoogleアシスタント実現!!使ったのはAIY-VoiceV1データとReSpeaker基板、自動起動も出来た

f:id:masa19569810303:20181004143932j:plain

ラズパイZeroの活用事例です。スマホなどで提供されている Googlea-asistant をラズパイZeroやってみました。(写真が今回作ったもの)

www.switch-science.com

実験の経緯

 余剰のRaspberryPi-Zeroで、AIスピーカのAmazonエコー構築にトライしましたが、先駆者の情報は、RaspberryPi-3を使うものでした。実際やって見たところ、C言語のビルド動作がとても遅いことや、シングルコアのコマンドになっていない事などから断念しました。
代わりに、AIスピーカのもう一方の” google-assistant” をトライしてみることにしました。調べると、こちらには、google-AIYプロジェクトと言う段ボールでできたAIスピーカのパッケージが販売されて、中身はラズパイ3のボードです。ソフトは、google-assistantのデモがRaspbianベースで公開中(Voice V1)で、そのまま使用することできます。言語はPythonなので、ビルドの必要がありません。

これと、マイクとスピーカAMPが実装された下記基板(ReSpeaker 2-Mics Pi HAT) を1枚使うことで、超廉価に(手っ取り早く)AIスピーカが構築ができました。

そして昨日、” google-assistant” が質問に答えるようになりました。音声はイヤホンで聞いています。

www.switch-science.com

 下記を参考にさせていただきました。

aiyprojects.withgoogle.com

deviceplus.jp

機能制限

ただし、機能制限があることお知らせしておきます。
"OK、google" など音声で起動するHotword機能が、このRaspberryPi-Zeroでは使えません(試しましたが、だめでした)。

(10/7追記:最新のVoice キットV2の作成マニュアルを良く見たところ、こちらも音声起動の記載はなく、ボタンを押してデモ開始とあります。つまり、V2の製品は、今回、私が試行したデモと同じ動作です。ソフトはV1/V2共通にしていると思われます。)

代わりに、押しボタンで対応しています。RaspberryPi-Zeroの仕様通りでのデモ動作になります。

(※最新のVoice キットV2は、RaspberryPiの使用が3からZeroに変更し、RaspberryPi-Zero自体も同梱、マイクロSDにソフト書込みで同梱のため、V2ソフトは未公開です。なお、SnowBoyというhotword機能のソフトがフリーであるため、これを使えればRaspberryPi-Zeroでも hotword機能が持てるはずです。後日やってみます。)

 

これら機材を使った、設定作業を簡単に説明します。

 手順1 AIYイメージ準備

1)AIY プロジェクトのimg ファイルをダウンロードします。(PCで)

https://aiyprojects.withgoogle.com/voice-v1/#assembly-guide

2)AIYのファイルイメージデータをダウンロードしたら、.xz ファイルなので、
  7zipで解凍します。
 SD書き込みの定番ツールのEtcherで、この .img ファイルをマイクロSD(8GB以上)に書いて下さい。 

3)マイクロSDを挿入し、ディスプレーとマウス、キーボードを繋ぎ、画面が開いたら、welcome raspberryの設定から開始します。
国はJAPANを選択し、WiFiを設定、装置名をraspberrypizeroに変更(私のところはraspberrypiが1台、既にネットワークに居るため) 
apt-update 実施し(これがとても時間がかかる)、VNC使用可能になっていることと
Wi-FiのIPを確認し、raspberrypiの設定で、画面解像度を(大きく)設定する。
また、ログイン・パスワードを変更しておく

 手順2 ReSpeaker ドライバインストール

Seeed ReSpeaker 2-Mic Pi HAT基板をZeroのヘッダーに実装し、
ドライバを下記を参考にインストールします。

http://wiki.seeedstudio.com/ReSpeaker_2_Mics_Pi_HAT/

wikiに従って進めます。

 

2. Setup the driver on Raspberry Pi
LEDとスイッチとイヤホンを流用のため、
python3のスクリプトをインストール

$ sudo apt-get update
$ git clone https://github.com/respeaker/seeed-voicecard.git
$ cd seeed-voicecard
$ sudo ./install.sh
$ reboot

3. Configure sound settings and adjust the volume with alsamixer

この2-Mic Hatには超小型のマイクが左右二つ付いています。ラジオジャックにイヤフォンを差し、いつもの方法でマイクと音声出力を確認します。

$ alsamixer #音量の調整、Escで元の画面に戻ります
$ aplay -l #スピーカーの確認、card番号を覚えておいて下さい
$ arecord -l #マイクの確認、card番号を覚えておいて下さい

 

pi@raspberrypizero:~ $ arecord -l
**** ハードウェアデバイス CAPTURE のリスト ****
カード 1: seeed2micvoicec [seeed-2mic-voicecard], デバイス 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
pi@raspberrypizero:~ $ aplay -l
**** ハードウェアデバイス PLAYBACK リスト ****
カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA]
サブデバイス: 7/7
サブデバイス #0: subdevice #0
サブデバイス #1: subdevice #1
サブデバイス #2: subdevice #2
サブデバイス #3: subdevice #3
サブデバイス #4: subdevice #4
サブデバイス #5: subdevice #5
サブデバイス #6: subdevice #6
カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: seeed2micvoicec [seeed-2mic-voicecard], デバイス 0: bcm2835-i2s-wm8960-hifi wm8960-hifi-0 []
サブデバイス: 1/1
サブデバイス #0: subdevice #0
pi@raspberrypizero:~ $
$ arecord -f cd -Dhw:0 | aplay -Dhw:0 #Dhw:0の部分はarecord, aplayで確認したカード番号を入れて下さい


今回のカードは 
arecord -f cd -Dhw:1 | aplay -Dhw:1


 スピーカ/ヘッドホンの切り替え設定があるので、raspberryの設定で

ヘッドホンに設定していないと聞こえない。

これで自分が話した声がオウム返しに聞こえたら、2-Mic Hatが正常に動作しています。

 

4. Use the on-board APA102 LEDs

 今回、まだ使用していませんが、LEDの点灯試験のため、
pixels.pyを流してみます。3色に光ってカッコイイです。

 手順3 AIYプロジェクト設定変更

Seeed ReSpeaker 2-Mic Pi HAT向けに、AIY Projectの設定を一部変更します。

下記を参考にさせていただきました。

intellectualcuriosity.hatenablog.com

    (1) Voice Kitの音声系の設定変更

Voice KitのSP基板は無いので音声系の設定を変更します。

sudo nano /boot/config.txt

 を実行して、一番後ろの部分のコメントをつぎのように変えます。dtparam=audio=onを生かす

# Enable audio (loads snd_bcm2835)
dtparam=audio=on
#dtoverlay=i2s-mmap
#dtoverlay=googlevoicehat-soundcard

参考:
AIYのデスクトップにある「Check audio」でのオーディオの動作確認は、基板名がVOICEキットと違うのでやらなくて良いです。

    (2) Voice Kitのオーディオ設定の変更

Google Assistant SDKの「Configure and Test the Audio」を見て
「/etc/asound.conf」を修正しました。

録音と再生のデバイスを表示するコマンドを実行して、「/etc/asound.conf」を書き換えます。

 先ずVoice Kit用のオーディオ設定を変更します。

sudo nano /etc/asound.conf

 を実行して、次の記述に入れ替えてリブートします。

pcm.!default {
type asym
playback.pcm "speaker"
capture.pcm "mic"

} pcm.speaker {
type plug
slave {
pcm "hw:1,0"  変更前:0,0
}
} pcm.mic {
type plug
slave {
pcm "hw:1,0"
}
} #追加されていた
pcm.dmixed {
type dmix
slave.pcm "hw:seeed2micvoicec"
ipc_key 555555
} pcm.array {
type dsnoop
slave {
pcm "hw:seeed2micvoicec"
channels 2
}
ipc_key 666666
}

hw:の後はcard number,deive numberとなるので、pcm.micの方は「hw:1,0」、pcm.speake使うので「hw:1:0」に修正しました。

 
もう一か所、変更が必要です。

動いていそうであるが、スイッチのGPIOが合っていないので、合わせる。Voice KITは、23を使っている。

https://deviceplus.jp/hobby/entry_y14/
ReSpeakerにはあらかじめプッシュボタンが一つ付いていますので、AIYの仕組みを一部変更し、音声聞き出しなどにこのボタンを活用します。このボタンはラズパイのGPIO17につながり、aiyフォルダの中にあるvoicehat.pyというサブプログラムを変更し、対応させます。

[voicehat.py の変更]

$ cd ~/AIY-projects-python/src/aiy/
$ sudo cp voicehat.py voicehjat.py.org  #バックアップをとっておいて下さい。
$ sudo vi voicehat.py
_GPIO_BUTTON = 17   #17に変更します。

/home/pi/AIY-projects-python/src/aiy

 これでボタンOKになります。

 

 手順4 google認証

ここが鬼門です。個人情報があるため詳細には設定をお見せできませんが、写真を参考にして下さい。

Google Cloud Platform に

まず最初のステップは、Google Cloud上でAPIなどをデバイスで使えるようにします。
こちらのGoogle Cloudコンソールにアクセスし、設定を進めます。
https://console.cloud.google.com/

    (1)Google Cloudプロジェクトの作成

Google Cloudにプロジェクトが無い場合は、真ん中上のメニューから、新しいプロジェクトを作成して下さい。

    (2) Google Assistant APIの有効化

プロジェクトができたらGoogle Assistant APIを検索し、有効化させます。

    (3) 認証情報の作成

写真ような OAuth同意画面まで作ります

f:id:masa19569810303:20181004215121p:plain

    (4) 認証情報のダウンロード、ラズパイでの登録

作成された認証ファイルを、“JSONをダウンロード”というボタンから、作業しているパソコンにダウンロードします。

ダウンロードした認証情報を、下記スクリプトを使ってパソコンからラズパイのホーム直下に転送します。以下xxx記述の”download_file.json”の部分は実際にダウンロードしたJSONファイルの名前を使い、これをラズパイ側でassistant.jsonという名前に変更しています。

(ラズパイのコンソールなどから) scp download_file.json pi@xxx.local:assistant.json

ラズパイのホーム直下にJSONファイルを置くだけなので、ラズパイのファイルマネージャーを使って、移動とリネームで行っても良いです。

置いたら、ラズパイの Start dev terminal のターミナルから、実際のデモでも使用するコマンドを入力します。

src/examples/voice/assistant_grpc_demo.py

 すると、googleアカウントの選択確認(初回の場合は、新規登録)がブラウザから聞かれます。

f:id:masa19569810303:20181003232055p:plain

 

 選択すると、googleアカウントへのリクエストが出ます。

 許可を押すことで、認証完了です。(私はこれがだけでOKでした。)

f:id:masa19569810303:20181003232120p:plain

 

 スマホGoogle Assistant の自分の設定のデバイス欄を見ると、不思議なことに、
Voice Kit が増えています。(今回3度やってしまった?ので、3つ出てしまっていますが)。

こうなれば、もう、ラズパイで、Google Assistantデモが実行可能となります。 

 

f:id:masa19569810303:20181003232431p:plain

 

 手順5 最終調整

念のために、マイク、イヤホン/スピーカ の設定を ラズパイの画面の

Pulse Audio VOLUMECONTROLをダブルクリックし、

音量調整で、入力装置、出力装置、設定を 確認、違っていれば、選択し直しと

音量も調整します。 

 

f:id:masa19569810303:20181003232331p:plain

 

f:id:masa19569810303:20181003232252p:plain

f:id:masa19569810303:20181003232225p:plain

 

 

良ければ、いよいよ、デモの実行です。

コマンドは、これだけ、 

src/examples/voice/assistant_grpc_demo.py

下記のように出てきます。ボタン押しの要求が出ています。

f:id:masa19569810303:20181003232150p:plain

 

 手順6  Google-Assistant起動方法

いよいよ起動ですが、起動方法は3つあります。

 現状のラズパイZEROでは、1か、2です

 

起動方法1

pi@raspberrypizero:~ $ cd AIY-projects-python
  pi@raspberrypizero:~/AIY-projects-python $ src/examples/voice/assistant_grpc_demo.py

 

 

こんな感じに画面には 音声認識を少しづつ行っている様子が出ます。

pi@raspberrypizero:~/AIY-projects-python $ src/examples/voice/assistant_grpc_demo.py
/opt/aiy/projects-python/src/aiy/_drivers/_led.py:51: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(channel, GPIO.OUT)
Press the button and speak
[2018-10-03 19:39:07,313] INFO:recorder:started recording
Listening...
[2018-10-03 19:39:13,699] INFO:speech:transcript: 今日の
[2018-10-03 19:39:13,721] INFO:speech:transcript: 今日ので
[2018-10-03 19:39:13,729] INFO:speech:transcript: 今日の天
[2018-10-03 19:39:13,736] INFO:speech:transcript: 今日の天気
[2018-10-03 19:39:13,744] INFO:speech:transcript: 今日の天気を
[2018-10-03 19:39:13,752] INFO:speech:transcript: 今日の天気は
[2018-10-03 19:39:13,759] INFO:speech:transcript: 今日の天気は
[2018-10-03 19:39:13,767] INFO:speech:transcript: 今日の天気は
[2018-10-03 19:39:13,782] INFO:speech:event_type: 1
[2018-10-03 19:39:13,806] INFO:speech:transcript: 今日の天気は
You said " 今日の天気は "
Press the button and speak

 


起動方法2

OKグーグルか押しボタンSWの併用が出来るコマンド、

pi@raspberrypizero:~ $ cd AIY-projects-python
    pi@raspberrypizero:~/AIY-projects-python $ src/examples/voice/assistant_library_with_button_demo.py

こんな感じに画面には テキストで出ます。

pi@raspberrypizero:~/AIY-projects-python $ src/examples/voice/assistant_library_with_button_demo.py
ON_MUTED_CHANGED:
{'is_muted': False}
/opt/aiy/projects-python/src/aiy/_drivers/_led.py:51: RuntimeWarning: This channel is already in use, continuing anyway. Use GPIO.setwarnings(False) to disable warnings.
GPIO.setup(channel, GPIO.OUT)
ON_START_FINISHED
Say "OK, Google" or press the button, then speak. Press Ctrl+C to quit...
ON_CONVERSATION_TURN_STARTED
ON_END_OF_UTTERANCE
ON_RECOGNIZING_SPEECH_FINISHED:
{'text': '今日の天気は'}
ON_RESPONDING_STARTED:
{'is_error_response': False}
ON_RESPONDING_FINISHED
ON_CONVERSATION_TURN_FINISHED:
{'with_follow_on_turn': False}

(error_response表示は、zeroを使っているためと思われます。

 

起動方法3

ラズパイ2以上で OKグーグルで 音声応答を行う場合のコマンド
OKグーグルか押しボタンSWの併用が出来るコマンド、

Cannot run hotword demo on Pi Zero!Cannot run hotword demo on Pi Zero!
(ラズパイZeroはhotword未対応なのでこう出ます)、 pi@raspberrypizero:~ $ cd AIY-projects-python pi@raspberrypizero:~/AIY-projects-python $ src/examples/voice/assistant_library_demo.py

 

 これも参考です。

スマホGoogle Assistant の自分の履歴を見ると、

Google Assistantが話した内容が文字で残っています。

 

f:id:masa19569810303:20181003232513p:plain

 

 

追加設定(自動起動

ラズパイを終了するたびに、ターミナル画面を開いてコマンドを打ち込んでgoogleassistantを
起動していましたが、画面を見ないでも起動したくなり、自動起動の方法を探したところ、下記にありました。

bezelie.com

1)ラズパイのデスクトップ画面からターミナルを開いてください。
・サンプルプログラムが置いてあるディレクトリ「AIY-projects-python/src/examples/voice」に移動します。

$ cd AIY-projects-python/src/examples/voice

2)lsコマンドでディレクトリの中身を見て、自動起動するスクリプトを確認します。

assistant_grpc_demo.py
assistant_library_demo.py
assistant_grpc_demo.service
assistant_library_with_button_demo.py assistant_library_with_local_commands_demo.py
cloudspeech_demo.py

・自動実行したいファイルを「main.py」という名前に変更して、「src」ディレクトリの下にコピーします。今回「assistant_grpc_demo.py」を自動起動してみました。

$ sudo cp assistant_grpc_demo.py ~/AIY-projects-python/src/main.py


自動起動設定ファイルが置いてある場所に移動します。

$ cd /lib/systemd/system/


・ここに、自動起動サービス設定ファイル「voice-recognizer.service」がない場合、nanoで新規に作成します。

 

$ sudo nano voice-recognizer.service

 

[voice-recognizer.service]

# This service can be used to run your code automatically on startup. Look in
# HACKING.md for instructions on creating main.py and enabling it. [Unit]
Description=voice recognizer
After=network.target ntpdate.service [Service]
Environment=VIRTUAL_ENV=/home/pi/AIY-projects-python/env
Environment=PATH=/home/pi/AIY-projects-python/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ExecStart=/usr/bin/python3 -u src/main.py
WorkingDirectory=/home/pi/AIY-projects-python
StandardOutput=inherit
StandardError=inherit
Restart=always
User=pi [Install]
WantedBy=multi-user.target
# This service can be used to run your code automatically on startup. Look in
# HACKING.md for instructions on creating main.py and enabling it.

自動起動を有効化し、再起動します。
$ sudo systemctl enable voice-recognizer.service
$ sudo reboot

自動起動をやめたいときは、下記のようにdisableします。

$ sudo systemctl disable voice-recognizer.service

 

 最後に

 RaspberryPi-Zero版の、Google-assistantが実現し、

使ってみて分かった事。

 

(これは、本家のAIY-Voice Kitにも言える事かもです。)


1.音楽を聴きたい、ニュースを聞きたい、写真を見たいは 丁重に断られます!!


  写真と音楽などのマルチメディアでの回答の期待は、

  スマホ版のGoogle-assistantか、Amazonエコーを

  使って下さい。


2.ラズパイ版のGoogle-assistantでも、スマホ版のGoogle-assistantを使うと、質問の履歴を回答も含めて文字で確認できます。

 

3.世界各国の会話に対応している様子です。

英語で質問すると、英語で(日本語担当とは別の女の人の声)回答が返って来ます。

意外にも、外国語の勉強に使えるツールかも知れません。

 

今後の予定

 

もう少し動作、機能など確認整理し、機能アップしていこうと思います。

Google Assistantでたくさん使われている

 Python(パイソン)言語は、C言語より各段に

 見易いですね。(まだまだ勉強不足ですが)

 

Raspberry Pi Zero-WHとpHAT‐DACでハイレゾ再生、Volumio2のINTERNALが出た!

 ラズパイZero-WHとpHATDACハイレゾ再生機の話の続きです。

2段重ねのケースに入れた携帯ハイレゾセットの写真です。音楽データは、USBメモリに入れました。 

f:id:masa19569810303:20180914222546j:plain

 でも・・・、真ん中のUSBメモリと変換ケーブル、

どうも邪魔ですね。

USBメモリを忘れて、外出先で使えなかった事もあったし。)

 

 そこで、各ブロガーさんがやっていたように、Volumioの入ったマイクロSDカード(8GB品以上)に、SSHでインターナル領域を作って音楽データを転送すれば、USBメモリが要らなると考えました。

また、幸いにも、Volumio-ver2 では、インターナル領域も、データ転送に便利なSAMBAも実装済という記事を見て、やってみました。

 

でも、インターナルライブラリが出ません!!

起動時は、確かにインターナルライブラリがメニューにあったのですが。データ転送が未では、メニューから消えてしまうのでした。肝心のSAMBAも見えません。

 

いろいろやってみたところ、恥ずかしながら、パソコン操作に問題がありました。SAMBAの共有画面を出す場合、ネットワークコンピュータの入力方法にもコツがありました。

 

分かった事(ラズパイZeroの場合)

  1.  ラズパイ(ホスト)側のWi-Fiの電波をパソコンまたはスマホが受信している時に、SAMBAが使えたり、Volumioの操作画面が現れる仕組みになっていること。
  2.  SAMBAを使う場合、パソコンのネットワークの画面から
    ¥¥Volumio.hostと入力すること。(¥¥を使うことを忘れていました。)

f:id:masa19569810303:20180915001303p:plain

 インターナル 出ました!!

f:id:masa19569810303:20180914222802p:plain

 

結論 

Volumio2では、SSH通信なし、パソコン側の操作のみで、インターナル・ライブラリと音楽データ転送が出来ました!!。

 

これで、USBメモリは不要になりました。めでたし、めでたし。

f:id:masa19569810303:20180914222625j:plain

 

追記:10/6  どれだけ、INTERNAL    の領域ができたか念のための確認です。(以前のVerではSD拡張作業が必須でしたが、もう不要です。これはやらなくても使用できます。)SSH接続ですがSSHのIDとパスワードは、最新版は"volumio"に変わっています。

f:id:masa19569810303:20181007083804p:plain

ディスクの状況確認は、sudo fdisk -l  とします。

f:id:masa19569810303:20181007083825p:plain

下記が表示されます。

f:id:masa19569810303:20181007083847p:plain

INTERNAL部分は、/dev/mmcblk0p3 のようです 。今回、8GB のSDを使っていますが、そのうち、5.2GBぐらいは、INTERNALになりました。 めでたし、めでたし。

 

その他、注意事項

今回のラズパイZeroは、LAN端子がないため,Volumio使用は、有線で使用できません。無線の ホットスポットモードのみです。無線ネットワーク(WiFiモード)の使用も現状できていません。設定画面の ホットスポットモード OFFにはしないように。(起動できなくなります。)

f:id:masa19569810303:20181010223951p:plain

 後日、ラズパイ3で、有線のネットワーク機能を確認してみました。(この場合は、通常のネットワークモードで、ホットスポットはOFFでいけます。)海外のFMラジオが、ネットで聞けるのは面白いですね。

 

 

Raspberry Pi Zero-WH、pHAT-DAC、VOLUMIO で超廉価な ハイレゾ再生機が出来た!(ホットスポットモード) 

Raspberry Pi3は、ブログサーバーとして順調に?稼働中のため、別の実験用に小型版のRaspberry Pi Zero WHを購入しました。
www.switch-science.com

やりかった事は、 ハイレゾ・オーディオ再生です(安価に!)。実現のためにはDAC「Digital to Analog Converter」機能のドーターボードが必要です。私は一番安価な pHAT DAC を選びました。これは、Raspberry Pi Zeroと基板のサイズが同じで、ピンヘッダーに実装して使用します。Raspberry Pi3にも使えるとのこと。

www.switch-science.com

 さて、Raspberry Pi Zeroは、Raspberry Pi3と違って、LANコネクタがなく、USBコネクタはBタイプがOTR用と電源用で2個のみ、数が少なく、設定に工夫が必要です。

f:id:masa19569810303:20180904021541j:plain

 

 そのハイレゾ再生のソフトとして、とても簡単に適用できるものがありました。VOLUMIOというソフトです。Raspberry Piにも作られており、img形式ファイルで提供されているため、マイクロSDにディスクイメージで書き込むと、そのままRaspberry Piで動作してしまいます。

ただし、重要点があり、操作はWi-Fi付きのパソコンかスマホから行います。また、VOLUMIOは、2つの動作モードがあります。LANネットワーク環境があるところでは通常のネットワークモード。また、今回のRaspberry Pi Zeroのように、LAN端子がなく、ネットワーク環境がないところでも携帯して使用する場合は、ホットスポットモードというものがあります。今回の操作説明は、ホットスポットモードで行いました。

 

 やってみたら、写真のような感じに出来ました。(マイクロSDと、スマホのバッテリー、ハイレゾ音楽データの入ったUSBメモリカード)音楽用イヤホンを、DACドーターボード搭載のRaspberry Pi Zeroに接続するだけ。

f:id:masa19569810303:20180904212403j:plain

Raspberry Pi Zeroに電源を接続したら 、VOLUMIOのソフト起動は、VOLUMIOのHotspot モードを使います。PC、スマホWi-Fi ネットワークリストに ”Volumio” (最新Verは”Volumio 2”) というSSIDが現れ、”Volumio2”のパスワードで接続が可能(最新Verは自動的に接続される様子)になり Volumio の設定画面(初回のみ)が現れます。DACのデバイスと、音楽ライブラリを選択し、選曲すると音が出てきます。

パソコンで制御画面も、こんな感じでカッコイイです。また、スマホ版アプリがありますが有料(200円程度)です。

f:id:masa19569810303:20181111214312p:plain

f:id:masa19569810303:20181111214341p:plain

f:id:masa19569810303:20181111214412p:plain

 

f:id:masa19569810303:20180904213322p:plain

参考まで、デバイス設定の画面を載せます。

f:id:masa19569810303:20180906224856p:plain

f:id:masa19569810303:20180906224914p:plain

f:id:masa19569810303:20180909005840p:plain

f:id:masa19569810303:20180906225002p:plain

なお、USBメモリなしで使いたい場合は、下記で説明しています。

www.m-miura.tech

 

ハイレゾの感想

この安価な機材(基板だけで計3000円)で、本格的なハイレゾを体験出来たことは
驚きです。音の感想については、音楽用イヤホンの再生でも、CDレベルの音と、ハイレゾの音の違いは明確で、一言で言うと、高音から低音まで重厚で明瞭な音だと思います。(JUJUの歌声もリアル!)ハイレゾ音はとてもいいです。

 

その他 参考にしたサイト

今回のVOLUMIOが見つかる前に、上記を参考に、Raspbian₋OSと再生ソフトを地道にインストールする手法でやってみました。これには、VNCを使うため、画面操作の度に、ノイズ・音飛びが出ました。ただし、使った再生ソフトのVLCの音は、VOLUMIOの音より良いと感じました。

 

 今後の予定

このハイレゾ再生機は、基板剥き出しなので、ケースを探そうと思っています。

(下記写真参考に)

さらに、ハイレゾ再生ソフトに、Moode Audio というオープンソフトもあるようなので試してみたいです。

 

9/9追記:とりあえずケースに入れて見ました。Raspberry Pi Zero用ケース2種類を2段重ねで使います。

f:id:masa19569810303:20180909135826j:plain

 

10/9 追記 更にケースを替えてみました。アクリル板5枚を積み重ねただけのタイプです。脇は、密閉されませんが、とてもコンパクトになり、意外にカッコイイです。

f:id:masa19569810303:20181009200614j:plain

 

Raspberry Pi 3 ブログサーバー WordPress編集画面が、真っ白になった!!

WordPress 順調に動作していたはずだったが・・・

  現在、運用中の自前サイトも見て下さい。”おらほの小野まち” 

おらほの小野まち We're of Ono-machi – 豊かな自然・歴史のまち、小野の里

問題発生の経緯

記事を追加しようと、ダッシュボードから/投稿/新規追加をクリックしたら、

なんと、編集部分が ”真っ白”に!!

f:id:masa19569810303:20180830125657p:plain

登録済の記事編集も、 ”真っ白”!! 再起動しても、状態は変わらず。

 

ネットで対策を検索してみると、複数のプラグインが影響し、エラーになって

真っ白になる時がある。プラグインを停止して見ると良い、とあります。

 

WordPressの画面が真っ白で何も表示されなくなった時にやるべきこと | デジタルコンテンツ企画室

 

やって見ると、プラグインで停止出来ないのがあり、結局対策できず。

 

考えて見ると、こうなる前、

いろいろなプラグインをどんどん追加し、よく確認しないで有効にしていた。

また、写真を複数選択し、一度にアップロードしようとしていた。

これらの操作が怪しい。。。

 

ちょうど、All₋in₋One WP Migration のプラグインで、

昨日、WordPressの 丸ごとバックアップを取ってあった。

これで、前の状態に戻して見ることにした。

 

f:id:masa19569810303:20180830134453p:plain

 

All₋in₋One WP Migration で 昨日の状態に復元は、あっさり成功!!。

これで、記事追加、記事編集もOKになった。

 

まとめ

教訓として

1.WordPressのサイトのバックアップデータは必要。

  問題があった時は、前の状態に戻すのが速い

2.プラグインは、安易にインストールしない。

  本当に必要なものだけ、ローカル環境などで動作確認してから適用する。

 

 今回はここまで。

Raspberry Pi 3 ブログサーバー WordPressのデザインテーマは、Athenaで決まり!!

また、WordPressのお話です。

 

Raspberry Piのブログ・サーバーは、WordPressで快適に記事を更新中!!

WordPress は、1000種類以上もある無料のテーマから好きなものを選んで、デザインをあっという間に変更できる特徴があります。

有料のテーマであれば、機能がもっと充実しているらしいのですが、まず無料版で進めます。

 でも、このごろ、デザインがしっくり来なくなりました。

さて、今まで使っていたテーマは、Twenty Seventeenでした。

f:id:masa19569810303:20180827085648p:plain

見本の写真が綺麗で、ヘッダー画面から、投稿画面への切り替りに動きが入る。かっこ良かったです。下記が実際のRaspberryのサーバーで使っていた画面です。

f:id:masa19569810303:20180827122002p:plain

 

ですが、投稿が縦に長くなり、”続きを読む” のMOREコマンドを入れて短縮化し、メニュー画面のようにしましたが、(特にスマホで見る場合、)最後の方まで見る人はいないのではないかと思えて来ました。

よって、別のテーマを探して見る事にしました。

 

次に使ってみたテーマは、Twenty Sixteenでした。

f:id:masa19569810303:20180827091310p:plain

最初のヘッダー画面から、投稿画面への切り替りの動きは無いですが、周りの縁が黒になっているため、文字の見易さは良いのですが。やはり、もう少し動きが欲しく、さらにテーマを探しました。

 

 そして、見つかり、今、気に入っているテーマは、Athenaです。

f:id:masa19569810303:20180827120917p:plain

 

Athena適用の画面は下記です。

投稿記事が横にも並び、そして、ヘッダ画面は2面あり、交互に横スクロールで切り替わります。当面、希望した内容なので、これで運用してみます。

f:id:masa19569810303:20180827121505p:plain

 

 

 まとめ

 Raspberry Pi のWebサーバーは、WordPressを使う事で、好きなデザインの綺麗なブログサイトが簡単に作れます。運用するサイトの目的にあったテーマを選択し、さらに良いテーマが見つかれば、どんどん更新するのが良いと思います。

 WordPressは、記事と写真はそのままで、テーマを替えられるので、非常に便利ですね。  では。

 

 

 

 

 

 

 

Raspberry Pi 3 Model B+ WordPressのローカル環境はBitNamiで決まり!! 

オフライン(Windows)で動くWordPressのお話です。

 

やっと出来たRaspberry Piブログ・サーバー

WordPressでサイトのデザインをいじりたくなった時。

いろいろ試してから、前のデザインに戻したい時。

 

そんな時は、バックアップを取る事ですが、Raspberry Pi には

Raspbian標準 SD Card Copier

があり、物理的にマイクロSDカード間で丸ごとコピーするのが簡単ですが、時間が30分ぐらいかかります。

それに、raspbianは動いているので、丸ごとコピーは要らない。

オフライン(Windows)で動くWordPressがあればいいなぁ~。と思っていたところ、

 既にあるんです!!。オフラインで動くWindows版のWordPressが、

 BitNami と   InstantWP 

という2つです。

これで、いろいろ更新し、編集が完成してから公開用のオンラインのWordPressに転送出来ます。

 

私がざっと評価してみたところでは、

動作が速い、安定性などから、

 

  BitNami (ビットナミー)

に軍配が上がりました。

 

  ※参考:InstantWPは、インストールは

簡単でしたが、動作するまでのウエイトがあり、待ちくたびれます。また、最新バージョンは起動しない状態があります。前バージョンのV5.3.4が動きます。

 

BitNamiのインストールは下記が参考になりました。

chan-biku.club

 

さて、BitNamiのWordPressを使った オンライン~ローカル間のデータベースの入れ替えは、WordPressのインポート、エクスポートを機能や、 プラグインを使えば良いことは分かりました。実践では、オンライン→オフラインのデータベース内容の移動は、完璧に出来ました。しかし、オフライン→オンラインのデータベース内容の移動は、まだ完璧とはいえません。多分、オンラインのデータベースに、オフラインからのデータを勝手に変える操作になるため、更新拒否の状態があるようです。もう少し勉強してからこの辺は実施してみます。

 

 まとめ

 ・Raspberry Pi のWordPressブログサイトの更新方法として、

オフラインで動くWindows版WordPressの BitNami の活用が便利です。

・データベースのオンライン~オフライン間の更新操作は、WordPressのインポートとエクスポート、又はプラグインを使用します。(完璧な操作はさらに確認が必要である。)

・これらの操作によって、WordPressのデータベースのバックアップが短時間で出来るようになりました。

 

これからは、WordPressブログ記事の更新に専念できそうです。では。

 

 

 

 

 

 

 

Raspberry Pi 3 Model B+ Wordpressにも外部からアクセス出来た!!

前回のつづきです。内部アクセス、外部アクセス共に、

自前のウェブサーバー自体にアクセスできました。しかし、

ウェブサイトのWordpressが動いていませんでした。

前回の説明図をもう一度確認すると、Wordpressで設定する、アドレスの記載が問題のようです。

f:id:masa19569810303:20180810214431p:plain

 

本来、WEBサーバーには、内部IPアドレスでも、外部用独自ドメインアドレスでもアクセス出来るはずでしたが、Wordpressの設定が、そうさせてくれませんでした。

つまり、Wordpress 設定 一般に URLの設定箇所があります。

f:id:masa19569810303:20180810220044p:plain

2つの項目は、デフォルトのインストール先の場合、同じ内容で良く

  http://(IPアドレス) ① の手法で入力しても

  http://(独自ドメイン)② の手法で入力しても動作します。

 ただし

    ① は、内部のネットワークのみで動作

    ② は、外部のネットワークのみで動作 します。

 

対策としては、下記が参考になりましたが、

ローカルからドメイン名でアクセス出来ない!

 

割り切って、もう一つの簡単な方法を考えました。

  Wordpress 設定/一般/URL を ①にしてから

  ネット内のPCで、ブログを作成します。

  完成したら、公開設定にした上で、

  設定/一般/URL を ②に変更します。

   (この段階で、内部アクセスが遮断。)

  もしも、さらに内容を変更・更新したければ、

  ドコモ、AUソフトバンクなどの回線が使える、

  スマホタブレットを準備していただき、

  そのまま更新しても良く、または、

  設定一般のURLだけを ①に変更し、

  ネット内のPC使用を可能にしても良いです。

  更新終了したら、設定一般のURLを②に戻すことを

  忘れずに。

 

   いまのところ、この方法で問題は無い様子です。

   何かありましたら、またお知らせします。

   

 追記:Windowsの hosts を使う手法も簡単でした。

   (方法)

    作業用のWindows PC の windows/system32/drivers/etc の

    hosts に1行追加(webサーバーの Ipアドレス 独自ドメインURL)保存・再起動。

    これで、ネット内部からも 独自ドメインURLでもアクセス可能になります。

    はい。

 

 

 

 

Raspberry Pi 3 Model B+のWebサーバー、ついに 外部からアクセス出来た!!

 

 

Raspberry Pi 3 Model B+で、Webサーバー構築の参考にどうぞ!

 1週間前に、WordpressでWebサーバー構築できた! とお知らせしましたが、実は、外部から、アクセスが出来ていませんでした。

問題の外部アクセス解決図

先に、外部アクセスの解決方法を図でご紹介します。

f:id:masa19569810303:20180810214431p:plain

 

外部アクセス必要手続き

 外部アクセスには、下記を準備しました。

独自ドメインの取得・購入

ムームードメインが、簡単だったので、独自ドメインを取得し、1年間購入にしました。後でわかったのですが、独自ドメインを一つ購入すると、
サブドメインを替えて設定することで、複数のアドレスが使用できます。

 (ドメインサービスは未加入で良いです。)

独自ドメインの設定

ムームードメインのホームページのコントロールパネルの カスタムDNSセットアップ
を出します。No.1は、はてなブログPROの独自ドメインの設定内容です。

No.2は、今回の自前のラズパイのサーバー設定の内容です。
カスタム設定の欄で 種別欄にAレコードで IPアドレスを設定する内容です。この設定アドレスは、次の③のNAT設定とセット行います。

f:id:masa19569810303:20180805110445j:plain

 

③NTTの光フレッツのルータ(型番PR-A300SE)静的NATの設定

 この設定が必要なこと、下記記事から分かりました。 

詳細設定-静的NAT設定 - ルーター(ルータ)設定マニュアル

 

 

ここまで確認しIPを設定し、Wordpressの一般設定も、いろいろやってみましたが、相変わらず、外部から独自ドメイン向けのアクセスができません。

 

なぜだろう?。と考えていたところ。

ムームードメインの、(※)Aレコードの 設定IPが違っているのでは?と疑いました。

 NTTの光フレッツのルータの情報欄から、”接続先IPアドレス”を入力していましたが、もしかして違う?・・・。

  確立
   
WAN側IPアドレス :58.1.189.2**
接続先IPアドレス :133.160.***.***
     
     

 そうです。 ”接続先IPアドレス”を入力するのではなく、

 ”WAN側IPアドレス" を入力をやってみたところ、大正解でした。

  入力アドレスを間違えていたのでした。

 

これで、ようやく、外部アクセスが出来ました。(ここまで分かるのに1週間。)

 

今後の予定

今後は、Wordpressの設定とセキュリティー対策についても確認・更新し正式運用目指します。  

 

 

    

 

 

 

 

 

 

Raspberry Pi 3 Model B+ で Webサーバー(ホームページ)構築中!

 記事中の自前サイトをご覧下さい。”おらほの小野まち” 現在、安定して連続稼働中です。(ラズパイはいい!) 

おらほの小野まち – 豊かな自然・歴史のまち、小野の里

f:id:masa19569810303:20181020002832p:plain

  

今回は、上記写真の様な自前のホームページを持つWebサーバーの構築についてです。

 Raspberry Pi3は、発熱と消費電力が小さいので、やはり、Webサーバーの運用に適していますね。(※既に、業務用にも使われているようです。) 

 

準備するもの(ハード)
1.Raspberry Pi3 Model B+ (本体)

2.5V 2.5A ACアダプタ (B型マイクロUSBコネクタ付き)
3.マイクロSDカード HC8GBか16GB、(32GB、64GBでも動く)
4.HDMIインターフェース付き TV 又は ディスプレー
5.HDMIケーブル
6.ノートパソコン(SDカードスロット付き)


インストールするソフト
1.Raspbian (Raspberry Pi用OS)・・・無料

2.apache2 (ウェブサーバー)・・・・・無料

3.php7.0 (動的コンテンツ処理)・・・無料

4.MySQL(データベース) ・・・・・・無料

5.WordPress(ホームページ作成)・・・・無料

 

作業にあった方がよいWindowsソフト

 Win32DiskImager ・・・無料 

  このプログラムを実行すると SD カードへのディスクイメージの読み書きができるのでSD構築データのバックアップに使える


作業手順と難易度
1.apache2 のインストールと設定・・・簡単

2.php7.0 のインストールと設定・・・やや難

3.MySQLのインストールと設定 ・・・やや難

4.WordPressインストールと設定 ・・・簡単


さらに実運用に必要なもの
1.独自ドメインの取得
2.WordPress操作の慣れ(※PHPコマンドの知識は要らない。)
3.バックアップ用のマイクロSDカードがもう1枚

 

構築の参考になったサイト

ApacheとPHPのインストール | Raspberry Pi用ソケットサーバーフレームワーク「HAL」 | Feijoa.jp

qiita.com

yukidfg.jpn.ph

 

 構築手順の概要

  コマンド入力の詳細内容は参考にしたサイトをご覧下さい。

  私の備忘録として、最低限のコマンドのみ記載します。

1.apache のインストール
  ラズパイ側

sudo apt-get install apache2 -y

  ⇒PCのブラウザ側で

http://192.168.*.*/  *:は各々環境で異なります
It works!

の文字がある図が出たらOK


2.phpのインストール
  現在のPHP versionは php5ではなく php7.0 
   よって、コマンドは 5⇒7.0 に全て置換えが必要です。  

sudo apt-get install php7.0 php7.0-cli php7.0-gd php7.0-mysqlnd php7.0-pgsql php7.0-mcrypt php7.0-dev

あとはApacheを再起動するだけ。これでPHPが利用できるようになります。

sudo service apache2 restart

Document Root に設定した /var/www/html に移動し、PHP ファイルを作成して実行してみます。

cd /var/www/html
sudo vi test.php
----------------------------------------------
<?php
echo "I'm Raspberry Pi.\n";
----------------------------------------------

ブラウザからアクセスし

コマンドラインから実行も試してみます。コマンドラインでのPHPの実行は -q オプションです。

sudo php -q test.php

最後にPHPコマンドを実行してみます。-r オプションです。

sudo php -r "echo 'hello, world.';"

これで、Raspberry Pi でもPHPを実行する環境が整いました

PHPファイル action.php

-----------------------------------------------------
  <form action="action.php" method="post">
名前: <input type="text" name="name" />
年齢: <input type="text" name="age" />
<input type="submit" />
<br />
こんにちは<?php echo htmlspecialchars($_POST['name']); ?>さん
あなたは<?php echo (int)$_POST['age']; ?>歳です。
</form> ----------------------------------------------------

3.MySQLの設定

  ※MySQLの設定は、ちょっと難関でした。

mysql -u root -p

のコマンドで、設定したrootのパスワードを入れ、何度やってもエラー?。

いろいろ検索したところ、下記サイトで取り合えず解決。

 

ラズベリーパイにMariadbをインストールした時のメモ
 https://qiita.com/mtmtEM/items/cbda7216c08bc363be1f

  ※最新のraspbian(Stretch)ではmysqlではなくmariadb
推奨されているとのこと。

また、unix_socketプラグインを無効にするとログインできるらしいので以下を実行。

下記内容は、参照サイトから出典

 

#データベースを変更

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A Database changed
MariaDB [mysql]> select user,password,plugin from user; +------+-------------------------------+-----------+ | user | password | plugin | +------+-------------------------------+-----------+ | root | *7F0E37FBE843C587C23B67BD3****|unix_socket| +------+-------------------------------+-----------+ <1 row in set (0.00 sec)

# rootユーザに対するunix_socketプラグインを無効化する

MariaDB [mysql]> update user set plugin='' where user='root';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0 MariaDB [mysql]> select user,password,plugin from user; +------+-------------------------------+----------+ | user | password | plugin | +------+-------------------------------+----------+ | root | *7F0E37FBE843C587C23B67BD**** | | +------+-------------------------------+----------+ <1 row in set (0.00 sec)

# 変更した更新内容を反映

MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
MariaDB [mysql]> exit;
Bye

# 設定したパスワードを入力するとログインできる

pi@raspberrypi:~ $ mysql -u root -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is 43
Server version: 10.1.23-MariaDB-9+deb9u1 Raspbian 9.0 Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

動作確認は、次項で。

 

 

5.WordPressのデータベース作成
以下のコマンドでMySQLにログイン
mysql -uroot -p
パスワードを尋ねられるので先ほどメモしたMySQLのパスワードを入力します。
ログインに成功し。コマンドラインの左側の表示がmysql >に変化。
以下のコマンドでWordPressが使用するデータベースを作成。

create database wordpress;

次のようなメッセージが表示されたら成功です。
Query OK, 1 row affected (0.00 sec)
Ctrl + Dを押してMySQLから抜けます。

これで、PCのブラウザ側で

http://192.168.*.*/ 

を開くと、冒頭の画面のような

 綺麗な写真のWordPress のホームページの原型が表示されます。

 

現状はここまで、次は WordPressを学習し、

実運用できるホームページまで構築の状況を

報告したいと思います。

 下記に続きます。

www.m-miura.tech

 

www.m-miura.tech

 

 

今後のラズベリーパイの実験目標

 ①AI スピーカ ⇒下記で実施済み。

www.m-miura.tech

 ②ハイレゾ再生オーディオ ⇒専用DACボードが必要なため、後で

          ➡下記で実施済み。

www.m-miura.tech

 

 ③パーソナルクラウド(サーバー)

  ⇒サーバーは、今回のWebサーバー(ホームページ)構築を目標にする。

 

 ④OS(Raspbian、Windows10 IoT、Volumio等)などの動作評価

   ⇒Windows10 IoTは、SDカード作成が出来ないので挫折。というか、Windowsにを起動しても、オープンソースが使えない限り、使うメリットがない結論。

Volumioは、OSと言うより、ハイレゾ再生ソフトで、結局、Raspbianがベースなので、特にOS評価は不要。

 

次にやろうとしている事。

  ⑤WordPress学習結果のまとめ

 

   深層学習(Deep Learning)、機械学習(Machine Learning)の試行。<これがラズパイ用途の本命か?>

 

Raspberry Pi 3 Model B+(最新版)使用中~VNCとSambaは必須だ!

ラズベリーパイ3 model B+ (最新版)

その後の使用状況です。

   標準OS ”Raspbian(ラズビアン)に

   便利なアプリをインストールし、使い易くしました。

 追加したアプリ① VNC

  ラズベリーパイ側は VNCサーバーモードで、

  Windows10 PC側は、VNCビュアーモードで

  起動すると、Windows10 PCからラズベリーパイ

  にリモート操作が出来ます。同時にラズベリーパイ側

  の画面をWindows10 PCに転送表示もできます。

f:id:masa19569810303:20180723200334p:plain

VNCで接続したWindows10 PC画面から

f:id:masa19569810303:20180723200410p:plain

画面右上に VNCが起動しているマークあります

 追加したアプリ② samba(サンバ)

  ネットワークでは必ず使っているsambaです。

  ラズベリーパイ側に ネットの共有フォルダーを設定し、

  Windows10パソコンのネットワークからアクセスし

  ファイル転送と書き換えを可能にするもの。

  今回のラズベリーパイの画面チャプチャーファイルの

  移動はこれを使っています。

 

f:id:masa19569810303:20180723200439p:plain

samba設定した共用フォルダー

はじめ、共用ファイルの中身が見れない状態がありましたが、

samb.confファイルのパスの記述誤りでした。

Raspbianを日本語化した後だったのでこうなったようです。

  パス名  home/pi/Desktop/public  --->×

  パス名  home/pi/デスクトップ/public --->〇

 

f:id:masa19569810303:20180723200506j:plain

Windows10 PCのネットワーク側の共用フォルダ

感想

 ラズベリーパイ3は、熱の発生が小さいので、

 サーバー機材として、結構、長時間(どの程度かは不明)

 使えそうです。

 

追加実験(さらに分かった事)

 初めからディスプレーの接続なしでラズベリーパイ3を

 VNC接続したら使えるかな?

 ⇒結果:使えない

  画面が小さくなって、使い辛い(おそらくデフォルトの

  小さい画面が起動時に選択されたか)。

  ラズベリーパイ3の起動時は、大きなディスプレーを

  一度繋げてあげる必要である事がわかりました。

 

 

また、他の実験結果を紹介したいと思います。(つづく)

 

 

Raspberry Pi 3 Model B+(最新版) 立ち上げました!

ラズベリーパイ3 model B+ 、我が家に到着し、

早速、OS立ち上げまで試行しました

f:id:masa19569810303:20180722075413j:plain

ボードがケースに入った状態でこの箱に入ってました

f:id:masa19569810303:20180722074515j:plain



OSインストールの基礎情報は、インプレス社のこの本が

わかり易いです。”NOOBS”と言うツールをダウンロードし

SDカードにコピーし、電源ONだけ!。

f:id:masa19569810303:20180722081524j:plain

OSインストールの内容わかり易く書いてます

 

f:id:masa19569810303:20180722075531j:plain

SDカードにOSインストールプログラムをコピーし、電源を入れるだけ

f:id:masa19569810303:20180722075554j:plain

インストール完了

ラズベリーパイ標準OS ”Raspbian(ラズビアン)”が起動したら
とりあえず、Wi-Fiネットワークの指定と、ログインパスワード(今回、空白に)を入れるだけで、道路のデスクトップが起動します。。

f:id:masa19569810303:20180722075511j:plain

 

OS ”Raspbian”での動作の雰囲気は、

 ⇒画面の動きは古いCore 2 Duoノートパソコンより少しだけ良い

でも、やはり驚く事は

 ⇒基板の小ささと、発熱の少なさ!!

  (あえて、エアコンの無い部屋で連続動作中です。凄い!

    室温は30度近くなのに)  


次はOSを替えてみます。つづきは、また・・・

 

 

 

Raspberry Pi 3  Model B+ (最新版)購入しました

f:id:masa19569810303:20180719221815j:plain

パソコンいじり歴 数十年の私、

最近、ラズベリーパイ が気になっています 

(食べるものではなく、ワンボードPCのこと)

ついに今日、最新版のラズベリーパイ3 

                         Raspberry Pi 3 Model B+

 を Amazonで注文しました。


  ケースとヒートシンクなど付いて

  セットで6580円
  ケースの色は、透け透けのブルーを選択

  (なぜか無色透明はなものは、300円安いけど)

 

  ラズベリーパイ3は Wi-FiやBLEがはじめから

  付いている。

  パソコン用キーボード、マウス、ディスプレー

  が流用可能  


 スペックから性能はどんなものか? 

 ラズベリーパイ3のスペックを見ると

 性能は 古いCore 2 Duoノートパソコンと

 同程度かも、

 どうかなぁー

 ------------------

  Coretex-A53 64bit

  CPUクロック1.4GHz
  メモリ:1GB LPDDR2 SDRAM
  WiFi: 802.11b/g/n/ac 2.4G 5GHz

  BT: BLE 4.2

 ------------------

 他に必要なもの:電源5Ⅴ2.5A 

  →我が家には2.1A品しかなく、追加発注しましたぁ

         

 そもそも、ラズベリーパイで、実験してみたい事は・・・・

  ①AI スピーカ 

  ②ハイレゾ再生オーディオ

  ③パーソナルクラウド(サーバー)、

  ④OS(Raspbian、Windows10 IoT、 Volumio等)比較

 

物が到着したら、実験を開始します。(つづく)