Messaging API でグローバルIPの通知 ラズベリーパイ

ハードルが高いと思っていたMessaging APIで,メッセージを送ることがやっとできました。といっても,諸
兄の丸パクリ寄せ集めです。ただ,その過程で,今までよりも少し,Linux 関連の知識が増えたように思い
ます。
今回使ったのは,シェルスクリプトと呼ばれる一種のプログラムで,MS-DOS時代のバッチファイルのような
感じのものです。前から,存在は分かっていたのですが,今回の作業過程で,理解がふかまりました。これも
貴重な情報を掲載してくれている様々な諸兄のおかげです。
シェルスクリプ私なりに作成しましたが,大きく分けて,お二人の方の合体です。一人はグローバルIPを取
得する部分,お一人はメーッセージを送る部分,をかいていたので,それを自分なりにアレンジして合体し
て動かしました。

#!/bin/sh

#IPアドレスの取得
newip=`curl -s inet-ip.info`
for i in `seq 5`
do
	if [ "$newip" = '' ]; then
		newip=`curl -s inet-ip.info`
	fi
done
if [ "$newip" = '' ]; then
	exit 1
fi

#IPアドレスが変化したら,メッセージを送る。
oldip=`cat /home/mabo52/pgip`
if [ $oldip != $newip ]; then
  echo "$newip" > /home/mabo52/pgip
  curl -X POST \
  -H 'Content-Type:application/json' \
  -H 'Authorization: Bearer {#公式アカウントで取得したTOKEN}' \
  -d '{
    "to": "#公式アカウントで取得したID",
    "messages":[
        {
        "type": "text",
        "text": "IPアドレスが変わりました。IP='$newip'"
    }
    ]
}' https://api.line.me/v2/bot/message/push

fi

これを実行してみると見事メッセージが送れましたので,久しぶりに,「やったー」になりました。
このスクリプトでは,pgip というグローバルIPを保存するファイルをあらかじめ同じ階層に作成
しておく必要があります。元のスクリプトでは,この保存ようのファイルがあるかないかのチェック
をいれてありますが,私のでは省いてあります。このファイルに実行権を与えて,あとは,crontab
にスケジュールを記載して,定期的に実行すればOKになります。
グローバルIPの取得に関しては,

  https://blog.n-hassy.info/2022/03/line-notify-from-raspi/

を,メッセージの送信かんしては,

  https://news.mynavi.jp/techplus/article/linebot-2/

をほぼ,丸パクリさせてもらいました。公式アカウントの取得では,

  https://zenn.dev/kou_pg_0131/articles/line-push-text-message

参考にさせていただきました。
ただ公式アカウントの作成では,

   ログイン
    ↓
   プロバイダーを作成する

までは,うまくいったのですが,この段階では,ビジネスアカウントの設定が不完全だったので,次の段階の

  チャンネルの作成

に手間取ってしまいました。作成の手順が参考にしたHPとは若干違っていたのか,何とかできました。

以前は,LINE Notify のIDとトウクンで,LINE Notifyにメッセージを送る感じ
でしrたが,今回は,

   ビジネスアカウントを作成
      ↓
   作成したアカウントと友達になる。
      ↓
   作成の過程で取得したトウクンとIPを保存Dでビジネスアカウントにメッセージを送る

一手間かかったように思います。ただ,ビジネスアカウントの無料のコースでは,一月にメッs-ジ
を200通しか送れません。まあ,グローバルIPの通知に使うのには,十分でしょうね。

まだ,スケジュールは組んでないのですが,この後,スケジュールを組んで,動作確認して,運用ですね。

ラズベリーパイ(3B) MJPG-STREAMER再構築

