1. はじめに
昨今のIoTブームで、最初に作る「Lチカ」という言葉も一時期流行りました。
これは、LEDをチカチカさせる回路およびプログラミングであり、実際、Raspberry PiのGPIO端子などを用いて、ブレッドボード上にカンタンな回路を作ってLEDを点滅させるなどし、いわゆるプログラミングで言うところの「Hello World.」を行った経験のある方もいらっしゃるかも知れません。
昨今のヤマハ ルーターでは、Luaというスクリプト言語を用いてスクリプトをプログラミングし、ルーター実機上で実行する事ができます。Luaそのものは言語としてとてもシンプルであり、併せてRTシリーズで必要な機能は拡張されている為、最小限テキストエディタとUSBメモリのみですぐにプログラミングを始める事ができます。
今回は3回に分け、最終的にヤマハ ルーターからヤマハ スイッチ(SWX2200シリーズ)をスクリプトによりコントロールする事を目標に、Luaスクリプト実行機能を掘り下げてみたいと思います。
1回目の今回は、ヤマハ ルーター実機で実際にルーターのSTATUSランプを点滅させるLuaスクリプトを実行してみましょう。
2. プログラムの実行
細かな事は一旦さておき、プログラムを実行してみましょう。
今回、RTX1210とUSBメモリを用いて、STATUSランプを1秒毎に点滅させるプログラムを実行します。
SDカードなどをご利用の場合は、適宜読み替えてください。
実運用中のルーターでのスクリプト実行は、通信障害などの障害となる可能性がある為、お止め下さい。検証用ルーターでの実行を推奨します。
本コラムに掲載のスクリプトを実行した結果について、一切の責任を負いかねます。
FATフォーマットしたUSBメモリに、以下のファイルを保存します。
【LCHIKA.lua】
led, str = rt.hw.open("status-led1")if (led) then for i = 1, 5 do led:on() rt.sleep(1) led:off() rt.sleep(1) endled:off() led:close() end
USBメモリを取り出し、ルーターのUSBポートに挿入します。標準の状態でルーターから「ポピ!」というビープ音がすれば成功です。
次に、ルーターのコンソール上(Administratorモード)で、以下のコマンドを実行します。
# lua usb1:/LCHIKA.lua
USBメモリ上からLuaスクリプトが実行され、STATUSランプが、1秒おきに点滅すれば成功です。
3. プログラムの解説
2章の「LCHIKA.lua」を詳しく見て行きましょう。
-- ステータスLEDを制御できるようにled変数に紐付ける led, str = rt.hw.open("status-led1")-- ledが使用可能か判定する if (led) then -- 次のendまでを5回繰り返す for i = 1, 5 do -- ledを点灯させる led:on() -- スクリプトを1秒停止させる rt.sleep(1) -- ledを消灯させる led:off() -- スクリプトを1秒停止させる rt.sleep(1) end-- 念のため明示的にledを消灯させる led:off() -- 以降変数ledを使用しない為、開放する led:close() -- 終了 end
変数・ループ・条件分岐といった基礎的な部分は変わらない為、昔BASICやCOBOLといった、何かしらのプログラミング言語を扱った事がある方には、すぐに意味が理解できたかと思います。
言語の詳細やサンプルコードは、以下にナレッジが纏まっており、とても参考になります。
また、Luaそのものはオープンソースプロダクトとして開発・公開がなされており、言語そのものの情報がとても豊富な事もメリットとして挙げられます。
4. 次回予告
次回は実際にヤマハ ルーター上でシステムコマンドを実行する常駐プログラムを作成してみたいと思います。
これにより、通信状態などの監視スクリプトといったものを作成できることを目標とします。