ラズパイzero を bluetoothボタンで操作

ラズパイzero を bluetoothボタンで操作

ラズパイzero にはボタンなどがないので
コマンドから実行になるけど
毎回シャットダウンや撮影のたびにコマンド実行は
ターミナル環境がないとできないので

簡易ドライブレコーダーZeroWにBluetoothボタンでオンオフ編

Bluetoothシャットダウンボタンを作る #300円でIoTボタン

を参考に

bluetoothボタンで操作できるよう設定

あといらないものを削除

Raspberry Pi 不要パッケージの削除

を参考に

Wolframとmathematica
libreoffice
Scratch

sudo apt-get remove --purge libreoffice*
sudo apt-get purge scratch
sudo apt-get purge wolfram-engine
sudo apt-get purge sonic-pi
sudo apt-get clean
sudo apt-get autoremove

で容量を確保

しかし
Waiting to connect to bluetoothd…
となりそのまま止まってしまう

raspberry pi3 をbluetooth接続するときのエラー

を元に

sudo apt-get update 
sudo apt-get upgrade -y 
sudo apt-get dist-upgrade -y 
sudo apt-get install pi-bluetooth 
sudo apt-get install raspberrypi-sys-mods

を実行したが変わらず

ラズベリーパイでbluetooth機能が使えません

を参考に

sudo apt-get install bluez pulseaudio-module-bluetooth python-gobject python-gobject-2 

次にbluetooth の接続

bluetoothctl
power on
scan on

で周辺デバイスを検索

[NEW] Device 2A:07:98:10:34:99 CW Shutter

となるので

pair 2A:07:98:10:34:99

でペアリング

しかし

trust 2A:07:98:10:34:99

のあと

Failed to pair: org.freedesktop.DBus.Error.NoReply
Waiting to connect to bluetoothd...

となってしまう

sudo apt-get install pi-bluetooth pulseaudio-module-bluetooth pavucontrol bluez

を実行し再起動

しかし途中で途切れるため

Raspberry Pi3 の Bluetooth を Ubuntu Mate 16.04 LTS で使えるようにする

を参考に

sudo apt-get install rpi-update -y
sudo rpi-update
sudo reboot

でファームウェアのアップデート

これで再度

bluetoothctl

としたら接続できた

次に
簡易ドライブレコーダーZeroWにBluetoothボタンでオンオフ編

を参考に

sudo apt install ruby
sudo gem install bluebutton

で bluebutton のインストール

イベント検知設定ファイルを作成

sudo nano ~/.config/bluebutton

でファイル作成し

keyup=echo UP
keydown=echo DOWN
longup=echo LONG UP
longdown=echo LONG DOWN

を記述して保存

しかし、このプログラムは
CW shutter では機能しない

Raspberry Pi + Bluetooth リモコンシャッター + Google Home で「こっちに来て!」メッセージ

を参考に

sudo apt-get install evtest

でインストール
evtest を使うことでデバイスが発行するイベントを拾う

しかしなぜか evtest での検出はできなかったため
ダイソーの
AB Shutter3 ボタン
を購入することに

sudo bluetoothctl 
power on
scan on

として

AB Shutter3 ボタンの電源をONにすると

[NEW] Device FF:FF:00:26:F2:FF AB Shutter3       

が検出される

これでMACアドレスがわかったので

scan off

でスキャン停止

connect FF:FF:00:26:F2:FF
pair with FF:FF:00:26:F2:FF
trust FF:FF:00:26:F2:FF

で接続して次回からも自動認識するように信頼させる

しかしうまくいかないので

sudo apt install bluez bluetooth libbluetooth-dev build-essential
sudo apt install bluez-cups

を実行

しかし結果は変わらない

raspberry pi と AB Shutter3(bluetoothボタン) の連携

によれば最初についている電池はお試しなので
ペアリングはできるがボタンを押したときのイベントが拾えない
という状況があるらしい

このため新しく電池を購入し再度実験

しかし結果は変わらず

Try to find device AB Shutter3...
Device AB Shutter3 find at /dev/input/event2
Unable to connect to X server
Reading events from /dev/input/event2...

のまま

他の手段を探し
100均Bluetoothボタンをラズパイに活用

を参考に

disconnect FF:FF:9A:4A:49:94
remove FF:FF:9A:4A:49:94
power on
power off
pair FF:FF:9A:4A:49:94
connect FF:FF:9A:4A:49:94

と繰り返していたら繋がるようになった

bluetoothctlコマンドについては
bluetoothctl

を参考に

ただ
ラズパイで300円のリモートシャッターをIoTボタン化する方法

にあるように複数台購入しても1台しか動かないケースもあり
ペアリングできても動作しない
電池交換しても改善されない
ということもあるらしい

