質問編集履歴

4

文法の改善

2021/12/04 14:20

投稿

AGLAAGLA
AGLAAGLA

スコア54

test CHANGED
File without changes
test CHANGED
@@ -8,22 +8,6 @@
8
8
 
9
9
 
10
10
 
11
- 現在LINE Messaging APIを使用して、ユーザからのテキストに対して、センサ情報を返すプログラムをherokuにあげて常時起動させています。
12
-
13
- ある場所の混雑度をセンサで観測し、そこの混雑度をラインに送るといったことです。
14
-
15
- (サーバは用意しています。)
16
-
17
- 構図はこんな感じ
18
-
19
- ・サーバー
20
-
21
- ・・ラインプログラム(herokuで動作)→app.py
22
-
23
- ・・ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
24
-
25
- ・・センサから受け取ったデータを割合として出した数値→test.py
26
-
27
11
 
28
12
 
29
13
  そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを常に動作させたいということです。
@@ -166,58 +150,48 @@
166
150
 
167
151
 
168
152
 
153
+
154
+
155
+ else:
156
+
157
+
158
+
169
- if (0<=jst_hour<=9) or (16<=jst_hour):
159
+ if event.message.text=="A":
160
+
170
-
161
+ pec=test.main()
162
+
171
- line_bot_api.reply_message(
163
+ line_bot_api.reply_message(
172
164
 
173
165
  event.reply_token,
174
166
 
175
- TextSendMessage(text=f"混雑度提供時間は10時〜15時です。"))
167
+ TextSendMessage(text=pec))#test.pyの値を参照できていないため、ここで既読無視状態になる
176
-
177
-
178
-
179
-
180
-
181
- else:
168
+
182
-
183
-
184
-
169
+
170
+
185
- if event.message.text=="A":
171
+ elif event.message.text=="B":
186
-
187
- pec=test.main()
188
172
 
189
173
  line_bot_api.reply_message(
190
174
 
191
175
  event.reply_token,
192
176
 
193
- TextSendMessage(text=pec))#test.pyの値を参照できていないため、ここで既読無視状態になる
177
+ TextSendMessage(text=f"現在のBの混雑度は??%です。"))
194
-
195
-
196
-
178
+
179
+
180
+
197
- elif event.message.text=="B":
181
+ elif event.message.text=="C":
198
182
 
199
183
  line_bot_api.reply_message(
200
184
 
201
185
  event.reply_token,
202
186
 
203
- TextSendMessage(text=f"現在のBの混雑度は??%です。"))
187
+ TextSendMessage(text=f"現在のCの混雑度は??%です。"))
204
-
205
-
206
-
188
+
207
- elif event.message.text=="C":
189
+ else:
208
190
 
209
191
  line_bot_api.reply_message(
210
192
 
211
193
  event.reply_token,
212
194
 
213
- TextSendMessage(text=f"現在のCの混雑度は??%です。"))
214
-
215
- else:
216
-
217
- line_bot_api.reply_message(
218
-
219
- event.reply_token,
220
-
221
195
  TextSendMessage(text=f"入力が間違っています。もう一度入力してください"))
222
196
 
223
197
 
@@ -236,56 +210,6 @@
236
210
 
237
211
 
238
212
 
239
- ```python
240
-
241
- #test.pyのコード
242
-
243
- import re
244
-
245
- import ast
246
-
247
- import statistics
248
-
249
-
250
-
251
- def main():
252
-
253
- with open('/home/test_temp.txt', 'r') as f:
254
-
255
- new_temp = (ast.literal_eval(re.findall('[[^]]*]', f.read())[-1]))
256
-
257
- ave_temp = statistics.mean(new_temp)
258
-
259
- min_temp = min(new_temp)
260
-
261
- percentage = int((min_temp / ave_temp)*100)
262
-
263
-
264
-
265
- #print(new_temp)
266
-
267
- #print(ave_temp)
268
-
269
- #print(min_temp)
270
-
271
- #print(str(percentage) + '%')
272
-
273
-
274
-
275
- #この場合だと81の値が返り値となる
276
-
277
- return percentage
278
-
279
-
280
-
281
- if __name__ == "__main__":
282
-
283
- main()
284
-
285
-
286
-
287
-
288
-
289
213
  ```
290
214
 