何日前からか,居間のの監視カメラ代わりに使っていたラズベリーパイの調子がおかしくなりました。このラ
ズベリーパイの設定をしたのが2016年7月ですから,8年近く,休みなく動いていてくれました。何のメ
インテナンスもしなかったので,当然かなと思います。MJPG-STREAMERのソフトの動きがカクカクになった
り,そもそも,動かなくなったりで,何度も再起動を繰り返して,だましだましつかってましたが,2,3,
日前に起動しなくなりました。
という訳で,ラズベリーパイのOSからの再構築いたしました。丸二日ほどかかりました。再構築に時間がか
かたのは,基幹のOSがアップデートされていて,以前参考にしていた諸兄の方法では,エラーがでてしまっ
てうまくいかなかったのが原因です。幸い,新しいOSに対応したやり方を掲載してくれた諸兄がいましたの
で,そこを丸パクリで,なんとか構築いたしました。

ただ,諸兄のページでも,二カ所修正が必要で,ここで,ちょっと躓きました。

   〇DEV=”/dev/video1″→→→→DEV=”/dev/video0
   〇WIDTH=1920→→→WIDTH=320  HEIGHT=1080→→→HEIGHT=240

ここを変更して,うまく動くようになりました。また,ベーシック認証がなかったので,

   #ベーシック認証の設定
   ID=”******” #ベーシック認証用のID
   PW=”******” #ベーシック認証用のパスワード

を加筆して,下記のように設定を変更しました。

/mjpg_streamer -i “./input_uvc.so -d $DEV -r $RES -f $FPS” -o “./output_http.so -w ./www -p $PORT”

/mjpg_streamer -i “./input_uvc.so -d $DEV -r $RES -f $FPS” -o “./output_http.so -w ./www -p $PORT -c $ID:$PW

これで,写真のように,居間の様子が,見れるようになりました。



それと,今までは,外出先からも確認できるようにと,グローバルIPの変化を,LINE Notify
で,携帯に送ってましたが,LINE Notifyも3月でサービス終了の連絡がきましたので,変更せざ
るをえなくなりました。
代替え案とし,MessagingAPI が紹介されていましたが,自力で変更するのはちょっとハードル
が高いので,自宅サーバーでも使っていた,DDNS のサービスを使うことにしました。以前は,イエサー
バーを使っていましたが,今回は,無料で使える DDNS Now を使うことにしました。幸い更新の方法もい
くつかあり,crontab を使う方法がありましたので,下記のものをcrontab に登録しました。

0-59 * * * * wget -O DDNSNow_update.log “https://f5.si/update.php?domain=****&password=****”

ログを見てみますと,1分おきにグローバルアドレスをチェックしているようで,うまくいきましたが,
この crontab の設定にも時間がかかり,一度は,OS を入れ替えました。

紆余曲折しましたが,防犯カメラよろしく,外部からも居間の様子を確認できるようになりました。
ただ,安価に確認するのであれば,市販のものを使った方が,はるかにいいと思います。

===wordpressのカスタマイズ (2)===

 =====高さの調整=====
 PC用
 .twentyseventeen-front-page.has-header-image .custom-header-media,
 .twentyseventeen-front-page.has-header-video .custom-header-media,
 .home.blog.has-header-image .custom-header-media,
 .home.blog.has-header-video .custom-header-media {
 height: 1200px;
 height: 100vh;
 max-height: 100%;
 overflow: hidden;
 }
 のmax-height: 100%;を300pxへ
 これで高さ300pxになりますが、画像の位置調整が必要になるかも?
 その場合
 style.cssの1730行目あたり
 
 @supports ( object-fit: cover ) {
 .has-header-image .custom-header-media img,
 .has-header-video .custom-header-media video,
 .has-header-video .custom-header-media iframe,
 .has-header-image:not(.twentyseventeen-front-page):not(.home) .custom-header-media img {
 height: 100%;
 left: 0;
 -o-object-fit: cover;
 object-fit: cover;
 top: 0;
 -ms-transform: none;
 -moz-transform: none;
 -webkit-transform: none;
 transform: none;
 width: 100%;
 }
 }
 のheight: 100%;を500pxとかに変更して調整(数値はお好みで)
 
 あと以下も調整
 style.cssの1674行目あたり
 .has-header-image .custom-header-media img,
 .has-header-video .custom-header-media video,
 .has-header-video .custom-header-media iframe {
 position: fixed;
 height: auto;
 left: 50%;
 max-width: 1000%;
 min-height: 100%;
 min-width: 100%;
 min-width: 100vw; /* vw prevents 1px gap on left that 100% has */
 width: auto;
 top: 50%;
 padding-bottom: 1px; /* Prevent header from extending beyond the footer */
 -ms-transform: translateX(-50%) translateY(-50%);
 -moz-transform: translateX(-50%) translateY(-50%);
 -webkit-transform: translateX(-50%) translateY(-50%);
 transform: translateX(-50%) translateY(-50%);
 }
 のmin-height: 100%;を100pxとかに変更して調整(数値はお好みで)

