raspberry pi で無線LANの設定(ステルスモード対応)
概要
raspberry pi で無線LANの設定をする際、ステルスモードになっている為にGUIから設定できない場合の対応方法をメモします
やり方
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf
で下記を追記
network={
ssid="ここにSSID"
psk=ここにプレシェアードキー
scan_ssid=1
}
※既存のnetwork項目があったら、新たに追記でOK
radikool6でm4aからmp3へ変換するメモ
概要
radikoをタイマー録音する手法を探していてradikoolにたどり着きました。
radikool6はdockerで動くようなので早速自宅に設置してあるesxiに設置してみると、テスト版とはいえ任意の過去番組(タイムフリーによるもの)をダウンロードする事ができました。
公式サイトはこちら
blog.ez-design.net
今回はm4aからmp3に変換する手順をメモしておきます。
事前作業
コンテナに入って必要なパッケージをインストールします。
ここからホスト $ docker exec -it radikool6_radikool_1 /bin/bash ここからコンテナ $ apt-get update $ apt-get install ffmpeg libavcodec-extra57
変換作業
事前作業が済んでいれば下記のように変換できます。
ここからホスト $ docker exec -it radikool6_radikool_1 /bin/bash ここからコンテナ $ cd /Radikool6/wwwroot/records/ $ ffmpeg -i xxx.m4a -ab 128k yyy.mp3
これでxxx.m4aをyyy.mp3に変換できます。オプションのabはビットレートを指定します。
あとがき
まだ超alpha版とのことですが、完成を楽しみに待っております。
できれば毎週予約機能が欲しいですw
cec-clientで電源ONが効かなかった時の確認事項
概要
raspberry pi 経由でcec-clientを使ってHDMIから電源ON/OFFしたいのですが、テレビによってはうまくいかないことがありました。
今回はテレビ側の設定で解決できたので一例として投稿します。
機種
今回うまくいかなかった機種はSHARPのLC-40AE7です。
エラーの確認方法
cec-clientがインストール済みである前提で話を進めます。
テレビの電源をOFF(正確にはスタンバイ)にして下記のコマンドを実行しましょう。
$ cec-client
これで対話モードで実行されるので「waiting for input」が表示されたところで「on 0」と入力。
すると下記のメッセージが表示されました。
AQUOS LINK 'auto power on' is disabled, which prevents the TV from being powered on. To correct this, press the menu button on your remote, go to 'link operation' -> 'AQUOS LINK setup' -> 'Auto power on' and set it to 'On'
適当な和訳ですが「アクオスリンクの自動電源ONが無効だからパワーオンは防止されました。正しく行いたいなら[リンクオペレーション]->[アクオスリンクセットアップ]->[自動電源ON]の設定値をONにしてください。」と読めます。
要するにテレビ側の設定で無効化しているだけということのようですね。
対処方法
実際にテレビの設定を変えるだけで「echo 'on 0' | cec-client -s」が使えるようになりました。
なのでメーカーや機種によって「~リンク」は異なるとは思いますが、セキュリティ対策でデフォルトが自動電源ONを無効化している可能性を疑ってみるのが良いかもしれません。
おまけ
今回はスタンバイ操作はできており、ONが出来ないという中途半端な状態だったので希望をもって調査できましたが、スタンバイ操作も何も反応しない場合はそもそもCEC対応していないとか、ケーブルが古すぎ(安すぎ)で対応していないとか、そういった可能性も考慮する必要があるかもしれません。
docker-composeでflaskを手軽に試す為の小さなテンプレート
概要
小規模なAPIを作りたいと思い、調べてみるとpythonのflaskがシンプルで良さそうでした。
もちろんサーバーも小規模で良いのですがやはりdockerを使って既存サーバーに同居させる方針が良いと思い書きました。
単体で済むのでdocker-composeにする必要は無いレベルですが、起動時のオプションを気にする必要が無かったり拡張性も考慮してcompose化しております。
参考
flaskのサンプルコードを参考にさせて頂きました
docker-compose一式
必要なプログラムもdocker-compose.ymlも下記githubに置いてあります。
使い方もREADME.mdを合わせてごらんください。
個別ファイル
最新はgithubですが、個別に見たい場合は下記をどうぞ。
Dockerfile
FROM python:3.7-alpine3.7 ARG project_dir=/app/ WORKDIR $project_dir RUN pip install flask CMD ["python", "main.py"]
main.py
from flask import Flask, jsonify, request import json app = Flask(__name__) @app.route("/", methods=['GET']) def hello(): return "route get. Hello!" @app.route('/reply', methods=['POST']) def reply(): data = json.loads(request.data) answer = "route post. keyword is %s!\n" % data["keyword"] result = { "Content-Type": "application/json", "Answer":{"Text": answer} } # return answer return jsonify(result) if __name__ == "__main__": app.run(host='0.0.0.0',port=5001,debug=True)
docker-compose.yml
version: '3.3' services: webapi: build: ./flask ports: - "5001:5001" volumes: - ./app:/app restart: always
raspberry pi と AB Shutter3(bluetoothボタン) の連携
概要
- raspberry pi を扱うにあたり、できるだけ簡易なアクションで操作したい
- ダイソーで300円のbluetoothボタン「AB Shutter3」と連携させてコマンド実行させる仕組みを構築する
参考
連携前の注意点
AB shutter3 は購入時にお試し用のボタン電池が付いていますが新しいものに絶対替えた方が良いです。
というのも私が電池をケチって替えなかった為に数時間無駄にした為です。
どういう問題が起きるかというと、ペアリングは出来るのにボタンを押した時のイベントが拾えないという中途半端な状態になりました。
bluetoothペアリング作業
# 必要に応じて $ sudo apt-get install bluetooth $ sudo hciconfig hci0 down $ sudo hciconfig hci0 up $ sudo bluetoothctl [bluetooth]$ power on [bluetooth]$ scan on # ここでペアリング状態(AB shutter3 は電源ONにするだけ)にする # 検知すると「[NEW] Device XX:XX:XX:XX:XX:XX AB Shutter3」と表示されるのでMACアドレスをメモして [bluetooth]$ pair XX:XX:XX:XX:XX:XX [AB Shutter3 ]$ trust XX:XX:XX:XX:XX:XX [AB Shutter3 ]$ quit
イベントが拾えているか確認(必須ではない、オプション)
$ sudo apt-get install evtest $ sudo evtest # 「Select the device event number [*-*] :」と聞かれるので「AB Shutter3」の番号を入力する # 後はボタンを押してキーイベントが拾えていればOK # ここで拾えない場合は電池を交換してみるとうまくいくかもしれない
こんな感じ
Event: type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1 Event: -------------- SYN_REPORT ------------ Event: type 4 (EV_MSC), code 4 (MSC_SCAN), value c00e9 Event: type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0 Event: -------------- SYN_REPORT ------------
bluebuttonのインストール
$ sudo apt-get install ruby $ sudo gem install bluebutton
設定ファイルの準備
$ vi ~/.config/bluebutton keyup=echo UP keydown=echo DOWN longup=echo LONG UP longdown=echo LONG DOWN
お試し実行
$ sudo bluebutton -c ~/.config/bluebutton
iosボタンとandroidボタンを区別する
現行のプログラムでは2つあるボタンの区別は出来ておらず、アップかダウンか、長押しアップか長押しダウンかを判定できる。
諸事情でiosボタン(大きい方のボタン)とandroidボタン(小さいほうのボタン)を区別したかったのでプログラムを少し変更。
変更点は下記のコミット分だけ
https://github.com/miya15/bluebutton/commit/e2b9b4e475c71886a7b3bf41691f6a022c94c4de
gem化はしていないのでやってみたい方は下記(環境によってパスは異なる場合がありますが)に個別にコピーしてください。
- /var/lib/gems/2.3.0/gems/bluebutton-0.2.1/lib/bluebutton.rb
- /var/lib/gems/2.3.0/gems/bluebutton-0.2.1/bin/bluebutton
$ vi ~/.config/bluebutton # ※下記が追加できるようになる # 注意:反応するタイミングはボタンを離した時です pushandroid=echo PUSH android pushios=echo PUSH ios
docomo1980
最近ドコモのCMが1,980円で使えるという体で流れていますけど、ずいぶんと条件が多いなぁ~という印象。
一般的な家族構成を対象にしたものかもしれませんが、3人で分割した場合の想定であること、5GBを分け合う、かつ特定の機種(docomo with)に限定したお話。
キャリア側の都合に縛られたくないから、このパターンは我が家には合わないです。
サポート用のショップの維持とか色々費用がかかるのは分かりますが、すでにライフライン化しつつある通信費用は抑えたいものです。
MVNOの帯域も随分と狭められている印象があり、そのあたりが平等になっていけばもう少し一般人が嬉しい価格に落ち着いていくのではないかと思いました。
(ブログと言うよりツイート的な思いつき投稿でした~)