質問編集履歴

7

2017/09/13 06:35

投稿

Ras5
Ras5

スコア11

test CHANGED
File without changes
test CHANGED
@@ -421,3 +421,7 @@
421
421
 
422
422
 
423
423
  ```
424
+
425
+
426
+
427
+ 天気予報を喋るコードとセンサー感知のコードを組み合わせるにはどうするべきだったのでしょうか。自作したソースコードが大幅に変更してもよいので教えて頂きたいです。

6

2017/09/13 06:35

投稿

Ras5
Ras5

スコア11

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

2017/09/13 06:25

投稿

Ras5
Ras5

スコア11

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

プログラムの追加

2017/09/13 06:04

投稿

Ras5
Ras5

スコア11

test CHANGED
File without changes
test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  GPIO.setmode(GPIO.BCM)
50
50
 
51
- GPIO.setup(4, GPIO.IN)
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(4)
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

文書の修正

2017/09/12 05:41

投稿

Ras5
Ras5

スコア11

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

プログラムの修正

2017/09/12 05:33

投稿

Ras5
Ras5

スコア11

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

題名の変更

2017/09/12 05:31

投稿

Ras5
Ras5

スコア11

test CHANGED
@@ -1 +1 @@
1
- センサーで感知して天気予報を喋らせる方法を教えてください。
1
+ センサーで感知すると天気予報を喋るプログラムの作り
test CHANGED
File without changes