質問編集履歴
7
test
CHANGED
File without changes
|
test
CHANGED
@@ -421,3 +421,7 @@
|
|
421
421
|
|
422
422
|
|
423
423
|
```
|
424
|
+
|
425
|
+
|
426
|
+
|
427
|
+
天気予報を喋るコードとセンサー感知のコードを組み合わせるにはどうするべきだったのでしょうか。自作したソースコードが大幅に変更してもよいので教えて頂きたいです。
|
6
test
CHANGED
File without changes
|
test
CHANGED
@@ -406,7 +406,9 @@
|
|
406
406
|
|
407
407
|
###追記
|
408
408
|
|
409
|
-
import commanを削除したところ別のエラーが発生しました。
|
409
|
+
import commandsを削除したところ別のエラーが発生しました。
|
410
|
+
|
411
|
+
$sudo python ファイル名 で実行しています。
|
410
412
|
|
411
413
|
|
412
414
|
|
5
test
CHANGED
File without changes
|
test
CHANGED
@@ -401,3 +401,21 @@
|
|
401
401
|
|
402
402
|
|
403
403
|
お力をお貸しいただけると幸いです。
|
404
|
+
|
405
|
+
|
406
|
+
|
407
|
+
###追記
|
408
|
+
|
409
|
+
import commanを削除したところ別のエラーが発生しました。
|
410
|
+
|
411
|
+
|
412
|
+
|
413
|
+
```
|
414
|
+
|
415
|
+
File line55
|
416
|
+
|
417
|
+
SyntaxErorr: Non-ASCII character '\xe' in file tenki5 on line 55, but no encoding declead; see http://pyton.org/dev/peps/pep-0263/ for details
|
418
|
+
|
419
|
+
|
420
|
+
|
421
|
+
```
|
4
プログラムの追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
|
49
49
|
GPIO.setmode(GPIO.BCM)
|
50
50
|
|
51
|
-
GPIO.setup(
|
51
|
+
GPIO.setup(3, GPIO.IN)
|
52
52
|
|
53
53
|
from contextlib import closing
|
54
54
|
|
@@ -84,7 +84,7 @@
|
|
84
84
|
|
85
85
|
while True:
|
86
86
|
|
87
|
-
inputValue = GPIO.input(
|
87
|
+
inputValue = GPIO.input(3)
|
88
88
|
|
89
89
|
if (inputValue == True):
|
90
90
|
|
@@ -340,6 +340,54 @@
|
|
340
340
|
|
341
341
|
|
342
342
|
|
343
|
+
####センサー検知でLEDをつけるソースコード
|
344
|
+
|
345
|
+
```
|
346
|
+
|
347
|
+
import RPi.GPIO as GPIO
|
348
|
+
|
349
|
+
from time import sleep
|
350
|
+
|
351
|
+
|
352
|
+
|
353
|
+
GPIO.setmode(GPIO.BCM)
|
354
|
+
|
355
|
+
GPIO.setup(4, GPIO.OUT)
|
356
|
+
|
357
|
+
GPIO.setup(3, GPIO.IN)
|
358
|
+
|
359
|
+
|
360
|
+
|
361
|
+
try:
|
362
|
+
|
363
|
+
while True:
|
364
|
+
|
365
|
+
if GPIO.input(3) == GPIO.LOW:
|
366
|
+
|
367
|
+
GPIO.output(4, GPIO.HIGH)
|
368
|
+
|
369
|
+
else:
|
370
|
+
|
371
|
+
GPIO.output(4, GPIO.LOW)
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
except KeyboardInterrupt:
|
376
|
+
|
377
|
+
pass
|
378
|
+
|
379
|
+
|
380
|
+
|
381
|
+
GPIO.cleanup()
|
382
|
+
|
383
|
+
|
384
|
+
|
385
|
+
```
|
386
|
+
|
387
|
+
|
388
|
+
|
389
|
+
|
390
|
+
|
343
391
|
###試したこと
|
344
392
|
|
345
393
|
[リンク内容](http://qiita.com/tsumugu/items/cba104dbf1c4f86276cf)
|
3
文書の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -6,6 +6,12 @@
|
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
+
|
10
|
+
|
11
|
+
センサー検知でLEDつけるコードと喋るコードの組み合わせを教えていただきたいです。
|
12
|
+
|
13
|
+
|
14
|
+
|
9
15
|
###発生している問題・エラーメッセージ
|
10
16
|
|
11
17
|
```
|
@@ -344,4 +350,6 @@
|
|
344
350
|
|
345
351
|
エラーについて検索してみましたが、手がかりになるようなものがなかなか見つからなかったのでこちらに質問させていただきました。
|
346
352
|
|
353
|
+
|
354
|
+
|
347
355
|
お力をお貸しいただけると幸いです。
|
2
プログラムの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -192,6 +192,148 @@
|
|
192
192
|
|
193
193
|
```
|
194
194
|
|
195
|
+
####元のソースコード(天気予報を喋るソースコード)
|
196
|
+
|
197
|
+
```
|
198
|
+
|
199
|
+
#!/usr/bin/env python
|
200
|
+
|
201
|
+
# -*- conding:utf-8 -*-
|
202
|
+
|
203
|
+
import shlex
|
204
|
+
|
205
|
+
import subprocess
|
206
|
+
|
207
|
+
from datetime import datetime
|
208
|
+
|
209
|
+
try:
|
210
|
+
|
211
|
+
import urllib.request as urllib2
|
212
|
+
|
213
|
+
except ImportError:
|
214
|
+
|
215
|
+
import urllib2
|
216
|
+
|
217
|
+
import json
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
|
222
|
+
|
223
|
+
CMD_SAY = 'jsay'
|
224
|
+
|
225
|
+
def main():
|
226
|
+
|
227
|
+
say_datetime()
|
228
|
+
|
229
|
+
say_weather()
|
230
|
+
|
231
|
+
return
|
232
|
+
|
233
|
+
def say_datetime():
|
234
|
+
|
235
|
+
d = datetime.now()
|
236
|
+
|
237
|
+
text = '%s月%s日、%s時%s分%s秒' % (d.month, d.day, d.hour, d.minute, d.second)
|
238
|
+
|
239
|
+
text = CMD_SAY + ' ' + text
|
240
|
+
|
241
|
+
print(text)
|
242
|
+
|
243
|
+
proc = subprocess.Popen(shlex.split(text))
|
244
|
+
|
245
|
+
proc.communicate()
|
246
|
+
|
247
|
+
return
|
248
|
+
|
249
|
+
def say_weather():
|
250
|
+
|
251
|
+
city = '130010'; # Tokyo 他の地域の方は、番号を変えてください。
|
252
|
+
|
253
|
+
json_url = 'http://weather.livedoor.com/forecast/webservice/json/v1' #API URL
|
254
|
+
|
255
|
+
weather_text = u'%sの天気は%sです。'
|
256
|
+
|
257
|
+
temperature_text = u'%sの予想最高気温、%s度、予想最低気温、%s度です。'
|
258
|
+
|
259
|
+
try:
|
260
|
+
|
261
|
+
r = urllib2.urlopen('%s?city=%s' % (json_url, city) )
|
262
|
+
|
263
|
+
jsonStr = unicode(r.read())
|
264
|
+
|
265
|
+
print(jsonStr) # 確認表示
|
266
|
+
|
267
|
+
obj = json.loads( jsonStr )
|
268
|
+
|
269
|
+
print(obj) # 確認表示
|
270
|
+
|
271
|
+
title = obj['title']
|
272
|
+
|
273
|
+
forecasts = obj['forecasts']
|
274
|
+
|
275
|
+
# TODAY
|
276
|
+
|
277
|
+
cast = forecasts[0]
|
278
|
+
|
279
|
+
temperature = cast['temperature']
|
280
|
+
|
281
|
+
today_w_txt = weather_text % (cast['dateLabel'], cast['telop'])
|
282
|
+
|
283
|
+
# 最高、最低気温を取得。データが存在しない場合もある
|
284
|
+
|
285
|
+
temp_max = ""
|
286
|
+
|
287
|
+
temp_min = ""
|
288
|
+
|
289
|
+
if temperature['max'] is not None:
|
290
|
+
|
291
|
+
temp_max = temperature['max']['celsius']
|
292
|
+
|
293
|
+
if temperature['min'] is not None:
|
294
|
+
|
295
|
+
temp_max = temperature['min']['celsius']
|
296
|
+
|
297
|
+
|
298
|
+
|
299
|
+
today_t_txt = temperature_text % (cast['dateLabel'], temp_max, temp_min)
|
300
|
+
|
301
|
+
# TOMMOROW
|
302
|
+
|
303
|
+
cast = forecasts[1]
|
304
|
+
|
305
|
+
temperature = cast['temperature']
|
306
|
+
|
307
|
+
tommorow_w_txt = weather_text % (cast['dateLabel'], cast['telop'])
|
308
|
+
|
309
|
+
# SAY
|
310
|
+
|
311
|
+
weather_str = title + ' ' + today_w_txt + ' ' + today_t_txt + ' ' + tommorow_w_txt
|
312
|
+
|
313
|
+
text = '''%s '%s' ''' % (CMD_SAY, weather_str)
|
314
|
+
|
315
|
+
print(text)
|
316
|
+
|
317
|
+
proc = subprocess.Popen(shlex.split(text))
|
318
|
+
|
319
|
+
proc.communicate()
|
320
|
+
|
321
|
+
finally:
|
322
|
+
|
323
|
+
r.close()
|
324
|
+
|
325
|
+
return
|
326
|
+
|
327
|
+
### Execute
|
328
|
+
|
329
|
+
if __name__ == "__main__":
|
330
|
+
|
331
|
+
main()
|
332
|
+
|
333
|
+
```
|
334
|
+
|
335
|
+
|
336
|
+
|
195
337
|
###試したこと
|
196
338
|
|
197
339
|
[リンク内容](http://qiita.com/tsumugu/items/cba104dbf1c4f86276cf)
|
1
題名の変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
センサーで感知
|
1
|
+
センサーで感知すると天気予報を喋るプログラムの作り方
|
test
CHANGED
File without changes
|