🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 2.7

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

Q&A

解決済

2回答

1754閲覧

Python Heroku Lチカ

raspypy

総合スコア247

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Python 2.7

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

0グッド

0クリップ

投稿2020/01/06 03:47

編集2020/03/25 07:25

##やろうとしていること

  • pythonプログラム(LINE Bot)をHerokuにDeployしたい。
  • pythonプログラムは、LINEからのメッセージに応じてLEDを点灯させる。
  • pythonプログラムの構成は、

 main.py
|---LED_ON.py
|---LED_OFF.py
main.pyから**"subprocess"**して、LED ON/OFFを制御しています。

補足
LED_ON.pyとLED_OFF.pyは、main.pyと一緒のフォルダに保存して、deployしています。

##今の状況
ngrokを利用して、アプリケーションの動作確認まで完了しました。
恒久的に動作させたいので、herokuにdeployしました。
dployが成功し、動作確認を行っている段階です。

##LINE BOTとしての機能(GPIO動作を伴わない場合)
LINEから、あるメッセージを送ると、特定の返信をするプログラムになっています。
このときの、ログは次の通りで、LINEにも特定の返信が返ってきます。

text

12020-01-06T03:35:20.802130+00:00 heroku[router]: at=info method=POST path="/callback" host=hogehoge.herokuapp.com request_id=7dae8393-0111-44e7-a7a2-5d30bcad2300 fwd="147.92.149.169" dyno=web.1 connect=0ms service=1031ms status=200 bytes=156 protocol=https 22020-01-06T03:35:20.801956+00:00 app[web.1]: 10.123.254.53 - - [06/Jan/2020 03:35:20] "POST /callback HTTP/1.1" 200 -

##GPIO動作を伴う場合 (困っているところ)
LINEから「点灯」または「消灯」と送信すると、LEDが「点灯」または「消灯」しますが、
このときにエラーが発生してしまいます。「点灯」と送った時のログは、次の通りです。

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

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

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

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

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

guest

回答2

0

ベストアンサー

raspypyさん、

...
2020-01-06T03:36:05.097871+00:00 app[web.1]: RuntimeError: This module can only be run on a Raspberry Pi!
...

とエラーメッセージが出てますよ。

ソースコード載っていないので、なんとも言えませんが、どのプラットフォームで、どのコードが実行されてるか、確認してみてはどうでしょうか?

...
ところで、エラーメッセージを自分で確認できるようにならないと、初心者を抜け出せないんじゃなかな? がんばってみてください

投稿2020/01/06 04:55

mt08

総合スコア1825

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

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

raspypy

2020/01/09 00:45 編集

mt08さま いつも回答ありがとうございます。 ご指摘の通り、"This module can only be run on a Raspberry Pi!"のコメントがでていました。 ngrok(で発行されたURLをWebhook)に設定して動作ができたときと、 今回のherokuにデプロイして動作を確認している、構成が違うことを失念しておりました。
mt08

2020/01/06 07:49

raspypyさん、 そうですね。 Cloudmqttといったものは詳しくないのですが、なにかしらの通信する仕組みを使って、Heroku経由で、ラズパイに通知させる、ということでいいんだと思います。 - どんなデータ、どことどこでやりとりされるか、     ~データの流れ - (そのために)どのコードが、どこで実行されてるか  ~実装 というのを整理して、いろいろトライしてみてください。
raspypy

2020/01/09 00:45 編集

ありがとうございました。
guest

0

LINEから、Raspberry piのGPIOを動作させることは不可能なのでしょうか

RuntimeError: This module can only be run on a Raspberry Pi!
を見る限り、Heroku のサーバーに対して GPIO の信号を送ろうとしているようです。

ご質問で示された「今回の構成」の  記号部分はネットワーク接続ですので

  1. Heroku でできること(LINEとの中継処理)
  2. RaspberryPi でできること(Herokuからの通知を受けてLED点滅処理)

を分けて deploy し、相互に通信する仕組みを考える必要があります。


  1. 中継処理 ... LINE Bot処理&通信可能ならRaspberryPiへの通知するプログラム
  2. LED点滅処理 ... Heroku からの受信データに応じてLED点滅するプログラム
LED点滅処理 中継処理 RaspberryPi ⇔ Heroku ⇔ LINE (接続状態監視)

投稿2020/01/06 04:55

AkitoshiManabe

総合スコア5434

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問