質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Q&A

解決済

2回答

2446閲覧

raspberryの電源投入時にPyAudioで録音開始したい

inte_m

総合スコア9

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

0グッド

0クリップ

投稿2018/07/06 12:52

前提・実現したいこと

§実現したいこと
PyAudioで録音し、有る周波数の音量がある周期で設定値を超えたら、wavファイルを保存するプログラムをラズパイ起動時に実行させたい。

§前提
ラズパイのバージョンはラズパイ3Bで
No LSB modules are available.
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 9.4 (stretch)
Release: 9.4
Codename: stretch
Linux pi3 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l GNU/Linux
です。
USBサウンドデバイスを使ってアナログマイクより集音しています。
apache2のサーバーで、三つのマルチプロセスが起動しています。

発生している問題・エラーメッセージ

LXterminalで「python /home/pi/autorecord.py」を入力すると録音できる。 が自動起動では、起動できなかったり、起動しても録音しない。 エラーメッセージはない。

該当のソースコード

python2.7
ソースコード

PyAudioで録音しmultiprocessingでデータの取り出しとFFTでlowpass後、判定処理、fastenersでファイル読み書きの排他制御をしています。

試したこと

ps ax コマンドで起動中か以下の自動起動を確認
①/etc/rc.local
sleep 20
python /home/pi/autorecord.py &
または
sleep 20
python /home/pi/autorecord.py
で起動しない
②crontab
@reboot /home/pi/autorecord.sh
起動はされるが録音しない
③autostart
@/home/pi/autorecord.sh
起動されない
④systemd を使う方法
起動はされるが録音しない

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

まず、なぜ起動しないのか原因をしっかり確認しないと、なにをやっても起動しないってことになるぞ。

おそらく、あなたのコードが起動されるんだけど何らかの原因で異常終了されるだけだと思うけど


ログファイルを書き出すようにして、果たして起動されたのか、されなかったのか、どこまで動いたのかなどをログで残すべし。
起動されたけど録音されないってのは明らかにコードにバグが有るってことだから、そのプログラムに問題があるってのは明らかでしょ

投稿2018/07/06 13:11

編集2018/07/06 13:22
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inte_m

2018/07/07 01:17

loggingするようにしたら、print文で戻っていることがわかりました。ありがとうございました。
guest

0

now = datetime.datetime.now()
logging.debug(u'音を検知')
print(now.strftime('%Y_%m_%d %H:%M:%S')+u'に音を検知しました')
logging.debug(u'前回までの音回数を取得')
というふうに、ログをはくようにしたところ「前回までの音回数を取得」のログが出力されないで、
「音を検知」のログまでしかログに出力されていませんでした。

また
now = datetime.datetime.now()
logging.debug(u'音を検知')
print(u'音を検知しました')
logging.debug(u'前回までの音回数を取得')
としても「前回までの音回数を取得」のログが出なかったので「print(u'音を検知しました')」を
コメントアウトしたところ、正常に動作しました

自動起動はcrontab -eで
@reboot /home/pi/autorecord.sh

autorecord.shは
#!/bin/sh
sleep 40
python /home/pi/autorecord.py &
としました。

投稿2018/07/07 01:17

inte_m

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問