291
215
 

3

疑問点の追加

2021/12/04 14:20

投稿

AGLAAGLA
AGLAAGLA

スコア54

test CHANGED
File without changes
test CHANGED
@@ -42,6 +42,10 @@
42
42
 
43
43
 
44
44
 
45
+
46
+
47
+ 調べたところ自前のサーバを使う際にはPHPを記述しなければならないのでしょうか?
48
+
45
49
  ### 該当のソースコード
46
50
 
47
51
 

2

書式の改善

2021/11/30 13:10

投稿

AGLAAGLA
AGLAAGLA

スコア54

test CHANGED
File without changes
test CHANGED
@@ -18,11 +18,11 @@
18
18
 
19
19
  ・サーバー
20
20
 
21
-  ・ラインプログラム(herokuで動作)→app.py
21
+ ラインプログラム(herokuで動作)→app.py
22
-
22
+
23
-  ・ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
23
+ ラズベリーパイのセンサから受け取ったテキストデータ→test.txt
24
-
24
+
25
-  ・センサから受け取ったデータを割合として出した数値→test.py
25
+ センサから受け取ったデータを割合として出した数値→test.py
26
26
 
27
27
 
28
28
 

1

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

2021/11/30 09:00

投稿

AGLAAGLA
AGLAAGLA

スコア54

test CHANGED
File without changes
test CHANGED
@@ -26,11 +26,11 @@
26
26
 
27
27
 
28
28
 
29
- そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを動作たいということです。
29
+ そして本題ですが、やりたいことと致しましては、app.pyがherokuで動作しているため、サーバ内にある、test.py、test.txtの数値を参照できないという問題があり、herokuを使わずにサーバ上でプログラムを常に動作させたいということです。
30
-
31
-
32
-
30
+
31
+
32
+
33
- app.pyはLINE Messaging APIからサンプルプログラムを少しへんゅうし
33
+ app.pyはLINE Messaging APIサンプルプログラムをいただき、少し編集たものです
34
34
 
35
35
 
36
36
 
@@ -38,11 +38,193 @@
38
38
 
39
39
 
40
40
 
41
+ LINEのWebhook URL は現在herokuのものを登録しています。ここを変えなければいけないことはわかっているのですが、何に変えればいいのか、その後の流れがいまいち掴めず、困っています。
42
+
43
+
44
+
41
45
  ### 該当のソースコード
42
46
 
43
47
 
44
48
 
45
- ```app.py
49
+ ```python
50
+
51
+ #app.pyのコード
52
+
53
+ from flask import Flask, request, abort
54
+
55
+
56
+
57
+ from linebot import (
58
+
59
+ LineBotApi, WebhookHandler
60
+
61
+ )
62
+
63
+ from linebot.exceptions import (
64
+
65
+ InvalidSignatureError
66
+
67
+ )
68
+
69
+ from linebot.models import (
70
+
71
+ MessageEvent, TextMessage, TextSendMessage,ImageSendMessage,
72
+
73
+ )
74
+
75
+ import datetime
76
+
77
+ import test #test.pyをインポート
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+ app = Flask(__name__)
86
+
87
+
88
+
89
+
90
+
91
+ line_bot_api = LineBotApi('')
92
+
93
+ handler = WebhookHandler('')
94
+
95
+
96
+
97
+
98
+
99
+ @app.route("/")
100
+
101
+ def test():
102
+
103
+ return "ok"
104
+
105
+
106
+
107
+
108
+
109
+ @app.route("/callback", methods=['POST'])
110
+
111
+ def callback():
112
+
113
+ # get X-Line-Signature header value
114
+
115
+ signature = request.headers['X-Line-Signature']
116
+
117
+
118
+
119
+ # get request body as text
120
+
121
+ body = request.get_data(as_text=True)
122
+
123
+ app.logger.info("Request body: " + body)
124
+
125
+
126
+
127
+ # handle webhook body
128
+
129
+ try:
130
+
131
+ handler.handle(body, signature)
132
+
133
+ except InvalidSignatureError:
134
+
135
+ print("Invalid signature. Please check your channel access token/channel secret.")
136
+
137
+ abort(400)
138
+
139
+
140
+
141
+ return 'OK'
142
+
143
+
144
+
145
+
146
+
147
+ @handler.add(MessageEvent, message=TextMessage)
148
+
149
+ def handle_message(event):
150
+
151
+ dt_now = datetime.datetime.now()
152
+
153
+ jst_hour=dt_now.hour+9
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+
163
+
164
+
165
+ if (0<=jst_hour<=9) or (16<=jst_hour):
166
+
167
+ line_bot_api.reply_message(
168
+
169
+ event.reply_token,
170
+
171
+ TextSendMessage(text=f"混雑度提供時間は10時〜15時です。"))
172
+
173
+
174
+
175
+
176
+
177
+ else:
178
+
179
+
180
+
181
+ if event.message.text=="A":
182
+
183
+ pec=test.main()
184
+
185
+ line_bot_api.reply_message(
186
+
187
+ event.reply_token,
188
+
189
+ TextSendMessage(text=pec))#test.pyの値を参照できていないため、ここで既読無視状態になる
190
+
191
+
192
+
193
+ elif event.message.text=="B":
194
+
195
+ line_bot_api.reply_message(
196
+
197
+ event.reply_token,
198
+
199
+ TextSendMessage(text=f"現在のBの混雑度は??%です。"))
200
+
201
+
202
+
203
+ elif event.message.text=="C":
204
+
205
+ line_bot_api.reply_message(
206
+
207
+ event.reply_token,
208
+
209
+ TextSendMessage(text=f"現在のCの混雑度は??%です。"))
210
+
211
+ else:
212
+
213
+ line_bot_api.reply_message(
214
+
215
+ event.reply_token,
216
+
217
+ TextSendMessage(text=f"入力が間違っています。もう一度入力してください"))
218
+
219
+
220
+
221
+
222
+
223
+
224
+
225
+ if __name__ == "__main__":
226
+
227
+ app.run()
46
228
 
