はじめに
IIJmioのひかり回線とひかり電話を導入しました。
ひかり電話を導入するには基本的に月額300円でルーターをレンタルしないといけなかったのですがそれが嫌だったのでYAMAHAのNVR510というルーターを中古で買いました。こいつが結構使えるやつで、Web GUIから簡単にセットアップができました。なので、そのセットアップの仕方とひかり電話がきたらメール通知するようにするやり方をメモしておく。
Step0. 前提
以下を契約、準備する
- IIJmioひかり
- IPoEオプション -無料
- ヒアリングのときに小型ONUを使用すると申し出ること
- ひかり電話
- 固定電話機本体。例えば、VE-GD21-W 3600円@メルカリ など
- ナンバーディスプレイオプション(ないと着信履歴がつかない)
- NVR510 -ラクマで2万9千円にて購入
- 適当なmicro SDカード
- 必要に応じて適当な無線LANルーター(NVR510にはWi-Fi機能はついていないので)
Step1. NVR510でインターネット接続(IPv6 IPoE+Ds-Lite(taransix))
色々難しいコード(config)での設定がwebにありますが、ええいわからん!ということで見つけた手順。
コードでの設定は一切しません。web UIにログインして以下の通りにやります。
以下の手順は一度初期化を行い、まっさらな状態でスタートしてください。初期化はNVR510の場合、裏側のiniスイッチを押しながら電源ONです。
かんたん設定:プロバイダー接続
注意
これは一切設定しない。
一切設定しません。むしろ設定するとインターネットにうまく接続できなくなった覚えがあります。
かんたん設定:VPN → 拠点間接続
- 接続種別: IPIP
- IPIP設定
設定名: 任意
接続先ホスト: gw.transix.jp
ポート開放: 指定しない
IPIPキープアライブ: 使用しない - 経路: デフォルト経路
これだけインターネットに接続できるようになります。
Step2. ひかり電話の設定
かんたん設定:IP電話→ひかり電話
- ひかり電話の設定:ひかり電話を使用する
- インターフェースの選択:ONU
- プレフィックスの設定:設定なし
簡単ですね。これだけです。あとはメール通知できるようにしていきます。
参考までに、
詳細設定:IP電話→TELポート
- ナンバー・ディスプレイ: 使用する
この設定をしておかないと、電話に着信履歴が残りません。
Step3. 電話着信をメール通知する
元ネタはNVR500のLUAスクリプトを使って電話着信をメール通知するようにしてみたです。改変点はgmailを使えるようにしたことと、メールの内容をユーザフレンドリーにしました。非通知着信の場合は着信を通知しても意味がないので意図してメール通知しないようにしています。
以下のluaスクリプトを使います。設定方法などは下部にあります。
--[[
●SYSLOG 監視スクリプト
SYSLOG を監視し、特定の文字列が含まれたログを検出したら、指定した show コ
マンドおよび show log コマンドの出力結果を管理者にメールで送信するスクリプ
トです。
<説明>
・このファイルを RTFS か外部メモリに保存してください。
・本項目の config の設定では schedule at コマンドでルーター起動時に Lua スク
リプトが実行されるように設定しています。
・スクリプトを停止するときは terminate lua コマンドを実行してください。
・再度、Lua スクリプトを実行する場合は lua コマンドで実行してください。
・★マークの付いた設定値は変更が可能です。
<ノート>
・メールの送信失敗時に出力する SYSLOG レベルを指定可能です。
SYSLOG のレベルを指定するには、log_level を設定してください。
debug レベル、notice レベルの SYSLOG を出力するためには、それぞれ以下の設定
が必要です。
debug レベル ・・・ syslog debug on
notice レベル・・・ syslog notice on
・本スクリプトファイルを編集する場合、文字コードは必ず Shift-JIS を使用してく
ださい。
]]
--------------------------## 設定値 ##--------------------------------
-- 検出したい SYSLOG の文字列パターン
ptn = "SIP Call from" -- ★
-- ptn の文字列パターンを検出した時に結果を通知する show コマンドをカンマで区切って列挙する
-- 例えばルーターの設定を通知する場合には、"show config" を、
-- ログを通知したい場合には "show log" を記述する
cmd_ptn = "show history | grep TEL | grep 通信中"
-- メールの設定
mail_tbl = { -- ★
smtp_address = "smtp.gmail.com",
smtp_port = "465",
smtp_auth_protocol = "plain",
smtp_auth_name = "USER-ID",
smtp_auth_password = "PASSWORD",
from = "USER-ID@gmail.com",
to = "USER-ID@gmail.com",
smtps = true
}
-- メールの送信に失敗した時に出力する SYSLOG のレベル (info, debug, notice)
log_level = "debug" -- ★
----------------------## 設定値ここまで ##----------------------------
------------------------------------------------------------
-- コマンドを実行結果を出力する関数 --
------------------------------------------------------------
function exec_command(cmd)
local rtn, str
rtn, str = rt.command(cmd)
if (not rtn) or (not str) then
str = "実行失敗\r\n"
end
return rtn, string.format("# %s\r\n%s\r\n", cmd, str)
end
------------------------------------------------------------
-- 現在の日時を取得する関数 --
------------------------------------------------------------
function time_stamp()
local t
t = os.date("*t")
return string.format("%d年%02d月%02d日 %02d:%02d:%02d",
t.year, t.month, t.day, t.hour, t.min, t.sec)
end
------------------------------------------------------------
-- メインルーチン --
------------------------------------------------------------
while (true) do
local rtn, str
rtn, str = rt.syslogwatch(ptn)
if (rtn) and (str) then
rtn, str = exec_command(cmd_ptn)
local phone_num = string.match(str, string.regexp("0[0-9]{9,10}"))
if(phone_num~=nil) then
mail_tbl.text = phone_num .. " から着信がありました。\r\n\r\n着信日時:".. time_stamp()
mail_tbl.subject = "【NVR510】着信通知 from " .. phone_num
rtn = rt.mail(mail_tbl)
if (not rtn) then
rt.syslog(log_level, "failed to send mail. sd1:/local/call.lua")
end
end
end
end
Step3.1 設定方法
設定値をいい感じに設定してください。ここはコードを改変する必要がありますが、さほど難しくありません。自分の場合、fromとtoを同じアドレスにして自分にメールするようにしています。
なおgmailでメール通知するためにはGoogleアカウントのパスワードではなく、アプリパスワードを生成する必要があります。アプリパスワードについてはGoogleのアプリ パスワードでログインする を参照してください。
コードの修正(設定)が終わったら、mico SDカードにの直下にlocalディレクトリを作り修正したスクリプトをcall.luaで保存
mioro SDカードをNVR510に挿入し、web UIの管理→保守→コマンドの実行から下記を入力
schedule at 1 startup * lua sd1:/local/call.lua
Step4.完成
すべてが上手く行けば、着信があるたびにこのようなメールが来ます。
Subject :【NVR510】着信通知 from 08011111111
Model: NVR510
SystemName: NVR510_xxxxxx
Revision: Rev.15.01.24
Time: 2022/09/24 15:05:49
08011111111 から着信がありました。
着信日時:2022年09月24日 15:05:46
ほんとは、不在着信だけ通知するようにしたかったし、メールの冒頭のModel、SystemNameなども消したかったけど、よくわからなかったので放置。
いいNVR510ライフを!