問題点としては長押ししても
longup
longudown
を検出しないので
1つの動作しかできてない

とりあえずシャットダウン機能を実行してみる

sudo nano shutdown.sh

でファイルを作成

#!/bin/bash
sudo shutdown -h now

として保存

sudo chmod +x shutdown.sh 

で実行権限付与

sudo nano ~/.config/bluebutton

で内容を

keyup=echo UP && ~/shutdown.sh
keydown=echo DOWN
longup=echo LONG UP
longdown=echo LONG DOWN

として保存

sudo bluebutton -c ~/.config/bluebutton

だと

sh: 1: /root/shutdown.sh: not found

となってしまうが

bluebutton -d="AB Shutter3" -c /home/pi/.config/bluebutton

として
ボタンを押すと無事にシャットダウンができた

なお2つのボタンの認識もできるようだが
残念ながらこちらも実行できなかったため
実質的に1つの動作のみになっている
当面はシャットダウンボタンの活用になりそう

ラズパイzero 動画をNASへ保存

ラズパイzero 動画をNASへ保存

本体に録画データを保存すると容量がすぐにいっぱいになる

このため Nas へ保存するようにする

まず起動時に NAS をマウントするようにする

過去に
ラズパイZeroW から NAS へアクセス

ですでに zero には設定がある程度できている

行っているのは
ラズパイZero W で
SMB でNASをマウントするツールのインストール

sudo apt install cifs-utils

次にマウントするためのディレクトリを作成

sudo mkdir /mnt/nas

次にNAS の設定
NASを構築しているラズパイ3へログインし

sudo vim /etc/samba/smb.conf 

でファイルを開き
最終行に

[pizero_photo]
        path = /mnt/hdd/share/pizero
        writable = yes
        guest ok = yes
        guest only = yes
        create mode = 0777
        directory mode = 0777

を追記し保存

sudo service smbd restart

で設定反映

外付けHDDは過去に

mkdir /mnt/hdd/share/pizero
 sudo chmod -R 777 /mnt/hdd/share/

でディレクトリを作成していたので今回は省略

ここまでできたら

sudo mount -t cifs //192.168.1.6/pizero_photo /mnt/nas -o username=pi,password=raspberry,iocharset=utf8

でマウント

df -h

でNASの容量が表示されれば成功

ファイルシス               サイズ  使用  残り 使用% マウント位置
/dev/root                    5.7G  4.5G  903M   84% /
devtmpfs                     181M     0  181M    0% /dev
tmpfs                        186M     0  186M    0% /dev/shm
tmpfs                        186M  2.8M  183M    2% /run
tmpfs                        5.0M  4.0K  5.0M    1% /run/lock
tmpfs                        186M     0  186M    0% /sys/fs/cgroup
/dev/mmcblk0p6                68M   23M   46M   33% /boot
tmpfs                         37M     0   37M    0% /run/user/1000
/dev/mmcblk0p5                30M  398K   28M    2% /media/pi/SETTINGS1
//192.168.1.6/pizero_photo   916G   47G  870G    6% /mnt/nas

というかんじ

次にOS起動したら自動的にNASをマウントするように
/etc/fstab にマウントに必要な情報を記述

sudo nano /etc/fstab

でファイルをひらき
最終行を

//192.168.1.6/pizero_photo /mnt/nas cifs username=pi,password=raspberry,file_mode=0755,dir_mode=0755,iocharset=utf8,uid=1000,gid=1000,forceuid,forcegid,_netdev 0 0

を追記

次にOS起動後にNASが自動マウントするように
ブートオプションを変更
これはネットワークサービスが
起動してからブートしないとNASのマウントが失敗するから

 sudo raspi-config 

で設定画面を開き

3の
Boot Options を選びSelect にしてEnter

次に
B2 Wait for Network at Boot Choose whether to waito for n
で Select にして Enter

次に
Would you like boot to wait until a network connection is established?
となっているので
はい
にしてEnter

Waiting for network on boot is enabled
となるので
了解で Enter

あとは Finish で Enter することで設定画面を抜けます

設定確認のため

sudo reboot

で再起動して

df -h

でNASがマウントされていれば成功

次に音声つき動画の保存場所の指定

ffmpegで出力先の指定は出来なのでしょうか。

を参考に ffmpeg の出力先をNASに指定し実行

timeout 15 raspivid -t 0 -w 640 -h 480 -b 10000000 -fps 30 -awb fluorescent -n -o test.h264 |    arecord -D hw:1,0 -f S16_LE -r 44100 -d 0 test.wav;ffmpeg -y -i test.wav  -r 30 -i test.h264  -vcodec copy /mnt/nas/test.mkv

とすればNASへ保存される

今後の予定では
bluetooth シャッターボタンで撮影できるようにする予定