47
229
 
48
230
 
@@ -50,7 +232,53 @@
50
232
 
51
233
 
52
234
 
53
- ```test.txt
235
+ ```python
236
+
237
+ #test.pyのコード
238
+
239
+ import re
240
+
241
+ import ast
242
+
243
+ import statistics
244
+
245
+
246
+
247
+ def main():
248
+
249
+ with open('/home/test_temp.txt', 'r') as f:
250
+
251
+ new_temp = (ast.literal_eval(re.findall('[[^]]*]', f.read())[-1]))
252
+
253
+ ave_temp = statistics.mean(new_temp)
254
+
255
+ min_temp = min(new_temp)
256
+
257
+ percentage = int((min_temp / ave_temp)*100)
258
+
259
+
260
+
261
+ #print(new_temp)
262
+
263
+ #print(ave_temp)
264
+
265
+ #print(min_temp)
266
+
267
+ #print(str(percentage) + '%')
268
+
269
+
270
+
271
+ #この場合だと81の値が返り値となる
272
+
273
+ return percentage
274
+
275
+
276
+
277
+ if __name__ == "__main__":
278
+
279
+ main()
280
+
281
+
54
282
 
55
283
 
56
284
 
@@ -58,16 +286,108 @@
58
286
 
59
287
 
60
288
 
