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

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

AndFTPが真っ暗になる

自分は『AndFTP』というFTPクライアントを使っていますが、

そのアプリからraspberrypiにログインしたときだけファイル欄が真っ黒で何も表示されないことがしばしばあります。

戻るボタンを押した感じではフォルダの移動はできてるような気はします。

さて、まったく根本の解決になってないのですが、何故か一旦SFTPでログインして、改めてSCPでログインするとファイル一覧が表示されました。謎ですし、毎回これやるのかなり面倒なんですが、とりあえず対処療法をメモ。

一旦プロトコルをSFTPに設定後ログイン。やっぱり真っ暗。
そして

SCPに切り替えて再度ログイン。

すると何故か表示されました。

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アニメの作成はこちらのサイト
こちらのサイト
こちらのサイト
を参考にさせて頂きました。

ufwの書き方メモ

いっつも忘れてしまう、ufwの自分用書き方メモ。
1.現状の確認
2.ポート開放
3.特定のIPからのみポート開放

sudo ufw status
sudo ufw allow proto udp to any port 22
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 22

ipv6を無効にするときは、
/etc/default/ufw

IPV6=yes

IPV6=no
に書きかえる。

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

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

LAN内のipアドレスを調べる

LAN内のIPアドレス使用機器を調べるとき、いつもスマホをwifiに繋いで、
Fing』というアプリを使用してました。
これで用は済んでいたのですが、PCからも調べられないかなぁと常々思っていました。
ちなみにwindowsでは『wireless network watcher』というものを使ってました。

調べていたら便利なものを発見。
参考にさせていただいたサイト
『netdiscover コマンド』
インストール

sudo apt-get install netdiscover

調べる

sudo netdiscover -r 192.168.0.0/24

あ、自分の環境はlubuntuです。