===wordpressのカスタマイズ (1)===

 raspberryPiにインストールしたwordpressのテンプレートをいろいろ
 いじってます。
 「Twenty Seventeen」というテーマですが,私の能力ではかなり
 手強く,やはり頼りになるのが,諸兄のHPの記載です。
 今,ヘッダーテーマの画像の高さを調整すべくいろいろやってます。
 何カ所かいじらないとだめなようで,特に,PC用と携帯用の表示では,
 いじる場所が違うようで,面倒です。
  それに,諸兄のHPには,カスタマイズするときは,必ず子テーマ
 を作って,それをいじるようにとありますが,これが,また面倒です。
 全体のスタイルの変更には,style.cssというファイルを弄りますが
 子テーマは,基本,親テーマの設定を引き継ぎますから,基本,
 設定を書き加えることで編集しますので,細かい変更は,親テーマ
 のstyle.cssをいじるようです。(この辺の認識に謝りあるかもしれ
 ませんが・・・・・・・・・。)

 ということで,忘れないように,諸兄の設定を書き写しておきます。
 ====高さの調整=====
 携帯用
 追加CSSで。
 .has-header-image.twentyseventeen-front-page .custom-header,
 .has-header-video.twentyseventeen-front-page .custom-header,
 .has-header-image.home.blog .custom-header,
 .has-header-video.home.blog .custom-header {
 display: table;
 height: 300px;
 height: 40vh; /* 100vh --> 40vh 高さの比率 */
 width: 100%;
 }
 .has-header-image .custom-header-media img,
 .has-header-video .custom-header-media video,
 .has-header-video .custom-header-media iframe {
 position: absolute; /* fixed –> absolute イメージの見え方の設定 */
 height: auto;
 left: 50%;
 max-width: 1000%;
 min-height: 100%;
 min-width: 100%;
 min-width: 100vw;
 width: auto;
 top: 50%;
 padding-bottom: 1px;
 -ms-transform: translateX(-50%) translateY(-50%);
 -moz-transform: translateX(-50%) translateY(-50%);
 -webkit-transform: translateX(-50%) translateY(-50%);
 transform: translateX(-50%) translateY(-50%);
 }

===wordpressのインストール (6)===

 やっとwordpressが動くようになりました。
 画面の体裁もだいたい思ったようにできました。
 ただ,どのくらいの書き込みができるようでしょうかね。
 32GbのSDカードなので,ちょっと心配があります。
 それと,表示の速度ですね。やはりもたもたしてるようです。
 下記がraspberryPi運用のURLです
 http://mabo.mabou.org/
 まあ,あまり代わり映えしないですけどね。

