raspberrypiのWifiの設定

家のWifi環境が変わり、raspberrypiの設定も変更しなければならなくなったが、
どこで設定したかまったく思いだせぬ・・・のでメモ。

設定するところはココ。
/etc/wpa_supplicant/wpa_supplicant.conf

network={
   ssid="SSID"
   psk="password"
}

参考にさせて頂いたサイトはこちら

テンキーでraspberrypiを操作する

raspberrypiで部屋の電気(ルームライト?)を赤外線で操作したり
radikoを聞けるようになったは良いものの、毎回SSHでログインしてコマンドを打つのがとても面倒に感じてました。

ルームライトの操作なんてリモコンを操作した方が100倍早く、
壁のスイッチを押したほうが1000倍早い。
なので、物理ボタンでraspberrypiを操作して電気のオンオフをできないものかなぁと思った次第。

キーボードを直接つないで直接コマンドを叩くことも考えたのですが、それではあまりうまみもなく、場所も取るので却下。
と、ふと、そこで思い付いたのがテンキー。

テンキーで例えば「1」を押したら電気OFF!みたいなことできたら最高ではないかと。

さっそく調べてみたところ、pythonで操作する方法が多めに出てきたのですが、
自分はPHPしか読み書きできないのと、よし!この際pythonを覚えよう!という気持ちが沸かなかったのと、もっと楽な方法はないかなぁという欲があり、さらに調べていたところ、先人を発見。こちらのサイトを参考にさせて頂きました。

結論。
エイリアスを設定する。

/etc/bash.bashrc
の末尾に記入。

alias 1='~/bto_ir_cmd/my_room_light_off.sh'
alias 2='~/bto_ir_cmd/my_room_light_on.sh'
alias 800='~/my_tokyofm.sh'
alias 9='~/my_radiko_stop.sh'

これで「1」を押せば電気OFF、「2」を押せば電気ON、「800」でTokyo FMが再生、「9」でラジオが停止されるというようにしました。

いざ「1」Enter!・・・・・・

何も起きない。。。

画面をつないでみたら、ログイン画面で止まっていた。道理でコマンドが入力されないわけだ。
こちらのサイトを真似させて頂いて、自動ログインを有効にしました。

/etc/systemd/system/getty.target.wants/getty@tty1.service
の↓のような部分にユーザー名を追記。

ExecStart=-/sbin/agetty --autologin ユーザー名 --noclear %I $TERM

これで物理ーテンキーからコマンドを受け付けるようになりました。
テンキーからraspberrypiを操作できるようになってものすごく便利になりました。

とくにradikoの起動が非常にスムーズになり、快適なラジオ生活がおくれるようになりました。

raspberrypiでradikoを聞く

ここ最近の外出自粛や在宅勤務の影響でラジオが大活躍。
ただ、ラジオは電池式なので交換が面倒なのと、スマホでradikoを聞くときは電池の消耗が気になるのと、
いちいちアプリを操作するのが面倒。

そこで電源コード付きのラジオを買おうと思っていた矢先、
raspberrypiでradiko聞けるのかなとふと思い立った次第。

参考にさせて頂いたサイトはこちら

音声の出力はイヤホンジャックにさした400円のスピーカー。

まず、ここから再生用スクリプトをダウンロード。
ファイルの配置場所は任意。
上記サイトに記載の通りにスクリプトを修正します。

-wkdir='/var/tmp'
+wkdir='/dev/shm'
-playerurl=http://radiko.jp/player/swf/player_3.0.0.01.swf
+playerurl=http://radiko.jp/apps/js/flash/myplayer-release.swf
- swfextract -b 14 ${playerfile} -o ${keyfile}
+ swfextract -b 12 ${playerfile} -o ${keyfile}

フォルダは書き込み権限があればどこでも良いのかも???
↓は二ヵ所。

- --header="X-Radiko-App: pc_1" \
- --header="X-Radiko-App-Version: 2.0.1" \
+ --header="X-Radiko-App: pc_ts" \
+ --header="X-Radiko-App-Version: 4.0.0" \

必要なパッケージのインストール

sudo apt-get install mplayer swftools rtmpdump libxml2-utils ffmpeg

Tokyo FMをきくときは

play_radiko.sh -p FMT

停止するときはCtrl+c
放送局の一覧
radikoのID一覧

ただ、このままだと画面に文字文字と文字が出てくるので、

play_radiko.sh -p FMT > /dev/null 2>&1 &

こうするとCtrl+cで止められなくなってしまうので、停止させるときは

kill `pgrep -f radiko.jp`

PIDの取得方法はこちらを参考にさせて頂きました。

これで電源を気にせずラジオを聴けるようになりました~。快適~♪

mjpg-streamerに日付をつける


mjpg-streamerを使ってタイムラプスgifを作っているのですが、
これに日付をつけたいなと思いました。
mjpg-streamerからwgetした画像に日付を上書きする形で実現できました。

