ラズパイ活用編-ルーターの自動再起動設定方法(Archer C50)

はじめに

マレーシアって結構電化製品が高いんです。また製品もちょっと古いんですよね。
マレーシアで固定のインターネットを契約すると、ルーターもセットにはなっているんですが、これがまた本当に遅い・・・。せっかくの高速回線も、このルーターで速度が落ちているって感じです。

それでウチでは、安いルータを日本でAmazonで買ってきて、使っています。
うちが使っているのはコレです。

しかし2年でこれも調子がおかしくなってきました。時々、再起動してあげないといけない病気です。
高性能なルーターだと自動再起動設定があったりしますが、さすが安物なので、ありません。
ということで、パパっと作ってしまいましょう。

今回は24時間稼働しているラズパイを使いたいと思います。
ラズパイに関しては、以下の記事を参照してください。

作り方

node.jsにあるスクレイピングに使用する「puppeteer」を使用します。

※SSHで接続している事を前提で進めて行きます。もし繋ぎ方が分からない方は、下記のページを参考にしてください。

1.プログラムを準備します。

sudo nano rebootRouter.js
//=====ライブラリ読み込み=====
const puppeteer = require('puppeteer');
const fs = require('fs');

//=====メイン処理=====
(async function(){
	const browser = await puppeteer.launch();
	const page = await browser.newPage();
	try {
		await page.goto('http://192.168.0.1/');
		await page.type('#userName', 'admin');
		await page.type('#pcPassword', 'admin');
		await page.click('#loginBtnText');
		await page.waitFor(3000);
		const frame1 = page.frames()[2];
		
		await frame1.click('#menu_tools');
		await frame1.click('#menu_restart');
		await page.waitFor(3000);
		
		const frame2 = page.frames()[3];
		frame2.click('#button_reboot');  
		page.on('dialog', dialog => {
			console.log("dialog");
			dialog.accept();
			});
		await page.waitFor(10000);
		errflg = 0;
	}catch(err){
		console.log(err.name + ': ' + err.message);
	}
	await browser.close();
})();

2.後は自動起動するようにスケジューラに設定します。

下記の例では、毎日深夜0時に自動的にプログラムが呼ばれるように設定しています。

sudo nano /etc/crontab
0 0 * * *       pi    node /home/pi/scraping/rebootRouter.js

まとめ

ほとんどプログラム公開だけになってしまいましたが、もし同じ症状に悩まされている人は使ってみてください。

わたしも新しいルーターは欲しい所ですが、まだ動くのにもったいないので、これを使ってもう少し様子を見てみようかと思っています。

今回、自動再起動をする為に 「puppeteer」 を使っていますが、これを使うと色んな事が簡単に出来ます。
また機会があれば、これを使った色々なハックを紹介できればと思います。

IT,ラズパイ

Posted by スングル