質問するログイン新規登録

質問編集履歴

4

文法の改善

2021/12/04 14:20

投稿

AGLAAGLA
AGLAAGLA

スコア54

title CHANGED
File without changes
body CHANGED
@@ -3,14 +3,6 @@
3
3
  ページの説明が長く、申し訳ございません。
4
4
  アドバイス、助言くださると大変助かります。
5
5
 
6
- 現在LINE Messaging APIを使用して、ユーザからのテキストに対して、センサ情報を返すプログラムをherokuにあげて常時起動させています。
7
- ある場所の混雑度をセンサで観測し、そこの混雑度をラインに送るといったことです。
8
- (サーバは用意しています。)
9
- 構図はこんな感じ
10
- ・サーバー
11
- ・・ラインプログラム(herokuで動作)→app.py
12
- ・・ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
13
- ・・センサから受け取ったデータを割合として出した数値→test.py
14
6
 
15
7
  そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを常に動作させたいということです。
16
8
 
@@ -82,12 +74,7 @@
82
74
 
83
75
 
84
76
 
85
- if (0<=jst_hour<=9) or (16<=jst_hour):
77
+
86
- line_bot_api.reply_message(
87
- event.reply_token,
88
- TextSendMessage(text=f"混雑度提供時間は10時〜15時です。"))
89
-
90
-
91
78
  else:
92
79
 
93
80
  if event.message.text=="A":
@@ -117,31 +104,6 @@
117
104
 
118
105
  ```
119
106
 
120
- ```python
121
- #test.pyのコード
122
- import re
123
- import ast
124
- import statistics
125
-
126
- def main():
127
- with open('/home/test_temp.txt', 'r') as f:
128
- new_temp = (ast.literal_eval(re.findall('[[^]]*]', f.read())[-1]))
129
- ave_temp = statistics.mean(new_temp)
130
- min_temp = min(new_temp)
131
- percentage = int((min_temp / ave_temp)*100)
132
-
133
- #print(new_temp)
134
- #print(ave_temp)
135
- #print(min_temp)
136
- #print(str(percentage) + '%')
137
-
138
- #この場合だと81の値が返り値となる
139
- return percentage
140
-
141
- if __name__ == "__main__":
142
- main()
143
-
144
-
145
107
  ```
146
108
 
147
109
  ```text

3

疑問点の追加

2021/12/04 14:20

投稿

AGLAAGLA
AGLAAGLA

スコア54

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,8 @@
20
20
 
21
21
  LINEのWebhook URL は現在herokuのものを登録しています。ここを変えなければいけないことはわかっているのですが、何に変えればいいのか、その後の流れがいまいち掴めず、困っています。
22
22
 
23
+
24
+ 調べたところ自前のサーバを使う際にはPHPを記述しなければならないのでしょうか?
23
25
  ### 該当のソースコード
24
26
 
25
27
  ```python

2

書式の改善

2021/11/30 13:10

投稿

AGLAAGLA
AGLAAGLA

スコア54

title CHANGED
File without changes
body CHANGED
@@ -8,9 +8,9 @@
8
8
  (サーバは用意しています。)
9
9
  構図はこんな感じ
10
10
  ・サーバー
11
-  ・ラインプログラム(herokuで動作)→app.py
11
+ ラインプログラム(herokuで動作)→app.py
12
-  ・ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
12
+ ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
13
-  ・センサから受け取ったデータを割合として出した数値→test.py
13
+ センサから受け取ったデータを割合として出した数値→test.py
14
14
 
15
15
  そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを常に動作させたいということです。
16
16
 

1

更新されていなかったため、再記述した

2021/11/30 09:00

投稿

AGLAAGLA
AGLAAGLA

スコア54

title CHANGED
File without changes
body CHANGED
@@ -12,26 +12,186 @@
12
12
   ・ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
13
13
   ・センサから受け取ったデータを割合として出した数値→test.py
14
14
 
15
- そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを動作たいということです。
15
+ そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを常に動作させたいということです。
16
16
 
17
- app.pyはLINE Messaging APIからサンプルプログラムを少しへんゅうし
17
+ app.pyはLINE Messaging APIサンプルプログラムをいただき、少し編集たものです
18
18
 
19
19
  サーバについて無知なもので数時間悩みましたが解決策がうまくいかず、質問させていただいております。
20
20
 
21
+ LINEのWebhook URL は現在herokuのものを登録しています。ここを変えなければいけないことはわかっているのですが、何に変えればいいのか、その後の流れがいまいち掴めず、困っています。
22
+
21
23
  ### 該当のソースコード
22
24
 
23
- ```app.py
25
+ ```python
26
+ #app.pyのコード
27
+ from flask import Flask, request, abort
24
28
 
29
+ from linebot import (
30
+ LineBotApi, WebhookHandler
25
- ```
31
+ )
32
+ from linebot.exceptions import (
33
+ InvalidSignatureError
34
+ )
35
+ from linebot.models import (
36
+ MessageEvent, TextMessage, TextSendMessage,ImageSendMessage,
37
+ )
38
+ import datetime
39
+ import test #test.pyをインポート
26
40
 