===wordpressのインストール (5)===

 停滞していましたが,wordpressがなんとかインストールできまし
 た。
 ただし,まだいろいろ不具合があります。
 インストールできなかった原因は,mysql(MariaDB)の仕様の
 変更でしょうかね。
 何回も「root」のパスワードを設定しても,データベースに
 パスワードつきでログインできませんでした。
 次の二つのHPのおかげで訂正できました。
    ラズベリーパイにMariadbをインストールした時のメモ
    
    MariaDBのインストール/初期設定
 このページのように以前の形式パスワードの設定をする必要が
 あるようです。
  use mysql;
  delete from user where User=’root’;
  delete from user where User=’debian-sys-maint’;
  flush privileges;
  grant all privileges on *.* to ‘root’@’localhost’ identified
       by ‘任意のパスワード’ with grant option;
  grant all privileges on *.* to ‘root’@’127.0.0.1’ identified
       by ‘任意のパスワード’ with grant option;
  grant all privileges on *.* to ‘root’@’::1′ identified
       by ‘任意のパスワード’ with grant option;
  grant all privileges on *.* to ‘root’@’ホスト名’ identified
       by ‘任意のパスワード’ with grant option;
  grant all privileges on *.* to ‘debian-sys-maint’@’localhost’ identified
       by ‘debian-sys-maintのパスワード’ with grant option;
  update user set Create_tablespace_priv=”N”
       WHERE User=’debian-sys-maint’ ;
  flush privileges;
 のようにして,パスワードを設定するようです。それと,
  これに合わせて/etc/mysql/debian.cnfを更新する必要があります、
  具体的にはuserの所を「debian-sys-maint」にして、
  passwordを先程設定したパスワードにして下さい。
 をする必要があるようです。「debian-sys-maint」は,
 大文字小文字数字の組み合わせの16文字だそうです。
 という訳で,ローカルでは,wordpressのページを閲覧できる
 ようになりましたが,外部からは,ヘッダーファイル画像が表示
 されない等の不具合が残っています。
 私としては,
    編集→→LAN内
    公開→→登録ドメイン
 にしたいのでですが,今のところ解決していません。
 一番の解決方法は,ルーターを
   ヘアピンNAT対応
 のものに変えることでしょうね。あるいは,ネットへのアクセスを
 プロキシサーバー経由にするかですね。

===wordpressのインストール (4)===

 また,ちょっと進展です。
 VNCでルート接続すると,デフォルトのブラウザ chromium が
 立ち上がらないという不具合がありました。
 もしやと思い,
     apt-get remove chromium-browser
     apt-get autoremove
で,一度削除してみました。
 すると,chromiumからブラウザがWebというのにかわりました。
 こちらの方が,軽いようで,すぐ,立ち上がるようです。
 これで,再インストールすれば,立ち上がるようになる気が
 しますが,このままにしておきます。

===wordpressのインストール (3)===

 ちょっとだけ進展。
 いままでは,「ssh」 の接続も 「ftp」の接続も 
 root ユーザーで接続できるようにしてました。
 安全上はまずいのですが,ファイルの編集等,vncの
 GUIで行うので,root でないと,書き換え,ブート等の操作
 が面倒になります。
 今回の再設定にあたっても,root でログインできるように
 あれこれやりましたが,やっと今日,ssh,ftp とも可能
 になりました。
 その覚え書きです。
 =====ssh====
   次のファイル
    /etc/ssh/sshd_config
    に
    PermitRootLogin yes
  を書き加える
 ===vsftpd===
  ①ファイルの記述変更
   次のファイル
   /etc/vsftpd.conf
 
  に次の記述を追加
   userlist_enable=YES
   userlist_deny=NO
   userlist_file=/etc/vsftpd.user_list
 
  ②次のファイルがないので作成
  
    vsftpd.user_list
    このファイルに root と pi
    のユーザー名を記述
  ③/etc/ftpuser
    rootを#でコメントアウト
 この設定でOKとなりました。
 ただ依然として,vncでアクセス後,デフォルトのブラウザで
 ネット接続ができません。
 後からインストールしたファイヤーフォックスではできました。
 この原因は,私の能力を超えてます。

===wordpressのインストール (2)===

 細々と運用していたRasbery Piのサーバーですが,不具合
 がでたので,再設定しようと思いやり始まりましたが,ちょっと
 中断でしょうか。
 しばらくいじらない間に環境が多きく変わってしまいました。
 今までは,先達のHPを参考に進めてきましたが,情報があ
 りません。
 
 rasupubery Pi →→ OSのバージョンが上がってる。
 php5 →→ インストールできない。PHP7.0に
 Mysql →→ MariaDB に変わってるる
 
 ということで,いつもの通り,
   OSのインストール
    ↓
   sshのスタート
    ↓
   VNCのインストール
 ここまではすんなりでしたが,その先のPHP,Mysqlで,
 大躓きです。
 情報がでるのをまつようでしょうかね。