YAMAHAルーターNVR500で固定電話番号取得(中段)

YAMAHAルーター NVR500

電話番号取得する機器を、ナンバーディスプレイアダプタアロハND4から、NVR500にようやく乗り換えました。

ND4ではデバイスファイルから電話番号を読み込みましたが、NVR500では、シスログをPCのrsyslogで受けって、それを自前のPerlスクリプト@Debianで処理しています。

シスログの受け取りまで自前でやろうとすると、

  1)NVR500のシスログポート514番固定の為、514番の為には管理者権限が必要。

  2)それで、管理者権限でスクリプトを動かすと、Goole Nest Hubに画像を飛ばす為のPython製コマンドcattが(インストールの仕方が悪いせいか)なぜか上手く動かない。

  3)スクリプト内で権限を下げたりなどしても上手く動かず泥沼に…. で、rsyslogにお任せに…

以下、rsyslog設定(fromhost-ipはNVR500のIPアドレス

$ cat /etc/rsyslog.d/30-nvr500.conf
if ($fromhost-ip == "192.168.*.*") then {
   if ( $msg contains "InComing Call" ) then {
      action(type="omfile" file="/var/log/nvr500-InComing.log")
   } else if ( $msg contains "OutGoing Call" ) then {
      action(type="omfile" file="/var/log/nvr500-OutGoing.log")
   }
   stop
}

ネット情報にあるように、NVR500を電話機の手前に挟むと、電話の鳴り出しが2コール遅れますが許容範囲。Perlスクリプトは素人宜しく、やたらとモジュール化して、

#!/usr/bin/perl                             
use strict;                                 
use warnings;                               
use constant { HOME => $ENV{'HOME'}, };     
use lib HOME.'/phone5/lib';                 
use My::Tel;                                
use My::PC;                                 
PC->set_alsa('PCM');                        
my $tel = Tel->new('rsyslog');              
while ($tel->judge){                        
    $tel->cast;                             
    $tel->mail;                             
    $tel->output;                           
}                                           
$tel->destroy;                              

と、やたら短くなっております。Tel->new('aloha')とすれば以前のND4でもOKに。

 

あと、肝心のNVR500のメリットである受信拒否機能ですが、拒否リストを自前Perlスクリプトで(NVR500に自動ログイン、ログアウトして)追加出来るようにしました。

(※ minicomstraceコマンドを使って、NVR500とのやり取りを把握しました。NVR500へはsshtelnetでも接続できますが、背面の9ピンに、シリアル変換ケーブル+クロスケーブルで接続した方が何かと安定。)

今までの履歴リストとネットから拾った迷惑電話番号とを合わせて800件ほど追加。ほぼ登録数に上限は無いと考えても良さそう。

これで、既知の迷惑電話は鳴らなくて済む(無視になる、履歴には残る)ので、ストレスフリーです。ではでは

スマートディスプレイとスマホに固定電話の着信通知(覚え書き)

以前、ナンバーディスプレイアダプタを使って、かかってくる固定電話番号を取得し、知らない番号であれば警告音を出すPerlプログラムを作成しました。その続編になりますが、今回、Google Nest Hub (スマートディスプレイ)の画面に、電話をかけてきた人の名前や電話番号を表示したりスマホにはメールでお知らせしたりと、通知機能を追加しました。Chatgpt(以下、茶爺)先生に教えを請いつつね...

スマートディスプレイの方は、テキストそのまんまだと画面にキャスト出来ないようなので、テキストを一旦、imagemagickなるソフトで画像に変換し、python製のcattコマンドを使って、画面にキャストする方法で…。

スマホの方は、mailコマンドと、exim4というMTA(Mail Transfer Agent、メール配送プログラム)を使用…。(mailとexim4、どちらもDebian12というLinuxOSに元々入っていたやつです…。) メールサーバーは難しそうなので、Googleメールを使ってメール送信だけ出来るようにしました。

 

以下、OSはDebian12という環境での詳細、長いです。

スマートディスプレイへの通知

まずテキストの画像変換。それが出来るという imagemagickをインストール。

$ sudo apt install imagemagick 

しかし、magickコマンドがない!… 茶爺先生 「imagemagick バージョン6ではconvertコマンドを使えばいいんだよ」ふむふむ

 $ convert -size 1200x800 -background white -fill 'black' -gravity center -font 'Noto-Sans-CJK-JP' -pointsize 200 caption: "これを表示" /home/user/image_hozon.png

オプションが多い…💦 …ここで、1200x800 はNest Hub Maxの解像度、背景色は白、文字色が黒、配置は中央、能登フォント(sudo apt install fonts-noto-cjk)、文字の大きさ 200。"これを表示"というテキストを、image_hozon.pngという画像に変換…

これで画像ができたので、後はキャストするだけ…。茶爺先生「python製のcattコマンドならGoogle ディスプレイに画像をキャストできるよ。」 ふむふむ。

最小限でpython環境?をインストール。

$ sudo apt install python3-pip

で、pip3というpythonインストールコマンドが使えて、それでcattコマンドを次にインストールするのですが、--break-system-packagest という恐ろしいオプションを付けてインストールしたのでそこは自己責任でお願いします💦

$ pip3 install --user --break-system-packages catt

で、$ catt scan とやると、Google 機器のIPアドレス、名前、などが表示されます。

※ ここで、export PATH="$PATH:$HOME/.local/bin" というようにパスを追加しておかないとならないようです。

茶爺「やっと、イメージをキャストできるよ」ふむふむ

$ catt -d "Google機器の名前" cast /home/user/image_hozon.png

やっとスマートディスプレイに画像キャスト完了!!キャスト停止するには、

$ catt -d "Google機器の名前" stop

私の場合、Perlプログラム中で、 system( "catt -d ... cast ...")とか、forkして子プロセスでexec( "catt -d ... stop" )とかしました。 とりま、$SIG{CHLD}='IGNORE'としておく。

 

②次に、メール通知です。

mailコマンドでメールを送るには、

$ printf "%s " "本文"  | mail -a "From: 送信者名 <From_address@gmail.com>" -s "タイトル" TO_address@hoge.jp

とすれば良いのですが、茶爺先生「MUA(Mail User Agent)であるmailコマンドはユーザーインターフェースに過ぎないので、配送係のMTA(Mail Transfer Agent)であるexim4に対しての下地設定が必要だよ」ふむふむ

$ sudo dpkg-reconfigure exim4-config

これでウイザードが開くので、茶爺に聞きつつ設定しました。

・2行目(mail sent by smarthost: received via SMTP or fetchmail)を選択  

・デフォルトのまま、リターンキー

・デフォルトのまま(127.0.0.1....)、リターンキー

・デフォルトのまま、リターンキー

・空白のまま、リターンキー

smtp.gmail.com::587、としてリターンキー

・No のまま、リターンキー

・No のまま、リターンキー

・1行目(mbox format in /var/mail/)を選択

・No のまま、リターンキー

 

ふ〜、ウイザード終了。次にGoogleメールのパスワードを登録。

$ sudo emacs -nw /etc/exim4/passwd.client

emacsはエディタです。そこはお好みのエディタでどうぞ。中身に書くのは

smtp.gmail.com:my_gmail_address@gmail.com:アプリパスワード

の1行です。アプリパスワードというのは、Googleのログインパスワードではなく、Googleアカウントで2段階認証設定後、アプリパスワードなるものを発行できます。

$ sudo chmod 600 /etc/exim4/passwd.client

$ sudo chown Debian-exim:Debian-exim /etc/exim4/passwd.client

で次に、TLS設定。

$ sudo emacs -nw /etc/exim4/update-exim4.conf.conf

このファイルの最終行に dc_use_tls='true' を加える。で設定反映するのに

$ sudo update-exim4.conf

$ sudo systemctl restart exim4

これで設定完了!!動作確認は

$ echo "本文はここ"  | mail -s "タイトルはここ" target_mail_address@hoge.jp

これでgmailアドレスから target_mail_address@hoge.jpにメールが送られます。

Perlでは、メール本文が文字化けしたので

binmode  FD,":encoding(ja_JP.UTF-8)"; という行を入れたり、use utf8としたり…。

 

以上です!長くてすみません。

ではでは

 

 

 

 

 

あなたの家にコッソリと設置しました?


迷惑電話防止システム欲しいけど、NDA(ナンバーディスプレイアダプタ)はお高いんでしょ?、というそこのアナタ!

あなたの家には、既にNDAが設置済みです。
あなたの家に忍び込んで、勝手に設備した訳ではありません(笑

今や殆どのご家庭にあるだろう光通信のターミナル機器がソレ
電話の発着信履歴をブラウザ閲覧できますが、コマンド取得も可能

例)ソフトバンクの場合、BBユニットと呼ばれる白いやつがソレ。ちょっと長いですが、下記コマンドで、直近の電話番号(及び年月日時)を一個取得できる。
(PASSWORDは各自のログインパスワード、また、行末の;1qを外せば全件取得)

curl -s -u user:PASSWORD http://172.16.255.254/callslog.html | iconv -f SHIFT-JIS -t UTF-8 |sed -n -E '/0[0-9]{9,10}$/p' | sed -E 's/.*(202[4-9].*:[0-9]{2}).*(0[0-9]{9,10})$/\1 \2/;1q'

(株)日興電機製作所の回し者ではないが、NDAなら多機能なアロハNDシリーズがオススメ。
日本全国で固定電話への迷惑電話を撲滅しよう!

固定電話の迷惑電話対策3?


世の中、騙される人が多すぎる。
日本全国の老人宅に、迷惑電話防止システムを装備してやりたい。
家に忍び込んで、勝手に設備する訳にもいかないし。
突然、迷惑電話警報が鳴ったらビックリするでしょうし(笑

対策は、過大なところから始めて緩めていくスタイルが良さそう。
(差し支えなければ)知り合いの電話番号など安全なホワイトリスト以外は警報を鳴らす
ブラックリスト(迷惑電話番号)だけ警報を鳴らすような方法だとイタチごっこ
あれからも迷惑電話は続いているが、警報により完全にスルー。

アロハND(製造元(株)日興電機製作所)用の迷惑電話対策プログラムの方は、リファクタリングジャーゴン(専門用語)で「作り直し」の意味らしい)し、サブルーチンなどを使うと本体部分は僅か十数行に。こうしてみると全体の流れは単純。固定電話の迷惑電話対策すべし!