27
- ```test.txt
28
41
 
42
+
43
+ app = Flask(__name__)
44
+
45
+
46
+ line_bot_api = LineBotApi('')
47
+ handler = WebhookHandler('')
48
+
49
+
50
+ @app.route("/")
51
+ def test():
52
+ return "ok"
53
+
54
+
55
+ @app.route("/callback", methods=['POST'])
56
+ def callback():
57
+ # get X-Line-Signature header value
58
+ signature = request.headers['X-Line-Signature']
59
+
60
+ # get request body as text
61
+ body = request.get_data(as_text=True)
62
+ app.logger.info("Request body: " + body)
63
+
64
+ # handle webhook body
65
+ try:
66
+ handler.handle(body, signature)
67
+ except InvalidSignatureError:
68
+ print("Invalid signature. Please check your channel access token/channel secret.")
69
+ abort(400)
70
+
71
+ return 'OK'
72
+
73
+
74
+ @handler.add(MessageEvent, message=TextMessage)
75
+ def handle_message(event):
76
+ dt_now = datetime.datetime.now()
77
+ jst_hour=dt_now.hour+9
78
+
79
+
80
+
81
+
82
+
83
+ if (0<=jst_hour<=9) or (16<=jst_hour):
84
+ line_bot_api.reply_message(
85
+ event.reply_token,
86
+ TextSendMessage(text=f"混雑度提供時間は10時〜15時です。"))
87
+
88
+
89
+ else:
90
+
91
+ if event.message.text=="A":
92
+ pec=test.main()
93
+ line_bot_api.reply_message(
94
+ event.reply_token,
95
+ TextSendMessage(text=pec))#test.pyの値を参照できていないため、ここで既読無視状態になる
96
+
97
+ elif event.message.text=="B":
98
+ line_bot_api.reply_message(
99
+ event.reply_token,
100
+ TextSendMessage(text=f"現在のBの混雑度は??%です。"))
101
+
102
+ elif event.message.text=="C":
103
+ line_bot_api.reply_message(
104
+ event.reply_token,
105
+ TextSendMessage(text=f"現在のCの混雑度は??%です。"))
106
+ else:
107
+ line_bot_api.reply_message(
108
+ event.reply_token,
109
+ TextSendMessage(text=f"入力が間違っています。もう一度入力してください"))
110
+
111
+
112
+
113
+ if __name__ == "__main__":
114
+ app.run()
115
+
29
116
  ```
30
117
 
31
- ```test.py
118
+ ```python
119
+ #test.pyのコード
120
+ import re
121
+ import ast
122
+ import statistics
32
123
 