61
- ```test.py
289
+ ```text
290
+
291
+ [15.75, 16.50, 18.00, 18.00, 19.00, 21.50, 23.75, 25.50,
292
+
293
+ 16.00, 16.25, 17.25, 18.00, 19.50, 22.75, 23.25, 23.75,
294
+
295
+ 15.00, 16.00, 16.50, 18.00, 19.50, 22.50, 22.50, 22.25,
296
+
297
+ 15.00, 15.25, 15.50, 16.50, 18.50, 21.00, 20.00, 19.00,
298
+
299
+ 15.00, 15.50, 15.25, 15.50, 15.75, 15.25, 16.00, 15.75,
300
+
301
+ 15.75, 14.75, 15.50, 16.00, 15.50, 16.25, 15.50, 16.00,
302
+
303
+ 14.50, 14.75, 15.25, 15.00, 15.50, 15.75, 15.75, 15.50,
304
+
305
+ 14.25, 14.00, 15.00, 14.50, 14.75, 14.25, 14.25, 14.75,
306
+
307
+ ]
308
+
309
+
310
+
311
+ [16.25, 16.75, 17.75, 18.25, 19.25, 21.75, 23.75, 26.00,
312
+
313
+ 15.50, 15.75, 17.00, 18.00, 19.25, 22.25, 23.25, 24.00,
314
+
315
+ 15.50, 15.50, 16.50, 18.00, 19.25, 22.50, 22.50, 22.75,
316
+
317
+ 15.00, 15.00, 16.00, 16.75, 18.50, 21.25, 20.25, 18.25,
318
+
319
+ 15.50, 15.25, 16.00, 15.50, 16.00, 15.25, 15.50, 15.75,
320
+
321
+ 14.75, 15.00, 15.50, 15.50, 15.75, 16.25, 15.50, 16.00,
322
+
323
+ 15.25, 15.25, 15.25, 16.00, 15.75, 15.50, 15.25, 15.00,
324
+
325
+ 14.75, 13.75, 14.50, 15.25, 15.00, 14.00, 14.25, 14.25,
326
+
327
+ ]
328
+
329
+
330
+
331
+ [16.50, 16.75, 17.75, 18.50, 18.75, 21.50, 23.75, 25.75,
332
+
333
+ 15.50, 16.00, 16.75, 18.25, 19.50, 22.75, 23.25, 23.50,
334
+
335
+ 15.25, 15.25, 16.25, 17.75, 19.50, 22.25, 22.75, 22.00,
336
+
337
+ 14.75, 14.75, 15.25, 16.25, 18.50, 21.25, 19.75, 18.00,
338
+
339
+ 15.25, 15.25, 15.25, 15.50, 15.75, 15.00, 15.75, 16.00,
340
+
341
+ 15.25, 15.00, 15.75, 15.50, 15.50, 16.50, 14.75, 15.50,
342
+
343
+ 15.00, 15.50, 15.50, 15.25, 15.75, 15.25, 15.50, 15.25,
344
+
345
+ 14.75, 13.75, 15.50, 15.00, 15.00, 14.00, 14.75, 13.75,
346
+
347
+ ]
348
+
349
+
350
+
351
+ [15.75, 16.00, 17.75, 18.00, 19.50, 21.50, 23.50, 25.50,
352
+
353
+ 16.00, 15.75, 17.00, 17.75, 19.25, 22.50, 23.50, 23.25,
354
+
355
+ 15.25, 15.50, 16.50, 17.25, 19.25, 22.50, 22.25, 22.00,
356
+
357
+ 14.75, 15.25, 15.75, 16.75, 18.75, 20.50, 19.75, 18.25,
358
+
359
+ 15.25, 15.25, 15.25, 15.50, 15.75, 15.25, 15.00, 15.50,
360
+
361
+ 15.25, 14.75, 15.25, 15.25, 15.25, 16.00, 15.50, 15.50,
362
+
363
+ 15.00, 14.50, 15.00, 15.00, 15.75, 15.25, 15.50, 15.25,
364
+
365
+ 14.50, 14.00, 15.25, 14.25, 15.00, 13.75, 14.25, 14.25,
366
+
367
+ ]
368
+
369
+
370
+
371
+ [16.75, 16.50, 17.50, 17.75, 19.00, 21.50, 23.75, 25.75,
372
+
373
+ 16.00, 15.25, 16.50, 17.75, 19.75, 22.75, 23.25, 23.75,
374
+
375
+ 15.25, 15.75, 16.50, 17.50, 19.25, 22.25, 22.50, 22.00,
376
+
377
+ 15.00, 15.50, 15.50, 16.75, 18.50, 21.00, 20.00, 18.25,
378
+
379
+ 15.00, 15.25, 15.25, 15.50, 15.50, 15.00, 15.75, 15.75,
380
+
381
+ 15.25, 14.50, 15.75, 16.00, 15.50, 15.75, 15.50, 15.50,
382
+
383
+ 15.25, 15.25, 15.00, 14.50, 15.75, 14.75, 15.50, 14.75,
384
+
385
+ 14.00, 14.00, 15.00, 14.50, 15.00, 13.75, 13.75, 13.75,
386
+
387
+ ]
388
+
389
+
62
390
 
63
391
 
64
392
 
65
393
  ```
66
-
67
-
68
-
69
- ### 試したこと
70
-
71
-
72
-
73
- ここに問題に対して試したことを記載してください。