ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

TP-Link RE300を使ってみた

(2022-05-24 初稿)

職場でWiFiが届きにくい所があったので、試しにTP-Linkの中継機(RE300)を購入してみた。

無線LAN中継機(RE300)

無線LANのステーションにWPSが付いていれば、ほとんど手間がなく接続できる。

また、接続のパスワードも同じで、アクセスポイントだけが、ステーションのSSIDに「-EXT」が付いて、同じネットワークを利用するMesh WiFiが実現できる。

さらに、上記の写真のとおり、2.4Gと5Gを両方使って、高速な通信を行ってくれるようだ。

皆さんのご家庭でWiFiが届きにくい所があれば、検討してみてはいかが。

Raspberry Pi(ラズパイ)でWebカメラを使う

(2022-05-19 初稿)

はじめに

職場でタイムラプス写真を撮る必要があり、デジカメやアクションカメラを検討したが、使い勝手が良いものが無くて、Raspberry Pi(以下 ラズパイ)に市販のWebカメラを接続して撮ることにした。

筆者の撮影は、例えば「昼間は1時間おきに撮影し、夜は暗いので撮影しない」、「平日は、短い間隔で撮影し、土日は長い間隔で写す」等と気まぐれなのである。筆者には、crontabぐらいしか思いつかなかったので、結局ラズパイを利用することにした。

2〜3日前から使い始めたばかりなので、単なるリンク集の記事になってしまいそうだ。^^;

ラズパイにWebカメラを接続して写真を撮る

筆者が利用したWebカメラは、ロジクールのc270nとエレコムのUCAM-C820ABBKである。

エレコムUCAM-C820ABBK とロジクールc270n

ラズパイにWebカメラを接続し、認識できたかlsusbコマンドで確認する。

lsusb
(関係部分のみ抜粋)
Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 005: ID 1bcf:28c4 Sunplus Innovation Technology Inc. FHD Camera Microphone

写真を撮るためにはfswebcamをインストールする必要がある。

sudo apt install fswebcam

以下のようにfswebcamで、写真を撮ることができる。

fswebcam image.jpg

fswebcamの使い方は、man fswebcamで見ることができるが、デフォルトの解像度は 384x288ととても小さいので、以下のように解像度を指定して撮る方が良い。

fswebcam -r 800x600 image.jpg

以下のページでは、-F(フレーム)と-S(スキップ) オプションを変化させて撮影し、ブレずにきれいにピントが合うと報告があった。

具体的には、 -F 1 -S 10とのことだが、カメラによって異なるので、各自テストして欲しい。

ラズパイに複数台のカメラをつなぐ

ラズパイには4つのUSBポートがあるので、複数台のWebカメラを接続できる。

ただし、複数のWebカメラを接続すると、どれがどれだかわからなくなる。^^;

そこで、以下のコマンドをインストールする。

sudo apt install v4l-utils

詳細は、以下のサイトを参照のこと。

以下のコマンドで、接続しているカメラのリストを取得できる。

v4l2-ctl --list-devices
(関係部分ののみ)
FHD Camera Microphone: FHD Came (usb-3f980000.usb-1.1.2):
    /dev/video0
    /dev/video1
    /dev/media3
UVC Camera (046d:0825) (usb-3f980000.usb-1.1.3):
    /dev/video2
    /dev/video3
    /dev/media4

筆者の試した範囲では、最初に接続したWebカメラが /dev/video0 になり、次に接続したWebカメラが /dev/video2 になるようである。

Webカメラ(デバイス)と解像度を指定して、写真を撮るのは以下のとおりである。

fswebcam -d /dev/video2 -r 1920x1080 image.jpg

ビデオキャプチャの設定の確認

$ v4l2-ctl -V
Format Video Capture:
    Width/Height      : 1920/1080
    Pixel Format      : 'MJPG' (Motion-JPEG)
    Field             : None
    Bytes per Line    : 0
    Size Image        : 4147200
    Colorspace        : sRGB
    Transfer Function : Rec. 709
    YCbCr/HSV Encoding: ITU-R 601
    Quantization      : Default (maps to Full Range)
    Flags             : 

$ v4l2-ctl -V
Format Video Capture:
    Width/Height      : 640/480
    Pixel Format      : 'YUYV' (YUYV 4:2:2)
    Field             : None
    Bytes per Line    : 1280
    Size Image        : 614400
    Colorspace        : sRGB
    Transfer Function : Rec. 709
    YCbCr/HSV Encoding: ITU-R 601
    Quantization      : Default (maps to Limited Range)
    Flags             : 