wget -O ~/test.jpg --http-user=user --http-passwd=password http://localhost:8080?action=snapshot
mogrify -fill white -gravity SouthEast -font helvetica -pointsize 10 -annotate +15+5 `date +%H:%M` ~/test.jpg

参考にさせて頂いたサイトはこちらです。

webカメラとraspberrypiでgifアニメ


以前、室内からでもこっそり空模様をのぞけないかなぁと思い、raspberrypiにwebカメラをつなげスマホから空を見られるようにしました。
が、結局仕事中に見る暇もなく、15分おきに一枚撮影するという簡素な状態になっておりました。
そのおかげで謎の現象を撮影することができたのですが、
ずっとなんか物足りないなーと思ってました。
撮った画像を全部見るのもなかなか大変でしたし。

そこで、1分おきに撮影して、1日の最後にgifアニメにするのはどうかと思い至りました。

撮影に使用したのは『MJPG-streamer』
インストールは大変だったような気がしますが、ずいぶん前なので忘れてしまいました。
撮影はMJPG-streamerのスナップショット機能を用い、
wgetコマンドで画像を取得します。

その前にMJPG-streamerの起動。
毎回面倒なのでmjpg_streamer_start.shファイルを作りました。

#!/bin/sh
PORT="8080"
ID="user"
PW="password"
SIZE="640x480"
FRAMERATE="20"
export LD_LIBRARY_PATH=/usr/local/lib
~/mjpg-streamer/mjpg_streamer -b -i "input_uvc.so -f $FRAMERATE -r $SIZE -d /dev/video0 -y -n" -o "output_http.so -w /usr/local/www -p $PORT -c $ID:$PW"

画像ダウンロードするときはこんな感じ

wget -O ~/img/img.jpg --http-user=user --http-passwd=password http://localhost:8080?action=snapshot

まず、毎朝その日の撮影用フォルダを作成する用
gif1.sh

#!/bin/sh
DIR=`date +%Y%m%d`
mkdir ~/gif/$DIR

次に一分おきにファイルをダウンロードする用
gif2.sh

#!/bin/sh
PHOTO=`date +%H%M`.jpg
DIR=`date +%Y%m%d`
wget -O ~/gif/$DIR/$PHOTO --http-user=user --http-passwd=password http://localhost:8080?action=snapshot

そして最後にgifアニメにする用
gif3.sh

#!/bin/sh
DIR=`date +%Y%m%d`
convert -layers Optimize -loop 1 -delay 15 -scale 50% +map ~/gif/$DIR/* ~/gif/$DIR.gif

これらをクーロンで管理
cron.conf

0 3 * * * ~/gif1.sh
*/1 4-20 * * * ~/gif2.sh
3 21 * * * ~/gif3.sh

朝の3時にフォルダ作成→4時から8時59分まで1分おきに撮影→21時3分にgifアニメ生成。
なんだか冗長になってしまったけど、今はこれが精一杯。
これでうまくいくかは今日の21時にならないとわからない・・・

crontabの設定はこちらのサイト
gifアニメの作成はこちらのサイト
こちらのサイト
こちらのサイト
を参考にさせて頂きました。

raspberrypiでリモコン操作

参考にさせて頂いたサイト

RaspberryPiを赤外線リモコンにできると聞いて、部屋の電気をON,OFFできないものかと調べていました。

使ったものはBitTradeOne・USB接続赤外線キット
ビットトレードワン赤外線USBキット

先に言ってしまうと、家の電灯はできましたが、実家の電灯やエアコンはできませんでした。もっとちゃんとやればできるのかも。

まずは必要なものをインストール

sudo apt-get install libusb-1.0-0-dev
git clone https://github.com/kjmkznr/bto_ir_cmd
cd bto_ir_cmd
make

次にリモコンのデータを記録。

sudo ./bto_ir_cmd -e -r

コマンドを入力すると待機状態になるので赤外線キットに向けてリモコンを操作。

するとずら~っと出てきます。自分はそれをテキストファイルにしました。最後に改行も入力しました。

そしてライトに向けリモコンのデータを送信

sudo ./bto_ir_cmd -e -t `cat light_down`

電気が消えました。

ライトを点灯させるファイルも作り、
なんとなくroom_light.shというファイルにまとめました。
引数がないときは送信しないように。

#!/bin/sh
if [ $# -ne 1 ]; then
  exit 1
fi
sudo ~/bto_ir_cmd/bto_ir_cmd -e -t `cat ~/bto_ir_cmd/lib/light_$1`

そしてそれをcrontabへ。
21時半に小電球、22時に消灯。月~金6時に点灯。
cron.conf

30 21 * * * ~/bto_ir_cmd/lib/room_light.sh down
0 22 * * * ~/bto_ir_cmd/lib/room_light.sh off
0 6 * * 1-5 ~/bto_ir_cmd/lib/room_light.sh on

これで目覚まし時計より確実に起きられるのではないかと期待。