124
+ def main():
125
+ with open('/home/test_temp.txt', 'r') as f:
126
+ new_temp = (ast.literal_eval(re.findall('[[^]]*]', f.read())[-1]))
127
+ ave_temp = statistics.mean(new_temp)
128
+ min_temp = min(new_temp)
129
+ percentage = int((min_temp / ave_temp)*100)
130
+
131
+ #print(new_temp)
132
+ #print(ave_temp)
133
+ #print(min_temp)
134
+ #print(str(percentage) + '%')
135
+
136
+ #この場合だと81の値が返り値となる
137
+ return percentage
138
+
139
+ if __name__ == "__main__":
140
+ main()
141
+
142
+
33
143
  ```
34
144
 
35
- ### 試したこと
145
+ ```text
146
+ [15.75, 16.50, 18.00, 18.00, 19.00, 21.50, 23.75, 25.50,
147
+ 16.00, 16.25, 17.25, 18.00, 19.50, 22.75, 23.25, 23.75,
148
+ 15.00, 16.00, 16.50, 18.00, 19.50, 22.50, 22.50, 22.25,
149
+ 15.00, 15.25, 15.50, 16.50, 18.50, 21.00, 20.00, 19.00,
150
+ 15.00, 15.50, 15.25, 15.50, 15.75, 15.25, 16.00, 15.75,
151
+ 15.75, 14.75, 15.50, 16.00, 15.50, 16.25, 15.50, 16.00,
152
+ 14.50, 14.75, 15.25, 15.00, 15.50, 15.75, 15.75, 15.50,
153
+ 14.25, 14.00, 15.00, 14.50, 14.75, 14.25, 14.25, 14.75,
154
+ ]
155
+
156
+ [16.25, 16.75, 17.75, 18.25, 19.25, 21.75, 23.75, 26.00,
157
+ 15.50, 15.75, 17.00, 18.00, 19.25, 22.25, 23.25, 24.00,
158
+ 15.50, 15.50, 16.50, 18.00, 19.25, 22.50, 22.50, 22.75,
159
+ 15.00, 15.00, 16.00, 16.75, 18.50, 21.25, 20.25, 18.25,
160
+ 15.50, 15.25, 16.00, 15.50, 16.00, 15.25, 15.50, 15.75,
161
+ 14.75, 15.00, 15.50, 15.50, 15.75, 16.25, 15.50, 16.00,
162
+ 15.25, 15.25, 15.25, 16.00, 15.75, 15.50, 15.25, 15.00,
163
+ 14.75, 13.75, 14.50, 15.25, 15.00, 14.00, 14.25, 14.25,
164
+ ]
36
165
 
166
+ [16.50, 16.75, 17.75, 18.50, 18.75, 21.50, 23.75, 25.75,
37
- ここに問題に対して試したことを記載してください。
167
+ 15.50, 16.00, 16.75, 18.25, 19.50, 22.75, 23.25, 23.50,
168
+ 15.25, 15.25, 16.25, 17.75, 19.50, 22.25, 22.75, 22.00,
169
+ 14.75, 14.75, 15.25, 16.25, 18.50, 21.25, 19.75, 18.00,
170
+ 15.25, 15.25, 15.25, 15.50, 15.75, 15.00, 15.75, 16.00,
171
+ 15.25, 15.00, 15.75, 15.50, 15.50, 16.50, 14.75, 15.50,
172
+ 15.00, 15.50, 15.50, 15.25, 15.75, 15.25, 15.50, 15.25,
173
+ 14.75, 13.75, 15.50, 15.00, 15.00, 14.00, 14.75, 13.75,
174
+ ]
175
+
176
+ [15.75, 16.00, 17.75, 18.00, 19.50, 21.50, 23.50, 25.50,
177
+ 16.00, 15.75, 17.00, 17.75, 19.25, 22.50, 23.50, 23.25,
178
+ 15.25, 15.50, 16.50, 17.25, 19.25, 22.50, 22.25, 22.00,
179
+ 14.75, 15.25, 15.75, 16.75, 18.75, 20.50, 19.75, 18.25,
180
+ 15.25, 15.25, 15.25, 15.50, 15.75, 15.25, 15.00, 15.50,
181
+ 15.25, 14.75, 15.25, 15.25, 15.25, 16.00, 15.50, 15.50,
182
+ 15.00, 14.50, 15.00, 15.00, 15.75, 15.25, 15.50, 15.25,
183
+ 14.50, 14.00, 15.25, 14.25, 15.00, 13.75, 14.25, 14.25,
184
+ ]
185
+
186
+ [16.75, 16.50, 17.50, 17.75, 19.00, 21.50, 23.75, 25.75,
187
+ 16.00, 15.25, 16.50, 17.75, 19.75, 22.75, 23.25, 23.75,
188
+ 15.25, 15.75, 16.50, 17.50, 19.25, 22.25, 22.50, 22.00,
189
+ 15.00, 15.50, 15.50, 16.75, 18.50, 21.00, 20.00, 18.25,
190
+ 15.00, 15.25, 15.25, 15.50, 15.50, 15.00, 15.75, 15.75,
191
+ 15.25, 14.50, 15.75, 16.00, 15.50, 15.75, 15.50, 15.50,
192
+ 15.25, 15.25, 15.00, 14.50, 15.75, 14.75, 15.50, 14.75,
193
+ 14.00, 14.00, 15.00, 14.50, 15.00, 13.75, 13.75, 13.75,
194
+ ]
195
+
196
+
197
+ ```