例えば、キャプチャーするサイズを指定する場合は以下のようにする。

v4l2-ctl -v width=1280,height=720

その他も機能があるが、詳細は上記サイトを参照のこと。

VLCメディアプレーヤーで表示してみる

VLCメディアプレーヤ等で、キャプチャすることができる。

VLCメディアプレーヤを起動後、メニューの「メディア(M)」、「キャプチャーデバイスを選択(Ctrl+C)」を選択し、「/dev/video0」または「/dev/video2」を選択すれば下図のとおりキャプチャできる。

VLCメディアプレーヤでのキャプチャ

皆さんの参考になれば…

DebianでDVDを観る

(2022-05-06 初稿 )

もうずいぶんと長い間、DebianでDVDビデオを観てなかったのだが、妻がレンタルビデオ屋で「ドライブ・マイ・カー」を借りてきたので、アカデミー賞で数々の賞を受賞したことだし、観てみようと思った。

Debianで市販のDVDを観るためには、デコードするパッケージ(libdvdcss2)が必要だが、以下をaptのソースに追加しないと、インストールすることができない。

deb https://www.deb-multimedia.org bullseye main non-free

インストール後、以下のコマンドでlibdvdcss2をインストールする。

sudo apt install libdvdcss2

インストール後は、VLCメディアプレーヤーSMPlayer等お好きなソフトで観ることができる。

Pythonのインタラクティブシェルのコマンドを保存

(2022-05-02 初稿)

転勤等でしばらくブログをサボっていたので、復帰を目指して今回は小ネタを。

Pythonインタラクティブシェルは、とても便利だけど、なぜ入力したコマンドが保存できないのか、ずっと疑問に思っていた。

ネットで検索して、以下のサイトにそのものズバリの解答があった。

念の為に、上記サイトにあったコードを記載する。

import readline
readline.write_history_file('history.py')

これで、インタラクティブシェルがずいぶん使い勝手が良くなるよ。

 

Ntfyで、超簡単に自分へ通知する

(2022-02-24 初稿 - )

先日、TwitterでNtfyがとっても便利というつぶやきを見た。

筆者は、これまでDebianのServerやRaspberry Piの通知、警告をmail送信、Twitterのつぶやきでスマホに連絡してきた。

筆者は利用したことが無いが、人によっては、Line Notifyで通知している方もいると思う。

いずれにしても、通知までの設定は面倒であることに違いない。

 

今回紹介するAndroidのアプリ Notfy は、無料でタイトルどおり設定が超簡単で、すぐに利用できる点がとても優れている。

f:id:hymd3a:20220224193025p:plain

メッセージを受信したNtfy



Ntfyのインストール

以下のリンクからNtfyをインストール

連絡用URLの設定

例えば、hogeさんのアラームならば、「hoge-alert」とかにする。この際、hoge-alertの部分は「できるだけ推測されないように」との注意書きがあった。

ntfy.sh/hoge-alert

他のオプションはチェックしなくても良い。

 

メッセージの送付

実際のメッセージは、以下のように送る。

curl -d "職場に到着" ntfy.sh/hoge-alert

なお、hoge-alertの部分は、トピック(Topic)といい、いくつでも作ることができる。ただし、くどいようだが、パスワード等がないので、他の人から推測されないようなトピックにする必要がある。

 

これで、しばらく待てば、自分のAndroid端末(スマホ)にメッセージが届く。

  • ラズパイである温度以上になったら警告
  • サーバのエラーが置きたら警告
  • コンパイルが終了したら、メッセージ

等、いろいろと便利に使えそうだ。

なお、詳しい使い方は以下のドキュメントを参照のこと。

特に、publishing messagesのページは読むようにとのこと。

関連ページ

アメダスのデータをGetする

(2022-02-17 初稿 - )

気象庁アメダスのデータ(CSV)をダウンロードするのは、以下のサイトからできる。

GUIでとても使いやすいだが、定期的にスクリプトを用いてダウンロードしたり、ある観測地点の現在のデータを知るのには少し不便だ。

