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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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

解決済

VOLUMIO 起動時自動再生方法

horisuke3232
horisuke3232

総合スコア0

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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

2回答

0評価

0クリップ

37閲覧

投稿2017/09/17 15:03

Raspberry pi3でvolumioを使用しています。
GPIOを使用してボタンを押すと曲を再生するプログラムを使用しています。

※プログラムをコピペしたものです

python

#!/usr/bin/python #-*- coding: utf-8 -*- u''' http://www.rpiblog.com/2012/09/using-gpio-of-raspberry-pi-to-blink-led.html https://github.com/if1live/rpi-mpd-controller http://nw-electric.way-nifty.com/blog/2014/01/volumio-1ad0.html ''' ''' sudo apt-get update sudo apt-get -y install python-rpi.gpio python-daemon ''' import RPi.GPIO as GPIO import time import commands import re from daemon import daemon from daemon.pidlockfile import PIDLockFile PIN_PREV_BTN = 8 PIN_PLAY_BTN = 10 PIN_NEXT_BTN = 12 PIN_STOP_BTN = 7 PIN_VOL_UP_BTN = 11 PIN_VOL_DW_BTN = 13 class Player(object): def __init__(self): self.re_play = re.compile(r'^\[playing\].+$') self.re_vol = re.compile(r'^volume:.+% .+$') self.play_state = self.is_playing() self.shutdown_timer = 0 def sdtimer(self): if self.shutdown_timer is not 0: self.shutdown_timer -= 1 def is_playing(self): result = commands.getstatusoutput('mpc') line_list = result[1].splitlines() playing = False for line in line_list: if self.re_play.match(line) is not None: playing = True self.play_state = playing for line in line_list: if self.re_vol.match(line) is None: self.vol_state = False # print '## vol False' else: self.vol_state = True # print '## vol True' return playing def play(self): if self.is_playing(): retval = commands.getoutput('mpc pause') self.play_state = False print '#pause' else: retval = commands.getoutput('mpc play') self.play_state = True print '#play' print retval # result = commands.getstatusoutput('mpc') # line_list = retval[1].splitlines() # for line in line_list: # if self.re_vol.match(line) is None: # self.vol_state = False # print '### vol False' # else: # self.vol_state = True # print '### vol True' def prev(self): retval = commands.getoutput('mpc prev') print '#prev' print retval def next(self): retval = commands.getoutput('mpc next') print '#next' print retval def stop(self): if self.shutdown_timer is 0: self.shutdown_timer = 20 retval = commands.getoutput('mpc stop') print '#stop' print retval else: retval = commands.getoutput('shutdown -h now') def volup(self): if self.vol_state is True: retval = commands.getoutput('mpc volume +2') print '#vol up' print retval def voldw(self): if self.vol_state is True: retval = commands.getoutput('mpc volume -2') print '#vol dw' print retval class Button(object): def __init__(self, pin, func): self.pin = pin self.old_state = 1 self.func = func GPIO.setup(pin, GPIO.IN, pull_up_down=GPIO.PUD_UP) def update(self): curr_state = GPIO.input(self.pin) if self.old_state is 1 and curr_state is 0: self.func() self.old_state = curr_state def main(): # GPIO.cleanup() GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) player = Player() prev_btn = Button(PIN_PREV_BTN, lambda: player.prev()) play_btn = Button(PIN_PLAY_BTN, lambda: player.play()) next_btn = Button(PIN_NEXT_BTN, lambda: player.next()) stop_btn = Button(PIN_STOP_BTN, lambda: player.stop()) voldw_btn = Button(PIN_VOL_DW_BTN, lambda: player.voldw()) volup_btn = Button(PIN_VOL_UP_BTN, lambda: player.volup()) while True: prev_btn.update() play_btn.update() next_btn.update() stop_btn.update() voldw_btn.update() volup_btn.update() player.sdtimer() time.sleep(0.05) if __name__ == '__main__': with daemon.DaemonContext(pidfile=PIDLockFile('/var/run/mpd_ctrl.pid')): main() GPIO.cleanup()

起動して、上記のプログラムを実行しボタンを押すと曲が流れます。

今回、モニターを外して使えるように、起動時に自動で上記のプログラムを実行したいと思い、下記のようにexit0の前に設定しました。
(今回のプログラムファイル mp.py)

Linux

/usr/bin/python /home/mp.py exit 0

再起動してみましたが、実行されませんでした。

volumioを起動すると最初にloginとpwを聞かれるため、自動起動はそもそもできないものなのでしょうか?

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Raspberry Pi

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