そこで、以下のページからWebスクレイピングで、必要なデータ(サンプルとして静岡空港)をいただこうと思ったが、気象庁のサイトが複雑で、素人の筆者には難しくてできなかった。(^^ゞ

他の方法についてネットで検索すると、以下のサイトでjsonでダンロードできるとの記述があった。多謝。m(__)m

実際に試したところ、うまくデータを取得できたので、備忘録として記す。

https://www.jma.go.jp/bosai/amedas/data/map/YYYYMMDDhhmm00.json
YYYYMMDDhhmmは、202202171510等の日付と時刻のデータを入力する。

このURLひとつで、北は宗谷、南は波照間の現在の観測データ(実際には10分程度前)データが一度で手に入れることができるからすごい。

毎回、URLを入力するのも面倒なので、簡単なpythonスクリプトを作った。

このスクリプトは、筆者の近くの静岡空港の直近のデータを取得するが、それぞれ地点のコードを設定すれば、欲しい地点のデータが得られる。

なお、直近と言っても、あまりに直近の場合は、データの登録が完了していなく、エラーになることが多いので、実際には15分程度前で、かつ分数の1の位を切捨てるので、20分程度前のデータを取得する。具体的には、現在時刻が15:25だと、15:10のデータを取得する。

#!/usr/bin/env python3 
#coding: UTF-8
# ver 0.01 Written by Hymd3a

# sample data
#"50477":{"temp":[0.3,0],"humidity":[59,0],"sun10m":[0,0],"sun1h":[0.0,0],"precipitation10m":[0.0,0],"precipitation1h":[0.0,0],"precipitation3h":[0.0,0],"precipitation24h":[0.0,0],"windDirection":[13,0],"wind":[1.2,0]},"50477":{"temp":[1.5,0],"precipitation10m":[0.0,0],"precipitation1h":[0.0,0],"precipitation3h":[0.0,0],"precipitation24h":[0.0,0],"windDirection":[11,0],"wind":[4.8,0]},

import json
import requests
import datetime

# wind direction
wd = { 1:"北北東", 2:"北東", 3:"東北東", 4:"東", 5:"東南東", 6:"南東", 7:"南南東", 8:"南", 9:"南南西", 10:"南西", 11:"西南西", 12:"西", 13:"西北西", 14:"北西", 15:"北北西", 16:"北" } 

# functions
def get_rdate():
  # date time now
  dt_now = datetime.datetime.now()
  gdate = dt_now + datetime.timedelta(minutes=-12)  # 現在時刻から12分引く
  gdate = gdate.strftime('%Y%m%d%H%M')              # 時刻を表す文字列に変換
  return gdate[0:11] + "000"                        # 分の1の位と秒を0に

def dt2str(dt):
  return f"{dt[0:4]}-{dt[4:6]}-{dt[6:8]} {dt[8:10]}:{dt[10:12]}"

get_dt = get_rdate()
dt_str = dt2str( get_dt )
#print(get_dt, dt_str)

# get json
jdata = f"https://www.jma.go.jp/bosai/amedas/data/map/{get_dt}.json"
#jdata = "https://www.jma.go.jp/bosai/amedas/data/map/20220217050000.json"
#print(jdata)

df = requests.get(jdata).json()

print('静岡空港', dt_str)
print("温度(℃):", df['50476']['temp'][0])
print("湿度(%):", df['50476']['humidity'][0])
print("日照時間(10m):", df['50476']['sun10m'][0])
print("日照時間(1h):", df['50476']['sun1h'][0])
print("降水量(10m):", df['50476']['precipitation10m'][0])
print("降水量(1h):", df['50476']['precipitation1h'][0])
print("降水量(3h):", df['50476']['precipitation3h'][0])
print("降水量(24h):", df['50476']['precipitation24h'][0])
print("風向:", wd[df['50476']['windDirection'][0]])
print("風速(m/s):", df['50476']['wind'][0])

実行すると、以下のとおり表示される(データは架空)。

静岡空港 2022-02-17 15:10
温度(℃): 3.8<
湿度(%): 46
日照時間(10m): 10
日照時間(1h): 1.0
降水量(10m): 0.0
降水量(1h): 0.0
降水量(3h): 0.0
降水量(24h): 0.0
風向: 西北西
風速(m/s): 2.7

簡単にデータを取得できるからといって、たくさんデータを取ってサーバに負荷を掛けたりしないように。

大量のデータをGetするときは、気象庁の上記サイトから取得するように

関連ページ

シニア用にRakuten Handを使ってみる

(2022-02-11 初稿 - 2022-02-12 追記)

はじめに

(2022-02-12 追記)

「簡単に電話を掛けられるように」で説明した「直接発信」ウィジェットから電話を掛けるとRakuten LinkではなくAndroid標準の電話から掛けてしまうため、課金されてしまう。

このため、Rakuten Link サポーターというアプリをインストールする対策を追記した。

(追記終了)

 

筆者の父は高齢で、これまでauの携帯電話(俗に言うガラケー)を使ってきたが、auガラケーも2022年3月末で終了とのことで、新しい携帯の契約をしなくてはならない状況となった。

au継続でも良かったが、筆者が昨年9月に楽天モバイルに変更し、安く利用しているので、父にも楽天モバイルを利用してもらうことにした。

父はガラケーのときから、筆者と筆者の妻、筆者の姉の3人にのみ電話ができ、掛かってきた電話を受けることができない。このため、できるだけシニア向けで簡単なスマホを探したが、楽天モバイルでは欲しい機種が売り切れで、小さく持ち運びしやすいRakuten Handを購入した。

楽天モバイルでは、Hand本体を12,980円(要確認)で販売しており、Rakuten Linkで10秒以上通話すると全額ポイントで戻ってくる。

このスマホに変えて一番良かった点は、サイズも小さく軽いため、電話が掛けられない状況でも、最悪持って出掛けてくれれば、現在地情報の共有で父の居場所がわかることである。

f:id:hymd3a:20220211193253j:plain

購入したRakuten Hand(アイコンは3つのみにカスタマイズ後)

【必要な機能】

  • 筆者、筆者の妻、筆者の姉に電話が簡単に掛けられること
  • 位置情報を共有し、筆者らに居場所が特定できるようにすること
  • フォント、アイコンを大きく表示できること
  • 不必要なアイコンは表示させず、誤動作を防げること

購入前に必要なこと

Android端末なので、Googleアカウントを作成する。

また、当然、楽天IDも必要なので申込み前に作成する。

なお、楽天IDを作成する際に、クレジットカードの入力を求められるが、本人のクレジットカードでなくてもIDは作成できる。ちなみに、今回の父の楽天IDは、筆者のクレジットカードで作成した。

購入前の設定については、他所を参考に設定して欲しい。

購入後の設定

購入後は、添付のマニュアルのとおりに、「スマホの初期設定」、「楽天回線の開通」、「Rakuten Linkの設定」を行ったが、マニュアルどおりに行っただけなので、ここでは省略する。

フォント、表示サイズの変更

アプリ一覧の「設定」→ 「ディスプレイ」→ 「詳細設定」→「フォントサイズ」 → 「最大」に設定。

同様に、「表示サイズ」 → 「大」に設定。

デスクトップのアイコンの削除

デスクトップのアイコンは誤動作のもととなるので、削除した。

ただし、Googleの検索窓は、ウィジェットでもディスプレイの設定でも削除できなかった。削除方法をご存知の方は教えてください。m(__)m

簡単に電話を掛けられるように

(2022-02-12 追記)

後述のウィジェットの「直接発信」で電話を掛けるとAndroid標準の電話から掛け課金されてしまう。

このため、Google PlayからRakuten Linkサポーターをインストールする。

設定は、以下のサイトが詳しい。

筆者が試したところ、「オーバーレイ表示」が必要とのことだったので、以下のサイトを参考に設定した。

簡単に設定方法を書くと、「設定」→「アプリと通知」→「詳細設定」→「特別なアプリアクセス」→「他のアプリの上に重ねて表示」で、「表示できる ON」にすれば良い。

(追記終了)

前述のとおり、父はスマホや携帯からは、筆者と筆者の妻と筆者の姉にしか電話を掛けられない。このため、上記3箇所に簡単に電話を掛けられるようにディスプレイにウィジェットを配置した。

ウィジェットは、ディスプレイを長押しし、「ウィジェット」から「連絡帳」「直接発信」を選択し、発信先を選ぶことでできる。

Rakuten Linkで電話をするように

デフォルトの電話機能で、Rakuten Linkは選べなかったが、気休めかもしれないが、Chromeで適当な電話番号を選択し、Rakuten Linkで掛ける選択を「常に選択」した。

位置情報の共有

スマホにして一番良かった点は、位置情報の共有である。

父はよく散歩に出掛けるので、万が一転倒して電話が掛けられない状況に陥っても、位置情報が共有できていれば、探しに行くことができる。

事前に、位置情報を共有したメンバーのメールアドレス等をGoogleコンタクトに登録し、以下のヘルプを参考に設定した。

また、位置情報の共有は「無効にするまで」を選択しないと、時間の経過とともに切れてしまうので注意する。

まだ、使い始めて間もないため、バッテリーの消費等わからないが、スマホに変えて一番便利な機能だと思う。

おわりに

世の中デジタル化が進み、高齢者にとっては住みにくい世の中になってしまった。携帯キャリア各社も、もう少し高齢者が最初から使いやすいスマホを販売してくれると助かる。

関連ページ